LVMスナップショットの保存要件

LVMスナップショットの保存要件

LVMスナップショットがどのように保存され、どのように機能するかについて少し混乱しています。私が知っている限り、LVMを使用してスナップショットを作成するとスペースが消費されませんが、システム上のファイルを変更するとLVMスナップショットボリュームのサイズが増えます。パーティションサイズより大きくなると、「削除」されて消えます。これが良いバックアップソリューションではない理由です(同じ物理マシンにあるという事実を除く)。

下の図に示すように、LVMスナップショットリポジトリはどのように機能しますか?

ここに画像の説明を入力してください。

ルートファイルシステムパーティションのほとんどが空で、紫色で表示されている少量のデータを含むシナリオを表示しようとしています。私は「Snapshot 1」というスナップショットパーティションを作成しました。このパーティションは、元のファイルを変更しながら徐々に満たされています。しかし、LVMはファイルベースではなくブロックベースであることは明らかです。

質問

これは、20 GBのデータのみを格納する100 GBのルートパーティションがあり、サイズを21 GBに指定すると、スナップショットパーティションのオーバーフローを心配する必要はありません。または、スナップショットパーティションがルートパーティションよりも大きいか大きい必要があります。分割未使用スペース(ブロック0)の違いも記録するためですか?

ベストアンサー1

残念ながら、ストレージ要件はそれほど単純ではありません。

COWスナップショットは、サイズが指定されたときに作成されます。このサイズはVGのスペースから割り当てられ、ソースまたはスナップショットに書き込むときにCOWブロックを保持するために使用できるスペースの量です。 選択するサイズは、予想される書き込みボリュームによって異なります。元のLVの20%で十分です。COWスペースが不足している場合は、拡張機能を使用して拡張できます(lvreduceを使用して縮小することもできます)。 COWスナップショットLVサイズの小さな部分はCOWブロックの位置を追跡するために使用されるため、COWデータブロックにはフルサイズを使用できません。lvs を使用して使用されるスペースの量を確認し、 --monitor を参照してスペースの不足を防ぐためにサイズを自動的に拡張します。 - manlvcreate

マニュアルページには詳細は記載されていません。

...通常、元のLVの20%十分...ㅏ少量COWスナップショットLVサイズの使用...

私がここで得たのは、スペースが不足しないようにスナップショットLVがどれだけ大きくなければならないかを正確に計算するための具体的な方法がないことです。

デフォルトでは、スナップショットLVは元のブロックが変更される前に保存されるため、スペースが不足しないようにするには、元のLVに1を加えるのに十分な大きさが必要です。もう少しこれにより、COWブロックの位置を追跡できます。

おすすめ記事