Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
admin_grundlagen:systemsicherung [2021/12/25 15:20] ingo_wichmann [Sicherung LVM Informationen] |
admin_grundlagen:systemsicherung [2022/12/09 10:07] carsten_strotmann |
||
---|---|---|---|
Zeile 49: | Zeile 49: | ||
scp sicherung.sfdisk root@server:/mnt/backup | scp sicherung.sfdisk root@server:/mnt/backup | ||
- | bei GPT-Partitionstabellen eine Warnung der Entwickler vorweg: //As of March 2014 (version 0.8.10), sgdisk should be considered beta software.// | + | bei GPT-Partitionstabellen eine inzwischen veraltete Warnung der Entwickler vorweg: //As of March 2014 (version 0.8.10), sgdisk should be considered beta software.// |
- | | + | |
)) | )) | ||
Zeile 58: | Zeile 57: | ||
vgdisplay > sicherung.vgdisplay | vgdisplay > sicherung.vgdisplay | ||
lvdisplay > sicherung.lvdisplay | lvdisplay > sicherung.lvdisplay | ||
- | |||
- | Ubuntu: | ||
- | scp sicherung.pvdisplay sicherung.vg* sicherung.lvdisplay nutzer@server:/mnt/backup | ||
- | |||
- | andere Distributionen (bei denen root ein Passwort hat): | ||
- | scp sicherung.pvdisplay sicherung.vg* sicherung.lvdisplay root@server:/mnt/backup | ||
- | |||
==== Sicherung anderer Storage Informationen ==== | ==== Sicherung anderer Storage Informationen ==== | ||
Zeile 87: | Zeile 79: | ||
xfs_info /dev/sdaX >> sicherung.xfs.sdaX | xfs_info /dev/sdaX >> sicherung.xfs.sdaX | ||
((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das Device ''/dev/mapper/xxx'' oder ähnlich)) | ((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das Device ''/dev/mapper/xxx'' oder ähnlich)) | ||
+ | |||
+ | == btrfs == | ||
+ | btrfs läßt sich nicht einfach mit rsync oder tar sichern. Die beste Alternative ist, statt dessen ein [[image_sichern|Image]] des Dateisystems mit ''fsarchiver'' oder ''partclone'' zu erstellen. (( Vielleicht ist auch https://github.com/mwilck/btrfs-clone eine brauchbare Alternative )) | ||
== vfat == | == vfat == | ||
blkid /dev/sdaX > sicherung.vfat.sdaX | blkid /dev/sdaX > sicherung.vfat.sdaX | ||
+ | ((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das Device ''/dev/mapper/xxx'' oder ähnlich)) | ||
== swap == | == swap == | ||
blkid /dev/sdaX > sicherung.swap.sdaX | blkid /dev/sdaX > sicherung.swap.sdaX | ||
+ | ((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das Device ''/dev/mapper/xxx'' oder ähnlich)) | ||
- | === Einstellungs-Dateien auf Zielsystem kopieren === | + | ==== Einstellungs-Dateien auf Zielsystem kopieren ==== |
Ubuntu: | Ubuntu: | ||
scp sicherung.* nutzer@server:/mnt/backup | scp sicherung.* nutzer@server:/mnt/backup | ||
Zeile 100: | Zeile 97: | ||
andere Distributionen (bei denen root ein Passwort hat): | andere Distributionen (bei denen root ein Passwort hat): | ||
scp sicherung.* root@server:/mnt/backup | scp sicherung.* root@server:/mnt/backup | ||
- | ((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das Device ''/dev/mapper/xxx'' oder ähnlich)) | ||
==== Sicherung der Dateien ==== | ==== Sicherung der Dateien ==== | ||
Zeile 272: | Zeile 268: | ||
Dateisysteme mit ''mkfs.*'' gemäß ''etc/fstab'' aus dem Backup anlegen. Dabei wenn nötig die Dateisystem-Einstellungen aus der Sicherung berücksichtigen (UUID, ...) | Dateisysteme mit ''mkfs.*'' gemäß ''etc/fstab'' aus dem Backup anlegen. Dabei wenn nötig die Dateisystem-Einstellungen aus der Sicherung berücksichtigen (UUID, ...) | ||
((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das Device ''/dev/mapper/xxx'' oder ähnlich)) | ((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das Device ''/dev/mapper/xxx'' oder ähnlich)) | ||
+ | === ext4 === | ||
mkfs.ext4 -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX | mkfs.ext4 -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX | ||
((''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'' steht hier für die UUID aus der Sicherung)) | ((''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'' steht hier für die UUID aus der Sicherung)) | ||
- | oder | + | === xfs === |
mkfs.xfs -m uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX | mkfs.xfs -m uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX | ||
((''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'' steht hier für die UUID aus der Sicherung)) | ((''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'' steht hier für die UUID aus der Sicherung)) | ||
- | oder | + | === fat === |
mkfs.vfat -i xxxxxxxx /dev/sdaX | mkfs.vfat -i xxxxxxxx /dev/sdaX | ||
((Eine UUID die von ''blkid'' im Format ''%%UUID="066B-5CE0"%%'' ausgegeben wurde muss ''mkfs.vfat'' mit ''066B5CE0'' (also ohne Minus) übergeben werden)) | ((Eine UUID die von ''blkid'' im Format ''%%UUID="066B-5CE0"%%'' ausgegeben wurde muss ''mkfs.vfat'' mit ''066B5CE0'' (also ohne Minus) übergeben werden)) | ||
- | ... | + | |
==== Swap anlegen ==== | ==== Swap anlegen ==== | ||
Zeile 476: | Zeile 473: | ||
===== Anpassungen bei geänderter Hardware oder geänderten Partitionen ===== | ===== Anpassungen bei geänderter Hardware oder geänderten Partitionen ===== | ||
+ | ==== Rebuild Red Hat / Rocky / Alma 8 ==== | ||
+ | **[[Rebuild Red Hat 8|komplettes Rebuild Bootmanager UEFI+Rocky/Alma/Red Hat 8]]** | ||
+ | |||
Je nach dem wie sich die Hardware geändert hat, sind folgende Bereiche anzupassen: | Je nach dem wie sich die Hardware geändert hat, sind folgende Bereiche anzupassen: | ||
+ | |||
==== Format Partitionstabelle ==== | ==== Format Partitionstabelle ==== | ||
Zeile 628: | Zeile 629: | ||
* [[http://www.partimage.org/Main_Page]] | * [[http://www.partimage.org/Main_Page]] | ||
+ | ====== Backup / Bare-Metal Restore Suse Linux ====== | ||
+ | |||
+ | Diese Anleitung beschreibt die Sicherung und Wiederherstellung eines Suse Linux Systems mit BTRFS Dateisystem. | ||
+ | |||
+ | Getestet wurde diese Anleitung auf einem Suse Leap 15.x im Dezember 2022 auf einem Tuxedo Laptop mit NVME Speicher. | ||
+ | |||
+ | ===== Sicherung (aka Backup) ===== | ||
+ | |||
+ | * Für die Sicherung des BTRFS benutzen wir die nur-lese (read-only) Snapshot Funktion des BTRFS zusammen mit dem ''%%btrfs send%%'' Befehl, um die Daten via SSH auf ein entferntes System zu sichern. | ||
+ | * Schritt 1: Erstellen eines Subvolumes, welches die zu sichernden Snapshots aufnimmt<code example> | ||
+ | btrfs subvol create .backup | ||
+ | </code> | ||
+ | |||
+ | * Schritt 2: von jedem Subvolume des Root-Dateisystems ein read-only Snapshot unterhalb des Backup-Subvolumes erstellen. Am Ende prüfen das auch alle Subvolumes (ggf. mit Aussnahme von ''%%/.snapshots%%'') als Read-Only Volume vorliegen:<code example> | ||
+ | btrfs subvol list / | ||
+ | btrfs subvol snap -r / .backup/root-fs | ||
+ | btrfs subvol snap -r /usr/local .backup/usr-local | ||
+ | btrfs subvol snap -r /tmp .backup/tmp | ||
+ | ... | ||
+ | ls -l /.backup | ||
+ | </code> | ||
+ | |||
+ | * Subvolumes welche gesichert werden: | ||
+ | / | ||
+ | /home | ||
+ | /opt | ||
+ | /srv | ||
+ | /var | ||
+ | /root | ||
+ | /usr/local | ||
+ | /tmp | ||
+ | /boot/grub2/x86_64-efi | ||
+ | /boot/grub2/i386-pc | ||
+ | |||
+ | * Schritt 3: die Read-Only Snapshot-Volumes mittels ''%%btrfs send%%'' und über SSH (komprimiert) auf einen entfernten Rechner übertragen:<code example> | ||
+ | ls -1 -d /.backup/* | xargs btrfs send | ssh -C nutzerXX@192.168.1.2XX "cat > notebookXX.btrfs" | ||
+ | </code> | ||
+ | |||
+ | * Hiermit ist die Sicherung abgeschlossen. Die Backup-Snapshots können nun wieder entfernt werden<code example> | ||
+ | btrfs subvol delete /.backup/root-fs | ||
+ | btrfs subvol delete /.backup/usr-local | ||
+ | btrfs subvol delete /.backup/srv | ||
+ | ... | ||
+ | btrfs subvol delete /.backup | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===== System-Verlust simulieren (der spassige Teil) ===== | ||
+ | |||
+ | * System "zerstören", indem das Unix-System-Root (USR) Verzeichnis gelöscht wird (am besten aus einer grafischen Sitzung heraus)<code example> | ||
+ | rm -rf /usr | ||
+ | </code> | ||
+ | |||
+ | * Reboot testen -> das System sollte nicht mehr starten | ||
+ | |||
+ | ===== Bare-Metal System-Wiederherstellung ===== | ||
+ | |||
+ | * Diese Anleitung geht davon aus, das die EFI-Bootpartition, die Swap-Partition der Boot-Record des Bootloaders (Grub2) noch intakt sind. Aufgrund der Unterstützung von bootbaren BTRFS-Snapshots (''%%snapper%%'') ist die Logik des Boot-Loaders Grub2 und die Skripte innerhalb der Init-Ramdisk ''%%initrd%%'' komplexer als bei anderen Linux Varianten (z.B. Debian). Hat die Partitions-Tabelle, der Boot-Record des Speichers oder die EFI-Partition Schaden genommen, so wird empfohlen erst mittels eines Suse-Installations-Mediums ein minimales frisches Suse-System zu installieren, und danach das BTRFS-Root-Dateisystem nach dieser Anleitung aus dem Rettungs-Linux zu ersetzen. | ||
+ | * Ist das Ziel-System mit einer anderen Speicher-Lösung als NVME ausgestattet müssen im weiteren die Üfade der Grätedatei entsprechend angepasst werden (z.B. ''%%/dev/sda3%%'' statt ''%%/dev/nvme0n1p3%%'') | ||
+ | |||
+ | ==== Rettungs-Linux starten ==== | ||
+ | |||
+ | * Mit einem Rettungs-Linux starten | ||
+ | * Tuxedo F7 beim UEFI Bootbildschirm | ||
+ | * Thinkpad F12 beim UEFI Bootbildschirm | ||
+ | * Netzwerk-Boot auswählen | ||
+ | * F4 -> Live-Linux-Systeme | ||
+ | * sysrcd starten | ||
+ | * Neues BTRFS Dateisystem erzeugen (ggf. Gerätedatei anpassen!!)<code example> | ||
+ | mkfs.btrfs -f /dev/nvme0n1p3 | ||
+ | </code> | ||
+ | |||
+ | * Neues Dateisystem unter ''%%/mnt%%'' einhängen<code example> | ||
+ | mount /dev/nvme0n1p3 /mnt | ||
+ | </code> | ||
+ | |||
+ | * Subvolume für das Zurückspielen der Backups erstellen<code example> | ||
+ | btrfs subvol create /mnt/.restore | ||
+ | </code> | ||
+ | |||
+ | * BTRFS Dateisysteme von Backup-System via SSH zurückspielen<code example> | ||
+ | ssh nutzerXX@192.168.1.2XX "cat notebookXX.btrfs" | btrfs recieve /mnt/.restore | ||
+ | </code> | ||
+ | |||
+ | * Neue schreibbare Snapshots aus dem Read-Only Snapshots erstellen. Die Namen der Subvolumes müssen nicht den original Namen entsprechen<code example> | ||
+ | btrfs subvol snap /mnt/.restore/tmp /mnt/tmp | ||
+ | btrfs subvol snap /mnt/.restore/root-fs /mnt/root-fs | ||
+ | btrfs subvol snap /mnt/.restore/usr-local /mnt/usr-local | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | * Subvolume für automatische Snapshots erstellen (wenn dieses nicht gesichert und zurückgespielt wurde)<code example> | ||
+ | btrfs subvol create /snapshots | ||
+ | </code> | ||
+ | |||
+ | * Subvolumes auflisten, Volume-ID des neuen Root-Filesystems notieren<code example> | ||
+ | btrfs subvol list /mnt | ||
+ | </code> | ||
+ | |||
+ | * Root-Filesystem-ID als neues Default-Volume des BTRFS Dateisystems eintragen<code example> | ||
+ | btrfs subvol set-default <id> | ||
+ | </code> | ||
+ | |||
+ | * BTRFS Dateisystem ''%%/mnt%%'' aushängen<code example> | ||
+ | umount /mnt | ||
+ | </code> | ||
+ | |||
+ | * Neues BTRFS Dateisystem mit neuem (default) Root-Filesystem einhängen<code example> | ||
+ | mount /dev/nvme0n1p3 /mnt | ||
+ | </code> | ||
+ | |||
+ | * Pseudo-Dateisysteme aus dem Rettungs-System in das neue Root-Filesystem mounten (wird von der "chroot" Umgebung benötigt<code example> | ||
+ | mount --rbind /dev /mnt/dev | ||
+ | mount --rbind /sys /mnt/sys | ||
+ | mount --rbind /proc /mnt/proc | ||
+ | </code> | ||
+ | |||
+ | * In die "chroot" Umgebung wechseln<code example> | ||
+ | chroot /mnt | ||
+ | </code> | ||
+ | |||
+ | * Datei ''%%/etc/fstab%%'' anpassen | ||
+ | * UUID durch Geräte-Pfad ersetzen | ||
+ | * Namen der Snapshots anpassen (aus ''%%subvol=/@/tmp%%'' wird ''%%subvol=tmp%%'') | ||
+ | * Kurze Namen der Snapshots oder Subvol-IDs benutzen | ||
+ | * Mount testen mit ''%%mount -a%%'' | ||
+ | * Init-Ramdisk ''%%initrd%%'' neu erstellen<code example> | ||
+ | mkinitrd | ||
+ | </code> | ||
+ | |||
+ | * Bootloader Grub2 neu installieren<code example> | ||
+ | grub2-install | ||
+ | </code> | ||
+ | |||
+ | * Grub2 Konfiguration neu erstellen<code example> | ||
+ | grub2-mkconfig -o /boot/grub2/grub.cfg | ||
+ | </code> | ||
+ | |||
+ | * chroot verlassen mit ''%%exit%%'' | ||
+ | * System neu booten, Daumen drücken …<code example> | ||
+ | reboot | ||
+ | </code> | ||
+ | |||
+ | * Nach erfolgreichem Boot die Restore-Subvolumes löschen |