COWスナップショットをサポートするLinux上のファイルシステムまたはボリュームマネージャはありますか?ただし、新しいスナップショットに新しいブロックを書き込む代わりに、以前の変更されていないブロックをコピーし、新しい書き込みを所定の位置で置き換えます。このシステム設計技術に正式名称があるかは分からないが逆COWだ。
具体的には、LVMの観点から、複数の物理ボリュームを1つのボリュームグループにまとめるシステムがあります。ファイルシステムデータブロックの最新コピーを含む読み取り/書き込み論理ボリュームがあります。新しい物理ボリュームを追加して割り当てると、読み取り/書き込み論理ボリュームの読み取り専用(ユーザー空間の観点から)履歴スナップショットを保存できます。読み取り/書き込み論理ボリュームに書き込むと、データの古いコピーは読み取り専用物理ボリュームにコピーされ、新しいコピーは読み取り/書き込みボリュームにその場所に書き込まれます。
これは、追加のコピーがほとんどまたはまったく必要なく、以前のスナップショット、すべてのデータ、および物理ボリュームを一度に完全に削除できるように設計されています。 LVMスナップショットまたはCOWファイルシステムを使用して一般的な方法でこれを実行すると、既存のディスクにはCOWが適用されていない既存のデータだけでなく、COWが適用されていないすべての既存のデータのコピーがあるため、ディスクを削除する前に変更されませんないすべてのデータをコピーする必要があります。
答え1
LVMは範囲に基づいています。つまり、パーティションなどの大きな領域ではなく、ディスクの小さな領域を動的に割り当てます。スナップショットまたは論理ボリュームはそのボリューム内でこれらの範囲を参照しますが、これは基本的に元の論理ボリュームの仕組みと変わりません。いつでも古いスナップショットを削除でき、コンテンツをコピーせずに、所有者のすべてのエクステント(新しい状態で変更されたボリュームの一部)のみが解放されます。
物理的に真新しいディスクでは、範囲が考える順序で物理ボリュームに配置できますが、これはマイナーな場合にのみ当てはまります。スナップショットを削除すると、ボリュームのアクティブ状態を削除するよりも、一連のフラグメントを取得する可能性が高くなります。したがって、実用的な観点から見ると、LVMがある場合は、必要なものとスナップショットを削除して得られるものとの間に違いはありません。
答え2
~によるとlvm2 ドキュメントスナップショットでは、2つのdmターゲットタイプが使用されます。
スナップショットソース
[...]書き込みごとに、元のデータは各スナップショットの<COWデバイス>に保存されます。 [...]
「生データをCOWディスクにコピーして基本ディスクを上書きする」のダンスです。
スナップ写真
[...] 書き込み操作は<COWデバイス>にのみ送信されます。 [...]
自明です。完了したコピーはありません。
スナップショットを作成するために、lvm2はこれを次のように設定します。
- ソースボリュームの元のマッピングテーブルを含むデバイス。
- <COWデバイス>として使用されるデバイス。
- #1と#2を組み合わせた「スナップショット」デバイスは、表示されるスナップショットボリュームです。
- 「元の」ボリューム(元のソースボリュームで使用されるデバイス番号を使用)のテーブルは、デバイス#1の「スナップショットソース」マッピングに置き換えられました。
これは、2つの目に見えるマウントがあることを意味します。そのうちの1つは、撮影したばかりのスナップショット#3です。もう1つは、スナップショットを撮るマウントポイント#4です。
#3(スナップショットマウント)へのすべての書き込みはターゲットであるため、COWデバイスに直接移動しますsnapshot
。これは、スナップショットが読み取り/書き込みとしてマウントされていると仮定します。
#4(オリジナルインストール)の書き込み操作は、元のデータをCOWデバイスにコピーし、新しいデータをその場所に書き込みます。目標だからですsnapshot-origin
。
したがって、私の質問に答えると、次のようになります。読み取り専用スナップショットを作成し、lvm2に削除したい物理ボリュームにCOWデバイスを作成させると、私が必要とする動作が得られます。この場合もサポートlvcreate
されているようです。
元のLVのCOWスナップショットLVの作成
lvcreate --type snapshot --size サイズ LV PV
新しいLVで使用するPVを制御するには、コマンドラインの最後に1つ以上のPVを位置引数として指定します。 lvcreate は、指定された PV でのみ物理拡張領域を割り当てます。
これは、コマンドラインで指定されたPVがCOWデバイス(上記の#2)を受け入れることを意味するようです。