Вы можете удалить файловую систему ZFS (или другой набор данных) с помощью zfs destroy
. Это не работает, если в наборе данных есть дочерние элементы, включая снимки. zfs destroy -r <набор данных>
удалит файловую систему и ее дочерние элементы, но также уничтожит все дочерние элементы файловой системы, не являющиеся моментальными снимками. Есть ли краткий способ сказать: «Удалите эту файловую систему и ее снимки, но только если у нее нет дочерних файлов, не являющихся снимками»?
В принципе, у меня есть несколько вложенных файловых систем, и я широко использую снимки, как для репликации и для дешевых бэкапов. Мне нужен способ легко удалить дочерние файловые системы и их снимки (например, zfs destroy tank / container / leaf
), обеспечивая при этом некоторую защиту от случайного уничтожения всей коллекции файловой системы (например, zfs destroy tank / container
)
В случае это важно, я использую 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>
и пропустить сценарий, тщательно проверить все и уничтожить соответствующие файловые системы.