Relax-and-Recover (ReaR) - средство аварийного восстановления системы

  • Автор:

Relax-and-Recover-ReaR-000.pngСреди инструментов резервного копирования существует отдельная группа - системы аварийного восстановления на "голое железо" (Bare Metal Disaster Recovery - BMDR), которые позволяют полностью восстановить систему в случае выхода из строя оборудования или уничтожения системы при воздействии иных факторов. Relax-and-Recover - сокращенно ReaR - как раз и представляет такую систему, простую в использовании, но достаточно мощную в работе. С ее помощью вы сможете быстро восстановить вашу ОС Linux на новое оборудование, либо выполнить перенос системы со старого оборудования на новое, либо в виртуальную среду.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Перед тем как начинать работу с ReaR следует уточнить некоторые принципиальные моменты. ReaR предполагает создание двух достаточно независимых сущностей: загрузочного образа и резервной копии.

Загрузочный образ позволяет загрузить систему и выполнить восстановление ее макета, под которым подразумевается дисковая разметка, разделы и файловые системы на них, поддерживаются все типы разметки, включая программный RAID и LVM. Но при этом макет не содержит никаких данных, он просто восстановит структуру дисковой подсистемы.

Резервная копия не содержит сведений о структуре хранения, а просто содержит данные, которые там хранились. Это достигается за счет того, что файловая система Linux иерархична и всегда имеет общий корень, это позволяет просто скопировать все данные одним архивом, а как именно они располагаются на физических носителях определяется макетом.

Relax-and-Recover-ReaR-001.png

Кстати, Relax-and-Recover поддерживает множество внешних систем резервного копирования, что позволяет разделить процесс резервного копирования макета и резервного копирования данных, но это выходит за рамки данной статьи и ниже мы будем использовать только встроенные средства.

Установка и первоначальная настройка ReaR

ReaR находится в репозиториях всех актуальных DEB-систем начиная с Debian 10 и Ubuntu 20.04, для его установки выполните команду:

apt install rear

Все настройки ReaR находятся в конфигурационном файле /etc/rear/local.conf, по умолчанию он пуст, содержит только блок комментариев.

Создание загрузочного флеш-накопителя

Если у вас небольшая инфраструктура, то неплохим решением будет использование для резервного копирования системы загрузочного флеш-накопителя. Его объем должен соответствовать объему данных в системе, ну может чуть меньше, потому как резервная копия сжимается при помощи gzip.

Перед использованием флеш-накопитель нужно отформатировать, это делается командой:

rear format /dev/sdX

Где sdX - имя накопителя.

Для UEFI систем команда форматирования должна быть немного иной:

rear format  -- --efi /dev/sdX

Затем откройте /etc/rear/local.conf и внесите туда следующие строки:

OUTPUT=USB
BACKUP=NETFS
BACKUP_URL="usb:///dev/disk/by-label/REAR-000"

Опция OUTPUT указывает на тип образа восстановления, в нашем случае это USB-диск, BACKUP задает тип бекапа, NETFS - это встроенный механизм бекапа ReaR, а BACKUP_URL определяет его расположение, для USB-дисков выполняется привязка по метке диска, которая после форматирования всегда будет REAR-000.

Настройка сетевого хранилища резервных копий

Для более сложной и развитой инфраструктуры имеет смысл использовать сетевое хранилище для размещения там образов и резервных копий. Для этого немного изменим конфигурационный файл /etc/rear/local.conf указав в нем следующие опции:

OUTPUT=ISO
BACKUP=NETFS
BACKUP_URL="nfs://192.168.233.184/rear/"

В данном случае мы используем в качестве сетевого хранилища NFS и указываем тип образа восстановления - ISO.

В тоже время ReaR поддерживает различные типы хранилищ, более подробно с этим можно ознакомиться в документации, мы же приведем несколько наиболее популярных вариантов.

Так если вы хотите хранить копии в локальной файловой системе, например, на примонтированном внешнем или сетевом диске:

BACKUP_URL="file:///directory/path/"

Для Samba укажите:

BACKUP_URL="cifs://192.168.233.184/rear"

Если требуется аутентификация на Samba-ресурсе, то ниже добавьте опцию:

BACKUP_OPTIONS="cred=/etc/rear/cifs"

А затем создайте файл /etc/rear/cifs со следующим содержимым:

