過去問ドリル

LinuCレベル4 システムアーキテクト 可用性の設計 問22

可用性の設計/データレプリケーションと災害対策

同一データセンター内の2台のサーバー(主系:NVMe SSD搭載、副系:SATA HDD搭載)でDRBD(Protocol C)を使ってPostgreSQLのデータ領域をブロックレベルでレプリケーションする構成を検討している。この設計上の問題点として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)

正解:A

解説

DRBDのProtocol C(同期モード)では、主系のローカルストレージへの書き込みと副系のリモートストレージへの書き込みが両方完了した時点でACKをアプリケーションに返します。副系にHDDを使う場合、NVMe SSDと比べてHDDのランダム書き込みレイテンシが格段に高いため、副系のI/O性能が全体の書き込みレイテンシのボトルネックになります。PostgreSQLのような小さなランダム書き込みが多い用途では、副系にもNVMeやSSDを使うか、主系のローカル書き込みと副系のメモリ受信でACKを返すProtocol Bへの変更を検討する必要があります。

選択肢ごとの解説

  • A正しい。Protocol CはローカルとリモートのディスクI/Oを両方待ってACKを返します。副系のHDDがランダム書き込みのボトルネックになり、主系のNVMeの性能を活かせなくなります。副系にも高速ストレージを使うか、Protocol Bへの変更を検討する必要があります。
  • B誤り。ローカルの書き込み完了のみでACKを返すのはProtocol A(非同期)の動作です。Protocol CはリモートのディスクI/O完了まで必ず待ちます。副系のHDDの遅さは主系の書き込みレイテンシに直接影響します。
  • C誤り。リモートノードのバッファメモリへの受信でACKを返すのはProtocol B(メモリ同期)の動作です。Protocol Cはリモートのディスク書き込み完了を待ちます。
  • D誤り。Protocol Cのメカニズム上、主系のストレージがどれだけ速くてもリモートのディスク書き込みが完了するまでACKは返されません。副系のHDDが遅ければ、その遅さが即座に主系の書き込みレイテンシに反映されます。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く