Bacula/Восстановление системы

Материал из ALT Linux Wiki
< Bacula
Версия от 15:56, 27 марта 2024; CausaPrincipalis71 (обсуждение | вклад) (Добавлены разделы про подготовку системы к загрузке)

Предисловие

Предположим что у вас уже настроена 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
...

Подготовка к загрузке

Возвращаемся на Rescue систему

В ходе восстановления, bacula создаёт временное хранилище файлов в корне системы. Его нужно нужно удалить.

[root@localhost ~]# rm -rf --dir /mnt/bacula-restores/

После чего необходимо восстановить загрузчик (См. соответствующую статью)

И, завершающим действием, необходимо отредактировать fstab, обновив UUID диска:

[root@localhost ~]# blkid /dev/vda
/dev/vda: UUID="debf13e0-ef3c-484f-9d0c-a3d55300e9b2" BLOCK_SIZE="4096" TYPE="ext4" PTTYPE="dos"
[root@localhost ~]# vim /mnt/etc/fstab

Машину можно перезагружать, восстановление закончено