username=User
password=Pa$$word
domain=WORKGROUP

Его содержимое комментариев не требует.

При всех указанных выше настройках в указанном расположении при выполнении резервного копирования будет создана директория с именем хоста резервируемого узла внутри которой будет находиться загрузочный образ с именем rear-hostname.iso и архив с данными backup.tar.gz, а также служебные файлы и логи.

При восстановлении вам необходимо также иметь доступ к указанному расположению, иначе ReaR не сможет восстановить данные. Параметры подключения к хранилищу в загрузочном образе уже прописаны. Однако бывают ситуации, когда восстанавливать систему приходится автономно, либо в другом контуре, например, при переносе в виртуальную среду и т.д. В этом случае имеет смысл объединить загрузочный образ и архив в один файл.

Для этого измените /etc/rear/local.conf следующим образом:

OUTPUT=ISO
BACKUP=NETFS
OUTPUT_URL="nfs://192.168.233.184/rear/"
BACKUP_URL="iso:///backup"

Здесь нами была использована новая опция OUTPUT_URL, которая указывает место расположения образа восстановления, а BACKUP_URL предписывает расположить архив с данными внутри ISO-образа.

Кстати, комбинируя эти две опции можно настроить раздельное хранение образов и архивов с данными, тем более что OUTPUT_URL предполагает значительно большее количество способов подключения к хранилищу.

Из полезных опций также можно упомянуть про перенаправление временной директории, например, если у вас /tmp вынесен на отдельный раздел или RAM-диск и на нем недостаточно место для создания архива.

TMPDIR=/new_tmp

Обратите внимание, что указанная директория должна существовать, иначе создание резервной копии закончится с ошибкой.

Для того, чтобы исключить из резервной копии некоторые расположения используйте опцию:

BACKUP_PROG_EXCLUDE=( "${BACKUP_PROG_EXCLUDE[@]}" '/tmp/*' '/proc/*' '/sys/*' '/dev/*' )

Расположения задаются в одиночных кавычках через пробел. Обратите внимание, что исключения указываются с использованием маски. В этом случае указанные директории попадут в архив, но их содержимое будет проигнорировано, иначе в копии не будет самих директории, что может вызвать проблемы в работе восстановленной системы.

Резервное копирование

Для того, чтобы выполнить резервное копирование выполните:

rear -v mkbackup

Эта команда создаст новый загрузочный образ и новый архив с данными. Ключ -v (verbose) отображает подробный лог в консоли, если что-то пошло не так, то можете добавить ключ -d (debug) для получения более подробной информации.

Если вам нужно только обновить загрузочный образ, то используйте команду:

rear mkrescue

А если только создать новый архив с данными, то:

rear mkbackuponly

В большинстве случаев постоянно обновлять загрузочный образ нет смысла, так как разметка диска и файловые системы меняются редко, чтобы определить, изменился ли макет системы используйте команду:

rear checklayout
echo $?

Если вывод возвратит 0, то макет не изменился, а если 1 - то требуется повторное создание загрузочного образа. Кроме изменения макете загрузочный образ также следует пересоздать при изменении настроек ReaR.

Таким образом для автоматического обновления макета можно использовать конструкцию:

rear checklayout || rear mkrescue && rear mkbackuponly

Но есть один неочевидный момент. Загрузочный образ формируется на базе текущего состояния системы, включая текущую версию ядра и модулей к нему и если вы обновите ядро или включите дополнительные модули, то они не попадут в образ, так как макет системы при этом не изменился. Чаще всего это не вызовет особых затруднений, но в некоторых случаях может препятствовать загрузке, особенно на новом железе. Поэтому при обновлении ядра загрузочный образ лучше всего пересобрать.

В целом никаких сложностей здесь нет, все просто и понятно, осталось только автоматизировать процесс. Обычно для этого используют cron, но в настоящий момент этот метод устарел, и мы будем использовать вместо него таймеры systemd. В первую очередь создадим юнит сервиса:

nano /etc/systemd/system/rear.service

И внесем в него следующий текст:

[Unit]
Description=Relax-and-Recover
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/rear mkbackup

[Install]
WantedBy=multi-user.target

Затем создадим юнит таймера:

nano /etc/systemd/system/rear.timer

В котором следует разместить следующие строки:

[Unit]
Description=Relax-and-Recover timer

