ticktoo Systems

Verschlüsseltes Software-RAID im laufenden Betrieb vergrößern

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.

Schritt 1: die neue Festplatte dem RAID-Verbund als "spare device" hinzufügen

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.

Schritt 2: Das RAID vergrößern

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.

Schritt 3: Den Crypto-Container vergrößern.

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.

Schritt 4: Das Dateisystem vergrößern.

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.

Veröffentlicht am 22.01.2011 in Code.
Sebastian Kraus ist Master Chief bei ticktoo Systems.
E-Mail / Facebook / @rootwerk