過去問ドリル

LinuCレベル4 システムアーキテクト ネットワークとストレージの選定 問32

ネットワークとストレージの選定/集中型および分散型ストレージ

BtrfsのサブボリュームをLinuxサーバー上のデータディレクトリに使い、誤操作からの復旧のために30分ごとにスナップショットを自動取得して72時間分(144個)保持する設計を検討している。この運用設計における注意点として最も適切なものはどれか。

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

正解:B

解説

BtrfsはすべてのデータをCopy-on-Write(CoW)で管理しており、スナップショット作成はメタデータのポインタコピーだけで即座に完了します。しかし、スナップショットが存在する間、元サブボリュームで上書き・削除されたブロックの旧バージョンは古いスナップショットが参照し続けるため解放されません。スナップショットを削除しないまま増やし続けると、更新された旧ブロックが積み重なりストレージ使用量が継続的に増加します。世代数の上限を設けて古いスナップショットを自動削除する仕組みを設計に組み込むことが重要です。専用の退避領域(snap pool)を必要とするのはLVMの従来型(COW型)スナップショットであり、Btrfsには不要です。スナップショット取得の間隔が短くなってもメタデータ更新だけで完了するためI/O性能に大きな影響はありません。

選択肢ごとの解説

  • A誤り。BtrfsのCoWスナップショットはデータをコピーせず、メタデータ操作だけで即座に完了します。初期状態ではブロックを共有するためサブボリューム容量の倍数の領域は不要です。
  • B正しい。元サブボリュームで変更されたブロックの旧バージョンは、それを参照するスナップショットが存在する限り解放されません。世代管理を行わずにスナップショットを溜め込むとストレージが圧迫されます。
  • C誤り。専用の退避領域(snap pool)を必要とするのはLVMの従来型(COW型)スナップショットです。BtrfsスナップショットはCoWを常時使用しており、専用領域を事前に確保する必要はありません。
  • D誤り。Btrfsのスナップショット作成はメタデータ更新のみで完了するため、取得間隔を短くしてもI/O性能が大幅に低下するわけではありません。性能への影響が顕在化するのは、多数のスナップショットが長期間蓄積した後のファイルシステムの断片化です。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く