Desaster-Recovery auf Dateibasis

von Frank Rocholl am Donnerstag, 1. Oktober 2020

Irgendwann ist es soweit. Die alte Hardware ist kaputt gegangen und ist auch nicht mehr verfügbar. Oder man möchte seine gute alte normalo Festplatte gegen eine schicke neue SSD austauschen, ohne das System nochmal neu konfigurieren zu müssen.

Daher muss ein Desaster Recovery aus dem Backup her. Auch hier gilt wieder: Kein Backup, keine Gnade.

Waschzettel:

Weitere Features:

Restore in der Praxis

Ich nutze einen Lenovo X220 als Home-Theatre-PC. Betriebssystem ist Debian Sid. Dieser soll nun eine schnelle SSD bekommen.

Generell ist jedes Live-System der gleichen Prozessorarchitektur geeignet den Restore vorzunehmen. Idealerweise sollte man im Live-System Pakete nachinstallieren können, falls was fehlt. Ich habe meinen Praxistest mit Ubuntu Studio gemacht.

Vorbereitung des Systems

Natürlich baut man zuallererst die neue Festplatte ein.

Dann erstellt man aus dem ISO-Image einen bootfähigen USB-Stick. Dazu steckt man einen neuen Stick in eine USB-Buchse; so kann man unter /var/log/messages den Gerätenamen ablesen, die der USB-Stick auf dem lokalen Gerät hat. Hat das Betriebssystem den Stick schon gemountet, so ist der erst zu umounten. Also z.B.

umount /dev/sdd1
dd if=ubuntustudio-20.04.1-dvd-amd64.iso of=/dev/sdd BS=4M && sync

Mit dem Stick kann nun der zu restoredende PC ins Live-System gebootet werden. Der PC sollte am Netz sein.

Um einen Zugriff von außen zu ermöglichen, ist der sshd nach zu installieren:

apt install openssh-server

Nun kann man sich ein neues Passwort setzen:

sudo passwd ubuntu-studio

Die notwendigen ssh-keys des backuppc Users sind nun in /root/.ssh/authorized_keys abzulegen.

Nun kann die neue Festplatte mit fdisk analog zur alten partitioniert werden. Dabei können die Partitionen auch größer sein. Das Ergebnis war bei mir z.B.

root@ubuntu-studio:~# fdisk  -l /dev/sda
Festplatte /dev/sda: 340 GiB, 365072220160 Bytes, 713031680 Sektoren
Festplattenmodell: QEMU HARDDISK
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x1da5c32d

Gerät      Boot    Anfang      Ende  Sektoren Größe Kn Typ
/dev/sda1            2048 104859647 104857600   50G 83 Linux
/dev/sda2       104859648 121636863  16777216    8G 82 Linux Swap / Solaris

Jetzt werden Swap-Bereich und Filesystem angelegt. Die UUID brauchen wir später für die Konfiguration:

mkfs.ext4  /dev/sda1
root@ubuntu-studio:~# blkid  /dev/sda1
/dev/sda1: UUID="8949eac2-7675-4795-b0cd-d1b5d63f7eef" TYPE="ext4" PARTUUID="79b53b8c-01"


mkswap  /dev/sda2
Auslagerungsbereich Version 1 wird angelegt, Größe = 9,8 GiB (10511405056 Bytes)
keine Bezeichnung, UUID=922eaf0e-06cf-4480-9dc6-53b78b66037e

Dann kann die neue Partition gemounted werden:

mkdir /restore
mount /dev/sda1 /restore
mkdir /restore/proc /restore/sys /restore/run

Nach dem Mounten erfolgt ein Restore vom backuppc Server auf diese Partition.

BackupPC Restore Options

Neuschreiben des Bootloaders

Nach beendetem Filetransfer ist die Datei /etc/fstab anzupassen. Es sind die UUIDs anzugeben, die man mittels blkid ermittelt hat.

root@ubuntu-studio:~# grep UUID /etc/fstab 
# device; this may be used with UUID= as a more robust way to name devices
UUID=8949eac2-7675-4795-b0cd-d1b5d63f7eef /               ext4    errors=remount-ro 0       1
UUID=922eaf0e-06cf-4480-9dc6-53b78b66037e none            swap    sw              0       0

Dann ist der Bootloader in einer chroot-Umgebung neu zu schreiben:

mount -o bind /dev /restore/dev
mount -o bind /sys /restore/sys
mount -t proc /proc /restore/proc
chroot /restore
grub-mkconfig > /boot/grub/grub.cfg
grub-install /dev/sda

Nach dem Reboot ins gerestorte System ist noch die Resume-UUID neu schreiben

echo "RESUME=UUID=922eaf0e-06cf-4480-9dc6-53b78b66037e" > /etc/initramfs-tools/conf.d/resume
update-initramfs -u

Schon hat man ein schönes neues System und die Sicherheit, dass das Backup funktioniert. Ein Restore von LVM- und Crypted-LVM-Systemen ist ebenfalls möglich und auch getestet. Das wäre Themen für einen weiteren Tech-Post.

Links