Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2006  »  11  »  Frisch verwurstet  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Perl-gesteuerte Rescue-CD sorgt für lange haltende Daten

Frisch verwurstet

von Michael Schilli
Erschienen im Linux-Magazin 2006/11

Dieses Backup-System überrascht mit seinen inneren Werten: Mit präparierter Rescue-CD und einem Perl-Skript konserviert es den kompletten Festplatteninhalt von Clients via LAN auf einen Backupserver.

Was tun, wenn die Festplatte ausfällt? Schnellstens eine neue kaufen und das letzte Backup einspielen, selbstverständlich. Was aber, wenn mehrere Partitionen auf der Platte waren: Wie viel Platz war jeder zugeordnet? Welches Filesystem war dort installiert?

Die Wiederherstellung im Notfall (Desaster Recovery) fällt besonders leicht, wenn die Sicherung vollständige Partitionen umfasst, die man am Stück zurückspielen kann. Enthalten diese Partitionen aber beispielsweise das Root-Verzeichnis eines Linux-Systems oder läuft auf einem Laptop gar Windows, dann ist es nicht ohne weiteres möglich, im laufenden Betrieb geeignete Kopien zu ziehen.

Auf Sysresccd.org [2] gibt es allerdings eine Rescue-CD, die eine beliebige x86-Maschine mit einem Minimal-Linux bootet und wichtige Tools wie »partimage«, »sfdisk«, »fdisk«, »perl« und einen NFS-Client enthält. So kann das System anschließend Kontakt mit einem NFS-basierten Backupserver aufnehmen (Installation siehe unten) und sowohl das Partitionierungs-Layout als auch die Partitionen selbst sichern.

Notfall-CD als letzte Rettung

Natürlich möchte niemand umständliche Kommandos tippen, um ein Backup anzulegen. Nach dem Einlegen der CD in den zu sichernden Rechner sollte möglichst alles automatisch ablaufen. Deshalb beschreibt dieser Beitrag eine leicht angepasste Boot-CD, die nur kurz fragt, um welchen Rechner es sich handelt, und dann selbstständig alle Platten auf den Backupserver sichert.

Wie das Diagramm in Abbildung 1 zeigt, nimmt ein mit dieser CD gebooteter Rechner über das »autorun«-Skript sofort Kontakt mit dem Backupserver auf (im Beispiel unter der IP-Adresse 192.168.0.40). Ein zur Sysresc-CD hinzugefügtes »autorun«-Skript (Listing 1) initialisiert hierfür zunächst das Netzwerk und startet anschließend den NFS-Dienst mit seinen beiden Daemons »lockd« und »portmap«.


Abbildung 1: Die Rechner im lokalen Netz sichern ihre Partitionen mit Hilfe der gepatchten Sysresc-CD automatisch via LAN auf das LVM-Volume eines NFS-Servers.

Listing 1: Autorun

01 #!/bin/sh
02 # Sysresccd autorun script
03 IP=192.168.0.40
04 
05   # Start network
06 /etc/init.d/net.eth0 start
07 /etc/init.d/nfs start
08 
09   # Mount directory via NFS
10 mkdir /mnt/backup
11 mount $IP:/backup /mnt/backup ||
12  (echo "Mount failed ($IP down?)";
13   exit 1)
14 
15   # Run backup script over NFS
16 /mnt/backup/bin/pbb.bin
17 
18   # Close NFS
19 umount /mnt/backup

Danach mountet es das Verzeichnis »/backup« des Backupservers unter »/mnt/backup« auf dem zu sichernden Client. Dort steht dann das zu einem Binary kompilierte Perl-Skript »bin/pbb.bin« (Partition Based Backup) bereit. Das Skript »autorun« ruft es über NFS auf und lässt es auf dem Client ablaufen.

Das Skript präsentiert nach dem Start ein einfaches Textmenü mit den nummerierten Rechnernamen der konfigurierten Clients. Sobald der Anwender einen Eintrag auswählt, startet das Backup. Steht hingegen eine Restaurierung an, bricht der Benutzer einfach mit [Ctrl]+[C] ab und operiert weiter in der Root-Shell, in der er danach landet.

Listing 2 zeigt den Sourcecode des Backup-Skripts. Die Funktion »ask()« bietet voreingestellte Rechnernamen aus einer Liste an und »sfdisk« klappert sodann alle sichtbaren IDE-Festplatten auf seinem Client ab. Anschließend sichert das Tool deren Partionstabellen auf den Backupserver. Außerdem kopiert es den Master Boot Record der ersten Platte »/dev/hda« dorthin. Die gesicherten Daten liegen danach im Verzeichnis »/backup/data/Rechner« unter dem anfangs ausgewählten Rechnernamen auf dem Backupserver.

