Bare metal recovery

Preduvjeti i primjeri

Postoji puno opcija koje se mogu primjeniti za povrat svih podataka na disk (Bare metal recovery).
Ovo je samo jedan primjer takve procedure koju smo provjerili nekoliko puta...

VAŽNO: Prije nego što uopće dođete u situaciju da morate uraditi BARE METAL RECOVERY, napravite backup sadržaja /etc/bacula direktorija na poslužitelju koji je u sys.backupu. Sadržaj tog direktorija pohranite negdje odakle ćete ga moći kopirati natrag na poslužitelj kod recoverya (USB memorija, vaše računalo, ...).  Isto tako zabilježite mrežne postavke poslužitelja u sys.backup usluzi (upozoreno u uputama ).

NAPOMENA: Moguće je da dolje opisana procedura neće raditu u slučaju da ste izbacili (exclude) neke direktorije iz backupa. Na primjer, imate .bacula_excludeme datoteku u /var direktoriju.

Apsolutno potrebno:

  • backup sadržaja /etc/bacula direktorija sa poslužitelja koji je prijavljen u sys.backup uslugu (ovog za koji se radi bare metal recovery)
  • mrežne postavke poslužitelja koji je prijavljen u sys.backup uslugu (IP adresa, netmask, default gateway, name server)
  • FORMATIRAN novi tvrdi disk na poslužitelju (neki od Linux file systema)


Dobro dođe:

 

Možete koristiti bilo koji Linux live CD, sve dok je taj CD zasnovan na Debian Wheezy (Model T možete dobiti u bilo kojoj boji. Pod uvjetom da je crna! H. Ford).
Obje distribucije su jedne od napopularnijih ditribucija  i lako ih je skinuti (izvor: Distrowatch). Prva (Mint) služi za pokretanje grafičkog sučelja za lakše izvođenje recovery procedure (ako to želite), drugi CD (Debian) služi za ponovnu instalaciju GRUB pokretača u MBR novog diska (kroz recovery mode, upute ovdje).

Ova procedura opisuje bare metal recovery za poslužitelje koji su u sys.backup usluzi, koji su i inače instalirani sa nekom inačicom Debian Wheezy distribucije.
Ukoliko pokušate koristiti neku noviju verziju, instalacijom Bacule (klijenta) različite verzije od Bacule (servera) u sys.backup usluzi, rezultirati će greškom kod recoverya.


U ovom primjeru se koristi:

  • IP adresa: 193.198.180.109
  • Netmask: 255.255.255.248
  • Default Gateway: 193.198.180.105
  • NS: 161.53.160.3
  • FQDN: DU-test3.carnet.hr
  • Lokacija bacula-fd konfiguracijskih datoteka: prijenosna USB memorija
  • HDD: /dev/sda
  • particije: (single partition) /dev/sda1

 

Bare metal recovery - procedura

U BIOS-u podesite 'boot order' tako da se prvo pokreće Linux Mint live DVD. ILI iz boot izbornika odabrati pokretanje za live CDa.

(Ponovo) pokrenite poslužitelj, te bootajte Linux Mint live DVD. Cijela bare metal recovery procedura se izvodi sa Linux live CDa. Nakon pokretanja bi njegov GUI trebao izgledati ovako:

Linux Mint desktop

Pokrenite terminal emulator (donji lijevi kut), prijavite se kao superuser i postavite tipkovnicu na hrvatski raspored znakova.

mint@mint ~ $ sudo su
mint mint # setxkbmap hr

Podesite mrežu na postavke poslužitelja za kojeg radite bare metal recovery.

Kroz terminal...

mint mint # ifconfig eth0 193.198.180.109 netmask 255.255.255.248
mint mint # route add default gw 193.198.180.105
mint mint # echo "nameserver 161.53.160.3" > /etc/resolv.conf

 

ILI kliknite na ikonicu u donjem desnom kutu (pogledaj sliku):

Mreža shortcut

 

Iz izbornika izaberite "Postavke mreže" i podesite mrežu kroz GUI

Postavke mreže

 

Napravite update sustava i potražite bacula pakete za instalaciju


