Отличная функция ZFS - способность делать моментальные снимки состояния файловой системы на определенный момент времени, сохраняющие информацию только об измененных блоках и потому имеющие объем, соответствующий произведенным изменениям. Проверим? Создадим
zfs для зоны
zone1 и обозначим точку монтирования:
# zfs create pool1/zones/zone1
# zfs set mountpoint=/zones/zone1 pool1/zones/zone1
Сконфигурируем зону и назначим
zonepath=/zones/zone1:
# zonecfg -z zone1
...
# zoneadm -z zone1 install
# zoneadm -z zone1 boot
# zlogin -C zone1
....
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
3 zone1 running /zones/zone1
Теперь сделаем снимок зоны и назовем его
test. Внутри зоны пока никаких изменений сделано не было.
# zfs snapshot pool1/zones/zone1@test
# zlogin zone1
[Connected to zone 'zone1' pts/2]
Last login: Mon Nov 28 14:35:20 on pts/1
Sun Microsystems Inc. SunOS 5.11 snv_27 October 2007
# ls
bin etc home mnt opt proc system usr
dev export lib net platform sbin tmp var
Создадим пару файлов в зоне:
# mkfile 50m testfile
# mkfile 100m testfile1
# ls
bin export mnt platform system tmp
dev home net proc testfile usr
etc lib opt sbin testfile1 var
# exit
# zonename
global
Теперь, вернувшись в глобальную зону, я хочу вернуть zone1 в состояние до момента создания файлов:
# zfs rollback -r pool1/zones/zone1@test
cannot umount '/zones': Device busy
Ага, мы забыли сначала остановить зону:
# zoneadm -z zone1 halt
# zfs rollback -r pool1/zones/zone1@test
# zoneadm -z zone1 boot
По истечении 5 секунд снимок восстановлен и зона поднята. Теперь посмотрим, что у нас внутри:
# zlogin zone1
[Connected to zone 'zone1' pts/2]
Last login: Mon Nov 28 14:35:20 on pts/1
Sun Microsystems Inc. SunOS 5.11 snv_27 October 2007
# ls
bin etc home mnt opt proc system usr
dev export lib net platform sbin tmp var
Файлы
testfile и
testfile1 отсутствуют, значит мы вернули зону в состояние до момента создания файлов. В свете того, что горячо ожидаемая Indiana будет иметь файловую систему
zfs по дефолту, представьте, как легко можно будет восстановить затертые случайно в домашнем каталоге файлы или, не дай бог, в
/etc (конечно, если вы позаботитесь о периодических снимках системы).