воскресенье, 17 июля 2016 г.

Jail+ZFS резервное копирование и стратегия обновления

В прошлом посте я описал реализацию схемы разворачивания Jails описаную в haddbook с поправкой на использование ZFS, в этом посте я разовью тему и покажу какие преимущества при этом мы получаем.

Настраиваем резервное копирование

Для него будем использовать механизм ZFS снапшотов.
Для управления созданием и удалением снапшотов ставим утилиту zfsnap:
# pkg install zfsnap
параметры работы утилиты задаются в конфигурационном файле /etc/periodic.conf
daily_zfsnap_enable="YES"
#daily_zfsnap_fs="zroot/jails/oldsite"
daily_zfsnap_recursive_fs="zroot/jails"
daily_zfsnap_ttl=1m
daily_zfsnap_delete_enable="YES"
  1. строчка, относящаяся к zfsnap, включает его выполнение раз в день
  2. строчка задает список каталогов через пробел для которых делаются снапшоты
  3. строчка задает список каталогов для рекурсивного создания снапшотов (будут созданы для всех вложенных файловых систем, избавляет от необходимости настраивать каждую индивидуально).
  4. строка задает время хранения снапшота.
  5. строка говорит, что необходимо удалять старые.
Теперь можно запустить periodic daily, но помните что выполнятся все системные скрипты, обычно выполняемые в ночное время или просто подождать до утра.

По любому на следующий день вы должы наблюдать следующий результат выполнения комманды
zfs list -t snapshot

Стратегия обновления

Моя стратегия обновления отличается от предложенной в руководстве и базируется на использовании приемов работы с ZFS.
Создадим снимок файловой системы .mroot_
zfs snapshot zroot/jails/.mroot@update
на базе снимка создадим клон файловой системы:
zfs clone zroot/jails/.mroot@update zroot/jails/.mroot_
Делаем zroot/jails/.mroot_ основной системой:
zfs promote zroot/jails/.mroot_
В /ets/fstab раскомментируем и редактируем строку:
/jails/.skel /jails/.mroot_/s nullfs rw,noauto 0 0
Монтируем:
mount /jails/.mroot_/s
Делаем chroot:
chroot /jails/.mroot_
обновляем систему:
freebsd-update fetch install
При необходимости обновляем софт, установленный в шаблоне, кстати обращаю внимание что шаблонов может быть много с типовыми конфигурациями виртуалок, для обновления монтируем нужный.
Останавливаем джайлы:
service jail2 stop
Отмонтируем файловые системы клеток:
umount /jails/jlroots/test/s
umount /jails/jlroots/test
Удаляем старый rootfs шаблон:
zfs destroy zroot/jails/.mroot
Переименовываем новый:
zfs rename zroot/jails/.mroot_ zroot/jails/.mroot
Монтируем файловые системы и запускаем:
mount /jails/jlroots/test
mount /jails/jlroots/test/s
service jail2 start
Клетка обновлена и работает. Но мы, все равно наблюдаем наличие значительного количества рутинных операций, в следующий раз мы попробуем их автоматизировать.

Комментариев нет:

Отправить комментарий