mint mint # apt-get update
mint mint # apt-cache search bacula-fd
bacula-fd - network backup service - file daemon
mint mint #apt-cache search bacula-console
bacula-console - network backup service - text console

 

 Instalirajte bacula pakete

mint mint # apt-get install bacula-fd
mint mint # apt-get install bacula-console

 

Zaustavite baculu

mint mint # /etc/init.d/bacula-fd stop
 * Stopping Bacula File daemon... bacula-fd                                   [ OK ]

 

Potrebno je vratiti sadržaj /etc/bacula direktorija iz našeg lokalnog backupa (USB memorija, vaše računalo,...).

Kopiranje možete napraviti iz terminala ili iz GUI sučelja preko programa za upravljanje datotekama (file manager).

Prije vraćanja IZBRIŠITE trenutni sadržaj /etc/bacula na vašem Linux live CDu.

mint mint # rm -R /etc/bacula/*
mint mint # cp -R /put/do/datoteka/na/USBu/* /etc/bacula/

 

ILI  iz GUIa

Pokrenite file manager Nemo iz novog terminala sa superuser privilegijama

mint@mint ~ $ sudo su
mint mint # nemo

U file manageru kopirajte sadržaj bacula direktorija sa USBa u /etc/bacula

 

Napravite mount novog tvrdog diska. Da bi disk bio mountan treba prethodno biti FORMATIRAN.


Pokrenite baculu

mint mint # /etc/init.d/bacula-fd start
 * Starting Bacula File daemon... bacula-fd    

 

Pokrenite bconsole. Taj program služi za povratak backupa sa sys.backup poslužitelja.

mint mint # bconsole
Connecting to Director sysbackup.carnet.hr:9101
1000 OK: sysbackup-dir Version: 5.2.6 (21 February 2012)
Enter a period to cancel a command.
*

 

Iza zvjezdice unesite naredbu restore i iz izbornika odaberite opciju 5 (Select the most recent backup for a client)

*restore
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"

First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.

To select the JobIds, you have the following choices:
     1: List last 20 Jobs run
     2: List Jobs where a given File is saved
     3: Enter list of comma separated JobIds to select
     4: Enter SQL list command
     5: Select the most recent backup for a client
     6: Select backup for a client before a specified time
     7: Enter a list of files to restore
     8: Enter a list of files to restore before a specified time
     9: Find the JobIds of the most recent backup for a client
    10: Find the JobIds for a backup for a client before a specified time
    11: Enter a list of directories to restore for found JobIds
    12: Select full restore to a specified Job date
    13: Cancel
Select item:  (1-13):

Select item:  (1-13): 5

 

Nakon ovoga ispisa:

Automatically selected Client: DU-test3.carnet.hr-fd
Automatically selected FileSet: Debian Full Set 3
+---------+-------+----------+-------------+---------------------+------------+
| jobid   | level | jobfiles | jobbytes    | starttime           | volumename |
+---------+-------+----------+-------------+---------------------+------------+
| 127,408 | F     |   35,692 | 340,034,060 | 2017-02-17 10:44:03 | A00028L4   |
| 129,953 | D     |   35,768 | 341,839,844 | 2017-03-18 22:00:01 | 001287L4   |
| 130,041 | I     |       93 |   3,226,380 | 2017-03-19 22:00:02 | 001292L4   |
| 130,128 | I     |       45 |     172,604 | 2017-03-20 22:00:01 | 001292L4   |
| 130,216 | I     |      103 |     324,044 | 2017-03-21 22:00:01 | 001296L4   |
+---------+-------+----------+-------------+---------------------+------------+
You have selected the following JobIds: 127408,129953,130041,130128,130216

Building directory tree for JobId(s) 127408,129953,130041,130128,130216 ...  ++++++++++++++++++++++++++++++++++++++++++++++
32,862 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: /
$

 

Iza znaka $ upišite add * da bi odabrali povrat svih backupa za tog klijenta

$ add *
35,703 files marked.

 

Završite odabir sa naredbom done

$ done
Bootstrap records written to /var/lib/bacula/sysbackup-dir.restore.5.bsr

The job will require the following
   Volume(s)                 Storage(s)                SD Device(s)
