Mit dem root-Verzeichnis auf eine neue Partition umziehen, schnell und unkompliziert.
Das hier vorgestellte Verfahren habe ich selbst genutzt als ich mit meinem root-Verzeichnis auf eine neue Partition umgezogen bin, es hat einwandfrei funktioniert. Abwandlungen meiner Methode sollten für so ziemlich jedes andere Verzeichnis funktionieren, will man die Downtime gering halten würde ich jedoch erstmal einen Artikel zum Thema bei developerWorks lesen. Und natürlich sollte man die angegebenen Partitionen an seine eigenen Vorstellungen anpassen...
Meine Partitionierung sah vor dem Umzug so aus:
/dev/hda3 / ext3
/dev/hda1 /boot ext3
Das Problem dabei war Platzmangel - /dev/hda3 war eine 10 GB-Partition, mit 9,5 belegten GB recht gut ausgelastet. Abhilfe sollte eine nicht genutzte Debian-Installation in /dev/hdb2, einer 60 GB-Partition, schaffen, der /boot-Mountpoint sollte jedoch nicht verändert werden.
Als erstes musste also /dev/hdb2 "gereinigt" werden, sprich: Ein frisches Dateisystem musste her. Da ich ein ext3-Dateisystem haben wollte war das Vorgehen klar, an der Shell musste nur als root ein mke2fs -j /dev/hdb2 abgefeuert werden - bye bye Debian. Mein nächster Schritt war das erstellen eines passenden Menüpunktes im LILO, was ich durch einfügen der folgenden Zeilen in die /etc/lilo.conf erreichte:
image=/boot/vmlinuz
label="mdk-hdb2"
root=/dev/hdb2
initrd=/boot/initrd.img
append="quiet devfs=mount mem=1024M"
vga=788
read-only
Da die ganzen Optionen relativ systemabhängig sind würde ich empfehlen einfach den vorhandenen Standard-Eintrag zu kopieren und nur label und root anzupassen - die schon vorhandenen Punkte würde ich jedoch (noch) nicht ändern, so hat man immer noch ein bootfähiges System falls der Umzug nicht klappen sollte. Um das neue Menü zu aktivieren muss man noch LILO aufrufen, in meinem Fall durch ein lilo -b /dev/hda1 (als root).
Jetzt fehlt nur noch ein Linux-System das man booten kann um den eigentlichen Umzug durchzuziehen, und was bietet sich da eher an als Knoppix. Im Grunde reicht hier aber jedes System das eine Shell, den cp-Befehl und einen Texteditor bereitstellt. Man kann nicht von seinem "normalem" System booten, da dann ein paar Dateien nicht kopiert werden könnten!
Hat man sein „Umzugslinux” gebootet geht es erstaunlich einfach weiter (als root): Man erstellt sich zwei Mountpoints, mountet die beiden Partitionen zwischen denen umgezogen werden soll und kopiert die Dateien.
mkdir /mnt/root-old mkdir /mnt/root-new mount /dev/hda3 /mnt/root-old mount /dev/hdb2 /mnt/root-new cp -ax /mnt/root-old/* /mnt/root-new
Durch den Parameter -ax wird der ganze Inhalt des Quellverzeichnisses rekursiv kopiert, wobei Dateiattribute erhalten bleiben und möglicherweise eingebundene Mountpoints ausgelassen werden. Ein kurzer Hinweis: Das kopieren kann recht lange dauern, je nach zu bewegender Datenmenge und Geschwindigkeit der Festplatten. Wie lange es bei mir gedauert hat kann ich nicht sagen, der Vorgang lief während ich schlief.
Nachdem der Kopiervorgang beendet ist muss man nur noch die fstab auf der neuen Partition anpassen (etwa mit vi /mnt/root-new/etc/fstab, wie immer als root), hier muss das Device für den Mountpoint / angepasst werden. In meinem Fall wurde aus der Zeile
/dev/hda3 / ext3 defaults 1 1
ein
/dev/hdb2 / ext3 defaults 1 1
- ist dieser Schritt erledigt ist der Umzug komplett, man kann neu booten und testen ob es funktioniert hat indem man den zuvor angelegten Menüpunkt im LILO auswählt. Um absolut sicher zu gehen dass das neue root-Verzeichnis benutzt wird kann man an der Shell ein less /etc/mtab aufrufen und dort nach dem Mountpoint / schauen. Nach einem erfolgreichen Umzug bietet es sich an nochmals die /etc/lilo.conf zu bearbeiten, zwecks Anpassung der vorhandenen Menüpunkte auf den neuen /-Mountpoint, natürlich ist nach einer Anpassung auch ein weiterer lilo-Aufruf fällig.