LV Linux: Effiziente Anwendung an Hand von Fallbeispielen Backup, Booten, RAID Franz Schäfer
Franz Schäfer Sysadmin @ ZID ISP (akis, silverserver, ...) Nachtrichtentechnik, Regelungstechnik, Computertechnik Linux User seit 1995 (kernel 1.1.18)
Problem: Backup nicht nur Sicherung von Files, sondern auch: Metadaten (Zugriffsrechte, Timestamps, Symlinks, Hardlinks Device Files) Mehrere Versionen Eventuell: Sparse Files Einfaches Restore im Katastrophenfall Eventuell: Verschlüsselung
tar – der klassiker # tar cfpz dip.tgz diplomarbeit/ # tar tfvz dip.tgz # cd / ; mount /bla # tar –one-filesystem -c -p -f - . \ | (cd /bla/ && tar xfvp - ) # tar ... | ssh nachbarserver \ "cd /bla/ && tar xfvp - " # nc -l -p 7777 | tar xfvlp - # tar ... | nc otherhost 7777
tar: incrementelles backup option –newer oder -N oder: option –files-from oder -T die files liste z.b.: mittels find erzeugen: # find . -ctime -2 >backup.list
rsync rsync: auch remote # mount /backup || exit 1 # cd / # rsync -Hxa --delete . /backup # umount /backup rsync: auch remote
Passphrase nicht vergessen! duplicity # apt-get install duplicity # duplicity /home/anna/ \ file:///ext/duplicity/ # duplicity /home/anna \ scp://karl@woanders.at:/bla/ Passphrase nicht vergessen! backends: local, ssh/scp, rsync, ftp
bacula, tivoli zentrales backup mit datenbank der gebackupten files bacula ..... frei tivoli .... ibm, binary only clients (dsmc)
automatisierung mit cron Backup regelmäßig. z.B.: via cron cron startet prozesse zu bestimmten zeiten. z.b. jeden sonntag nacht um 3:17 nachts.. Systemweites config: /etc/crontab pro user: # crontab -e
crontab beispiel (in /etc/crontab in crontab -e entfällt die spalte mit dem username) 53 3 * * * root /root/meinbackup.sh >> /var/log/backup.log 2>&1 13 07 * * 0 root /root/sonntagmorgens.sh 01,21,41 * * * * root /root/3malprostunde 17 */3 * * 1-4 root /root/8mal_mo- do.sh # 0:17 3:17 6:17 .. jeweils montag - do 7 30 1-24 12 * root /root/advent.sh wichtig in crontabscripts: PATH=...
backup offsite alte versionen aufheben, mehrstufig backupen ab und zu ein restore testen Archivierungen abgeschlossener Projekte
backup lösungen cheapo lösung: mehrere USB wechselplatten z.B.: wöchentlich wechseln eine immer offsite aufbewahren €180/1000Gig alternative tapes, tape roboter Drive ab €800 + Medien €20/200Gig library ab €4000
Tipps zum Clonen von Systemen mittels tar sehr leicht auch via netz. im geklonten system: neuer hostname, IP adresse und vor allem neuer ssh-key
Software RAID Raid ist kein Backup Software Raid, Vorteile: auf partition basis keine hardwareabhängigen tools im Linux mittels mdadm
mdadm # mdadm –create /dev/md0 \ -l1 -n2 /dev/sdb7 /dev/sdc7 # mkfs.ext3 /dev/md0 .. nach ausfall: # mdadm --manage /dev/md0 \ –-add /dev/sde5
/proc/mdstat # cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdc3[1] sdb3[0] 146480576 blocks [2/2] [UU] md3 : active raid1 sdc4[1] sdb4[0] 159252224 blocks [2/2] [UU] mdadm config file (monitoring!): /etc/mdadm/mdadm.conf
PC booten eprom -> bios -> bios lädt 1. sektor von Harddisk /dev/hda oder /dev/sda Im Bios auch andere devices konfigurierbar
Linux Booten kernel auf floppy lilo grub loadlin syslinux, isolinux, pxelinux tftp, nfsroot, ....
ohne initrd bootloader lädt kernel. kernel gestartet, entpackt sich bootet startet am ende /sbin/init (alternativ init=/bin/bash)
mit initrd bootloader lädt kernel und initale ramdisk (initrd) ins ram startet kernel. kernel bootet startet /linuxrc auf ramdisk lädt kernel module, etc.. mountet echtes root filesystem. mittels pivot_root /echtesroot wird /
wann mit/ohne initrd? handcompilierte kernel: am einfachsten ohne initrd kernel von distributionen i.a. mit initrd
lilo # /etc/lilo.conf lba32 boot=/dev/sda map=/boot/map password=geheim delay=30 timeout=100 prompt default=meinlinu x image=/boot/bz7 root=/dev/sda2 label=meinlinux read-write restricted alias=1
lilo boot prompt, neues root passwort setzen linux init=/bin/bash # mount -o remount -rw -n / # passwd # mount -o remount -r -n / # sync # reboot
neues rootpasswort mit rescue CD mit rescue CD (knoppix u.ä. booten) sudo bash ; su - # mkdir /bla # mount -t ext3 /dev/sda7 /bla # chroot /bla /bin/bash # passwd # exit ; umount /bla
auch für neuen bootsektor schreiben notfall backup, restore hängenbleibende startscripts entfernen ...
grub lebt in /boot/grub menu.lst für bootmenü title Meinlinux root (hd0,0) kernel /bz23 root=/dev/sda7 ro initrd /initrd23.img device.map für zuordnung (hd0) /dev/sda (hd1) /dev/sdb
grub installieren # grub setup (hd0) quit alternativ: # grub-install \ --root-directory=/boot/ \ /dev/hda
loopback filesystem # dd if=/dev/zero of=bla \ bs=1024 count=10240 # mkfs.ext3 mein.img # mount -o loop mein.img \ /mnt/bla alternativ ramdisk /dev/ram0
Encrypted Loopback # dd if=/dev/zero of=enc.img \ bs=1M count=30 # losetup -e aes /dev/loop0 enc.img # mkfs.ext3 /dev/loop0 # mount -t ext3 /dev/loop0 /bla # echo bla > /bla/bla.txt # umount /bla # losetup -d /dev/loop0
Zusammenfassung Problem Backup tar rsync duplicity bacula, tivoli backup strategien clonen cron software raid PC booten linux booten mit/ohne initrd lilo rescue CDs grub loopback, encrypted