===========================================================================
  
   *001287L4                  sysbackup_tape_any        IBM3584_LTO             
   *001292L4                  sysbackup_tape_any        IBM3584_LTO             
   *001296L4                  sysbackup_tape_any        IBM3584_LTO             

Volumes marked with "*" are online.


35,703 files selected to be restored.

Run Restore job
JobName:         RestoreFiles
Bootstrap:       /var/lib/bacula/sysbackup-dir.restore.5.bsr
Where:           /nonexistant/path/to/file/archive/dir/bacula-restores
Replace:         always
FileSet:         Debian Full Set 3
Backup Client:   DU-test3.carnet.hr-fd
Restore Client:  DU-test3.carnet.hr-fd
Storage:         sysbackup_tape_any
When:            2017-03-22 15:44:38
Catalog:         MyCatalog
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no):

 

Na pitanje OK to run? odgovorite sa mod

OK to run? (yes/mod/no): mod

 

Iz izbornika odaberite parametar 9 (Where)

Parameters to modify:
     1: Level
     2: Storage
     3: Job
     4: FileSet
     5: Restore Client
     6: When
     7: Priority
     8: Bootstrap
     9: Where
    10: File Relocation
    11: Replace
    12: JobId
    13: Plugin Options
Select parameter to modify (1-13): 9

 

Na pitanje Please enter path prefix for restore (/ for none):  upišite putanju do diska kojeg ste prethodno mountali. Ovdje je to /mnt

Please enter path prefix for restore (/ for none): /mnt

 

Nakon unosa /mnt na pitanje OK to run? (yes/mod/no): odgovorite sa yes

Please enter path prefix for restore (/ for none): /mnt
Run Restore job
JobName:         RestoreFiles
Bootstrap:       /var/lib/bacula/sysbackup-dir.restore.5.bsr
Where:           /mnt
Replace:         always
FileSet:         Debian Full Set 3
Backup Client:   DU-test3.carnet.hr-fd
Restore Client:  DU-test3.carnet.hr-fd
Storage:         sysbackup_tape_any
When:            2017-03-22 15:44:38
Catalog:         MyCatalog
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): yes


Ovo je ispis nakon pokretanja restorea

Job queued. JobId=130306
*

Automatically selected Client: DU-test3.carnet.hr-fd
Connecting to Client DU-test3.carnet.hr-fd at 193.198.180.109:9102

DU-test3.carnet.hr-fd Version: 5.2.6 (21 February 2012)  i686-pc-linux-gnu ubuntu 14.04
Daemon started 22-Mar-17 14:42. Jobs: run=0 running=0.
 Heap: heap=135,168 smbytes=27,639 max_bytes=27,726 bufs=91 max_bufs=92
 Sizeof: boffset_t=8 size_t=4 debug=0 trace=0
Running Jobs:
JobId 130306 Job RestoreFiles.2017-03-22_15.46.00_39 is running.
      Restore Job started: 22-Mar-17 14:46
    Files=0 Bytes=0 Bytes/sec=0 Errors=0
    Files Examined=0
    SDReadSeqNo=5 fd=5
Director connected at: 22-Mar-17 14:46
====

Terminated Jobs:
====
*

Status klijenta možete provjeriti unosom naredbe status client u bconsole. Ovo je ispis kad je restore gotov.

*status client
Automatically selected Client: DU-test3.carnet.hr-fd
Connecting to Client DU-test3.carnet.hr-fd at 193.198.180.109:9102

DU-test3.carnet.hr-fd Version: 5.2.6 (21 February 2012)  i686-pc-linux-gnu ubuntu 14.04
Daemon started 22-Mar-17 14:42. Jobs: run=1 running=0.
 Heap: heap=135,168 smbytes=88,084 max_bytes=418,381 bufs=80 max_bufs=179
 Sizeof: boffset_t=8 size_t=4 debug=0 trace=0
Running Jobs:
Director connected at: 22-Mar-17 19:00
No Jobs running.
====

Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
======================================================================
130306           35,703    889.3 M  OK       22-Mar-17 14:59 RestoreFiles
====
*

