web-dev-qa-db-ja.com

ZFSテストのロールバックが期待どおりに機能しない

ZFSスナップショットとロールバックがどのように機能するかについて、混乱しています。いくつかのzvolを含むzpoolがあります(それぞれがmirrorvdevのパーティションから作成されています)。私はこのようなスナップショットを作成します:

~$ Sudo zfs snapshot nvme-tank@roll_test

次に、zpoolのzvolの1つにあるVMを起動して、テストファイルを作成します。

~$ echo "This is a test of the rollback system" > rbtest.txt

次に、VM=をシャットダウンしてロールバックを実行します。概念を理解しているので、ロールバックは、rbtestを実行する前に、nvme-tank内のすべてをスナップショットを取得したときの状態に戻す必要があります。 txt。

~$ Sudo zfs rollback nvme-tank@roll_test

次に、vmを再起動し、rbtest.txtを確認します。 enter image description here

スナップショットはそこにあります:

~$ zfs list -t all -r nvme-tank
NAME                  USED  AVAIL  REFER  MOUNTPOINT
nvme-tank             887G  12.1G    24K  /media/nvme-tank
nvme-tank@nov82018      0B      -    24K  -
nvme-tank@roll_test     0B      -    24K  -
nvme-tank/ext4-zvol   474G   449G  37.8G  -
nvme-tank/ntfs-zvol   413G  23.9G   401G  -

それで、私はスナップショットが何をすることになっているのかを誤解している、それらを誤って使用している、または私のzfsで何かが壊れていますか?

3
Stonecraft

nvme-tankのみのスナップショットを作成しましたが、nvme-tank/ext4-zvolまたはnvme-tank/ntfs-zvolのいずれもスナップショットを作成していません。これらの1つには、作成したファイルが含まれています。そのため、ファイルを作成したデータセットとは異なるデータセットのスナップショットを作成していたため、何も起こりませんでした。

スナップショットを子孫のデータセット/ zvolsに再帰的にする場合は、zfs snapshot -rを使用して、再帰的なスナップショットを明示的に要求する必要があります。ただし、zfs rollbackを使用してロールバックできるのは、一度に1つの特定のデータセット/ zvolのみです。

3
Michael Hampton