Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
letzte inhaltliche Überarbeitung: 01.01.2008
Linux - Grundlagen und Befehle
6. Teil
6.1 DisasterRecovery
<a name="intro"><h1>Linux - Grundlagen und Befehle</h1></a> <h2>Teil 6 - DesasterRecovery</h2> <a name="problem_01"><h2>1. Hilfe - meine Partition ist weg >:-o</h2></a>
<p>
Wenn man, so wie ich, bis spät in der Nacht an seinem Rechner sitzt und Änderungen am Dateisystem durchführt (ist zu klein, falsch verteilt, man will "LVM" benutzen oder sonst welche Gründe) kann es schon mal passieren dass: <ul> <li>der Rechner beim nächsten Starten hängen bleibt,</li> <li>der nächste User (bei mir die Tochter oder Frau - oweh, oweh!) seine Daten nicht findet,</li> <li>man selbst seine Datenbanken vergeblich sucht,</li> <li>die Intranetseite plötzlich nur noch aus Fehlermeldungen besteht.</li> </ul>
</p> <p>
Jetzt ist es Zeit für: <ul> <li>einen Schnaps ...?</li> <li>eine Zigarette ...?</li> <li>andere Selbstmordmethoden ...?</li> </ul> Nein es geht auch anders.
</p> <p>
Ich rate euch, wenn es schon nach 0:00 Uhr ist: <span class="bold">"Geht erst einmal zu Bett!"</span> Nach meiner Erfahrung passieren in der Nacht bei gutgemeinten Wiederherstellungsversuchen genau noch einmal so viele Fehler, wie überhaupt in der Nachtarbeit schon mal so manches daneben gehen kann.
</p> <p>
Am nächsten Morgen guter Kaffee und ein frisches Brötchen - dann gehts los.
</p>
<a name="schritt_02"><h2>2. Informationen und Zugriff verschaffen</h2></a>
<p>
Startet von einer Rettungsdiskette oder -CD. Ich benutze hier gerne die SuSE-Install-CD's (mit der Recovery-Console) oder jetzt auch mal Knoppix 3.4 (mit Option "Knoppix 2" - startet die Textkonsole). Auf diesen Medien findet ihr gute Werkzeuge in einer großen Auswahl.
</p>
<a name="schritt_02_01"><h3>2.1 Partitionierungsdaten</h3></a>
<p>
Für einen ersten Überblick wie euer Dateisystem denn auf der Platte verstreut ist, könnt ihr verschiedene Programme benutzen:
</p>
<a name="schritt_02_01_01"><h4>2.1.1 "fdisk"</h4></a>
<p> <pre class=„code“> fdisk -l /dev/hde</pre>
Gibt eine Übersicht über vorhandene Partitionen auf den Bildschirm aus, mit Angabe der Start- und Endzylinder, Anzahl der Blöcke und Dateisystemtyp.
</p>
<a name="schritt_02_01_02"><h4>2.1.2 "parted"</h4></a>
<p> <pre class=„code“> parted /dev/hde</pre>
Startet ein interaktives Programm (Eingaben erforderlich) zur Anzeige und Manipulation der Partitionseinträge der <span class="bold">Festplatte "hde"</span>. Man kann sich im interaktiven Modus mit <span class="bold">help</span> die möglichen Optionen anzeigen lassen.
</p> <p>
Mit parted kann man Partitionen <span class="bolditalic">verkleinern oder vergrößern</span>:
<pre class=„code“> resize 8 10000,19000</pre>
Vergrößert die <span class="bold">Partition 8</span> auf der ausgewählten Platte - Anfang bei Sektor 10000, Ende bei Sektor 19000.
</p> <p>
Mit parted kann man Partitionen <span class="bolditalic">verschieben</span>:
<pre class=„code“> move 8 12000,21000</pre>
Verschiebt die <span class="bold">Partition 8</span> auf der ausgewählten Platte - neuer Anfang bei Sektor 12000, neues Ende bei Sektor 21000.
</p> <p>
Mit parted kann man Partitionen auch <span class="bolditalic">retten / wiederherstellen</span>. Diese Funktion hat mir schon einmal geholfen als ich meine Partitionstabelle überschrieben hatte. Ich konnte alle Partitionen einwandfrei wiederherstellen:
<pre class=„code“> rescue 12000,21000</pre>
Versucht die Partition zwischen Sektor 12000 und 21000 wiederherzustellen. Dabei werden dann bestimmte Abfragen durchgeführt ob das was das Programm erkannt hat zutreffen kann. Bestätigt man dies wird es übernommen. Man kann diesen Befehl auch ohne die Optionen <span class="bolditalic">Start Ende</span> aufrufen. Dann wird versucht die komplette Platte wiederherzustellen.
</p> </p>
<a name="schritt_02_01_03"><h4>2.1.3 "cfdisk"</h4></a>
<p> <pre class=„code“> cfdisk:
cfdisk /dev/hde</pre>
Startet auch ein interaktives Programm zur Anzeige und Manipulation der Partitionseinträge, bietet aber schon eine etwas komfortablere Ausgabe und Bedienung. Auf der anderen Seite habe ich es bisher nur bei Standardkonfigurationsarbeiten verwenden können, da es bei allen erdenklichen Ungereimtheiten im Dateisystem eine Fehlermeldung ausgibt - und dich dann wieder mit deinem Problem allein läßt.
</p> <p>
Mit diesen Informationen sollte meistens die Fehlerquelle gefunden worden sein. Bei mir waren es u.a. Buchstabenverdreher in der fstab oder im YAST-Dialog eine Partition zu viel in eine LVM-Volumengroup eingehängt (darauf waren vorher meine Datenbanken) und damit dann die vorhergehenden Daten überschrieben. Auch Veränderungen an den zum Booten benötigten Partitionen (/boot und /) ohne Neuaufruf von "lilo" führt zu einem startverweigerndem System.
</p>
<a name="schritt_02_02"><h3>2.2 Infos von den Originalplatten</h3></a>
<p>
Um diese Fehler ausmerzen oder rückgängig machen zu können, muss man meist auf die <span class="bold">"/"-, "/boot"- oder "/"etc-Partition</span> zugreifen können.
</p>
<a name="schritt_02_02_01"><h4>2.2.1 Mountpoint schaffen</h4></a>
<p>
Um <span class="bold">lilo noch einmal aufrufen</span> zu können, benötigt man die "/"- und die "/boot"-Partition. Zuerst werden Verzeichnisse mit <span class="bold">mkdir</span> erzeugt, in die danach die Partitionen mit <span class="bold">mount</span> eingehängt werden:
<pre class=„code“> mkdir /_neu mount -t reiserfs /dev/hda5 /_neu </pre>
Wenn die ehemalige "/"-Partition erfolgreich gemounted werden konnte, macht man diese mit <span class="bold">chroot</span> zu seiner aktuellen "Root"-Partition. So können die nächsten Partitionen direkt unter <span class="bold">"/"</span> eingehangen werden und auch die gewohnten Programme stehen zur Verfügung (man hat ja wieder seine eigene "Root"-Umgebung).
<pre class=„code“> chroot /dev/hda5 </pre> </p> <p>
Für weitere Partitionen muss man diese Schritte wiederholen, bis man die benötigten Infos erhalten bzw. die Fehler (z.Bsp. fehlerhafte Einstellungen in "/etc/fstab") korregiert hat.
<pre class=„code“> mkdir /wh_neu </pre>
Die fragliche Partition (hier mal mein Windows Dateiverzeichnisbaum "win_home"; ist als reiserfs-Dateisystem formatiert; sollte auf /dev/hde8 zu finden sein) wird eingehängt (<span class="bold">gemountet</span>):
<pre class=„code“> mount -t reiserfs /dev/hde8 /wh_neu </pre> </p>
<a name="schritt_02_03"><h3>2.3 Platz schaffen</h3></a>
<p>
Sollte der Platz bestimmter Partitionen zu klein werden, muss man: <ul> <li>eine neue (größere) Partition anlegen,</li> <li>diese unter einem bisher noch nicht vergebenem Namen mounten,</li> <li>die Daten von der zu klein gewordenen Partition dorthin kopieren,</li> <li>in der Datei <span class="bolditalic">/etc/fstab</span> die Eintragung zum mounten der fraglichen Partition ändern,</li> <li>die zu klein gewordene Partition (wenn sie nicht gerade benutzt wird) mit <span class="bolditalic">umount /win_home</span> vom Dateisystem "abhängen",</li> <li>mit <span class="bolditalic">mount -a</span> werden dann alle in der <span class="bolditalic">/etc/fstab</span> eingetragenen Partitionen/Geräte in das Dateisystem eingehängt.</li> </ul> Sollte die Partition noch benutzt werden startet man mit <span class="bolditalic">reboot</span> den Rechner neu und beobachtet die Ausgaben während des Startvorganges, um evtl. auftretende Probleme zu erkennen.