Резервное копирование и аварийное восстановление
Резервное копирование для аварийного восстановления — ZFS send/receive. Практика (продолжение).
Конфигурация ssh
zfs-autobackup будет подключаться через ssh и попытается подключиться с правами root. Более того, даже после обмена ssh-ключом Bck будет много раз подключаться к ProdA для отправки своих zfs-команд (одно подключение на команду). Запуск сеанса ssh довольно долгий, поэтому будет некоторая задержка. Чтобы (значительно) ускорить это время, вы можете сделать ваши ssh-соединения постоянными и значительно ускорить zfs-autobackup:
На сервере, который инициирует резервное копирование, добавьте это в свой ~/.ssh/config:
Host ProdA
User backupper
ControlPath ~/.ssh/control-master-%r@%h:%p
ControlMaster auto
ControlPersist 3600
(Взято с https://github.com/psy0rz/zfs_autobackup/wiki/Performance)
Пришло время вернуться к Bck и выполнить команду, подобную этой (одна строка):
# /usr/local/bin/zfs-autobackup --ssh-source ProdA bck_server zroot/backups/ProdA --zfs-compressed --no-progress --verbose --buffer 32M --keep-source 0 --no-holds --set-properties readonly=on --clear-refreservation --keep-target 1d1w,1w1m,1m6m --destroy-missing 30d --clear-mountpoint
Bck подключится к ProdA, сделает снимки и начнет передачу. Наиболее интересные варианты, которые я использовал здесь:
--keep-source 0 (только последний снимок будет храниться на ProdA)
--set-properties readonly=on (убедитесь, что клон Bck доступен только для чтения, чтобы в следующий раз мы могли выполнить инкрементное/дифференциальное резервное копирование.)
--keep-target 1d1w,1w1m,1m6m (сохраняйте одну резервную копию в день в течение одной недели, одну в неделю в течение одного месяца, одну в месяц в течение шести месяцев)
--destroy-missing 30d (если мы удалили набор данных, храните его в течение 30 дней, прежде чем удалять из Bck)
-- clear-mountpoint (не монтируйте набор данных в Bck, так как это рано или поздно вызовет проблемы)
Первая копия будет медленной, так как ей нужно будет отправить все данные. Вторая будет достаточно быстрой, так как будут переданы только различия.
Как выполнить аварийное восстановление
Хорошо, ваш набор данных (или наборы данных) исчез. Вам необходимо заменить его на последнюю внешнюю резервную копию. Вы должны повторно перенести копию на ProdA (или на другой хост FreeBSD, без разницы). Подключитесь к Bck и найдите снимок, который хотите восстановить (поможет zfs list -t snapshot). После идентификации (одна строка):
# zfs send -R zroot/backups/ProdA/zroot/bastille/bastille/jails/t1@bck_server@20220528005830 | mbuffer -4 -s 128k -m 32M | ssh root@ProdA "zfs receive -F -x canmount -x readonly zroot/bastille/bastille/jails/t1"
Обратите внимание на флаги -x canmount -x readonly. Помните, что мы изменили свойства canmount и readonly переданных наборов данных во время резервного копирования, поэтому мы должны восстановить их в нормальное состояние.
После завершения ProdA (или другой восстановленный хост) покажет t1 как доступный jail, и вы сможете его запустить.
Продолжение следует...
Перевод с некоторыми авторскими заголовками. Автор оригинала: Stefano Marinelli.