web-dev-qa-db-ja.com

LVMで読み取り専用のスナップショットを作成し、いくつかの作業の後にそれにロールバックする方法は?

LVMで使用したいコマンドは何ですか?

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

あなたが探していると思いますlvconvert --merge。 manページから:

- マージ

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

/ファイルシステムを含む論理ボリューム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でない場合は、アンマウントで十分です。

スナップショットはマージ後に削除されることに注意してください。

11
stribika