Usuwanie starych i tworzenie nowych snapshotów ZFS
Niedawno pisałem o masowym tworzeniu snapshotów ZFS. Tam robiłem to rekursywnie dla całej puli używając zpool list -H
i przekierowując wyjście do zfs snapshot -r
. Tym razem zrobimy to inaczej.
Jeśli mamy stare snapshoty to możemy je wyświetlić poleceniem:
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
dappserv@20101130 0 - 28.0K -
dappserv@20110107 0 - 28.0K -
dappserv/etc@20101130 61.3K - 382K -
dappserv/etc@20110107 0 - 382K -
dappserv/var@20101130 170M - 2.03G -
dappserv/var@20110107 1.07M - 2.15G -
...
Opcja -t snapshot
powoduje wylistowanie samych snapshotów, więc w pewien sposób zabezpiecza nas przed zrobieniem sobie krzywdy i usunięciem żywego systemu plików. Na początek polecam usuwanie snapshotów właśnie w ten sposób. Usunę teraz snapshoty z 2010 wykorzystując grepa do przefiltrowania:
# for a in `zfs list -t snapshot -H -o name|grep 2010`; do zfs destroy $a; done
No ale to nam tylko zniszczy stare snapshoty, a nie utworzy nowych. Poza tym miał być przecież jednowierszowiec. Do tego lepiej by było najpierw utworzyć nowe, a dopiero później usunąć stare. Ale nic straconego, jeśli snapshoty kończą się tak samo, można zrobić tak:
for a in `zfs list -H -o name -t filesystem`; do
zfs snapshot $a@20110201 && zfs destroy $a@20110107;
done
Załatwione, można sprawdzić co z tego wyszło:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
dappserv 2.16G 95.5G 28.0K none
dappserv@20110201 0 - 28.0K -
dappserv/etc 382K 95.5G 382K /data/etc/appserv
dappserv/etc@20110201 0 - 382K -
dappserv/var 2.16G 95.5G 2.16G /data/var/appserv
dappserv/var@20110201 0 - 2.16G -
Przy okazji: jeśli Wasz system startuje z ZFS, to pewnie zwrócicie uwagę na to, że nie zostały utworzone snapshoty zfsroot/swap
i zfsroot/dump
, to dlatego, że wybraliśmy tylko filesystemy (-t filesystem
), a swap i dump to wolumeny (volume). Ale po co komu snapshot swapa?