Nakon završetak bconsole napuštamo sa quit

*quit

 

Potrebno je napraviti direktorije koji nisu vraćeni procedurom za recovery

mint mint # mkdir -p /mnt/media/cdrom
mint mint # mkdir /mnt/tmp /mnt/proc /mnt/sys /mnt/var/lib/bacula
mint mint # chmod 1777 /mnt/tmp

 

VAŽNO!!! Naći UUID nove particije. Za to je potrebno unijeti naredbu blkid.

mint mint # blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="a3ad6099-c337-47c1-9a43-cf4e1ab44f77" TYPE="ext4"
/dev/sr0: LABEL="Linux Mint 17.1 Cinnamon 32-bit" TYPE="iso9660"
/dev/sdb: SEC_TYPE="msdos" LABEL="Ubuntu" UUID="E0AB-7402" TYPE="vfat"

 

U ovom slučaju, UUID novog diska za particiju /dev/sda1 je a3ad6099-c337-47c1-9a43-cf4e1ab44f77

Taj UUID je potrebno sačuvati (zapisati, slikati, kopirati u txt file na USBu,...). On nam je potreban kod povratka GRUB boot loadera.

 

UREDITI /mnt/etc/fstab i /mnt/boot/grub/grub.cfg sa novim UUIDom koji je dala naredba blkid.

PRIPAZITE da uređujete fstab i grub.cfg na mountanom disku (/mnt/etc/fstab i /mnt/boot/grub/grub.cfg), a ne na Mint live CDu.

Kroz editor (nano ili neki drugi), zamjenite sve pojave vrijednosti UUIDa, sa UUIDom koji je ispisala naredba blkid.

Isto možete napraviti kroz GUI, na prethodno otvorenom file manageru u superuser modu.

 

Izađite u root i napravite unmount diska.

mint mint # cd /
mint / # umount /mnt

 

Nakon toga ponovno pokrenite računalo sa Debian 7.8.0 live CDa. i napravite reinstalaciju GRUB boot loadera u MBR novog diska (upute ovdje).

UKRATKO: Kod boot izbornika odaberite "Rescue mode", nakon boota odaberite postavke hrvatskog jezika i tipkovnice.

Odabrati:

  • Uđi u spasonosni način rada - Uređaj se koristi kao korjenski datotečni sustav: Odabrati uređaj na kojem se nalazi vaš root file system,  tj. na kojem je instaliran linux. U ovom primjeru je to /dev/sda1 <enter>
  • Uđi u spasonosni način rada - Spasonosne operacije - Iz izbornika odabrati "Ponovo instalirati GRUB boot učitavač" <enter>
  • Uđi u spasonosni način rada - Uređaj za instalaciju boot učitavača - Upisati uređaj na kojem se nalazi vaš root file system, tj. na kojem je instaliran linux. U ovom primjeru je to /dev/sda

    PAZITI: NE UNOSI se oznaka particije "sda1", vec samo oznaka uređaja "sda"

    <TAB> "Nastavi" <enter>

  • Nakon povratka u izbornik Uđi u spasonosni način rada - Spasonosne operacije - odabrati "Ponovo pokrenuti sustav"
  • Izvaditi CD iz računala

 

Procedura bare metal recovery je gotova.

 

Ako pak imate mysql bazu, onda je još potrebno uraditi sljedeće:

posluzitelj:~# mkdir  /var/lib/mysql && chown mysql:mysql /var/lib/mysql
king &sk3:~# /usr/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[1932]: started
posluzitelj:~# cd /var/backups/bacula-cn/
posluzitelj:/var/backups/bacula-cn# gunzip mysql.dump.gz
posluzitelj:/var/backups/bacula-cn# mysql <mysql.dump
posluzitelj:/var/backups/bacula-cn# /etc/init.d/mysql restart
Stopping MySQL database server: mysqld STOPPING server from pid file /var/run/mysqld/mysqld.pid mysqld_safe[1973]: ended . Starting MySQL database server: mysqld. Checking for corrupt, not cleanly closed and upgrade needing tables.. [1]+ Done /usr/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking (wd: ~) (wd now: /var/backups/bacula-cn)