Bacula/Восстановление системы
Предисловие
Предположим что у вас уже настроена Bacula на сервере и клиенте, есть готовый полный бекап системы и подготовлен спасательный LiveCD.
Рассмотрим сценарий полного восстановление системы "С нуля" - если изначальная система умерла, но у вас остался полный бекап, который можно создать при помощи изначального конфига fullset.conf.
Параметры восстанавливаемой машины:
- Hostname: dc.test.alt
- Ipv4adress: 192.168.122.100
- Bacula client name: samba1
- Bacula client password: 123
Параметры клиента bacula-fd:
[root@bacula ~]# cat /etc/bacula/client.d/samba1.conf Client { Name = samba1 Address = 192.168.122.100 FDPort = 9102 Catalog = MyCatalog Password = "123" File Retention = 30 days Job Retention = 6 months AutoPrune = yes }
Создание полного бекапа
Открываем bconsole на сервере:
[root@bacula ~]# bconsole *run A job name must be specified. The defined Job resources are: 1: BackupCatalog 2: BackupFullSet 3: RestoreFiles Select Job resource (1-3): 2 Run Backup job JobName: BackupFullSet Level: Incremental Client: fd FileSet: Full Set Pool: Default (From Job resource) Storage: File (From Job resource) When: 2024-03-27 16:05:42 Priority: 10 OK to run? (yes/mod/no): mod Parameters to modify: 1: Level 2: Storage 3: Job 4: FileSet 5: Client 6: When 7: Priority 8: Pool 9: Plugin Options Select parameter to modify (1-9): 5 The defined Client resources are: 1: fd 2: samba1 Select Client (File daemon) resource (1-2): 2 Run Backup job JobName: BackupFullSet Level: Incremental Client: samba1 FileSet: Full Set Pool: Default (From Job resource) Storage: File (From Job resource) When: 2024-03-27 16:05:42 Priority: 10 OK to run? (yes/mod/no): yes Job queued. JobId=10
Здесь жирным курсивом выделен пользовательский ввод.
Посмотреть статус бекапа можно следующим образом:
*status director ... Running Jobs: Console connected using TLS at 27-ма-2024 15:57 JobId Type Level Files Bytes Name Status ====================================================================== 10 Back Incr 134,239 2.721 G BackupFullSet is running ...
После успешного создания бекапа он будет отображён следующим образом:
*status director ... Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 10 Full 214,692 6.674 G OK 27-ма-2024 16:18 BackupFullSet ...
Подготовка системы
Теперь представим, что система dc.test.alt умерла безвозвратно. От неё на память остался только ip адрес, бекап и пароль клиента Bacula. Для её восстановления нам нужно провести чистую установку системы. Подойдёт любая, но в данном случае был использована минимальная инсталляция Альт Сервера 10.2.
После установки и загрузки системы ставим в неё клиент bacula:
[root@host-198 ~]# apt-get update [root@host-198 ~]# apt-get install bacula13-client -y
После чего вносим в /etc/bacula/bacula-fd-password.conf пароль клиента, который находится в /etc/bacula/client.d/samba1.conf.
Действия на установленной системе закончены, её можно выключать.
Восстановление системы
Настройка сети
Теперь необходимо загрузиться с Rescue и поддержкой сети (Пункт 4 в меню загрузки: Rescue with remote SSH access (DHCP) )
После чего необходимо сделать так, чтобы ip адреса запущенной Rescue системы и ip адрес клиента bacula samba1 совпадали. Возможны два варианта:
Вариант 1: Поменять ip адрес системы.
Изначально машиной по DHCP получен адрес 192.168.122.198. Конкретные данные можно посмотреть при помощи команды ip a
Адрес необходимо заменить на старый адрес контроллера домена: 192.168.122.100:
ip a del 192.168.122.198/24 dev enp1s0 ip a add 192.168.122.100/24 dev enp1s0
Вариант 2: Поменять ip адрес клиента.
Для этого нужно отредактировать файл конфигурации, находящийся в директории /etc/bacula/client.d/, заменив адрес на тот, который имеет запущенная Rescue система.
Монтирование системы
В данном случае система расположена на /dev/vda
mount /dev/vda /mnt mount -o bind /dev /mnt/dev mount -o bind /proc /mnt/proc mount -o bind /run /mnt/run mount -o bind /sys /mnt/sys
Запуск клиента bacula-fd
Запуск происходит через chroot. Предварительно необходимо создать директорию для сохранения PID процесса.
mkdir /mnt/var/run/bacula chroot /mnt /usr/sbin/bacula-fd -c /etc/bacula/bacula-fd.conf
Проверить, запущен ли клиент, можно при помощи команды ss
[root@localhost ~]# ss -lntup ... Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN 0 50 0.0.0.0:9102 0.0.0.0:* users:(("bacula-fd",pid=3350,fd=4)) ...
Если что-то идёт не так, то можно запустить клиент с флагом -f, тогда будут выведены сообщения о возможных ошибках.
Восстановление системы
Дальнейшие действия нужно проводить на сервере bacula
Теперь, когда всё подготовлено, можно приступать непосредственно к восстановлению системы. Открываем bconsole:
[root@bacula ~]# bconsole *restore where=/ client=samba1 jobid=10 Building directory tree for JobId(s) 10 ... 214,692 files inserted into the tree. You are now entering file selection mode where you add (mark) and remove (unmark) files to be restored. No files are initially added, unless you used the "all" keyword on the command line. Enter "done" to leave this mode. cwd is: / $ mark * 214,692 files marked. $ done Bootstrap records written to /var/lib/bacula/dir.restore.5.bsr The Job will require the following (*=>InChanger): Volume(s) Storage(s) SD Device(s) =========================================================================== b0001 File FileStorage Volumes marked with "*" are in the Autochanger. 214,692 files selected to be restored. Run Restore job JobName: RestoreFiles Bootstrap: /var/lib/bacula/dir.restore.5.bsr Where: / Replace: Always FileSet: Full Set Backup Client: samba1 Restore Client: samba1 Storage: File When: 2024-03-27 18:26:23 Catalog: MyCatalog Priority: 10 Plugin Options: *None* OK to run? (yes/mod/no): yes Job queued. JobId=14
Здесь:
- restore - команда восстановление из бекапа
- where=/ - параметр, указывающий в какую директорию будут выгружаться файлы. В случае полного восстановления системы - это корень.
- client=samba1 - параметр, указывающий на какой машине восстанавливать систему. В этом случае - это samba1.
- jobid=10 - параметр, указывающий из какого бекапа производить восстановление. Его значение было получено в разделе Создание полного бекапа
После старта задачи, начнётся восстановление системы.
Статус восстановления можно посмотреть следующим образом:
*status director ... Terminated Jobs: JobId Level Files Bytes Status Finished Name 15 Restore 214,692 6.674 G OK 27-ма-2024 18:30 RestoreFiles ...