zfs. удаляем снимки (snapshot) оптом.

Иногда возникает необходимость (обычно — в силу своего же недосмотра) в удалении большого количества снапшотов на хранилке (в моём случае — OpenIndiana Development oi_151.1.8 X86) с файловой системой zfs. В случае с 3..7 снимками всё, конечно, проще сделать вручную, а вот при количестве, большем 10 — однозначно выигрывает малая автоматизация.

К своему стыду, вынужден признать, что по недогляду у меня на хранилке скопилось порядка 4000 снапшотов. 95% из 10ТБ было занято. Хранилка, естественно, потеряла производительность. Вычищать всё это вручную — труд неблагодарный, тем более, когда можно написать небольшой скриптик. Итак. Скрипт:

root@storage:/scripts# cat destroy.sh
#!/bin/bash
f="snap.txt"
while i= read -r line
do
echo "Destroing $line"
zfs destroy $line
done <"$f"

теперь выполняем команду

root@storage:/scripts# zfs list -t snapshot > snap.txt

на выходе получаем файл с содержимым:

root@storage:/scripts# cat snap.txt
NAME USED AVAIL REFER MOUNTPOINT
main/storage01@2015-02-28 0 - 291G -
main/storage01@2015-03-01-08-00 0 - 291G -
main/storage01@2015-03-01-11-00 0 - 291G -
main/storage01@2015-03-01-17-00 0 - 291G -
main/storage01@2015-03-01-19-00 0 - 291G -
main/storage01@2015-03-02-12-00 1.75G - 291G -
main/storage01@2015-03-02-18-00 1.38G - 291G -
main/storage01@2015-03-02-20-00 1.03G - 291G -
main/storage01@2015-03-03 5.02G - 291G -
main/storage02@2015-02-28 0 - 299G -
main/storage02@2015-03-01-08-00 0 - 299G -
main/storage02@2015-03-01-11-00 0 - 299G -
main/storage02@2015-03-01-17-00 0 - 299G -
main/storage02@2015-03-01-19-00 0 - 299G -
main/storage02@2015-03-01 0 - 299G -
main/storage02@2015-03-02-09-00 530M - 299G -
main/storage02@2015-03-02-12-00 583M - 299G -
main/storage02@2015-03-02-18-00 463M - 299G -
main/storage02@2015-03-02-20-00 378M - 299G -
main/storage02@2015-03-03 577M - 299G -

в своём любимом редакторе удаляем всё, кроме имён снимков. добавляем в конец файла пустую строку:

root@storage:/scripts# cat snap.txt
main/storage01@2015-02-28
main/storage01@2015-03-01-08-00
main/storage01@2015-03-01-11-00
main/storage01@2015-03-01-17-00
main/storage01@2015-03-01-19-00
main/storage01@2015-03-02-12-00
main/storage01@2015-03-02-18-00
main/storage01@2015-03-02-20-00
main/storage01@2015-03-03
main/storage02@2015-02-28
main/storage02@2015-03-01-08-00
main/storage02@2015-03-01-11-00
main/storage02@2015-03-01-17-00
main/storage02@2015-03-01-19-00
main/storage02@2015-03-01
main/storage02@2015-03-02-09-00
main/storage02@2015-03-02-12-00
main/storage02@2015-03-02-18-00
main/storage02@2015-03-02-20-00
main/storage02@2015-03-03
_

и выполняем наш скрипт. никакой магии и всё чисто :))

Помогла заметка - поделись с другом:
    • Роман
    • 20 ноября, 2022

    Можно сократить до одной строки: zfs list -t snapshot | xargs -n 1 zfs destroy -r

  1. Трэкбэков пока нет.

Оставьте эти два поля как есть:

 
Яндекс.Метрика
Array ( [path] => /var/sites/homeless.su/www/wp-content/uploads/2023/12 [url] => https://www.homeless.su/wp-content/uploads/2023/12 [subdir] => /2023/12 [basedir] => /var/sites/homeless.su/www/wp-content/uploads [baseurl] => https://www.homeless.su/wp-content/uploads [error] => )