Neuer Untergrund
Dateisysteme on-the-fly umwandeln mit Fstransform
Das Dateisystem gibt vor, wie das Betriebssystem Dateien auf der Festplatte speichert. Dummerweise gibt es gleich einen ganze Reihe von Ansätzen zum Speichern der Daten. Unter Linux erfreut sich derzeit Ext4 großer Popularität, als Nachfolger steht Btrfs in den Startlöchern. Windows dagegen verwendet NTFS, dessen Urahn FAT32 vor allem noch auf vielen USB-Sticks zum Einsatz kommt.
Welches Dateisystem Sie unter Linux einsetzen, bestimmen Sie bei der Installation des Systems, falls Ihnen die Distribution diese Wahl nicht schon abnimmt. Liegt das System erst einmal auf der Platte, fällt ein Wechsel schwer: Wer auf Nummer sicher gehen will, kopiert die Dateien erst auf einen anderen Datenträger, formatiert dann die Festplatte neu und spielt schließlich alle Dateien wieder zurück. Mit etwas Glück bleiben deren Attribute dabei erhalten.
Eine alternative zu diesem aufwendigen Verfahren verspricht Massimiliano Ghilardi mit seinem Programm Fstransform: Die Software für die Kommandozeile wandelt ein Dateisystem in ein anderes um, ein Zwischenspeicher ist dabei nicht mehr nötig. Hinter Fstransform verbirgt sich übrigens nur ein Wrapper-Skript: Das eigentliche Konvertieren erledigen im Hintergrund die beiden Programme fsmove und fsremap. Der Kasten "Installation" erläutert, wie Sie die Software auf dem gewünschten System aufsetzen.
Installation
Als Neuling hat Fstransform noch nicht den Weg in alle Distributionen gefunden. Canonical nimmt es beispielsweise erst mit Ubuntu 12.10 in seine Repositories auf. Im Moment gilt es Fstransform daher selbst zu übersetzen. Das erledigen Sie jedoch rasch: Zunächst installieren Sie über den Paketmanager den C++-Compiler und make. Unter Ubuntu liegen die beiden in den Paketen g++ und make.
Anschließend laden Sie die aktuelle Fstransform-Version von der Homepage [1], entpacken das Archiv auf der Festplatte und rufen dann im neu entstandenen Verzeichnis nacheinander die drei Befehle ./configure, make und – als root – make install auf.
Nur mit Backup
Wie üblich gibt es aber ein paar Haken: So kann Fstransform nur mit den unter Linux gebräuchlichen Dateisystemen Ext2, Ext3, Ext4, ReiserFS, JFS und XFS umgehen, nicht aber mit den Windows-Dateisystemen NTFS, MS-DOS und FAT32. Der häufige Wunsch, eine alte Windows-Partition in eine mit Ext4-Dateisystem zu verwandeln, bleibt somit vorerst unerfüllt.
Darüber hinaus besteht bei Fstransform prinzipbedingt die Gefahr, dass beim Umwandeln Daten im Nirwana landen. Der Entwickler übernimmt für Verluste ausdrücklich keine Haftung und weist in der Dokumentation deutlich auf die Gefahren hin. Möchten Sie das Tool einsetzen, legen Sie als Erstes eine Sicherheitskopie an, am besten in Form eines Images. Dieses spielen Sie im Falle eines Falles bei Bedarf schnell wieder ein. Für das Spiegeln bietet sich zum Beispiel das Live-System Clonezilla [2] an (siehe Kasten "LinuxUser Rescue CD").
LinuxUser Rescue CD
Eine Partition mit allen darauf liegenden Daten kopieren Sie im Handumdrehen mit der LU Rescue CD 08.12 aus der letzten Ausgabe. Das Komplettsystem eignet sich nicht nur zum Kopieren von Partitionen, sondern auch zur Pflege von Systemen und zur Analyse und zum Retten von Daten nach einem Crash. Es enthält neben System Rescue CD 2.8.0 und Parted Magic 2012_05_30 zusätzlich das im Beitrag erwähnte Clonezilla in der aktuellen Version 1.2.12-67. Haben Sie das Heft nicht vorliegen, bestellen Sie die Ausgabe komfortabel über das Internet [5].
Um mit Fstransform ein Dateisystem umzuwandeln, benötigen Sie auf der entsprechenden Partition mindestens fünf Prozent freien Speicherplatz. Je mehr allerdings bereit steht, desto reibungsloser klappt das Konvertieren. Der Autor des Programms rät, vor dem Umwandeln einer Partition nach XFS mindestens zehn Prozent freien Plattenplatz zu reservieren.
Außerdem setzt die Software das Vorliegen der jeweiligen System-Tools für das vorhandene und das neue Dateisystem voraus. Möchten Sie unter Ubuntu eine Partition mit dem XFS-Dateisystem ausstatten, rüsten Sie die XFS-Tools über das Paket xfsprogs nach.
Das neu einzurichtende Dateisystem muss zusätzlich sogenannte Sparse-Dateien [3] unterstützen. Außerdem setzt Fstransform die Systemaufrufe ioctl(FS_IOC_FIEMAP) beziehungsweise ioctl(FIBMAP) voraus. Selbstverständlich benötigt die Software einen Kernel mit entsprechendem Support für Ausgangs- und Zieldateisystem.
Sowohl für das aktuell verwendete wie für das gewünschte Dateisystem benötigen Sie auf dem betreffenden Rechner die Programme mkfs und fsck. Darüber hinaus verwendet Fstransform die Kommandozeilen-Tools aus der Tabelle "Kleine Helfer".
Kleine Helfer
which
|
Pfad zum Kommando ausgeben |
expr
|
Ausdrücke evaluieren |
id
|
Ausgabe der realen und effektiven User-ID |
blockdev
|
Systemfunktionen für Blockgeräte direkt aufrufen |
losetup
|
Loop-Devices aufsetzen und verwalten |
mount
|
Geräte einhängen |
umount
|
Geräte aushängen |
mkdir
|
Verzeichnisse erstellen |
rmdir
|
Verzeichnisse löschen |
rm
|
Dateien und Verzeichnisse löschen |
mkfifo
|
FIFO erstellen |
dd
|
Datei konvertieren oder kopieren |
sync
|
Zwischenspeicher wegschreiben |
fsck
|
Dateisystem überprüfen |
mkfs
|
Dateisystem erstellen |
Haben Sie die zu konvertierende Partition gerade in einem Verzeichnis eingehängt, benötigt das Skript auf jeden Fall Schreib- und Leserechte. Außerdem dürfen während des Umwandelns keine Prozesse auf die Partition zugreifen, da Fstransform die Partition aushängt. Das bedeutet, dass ein Umwandeln der Root-Partition im laufenden Betrieb nicht funktioniert.
Erfüllt das System alle Voraussetzungen, rufen Sie Fstransform mit den Rechten des Superusers auf. Es verlangt als Parameter die Gerätedatei mit der umzuwandelnden Partition sowie das Zieldateisystem. Der Befehl
# fstransform /dev/sdb1 xfs
konvertiert die erste Partition der zweiten Festplatte in das XFS-Dateisystem.
Umzug
Im ersten Schritt prüft die Software, ob sie alle Hilfsprogramme findet. Tritt hier ein Fehler auf (Abbildung 1), sollten Sie über [Eingabe] den Vorgang abbrechen und die fehlenden Programme nachinstallieren. Sofern die zu konvertierende Partition noch nicht eingehängt ist, mountet Fstransform sie in einem Verzeichnis unter /tmp.
Einige Distributionen, wie etwa Ubuntu, öffnen dabei automatisch den Dateimanager (Abbildung 2). Dessen Fenster sollten Sie umgehend wieder schließen, andernfalls kommt es zu einem weiteren Fehler.
Das Skript pausiert anschließend noch einmal und bietet Ihnen die Möglichkeit, den gesamten Vorgang mit [Strg]+[C] abzubrechen. Möchten Sie das Umwandeln fortsetzen, drücken Sie [Eingabe]. Nachdem Fstransform den ersten Teil des Konvertierens hinter sich gebracht hat, hängt es die zu konvertierende Partition wieder aus.
Falls das nicht klappt, hält das Skript mit einer Fehlermeldung an (Abbildung 3). Das ist aber kein Grund zur Panik: Sie öffnen kurzerhand ein zweites Terminal und hängen die Partition per Hand aus, etwa mittels:
$ sudo umount /dev/sdb1
Jetzt tippen Sie im Fenster mit Fstransform continue ein und drücken [Eingabe]. In jedem Fall sollte in dieser Phase eine Meldung wie in Abbildung 4 erscheinen. Hier drücken Sie wieder [Eingabe] und haben anschließend – zumindest beim Umwandeln größerer Partitionen – die Gelegenheit, gleich mehrere Liter eines Heißgetränks der Wahl zu sich zu nehmen.
Das Umwandeln dauert etwa eine Minute pro Gigabyte. Das ergibt bei einer Partition mit 250 GByte Daten also eine Dauer von bis zu vier Stunden. Während dieser Zeit dürfen Sie die Arbeit unter keinen Umständen unterbrechen. Es empfiehlt sich, das System nicht zu nutzen, bis eine Meldung ähnlich der aus Abbildung 5 erscheint.
Läuft etwas schief, finden Sie unter /var/tmp/fstransform mehrere Log-Dateien mit den Namen fstransform.log.Nummer und fsremap.job.Nummer/fsremap.log. Sollte fsremap seine Arbeit abbrechen, lohnt es sich, es über
# fsremap --resume-job=Nummer /dev/sdc1
dazu zu bewegen, die unterbrochene Arbeit noch einmal aufzunehmen.



