Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:systemsicherung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:systemsicherung [2015/10/02 07:28]
stefan_miethke [Schritte im chroot Zielsystem]
— (aktuell)
Zeile 1: Zeile 1:
-====== Komplettsicherung des Systems ====== 
-Zuverlässiger ( z.B. offene Dateien ) und möglicherweise einfacher ( z.B. udev ) ist es aus einem Rettungssystem heraus zu sichern. Die folgende Anleitung zeigt dagegen wie man aus einem laufenden System heraus sichert. Hürden wie eine nach ''/​dev''​ gemountete Ramdisk für ''​udev''​ werden dabei gemeistert. Dienste wie Mailserver oder Datenbanken ( offene Dateien ) sollten vorher angehalten werden. ​ 
- 
-Abschätzen,​ wie viel Platz benötigt wird: 
-  df -h 
- 
-===== Vorbereitung Zielsystem ===== 
- 
-evtl. Platz schaffen wie in [[Plattenplatz]],​ [[Partitionierung]] und [[lvm]] beschrieben 
-  mkdir -p /​mnt/​backup/​dateien 
- 
-=== Ubuntu === 
-Zielverzeichnis ''/​mnt/​backup''​ muss dem Ubuntu-Nutzer gehören: 
-  chown nutzerXX /mnt/backup 
- 
-===== Sicherung ===== 
-Diese Schritte werden auf dem zu sichernden System ausgeführt. ​ 
- 
-==== Sicherung der Partitionierung ==== 
-Mehr zur Vorgehensweise siehe [[partitionierung]]. Wenn die Wiederherstellung nicht automatisiert erfolgen muss, reicht auch die Ausgabe von ''​parted''​ oder ''​df''​ 
-  parted /dev/sda print > sicherung.parted 
-  scp sicherung.parted root@server:/​mnt/​backup 
-(( 
-alternativ 
- 
-  sfdisk -d /dev/sda > sicherung.sfdisk 
-  scp sicherung.sfdisk root@server:/​mnt/​backup 
-)) 
-==== Sicherung LVM Informationen ==== 
-  pvdisplay > sicherung.pvdisplay 
-  vgdisplay > sicherung.vgdisplay 
-  lvdisplay > sicherung.lvdisplay 
-  scp sicherung.pvdisplay sicherung.vgdisplay sicherung.lvdisplay root@server:/​mnt/​backup 
- 
-alternativ mit  
-  vgcfgbackup -f sicherung.vg 
- 
-==== Sicherung anderer Storage Informationen ==== 
-  * [[admin_grundlagen:​software_raid|Software RAID]] 
-  * drbd 
-  * iSCSI 
-  * ... 
- 
-==== Sicherung der Dateisystem-Einstellungen ==== 
-=== Welche Dateisysteme müssen gesichert werden? === 
-  lsblk -f 
-oder 
-  df -hT 
- 
-=== ext3 / ext4 === 
-  tune2fs -l /dev/sdaX > sicherung.tune2fs.sdaX 
-  scp sicherung.tune2fs.sdaX 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)) 
- 
-=== xfs === 
-  xfs_admin -l /​dev/​sdaX ​ > sicherung.xfs_admin.sdaX 
-  scp sicherung.xfs_admin.sdaX 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 ==== 
-=== Einhängen der Dateisysteme unter /mnt/system === 
- 
-  mkdir /mnt/system 
-  mount --bind / /mnt/system 
-  mount --bind /boot /​mnt/​system/​boot 
-evtl. weitere Verzeichnisse/​Partitionen entsprechend der Ausgabe von ''​df''​ bzw. ''​lsblk''​ 
- 
-((ab RedHat 6 und openSuSE 13.1 kann man auf diesen Schritt verzichten, und statt dessen bei ''​rsync''​ die Option ''​-x''​ bzw. ''​--one-file-system''​ nutzen und die entsprechenden Mountpoints einzeln angeben )) 
- 
-=== mit rsync über ssh === 
-  rsync -aH --numeric-ids --del -e ssh /​mnt/​system/​ root@server:/​mnt/​backup/​dateien 
-(( mehr zu [[rsync]], u.a. wie man hier ''​rsync''​ auch ohne root-Rechte benutzen kann )) 
-(( mehr zu [[ssh]] )) 
-(( 
-Zweiter Aufruf, um zu sehen ob alle Dateien kopiert wurden: 
-  rsync -anHv --numeric-ids --del -e ssh /​mnt/​system/​ root@server:/​mnt/​backup/​dateien 
-)) 
-== Ubuntu == 
-Unter **Ubuntu** gibt es defaultmäßig kein root Passwort! 
-Wenn ein **Ubuntu** System das **ZIEL** ist, muss man zunächst dem User, mit dem man sich auf dem Ziel einloggen will, einen Eintrag machen, der ''​rsync''​ via ''​sudo''​ ohne Passwort erlaubt: 
- 
-  sudo visudo 
- 
-und diese Zeile ergänzen: 
- 
-  %sudo  ALL=(ALL) NOPASSWD: ALL 
- 
-Der Benutzer muss in der Gruppe //sudo// sein 
- 
-Und dann lautet der Befehl zum Backup: ​ 
-  rsync -aH --numeric-ids --del -e ssh --rsync-path="​sudo rsync" /​mnt/​system/​ user@zielsystem:/​mnt/​backup/​dateien 
- 
-== RedHat / CentOS == 
-RedHat'​s Versionen von ''​[[tar]]''​ und ''​[[rsync]]''​ können mit ACLs und erweiterten Dateiattributen umgehen. Dazu die Optionen ''​--xattrs''​ ( ''​tar''​ ) oder ''​--xattrs --acls''​ ( ''​rsync''​ ) angeben. 
- 
-=== Plausibilitätsprüfung === 
-//die gezeigten Verfahren sind nicht genau, u.a. durch die Art wie "​sparse"​-Dateien behandelt werden// 
-  du -sk --apparent-size 
-(( //Das funktioniert nicht, und ich verstehe nicht warum:// ​ --- //[[|Ingo Wichmann]] 2013/12/19 16:21// 
-Datenmenge auf dem Quellsystem:​ 
-  tar c --one-file-system / /home /boot 2>/​dev/​null | dd of=/​dev/​null 
-Datenmenge auf dem Zielsystem: 
-  tar c /​mnt/​backup/​dateien 2>/​dev/​null | dd of=/​dev/​null 
-)) 
- 
-Anzahl Dateien auf dem Quellsystem:​ 
-  find / /boot /home -xdev 2>/​dev/​null | sort | uniq | wc -l 
-Anzahl Dateien auf dem Zielsystem: 
-  find /​mnt/​backup/​dateien 2>/​dev/​null | wc -l 
- 
-==== Sicherung der ACL-Dateirechte ==== 
-nur nötig, wenn ''​tar''​ oder ''​rsync''​ das nicht kann 
-  cd /mnt/system 
-  getfacl --skip-base -P -n -R . > sicherung.acl 
-  scp sicherung.acl root@server:/​mnt/​backup 
- 
-==== Sicherung der erweiterten Dateiattribute ( z.B. SELINUX, capabilities ) ==== 
-nur nötig, wenn [[tar]] oder [[rsync]] das nicht kann 
-  cd /mnt/system 
-  getfattr -Rh -m . -d . > sicherung.attr 
-  scp sicherung.attr root@server:/​mnt/​backup 
- 
-====== Löschen des Systems ====== 
-=== schnell === 
-  dd if=/​dev/​zero of=/dev/sda 
- 
-... und nach ein paar Sekunden ist das System zumindest unbrauchbar. ​ 
-=== sicher === 
-  dd if=/​dev/​urandom of=/dev/sda 
- 
-  wipe /dev/sda 
- 
-====== Wiederherstellung des Systems ====== 
-Rettungssystem ( z.B. knoppix, pmagic ) booten 
- 
-===== Schritte im Rettungs-System ===== 
-==== Wiederherstellung der Partitionierung ==== 
-Partitionierung anhand der Informationen aus der gesicherten Datei ''​sicherung.parted''​ und/oder gemäß ''​etc/​fstab''​ aus dem Backup wie in [[Partitionierung]] beschrieben anlegen 
- 
-==== Wiederherstellung LVM ==== 
-Partitionierung anhand der Informationen aus der gesicherten Datei ''​sicherung.pvdisplay'',​ ''​sicherung.vgdisplay'',​ ''​sicherung.lvdisplay''​ und/oder gemäß ''​etc/​fstab''​ aus dem Backup wie in [[lvm]] beschrieben anlegen 
- 
-==== Dateisysteme anlegen==== 
-Dateisysteme mit ''​mkfs.ext3''​ o.ä. gemäß ''​etc/​fstab''​ aus dem Backup anlegen ​ 
-((''/​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)) 
-  mkfs.ext3 /dev/sdaX 
-... 
- 
-==== Swap anlegen ==== 
-((''/​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)) 
-  mkswap /dev/sdaX 
- 
-==== Mounten der Zielpartitionen ==== 
-Mountpoints mit ''​mkdir''​ anlegen und Dateisysteme mit ''​mount''​ einhängen: (( evtl. mount-optionen ( z.B. acl ) beachten ))  
-((''/​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 root-Device ''/​dev/​mapper/​xxx''​ oder ähnlich)) 
-  mkdir /tmp/system 
-  mount /dev/sdaX /tmp/system 
- 
-  mkdir /​tmp/​system/​boot 
-  mount /dev/sdaY /​tmp/​system/​boot 
-... 
- 
-==== Wiederherstellen der Dateien mit rsync über ssh ==== 
-((mehr siehe [[rsync]])) 
-  rsync -a --numeric-ids --del -e ssh root@server:/​mnt/​backup/​dateien/​ /​tmp/​system ​ 
- 
-evtl. ACLs und erweiterte Dateisystemattribute berücksichtigen 
-(( Notlösung: Berechtigungen (teilweise) wiederherstellen,​ wenn sie nicht richtig gesichert wurden 
-  rpm -qa | xargs rpm --setperms 
-Todo: debian? 
-)) 
-=== Ubuntu === 
-  rsync -a --numeric-ids --del -e ssh --rsync-path="​sudo rsync" user@server:/​mnt/​backup/​dateien/​ /​tmp/​system ​ 
- 
-==== Wiederherstellen der ACL-Dateirechte ==== 
-nur nötig, wenn ''​tar''​ das nicht kann 
-  mount -o remount,acl /​tmp/​system/​ 
-  cd /tmp/system 
-  setfacl --restore sicherung.acl 
- 
-==== Wiederherstellen der SELinux Attribute ==== 
-nur nötig, wenn ''​tar''​ das nicht kann 
-( nicht erfolgreich getestet ... ) 
-  mount -o remount,​user_xattrs /tmp/system 
-  cd /tmp/system 
-  setfattr -h --restore sicherung.attr 
-oder 
-  touch /​tmp/​system/​.autorelabel 
- 
-==== Wiederherstellung der Dateisystem-Einstellungen ==== 
-Mir ist kein automatischer Weg bekannt ... daher: 
-tune2fs .... ( UUID, Dateisystem-Label,​ Mountoptionen,​ ... ) 
-  tune2fs -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sda5 
-  mkswap -U yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy /dev/sda6 
- 
-===== Bootloader wiederherstellen ===== 
-==== chroot vorbereiten ==== 
-  mount --rbind /dev  /​tmp/​system/​dev 
-  mount --bind /proc /​tmp/​system/​proc 
-  mount --bind /sys  /​tmp/​system/​sys 
- 
-(( nicht alle diese Befehle sind in allen Fällen notwendig! grub braucht hauptsächlich /dev, und das ist, wenn man zuvor beim Sichern mit ''​mount --bind''​ gearbeitet hat, schon minimal befüllt. Kann man also weglassen, aber wenn grub meckert, sollte man das versuchen! ​ 
-Ich habe es schon erlebt, dass die Datei ''/​etc/​mtab''​ falsche Informationen enthält. Falls das so ist, kann man sie so ersetzen: 
-  mv /​tmp/​system/​etc/​mtab ​ /​tmp/​system/​etc/​mtab.bak 
-  cp -a /​proc/​mounts /​tmp/​system/​etc/​mtab 
-Nach dem chroot nicht vergessen, die ''/​etc/​mtab''​ wiederherzustellen:​ 
-  mv /​tmp/​system/​etc/​mtab.bak /​tmp/​system/​etc/​mtab 
-)) 
- 
-==== Schritte im chroot Zielsystem ==== 
-  chroot /tmp/system 
- 
-=== System wieder startfähig machen === 
-== grub == 
-Grub in den MBR schreiben: 
-  grub 
-  > root (hd0,0) 
-  > setup (hd0) 
-  > quit 
- 
-oder mit 
-  grub-install --recheck --no-floppy hd0 
- 
-== grub2 == 
- 
-== Debian 6.0 == 
-  grub-install /dev/sda 
-  update-grub2 
- 
-== openSuSE 12.2 == 
-  grub2-install /dev/sda 
-  update-bootloader --refresh 
- 
-== für alle == 
-  grub2-install /dev/sda 
-  grub-mkconfig > /​boot/​grub/​grub.cfg 
-===== Anpassungen bei geänderter Hardware oder geänderten Partitionen ===== 
-Je nach dem wie sich die Hardware geändert hat, sind folgende Bereiche anzupassen: 
- 
-==== Format Partitionstabelle ==== 
-Wenn die neue Festplatte größer als 2TB ist, dann GPT als Format für die Partitionstabelle verwenden. Statt ''​fdisk''​ also ''​gdisk''​ oder ''​parted''​ benutzen. 
- 
-GRUB2 braucht unter GPT zusätzlich eine [[wp>​BIOS Boot Partition]]. ​ 
- 
-((aus dem [[https://​wiki.archlinux.org/​index.php/​GUID_Partition_Table#​Convert_from_MBR_to_GPT|archlinux-Wiki]]:​ //Keep in mind that if your Boot-Manager is GRUB, it needs a BIOS Boot Partition. If your MBR Partitioning Layout isn't too old, there is a good chance that the first partition starts at sector 2048 for alignment reasons. That means at the beginning will be 1007 KiB of empty space where this bios-boot partition can be created. To do this, first do the mbr->gpt conversion with gdisk as described above. Afterwards, create a new partition with gdisk and manually specify its position to be sectors 34 - 2047, and set the EF02 partition type.// ​ 
-)) 
-(( 
-aus der [[http://​www.gnu.org/​software/​grub/​manual/​html_node/​BIOS-installation.html|GRUB Doku]]: //When creating a BIOS Boot Partition on a GPT system, you should make sure that it is at least 31 KiB in size. (GPT-formatted disks are not usually particularly small, so we recommend that you make it larger than the bare minimum, such as 1 MiB, to allow plenty of room for growth.) You must also make sure that it has the proper partition type. Using GNU Parted, you can set this using a command such as the following://​ 
- 
-  parted /dev/disk set partition-number bios_grub on 
- 
-//If you are using gdisk, set the partition type to ‘0xEF02’. With partitioning programs that require setting the GUID directly, it should be ‘21686148-6449-6e6f-744e656564454649’. //)) 
- 
-==== Bootloader grub ==== 
-''/​boot/​grub/​menu.lst''​ : 
- 
-Neue Partitionsnummern beachten, wichtig sind z.B.  
-  * die Einstellungen zur Boot-Partition ( ''​root''​ ) in Grub-Terminologie 
-  * die Lage des Kernels ( ''/​boot/​vmlinuz*''​ oder ''/​vmlinuz*''​ ) 
-  * Kernel-Parameter zum root-Dateisystem ( ''​root= ...''​ ) 
- 
-==== Bootloader grub2 ==== 
-''/​boot/​grub/​grub.cfg''​ : (sollte automatisch über ''​update-grub2''​ erstellt werden) 
- 
-Neue Partitionsnummern beachten, wichtig sind z.B.  
-  * die Einstellungen zur Boot-Partition ( ''​root''​ ) in Grub-Terminologie 
-  * die Lage des Kernels ( ''/​boot/​vmlinuz*''​ oder ''/​vmlinuz*''​ ) 
-  * Kernel-Parameter zum root-Dateisystem ( ''​root= ...''​ ) 
- 
-==== /etc/fstab ==== 
-''/​etc/​fstab''​ : 
-Neue Partitionsnummern,​ Software-RAID und Logical Volumes beachten 
- 
-==== /etc/mtab ==== 
-''/​etc/​mtab''​ : 
-Neue Partitionsnummern,​ Software-RAID und Logical Volumes beachten 
-(( möglicherweise kann man ''/​etc/​mtab''​ auch einfach löschen )) 
-==== Kernel-Module und initrd ==== 
-Je nach Änderung muß eine neue [[admin_grundlagen:​initrd|initrd]] erzeugt werden und/oder die bei Booten geladenen Module müssen überarbeitet werden 
-=== CentOS 6 === 
-in der chroot-Umgebung 
-  mkinitrd --force /​boot/​initramfs-2.6.32-220.el6.x86_64.img 2.6.32-220.el6.x86_64 
- 
-==== udev ==== 
-Gerätenamen in ''/​etc/​udev/​rules.d''​ anpassen 
- 
-====== Alternative Sicherungswege ====== 
-==== Platzsparende Hardlink Backups mit rsnapshot ==== 
- 
-Installation mit 
- 
-  apt-get install rsnapshot 
- 
-Konfiguration unter: 
- 
-  /​etc/​rsnapshot.conf 
- 
-Dabei wichtig: 
- 
-  snapshot_root ​                         -  wohin soll gesichert werden 
-  interval daily 7                       ​- ​ Wieviele Versionen vom täglichen Backup sollen behalten werden? 
-  interval weekly 4                      -  Wieviele Versionen vom wöchentlichen Backup sollen behalten werden? 
-  interval monthly 6                     ​- ​ Wieviele Versionen vom monatlichen Backup sollen behalten werden? 
-  backup ​   /​quelle ​    ​zielrechner/ ​    ​- ​ Zb localhost/ oder im Zusammenhang mit SSH gebrauchen 
- 
-Testen der Config 
- 
-  rsnapshot configtest 
- 
-Danach kann man das Ganze erst einmal im Probedurchlauf testen ohne wirklich Dateien zu schreiben: 
- 
-  rsnapshot -t daily 
- 
-==== Sicherung mit tar über ssh ==== 
-  tar cz --numeric-owner --directory /mnt/system . | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​ 
- 
-Fedora 7, Centos 5: 
-  tar cz --numeric-owner --xattrs --directory /mnt/system . | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​ 
- 
-=== Dokumentation === 
-  * [[tar|Übersicht tar]] 
-  * man tar 
- 
-=== Sicherung mit tar über ssh und anschließendem entpacken === 
- 
-  cd /​pfad/​zur/​quelle && tar -cpP --atime-preserve -f - . | ssh user@server "( cd /​pfad/​zum/​ziel && tar -xpvP --atime-preserve -f - )" 
- 
-==== Sicherung mit cpio über ssh ====  
-((Vermeidet die Probleme von tar und gzip bei Datenfehlern)) 
- 
-  cd /mnt/system 
-  find -xdev -depth -print0 | cpio -o0 --format=crc | bzip2 | ssh nutzer@server 'cat > /​mnt/​backup/​sicherung.cpio.bz2'​ 
- 
-==== Wiederherstellen mit tar über ssh ==== 
-  ssh nutzer@server 'cat /​mnt/​backup/​sicherung.tgz'​ | tar xz --numeric-owner --directory /tmp/system 
- 
-==== Wiederherstellen mit cpio über ssh ====  
-  cd /tmp/system 
-  ssh nutzer@server 'cat /​mnt/​backup/​sicherung.cpio.bz2'​ | bunzip2 | cpio -dumin 
- 
-==== rsync ==== 
-Auf lokale Platte: 
-  rsync -ax --numeric-ids --del / /​mnt/​usbdisk/​root/ ​ 
- 
-Übers Netz via ssh: 
-  rsync -ax --numeric-ids --del -e ssh / server:/​mnt/​backup/​dateien 
- 
-Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem //server// )) 
-  rsync -ax --numeric-ids --del / server::/​backup/​dateien/​ 
- 
-===== Problem: udev ===== 
-Seit Kernel 2.6 und der Einführung von [[udev]] haben Linux Distributionen das Verzeichnis ''/​dev''​ von einem temporären Dateisystem überdeckt. Linux benötigt ​ diese überdeckten Dateien aber beim Booten. Neuere Distributionen (RHEL / CentOS 6, ...) tun das nicht mehr. 
- 
-Lösungswege:​ 
- 
-  - Beim Backup das Verzeichnis ''/​dev''​ explizit angeben. Die wichtigsten Gerätedateien sollten auch darin enthalten sein. 
-  - Auf das Orginalsystem kann man mit ''​mkdir /tmp/system && mount --bind / /​tmp/​system''​ zugreifen. Die Sicherung muss man dann mit ''​tar czpf /dev/st0 --numeric-owner --directory /tmp/system .''​ starten. ​ 
- 
-FRAGE: das müsste doch durch die bind-mounts nach /mnt/system gelöst sein, oder?! 
- 
-Antwort: richtig 
- 
-====== Dokumentation ====== 
-  * [[http://​www.linux-magazin.de/​Artikel/​ausgabe/​2002/​04/​rsync/​rsync.html]] 
-====== Software ====== 
-  * [[http://​www.dirvish.org]] 
-  * [[http://​www.mondorescue.org/​]] 
-  * [[http://​www.partimage.org/​Main_Page]] 
  
admin_grundlagen/systemsicherung.1443770914.txt.gz · Zuletzt geändert: 2015/10/02 07:28 von stefan_miethke