[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

В нашем случае настроен ежедневный запуск, который будет автоматически разнесен по временем с точностью в 1 час (чтобы исключить нагрузку от одновременного запуска нескольких заданий точно в полночь), также будет выполнен автоматический запуск при пропуске задания.

Более подробно о работе с таймерами systemd вы можете узнать из нашей статьи:

Настраиваем таймеры systemd вместо заданий cron

После того как вы создали юниты перечитаем изменения в них:

systemctl daemon-reload

И пробуем запустить юнит сервиса:

systemctl start rear

После чего должно выполниться резервное копирование. Если все прошло хорошо, то просто включаем таймер для него в автозагрузку:

systemctl enable rear.timer

На этом настройка резервного копирования закончена.

Восстановление из аварийного образа

Перед тем, как переходить к восстановлению необходимо понимать ограничения, чтобы не столкнуться с проблемами на ровном месте. Серьезных ограничений ровно два:

  • Образ для UEFI системы не удастся загрузить на системе с BIOS и наоборот.
  • Количество дисков должно быть не меньше, чем у целевой системы, а их объем быть равным или превышать объем дисков целевой системы.

Справедливости ради, при восстановлении на диск меньшего объема ReaR выполнит попытку уменьшить последний раздел, но это увенчается успехом только в том случае если у вас простая разметка (без RAID и LVM), а также файловая система в последнем разделе поддерживает уменьшение размера. Но мы не рекомендуем надеяться на это, в большинстве случаев восстановление на диск меньшего объема будет невозможно.

При загрузке с аварийного диска мы видим простое меню, по умолчанию выбрана загрузка с первого жесткого диска, а для восстановления нам нужно выбрать один из верхних пунктов, их отличие только в том, что при выборе второго пункта при загрузке системы восстановление будет запущено автоматически.

Relax-and-Recover-ReaR-002.pngДля UEFI-систем загрузочное меню немного иное, но смысл остается тот же, по умолчанию выбрана загрузка аварийного образа с отключенной безопасной загрузкой.

Relax-and-Recover-ReaR-003.pngПосле загрузки войдите в систему пользователем root без пароля и запустите восстановление командой:

rear recover

Восстановление выполняется в несколько этапов, сначала восстанавливается разметка, потом скачивается архив и распаковываются данные. На каждом этапа можно вмешаться в процесс и даже отредактировать параметры восстановления, однако это требует достаточно глубоких знаний и понимания процесса, а также навыков работы с vi. Если вы хотите использовать параметры по умолчанию, то просто подтверждайте их нажатием на Enter, так как времени на раздумье дается много - 5 минут на каждый вопрос, а вопросов там достаточно.

Relax-and-Recover-ReaR-004.pngКак мы уже говорили выше, для успешного автоматического восстановления система должна иметь доступ к хранилищу резервных копий или копия должна быть включена в образ. В этом случае вам нужно просто дождаться окончания процесса восстановления и перезагрузить систему.

Если же по какой-то причине резервная копия недоступна, то у вас будет восстановлена только разметка. В этом случае следует выбрать пункт Use Relax-and-Recouer shell and return back to here после чего вы попадаете в консоль ReaR и строка приглашения изменится на:

rear>

После чего разместите любым доступным образом архив с данными в /mnt/local/ и распакуйте его, сам архив после этого можно удалить:

tar xf /mnt/local/backup.tar.gz -C /mnt/local/
rm -f /mnt/local/backup.tar.gz

Затем обязательно выйдите из консоли ReaR командой:

exit

При этом будет сгенерирован новый загрузочный образ и установлен загрузчик, после чего систему можно перезагрузить.

В некоторых случаях вам может потребоваться изменить некоторые параметры восстановленной системы до ее перезагрузки, например, если вы делаете клон или переносите систему в иную среду. Для этого можно воспользоваться возможностью войти в консоль восстановленной системы командой:

chroot /mnt/local bash --login

После чего вы окажетесь в среде восстановленной системы и сможете выполнить в ней все необходимые действия.

Для выхода из chroot также введите:

exit

Как видим, Relax-and-Recover - простая в использовании, но в тоже время очень функциональная и мощная система аварийного восстановления, которую можно использовать как для резервного копирования ваших физических узлов, так и для переноса системы на другое железо или в виртуальную среду.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments