Sebastian Kraus — 22.01.2011
Ein verschlüsseltes Software-Raid unter Linux braucht nur 4 Befehle auf der Kommandozeile, um eine weitere Festplatte in den ausfallsicheren Festplatten-Verbund aufzunehmen. Und Zeit. Viel Zeit.
In den letzten Tagen stand die Erweiterung eines RAID-Systems im Büro-Server an. Mit bisher 3 Festplatten zu je 1 TB im RAID 5 System ergab sich eine Kapazität von 2 Terabyte. Dabei durfte 1 Platte ausfallen, ohne dass die Daten verloren gehen. Am Ende der Kapazität angekommen, genügen glücklicherweise 4 Befehle auf der Kommandozeile, um neuen Speicherplatz hinzuzufügen. Knifflig wird die Sache allerdings dann, wenn die Daten auf dem RAID verschlüsselt sind.
Hier eine kleine Anleitung für jene, die ein LUKS-verschlüsseltes Software-RAID 5 im laufenden Betrieb vergrößern möchten.
mdadm --add /dev/md0 /dev/sde1
Es ist darauf zu achten, dass das die Partition sde1 die gleichen Eigenschaften und die gleiche Größe besitzt wie die anderen RAID-Partitionen.
mdadm --grow /dev/md0 --raid-devices=4
Mit diesem Befehl wird das RAID von vorher 3 auf jetzt 4 Festplatten vergrößert. Dabei halten 3 Platten die Nutzdaten, die Vierte enthält Redundanz. Da das bisher anders war, werden jetzt die Daten in einem sehr aufwendigen Prozess umorganisiert. Bei meinem 3-Platten-System hat es gute 24 Stunden gedauert. Während dieser Zeit war das Laufwerk aber online und konnte lesend und schreibend genutzt werden, was verständlicherweise aber auf die Performance negativen Einfluss hat.
cat /proc/mdstat
zeigt während dieser Phase an, dass das Gerät "reshaped" wird, was nicht mit "recovery" verwechselt werden sollte. An dieser Stelle hatte ich kurz Schweiß auf der Stirn. Nach dem Reshape wird noch eine Recover-Phase auf das neue Spare-Device durchgeführt, was aber der Funktionalität des RAID-Verbundes und dem Fortfahren im Prozess nicht im Weg steht.
cryptsetup resize storage
Für diesen Schritt muss der Crypto-Container geöffnet sein. Der Name "storage" ist entsprechend anzupassen. Dieser Schritt dauert nur wenige Sekunden und passt den Cryptocontainer an das darunterliegende logische Laufwerk, dem RAID, an.
resize2fs -p /dev/mapper/storage
Auch dieser Schritt braucht mehrere Stunden, währenddessen die dazugekommene Kapazität nicht nutzbar ist, aber die ursprüngliche Größe les- und schreibbar zur Verfügung steht.
Abschließend noch eine Bitte: Don't try this with Windows.