Я не понимаю, как должны работать снимки и откат 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
.