Я уже могу проверить каждую снимок из файловая система индивидуально, вручную.
Я бы предпочел проверить все сразу (все с помощью одной команды или сценария). Пожалуйста:
Ответ должен быть хорош для файловых систем с пробелом в имени.
На странице руководства по zfs (8):
zfs holds [-H] [-r] snapshot…
…-r
Указывает, что удержание с данным тегом рекурсивно применяется к снимкам всех потомков. файловые системы.
Интересно, недавно ли снимки рассматриваются как потомки более старого снимка. Нет:
Last login: Sat Dec 8 09:02:26 on ttys003
macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-12-08-081957
NAME TAG TIMESTAMP
macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-10-28-212255
NAME TAG TIMESTAMP
gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012
macbookpro08-centrim:~ gjp22$ zfs hold experiment gjp22@2012-12-08-081957
macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-10-28-212255
NAME TAG TIMESTAMP
gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012
macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-12-08-081957
NAME TAG TIMESTAMP
gjp22@2012-12-08-081957 experiment Sat Dec 8 9:04 2012
macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-10-28-212255
NAME TAG TIMESTAMP
gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012
macbookpro08-centrim:~ gjp22$
Совмещать обе проверки не планирую и разрушение одной командой или скриптом. Этот вопрос по существу касается проверок.
Не уверен, как это выглядело в 2012 году, но теперь вы можете проверить userrefs
свойство:
zfs get userrefs
Чтобы перечислить все удержания во всех пулах:
zfs get -Ht snapshot userrefs | grep -v $'\t'0 | cut -d $'\t' -f 1 | tr '\n' '\0' | xargs -0 zfs holds
zfs list -H -r -d 1 -t snapshot -o name nameoffilesystematroot | xargs -n1 zfs holds -H -r
Кредит, чтобы успокоиться irc://irc.freenode.net/#zfs
но я не уверен, нужно ли доработать синтаксис.
Для меня с простой иерархией файловой системы (только один дочерний элемент) и относительно небольшим количеством моментальных снимков (в настоящее время семнадцать дочерних) команда, похоже, не приходит к выводу. Пример:
macbookpro08-centrim:~ gjp22$ zfs list -H -r -d 1 -t snapshot -o name gjp22 | xargs zfs holds -r
load: 4.94 cmd: zfs 39152 running 17.80u 112.52s
load: 3.73 cmd: zfs 39152 running 55.01u 349.29s
load: 3.15 cmd: zfs 39152 running 167.48u 1061.47s
load: 4.59 cmd: zfs 39152 running 267.57u 1697.49s
load: 5.19 cmd: zfs 39152 running 372.19u 2355.99s
load: 5.29 cmd: zfs 39152 running 432.89u 2736.79s
Заимствование из другой ответ, уделяя внимание только дочерней файловой системе:
macbookpro08-centrim:~ gjp22$ zfs list -H -r -d 1 -t snapshot -o name gjp22/intrigue | xargs zfs holds
NAME TAG TIMESTAMP
macbookpro08-centrim:~ gjp22$
- и этот результат почти мгновенен.
ZFS - это ZEVO Community Edition 1.1.1.
zfs list -H -r -d 1 -t snapshot -o name nameoffilesystem | xargs zfs holds
- то есть без -r
рекурсия справа от трубы.
Кредит, чтобы успокоиться irc://irc.freenode.net/#zfs
Для файловой системы без пробела в имени:
macbookpro08-centrim:~ gjp22$ zfs list -H -r -d 1 -t snapshot -o name gjp22 | xargs zfs holds
load: 4.82 cmd: zfs 43038 running 0.59u 3.28s
NAME TAG TIMESTAMP
gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012
gjp22@2012-12-08-081957 experiment Sat Dec 8 9:04 2012
Был один Контроль-Т чтобы увидеть, как дела идут.
Для полноты скажу, что там является ребенок gjp22
. Но я думаю, что этот пример (без внимания потомков) действительно доказывает эффективность команды.
Для файловой системы с именем Pocket Time Machine
(пробелы в имени), ни одна из следующих команд не завершится успешно:
zfs list -H -r -d 1 -t snapshot -o name "tall/backups/zhandy/Pocket Time Machine" | xargs zfs holds
zfs list -H -r -d 1 -t snapshot -o name tall/backups/zhandy/Pocket\ Time\ Machine | xargs zfs holds
Вывод:
'tall/backups/zhandy/Pocket' is not a snapshot
'Time' is not a snapshot
cannot open 'tall/backups/zhandy/Pocket': dataset does not exist
cannot open 'Time': dataset does not exist
cannot open 'Machine@2012-09-18-210251': dataset does not exist
cannot open 'tall/backups/zhandy/Pocket': dataset does not exist
cannot open 'Time': dataset does not exist
cannot open 'Machine@2012-09-23-0330': dataset does not exist
… и так далее.
Это неявно вопрос в ответе, извините… кто-то с хорошими знаниями командной строки (не я) мог бы придумать этот ответ без того, чтобы я переходил к отдельному вопросу. Поищу совета в чате.
Следующая команда покажет все снимки [пула] (<-замените это на имя вашего пула), у которых есть удержания
zfs list -H -o name -t snapshot -r pool | xargs -n1 zfs holds -H
свойства будут перечислены как property:stuff
с этой информацией мы можем освободить снимки ..
zfs list -H -o name -t snapshot -r pool | xargs -n1 zfs holds -H | awk '{print $1}' | xargs -n1 zfs release property:stuff
(замените свойство: вещи на то, что содержит ваш набор данных)
..и наконец удалить их
zfs destroy -r [pool]/[dataset][@snapshot]