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

Удалить файловую систему ZFS со снимками, но без других дочерних элементов?

Вы можете удалить файловую систему ZFS (или другой набор данных) с помощью zfs destroy <dataset>. Это не удается, если в наборе данных есть дочерние элементы, включая снимки. zfs destroy -r <dataset> удалит файловую систему и ее дочерние элементы, но также уничтожит все дочерние элементы файловой системы, не являющиеся моментальными снимками. Есть ли краткий способ сказать: «Удалите эту файловую систему и ее снимки, но только если у нее нет дочерних элементов, не являющихся снимками»?

По сути, у меня есть несколько вложенных файловых систем, и я широко использую моментальные снимки как для репликации, так и для дешевых резервных копий. Мне нужен способ легко удалить дочерние файловые системы и их снимки (например, zfs destroy tank/container/leaf), обеспечивая при этом небольшую защиту от случайного уничтожения всей коллекции файловой системы (например, zfs destroy tank/container<enter>leaf)

Если это важно, я использую ZFS в Linux с Scientific Linux 7.


Решение:

Основываясь на комментарии longneck, я могу сделать это двумя строчками:

zfs destroy tank/example/leaf@%
zfs destroy tank/example/leaf

Я протестировал его, и он делает именно то, что я хочу.

Я не тестировал это, но я видел в других сообщениях, что вы можете удалить все снимки следующим образом:

zfs destroy -rv dataset_or_vol_name@%

Затем вы могли бы продолжить свое destroy команда для удаления базы данных.

Это не один лайнер, но вы можете использовать вывод из

zfs list -t all -r -H <dataset>

И пусть скрипт выполнит это, тщательно все проверит и уничтожит соответствующие файловые системы.