Назад | Перейти на главную страницу

Откат теста ZFS не работает должным образом

Я не понимаю, как должны работать снимки и откат ZFS. У меня есть zpool, содержащий пару zvols (каждый из разделов mirrorvdev). Снимок делаю вот так:

~$ sudo zfs snapshot nvme-tank@roll_test

Затем я загружаю виртуальную машину, расположенную на одном из zvols в zpool, и создаю тестовый файл.

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

Затем я выключаю виртуальную машину и делаю откат. Насколько я понимаю, откат должен вернуть все в nvme-tank к состоянию, в котором я делал снимок перед созданием rbtest.txt.

~$ sudo zfs rollback nvme-tank@roll_test

Затем я перезагружаю виртуальную машину, проверяю rbtest.txt, и вот он, все еще там!

Снимок есть:

~$ 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?

Вы только сделали снимок nvme-tank, но вы не сделали снимок ни одного из nvme-tank/ext4-zvol или nvme-tank/ntfs-zvol, один из которых содержит созданный вами файл. Так что ничего не произошло, потому что вы делали снимок набора данных, отличного от того, в котором вы создали файл.

Если вы хотите, чтобы снимки были рекурсивными для дочерних наборов данных / zvols, вы должны явно запросить рекурсивные снимки с zfs snapshot -r. Однако вы можете откатить только один конкретный набор данных / zvol за раз с помощью zfs rollback.