Вы можете удалить файловую систему 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>
И пусть скрипт выполнит это, тщательно все проверит и уничтожит соответствующие файловые системы.