Listing 2:
»pbb«

01 #!/usr/bin/perl -w
02 use strict;
03 use Pod::Usage;
04 use Sysadm::Install qw(:all);
05 use Log::Log4perl qw(:easy);
06 use Log::Log4perl::Appender::Screen;
07 
08 Log::Log4perl->easy_init($DEBUG);
09 
10 my $MDIR      = "/mnt/backup/data";
11 my %ptypes  = map { $_ => 1 }
12          qw(83 7);
13 my @machnames = qw(desktop1
14                    desktop2 laptop1);
15 my %machnames = map { $_ => 1 } @machnames;
16 
17 my $mname = pick "Box", @machnames, 1;
18 
19 my %drive_done;
20 
21 my $bdir    = "$MDIR/$mname";
22 my $oldbdir = "$MDIR/$mname.old";
23 
24   # Move old backup aside
25 if(-d $oldbdir) {
26   LOGDIE "$oldbdir already exists";
27 }
28 mv $bdir, $oldbdir if -d $bdir;
29 mkd $bdir unless -d $bdir;
30 
31     # Save the master boot record
32     # of the first IDE disk
33 tap qw(dd if=/dev/hda),
34     "of=$bdir/hda.mbr",
35     qw(count=1 bs=512);
36 
37 my $sf = `sfdisk -d`;
38 
39 while($sf =~ /^(.*Id=s*(w+).*)/mg) {
40   my($line, $id) = ($1, $2);
41 
42   next unless exists $ptypes{$id};
43 
44   my($path) = split ' ', $line, 2;
45   (my $dev   = $path) =~ s#.*/##;
46   (my $drive = $dev)  =~ s/d//g;
47 
48     # Save partition drive's table
49   if(!$drive_done{$drive}++) {
50     sysrun "sfdisk -d /dev/$drive " .
51            ">$MDIR/$mname/$drive.pt";
52   }
53 
54     # Save partition
55   sysrun "partimage -b -d -z1 -o save" .
56          " /dev/$dev $bdir/$dev.img.gz";
57 }
58 
59   # Remove old backup
60 rmf $oldbdir if -d $oldbdir;
61 
62 =head1 NAME
63 
64 pbb - Partition Based Backup
65 
66 =head1 SYNOPSIS
67 
68     pbb
69 
70 =head1 DESCRIPTION
71 
72 Scans all IDE hard drives, and backs
73 them up by partition.

Nur Wertvolles sichern

Beim Sichern von Partitionen fällt auf, dass diese oft nicht vollständig gefüllt sind. Wer nur die Rohdaten per »dd if=/dev/hda1 of=backup.img« abzieht, erzeugt am Ende ein unnötig großes Image »backup.img«. Das nützliche Tool »partimage« hingegen kennt die Struktur bekannter Dateisysteme wie Ext 2, Ext 3 oder des unter Windows gängigen NTFS (siehe Artikel in diesem Heft). Es bietet eine nützliche Fortschrittsanzeige, speichert nur relevante Daten und komprimiert diese außerdem noch.

Damit kann es ohne weiteres vorkommen, dass aus einer nur spärlich gefüllten 30 GByte großen Root-Partition eine Backup-Datei resultiert, die lediglich ein paar hundert MByte belegt.

Das Kommando »partimage -b -d -z1 -o save /dev/hda1 / Pfad/hda1.img.gz« ruft »partimage« im Batch Mode (»-b«) auf, damit es sich nach getaner Arbeit automatisch beendet. Die Option »-d« legt fest, dass das Tool dem Benutzer keinen Kommentar für die Beschreibung der entstehenden Imagedatei abverlangt. Mit »-o« überschreibt es rücksichtslos eventuell bestehende Imagedateien und »-z1« bestimmt, dass es die Komprimierung mit »gzip« durchführt. Dabei spaltet »partimage« die entstehende Backupdatei zur leichteren Handhabung in je 2 GByte große Teile, die es fortlaufend nummeriert.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Blitzstart Automatisches System-Deployment mit FAI
Dahintergeblickt KDE-Voreinstellungen verstehen, um Updates beim Desktop zu bewerkstelligen
Virtuelle Werkzeuge Nach dem Hype: Die richtigen Tools für effektive Virtualisierung
Speicherriese Einen eigenen I-SCSI-Server aufsetzen und testen
Schlank in Schritten Workshop: Die individuelle Knoppix-CD
Need for Speed Das verteilte Dateisystem Lustre
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Kommentare (0)