LVMで読み取り専用スナップショットを作成し、操作が完了したらそのスナップショットにロールバックする方法は?

LVMで読み取り専用スナップショットを作成し、操作が完了したらそのスナップショットにロールバックする方法は?

次のことを行う場合は、LVMでどのコマンドを使用できますか?

  1. ボリュームの読み取り専用スナップショットを作成します。
  2. (ボリュームでいくつかの実験を行います)。
  3. その後、ボリュームをスナップショットにロールバックしますか?

答え1

私はあなたが探していると思いますlvconvert --merge。マニュアルページから:

- マージ

スナップショットを元のボリュームにマージします。カーネルがこの機能をサポートしていることを確認するsnapshot-mergeにはdmsetup targets。元のボリュームまたはスナップショットボリュームの両方が開いていない場合、マージはすぐに開始されます。それ以外の場合は、ソースまたはスナップショットが最初にアクティブになり、両方が閉じられるとマージが開始されます。シャットダウンできないソース(ルートファイルシステムなど)のスナップショットマージは、次にソースボリュームがアクティブになるまで延期されます。マージが開始されると、結果の論理ボリュームにはソース名、マイナー番号、およびUUIDが含まれます。
マージ中、ソースへの読み取りまたは書き込みは、マージ中のスナップショットに渡されるように見えます。マージが完了すると、マージされたスナップショットが削除されます。 複数のスナップショットをコマンドラインで指定するか、@tagsを使用して複数のスナップショットをそのソースにマージするように指定できます。

/ファイルシステムを含む論理ボリュームvg0 / systemがあるとします。

# create a read-only snapshot
lvcreate -pr --snapshot --name system_snapshot vg0/system
# upgrade or something
# if it fails, reboot and do this from a livecd
lvconvert --merge vg0/system_snapshot
# reboot again and you have your old system back

この場合、ファイルシステムをマウント解除できないため、再起動が必要です。 / fsでなければ、マウント解除で十分です。

マージ後にスナップショットが削除されることを覚えておいてください。

関連情報