Seit dem letzten Plattentango sind einige Jahre vergangen, um genau zu sein 9, in Worten neun(!), erstaunlich wie schnell die Zeit vergeht, wenn man sich amüsiert.;) Das System läuft seitdem tadellos, zwischenzeitlich musste mal eine Platte ersetzt werden, sonst gab es aber keine Probleme.
Nun war mal wieder ein Plattenwechsel angesagt, bei dem aber gleichzeitig das System vergrößert werden sollte. Zum einen, weil größere Platten verbaut wurden, zum anderen, weil die Rootpartition zu klein wurde.
Inzwischen hatte sich bei Debian einiges getan und einiges wurde vor allem bequemer, ich hatte vor ein paar Tagen noch das System auf das aktuelle Debian 12 Bookworm aktualisiert.
WARNUNG
Trotzdem an dieser Stelle noch einmal die WARNUNG, das alles sind heikle Aktionen, wenn man da was falsch macht, kann ganz schnell der gesamte Datenbestand im Nirwana landen, daher vor der Operation „BACKUP MACHEN“!!!! Und man sollte seine Sinne beisammen haben, also ausgeschlafen und nüchtern sein!! (Ich spreche da leider aus Erfahrung).:-O
Ich übernehme hier keine Haftung für irgendwas, jeder der das hier nachmacht, sollte sich der Risiken bewusst sein und auch dem Risiko, daß ich hier irgendwo einen Fehler gemacht habe. Daher, Ihr seid für Euch selbst verantwortlich!!!
Der Plan
Wie musste ich also vorgehen, ich kannte es eigentlich nur von früher, daß man immer erstmal ein Backup des Systems machte, die Platten neu partitionierte und dann das System zurückspielte. Inzwischen geht das aber deutlich einfacher. Ich werde das hier jetzt nicht super ausführlich machen, die meisten Befehle findet man im Netz bei diversen Tutorials, es geht mir hier eher um die Vorgehensweise.
- Defekte Platte(1) durch Neue ersetzen
- Neue Platte partitionieren
- In RAID Verbund aufnehmen und synchronisieren
- Schon vorhandene(2) Platte aus RAID Verbund entfernen und neu partitionieren
- Platte 2 wieder einsetzen, Partitionierung von Platte 1 übernehmen, ins RAID 1, wieder synchronisieren
- GRUB mit LIVE System auf Platte 1 installieren
- RAID vergrößern
- Dateisysteme (ext3, ext4) erweitern
So der Plan, dann schaumerma.:-)
Ans Eingemachte
HINWEIS: Solltet Ihr ein Hot Spare in Eurem RAID haben, entfernt dies erstmal, denn sonst wird jedesmal, wenn Ihr eine Platte entfernt, das Hot Spare eingebunden.
Weiter im Text, eine meiner RAID Platten(/dev/sdb) hatte einen Defekt, sie lief zwar noch, aber smartctl warf ständig Fehler aus, also entfernte ich erstmal die defekte Platte aus dem RAID 1 Verbund und aus dem Rechner. Ich schloss nun die neue Platte (/dev/sdb
) wieder an und bootete neu. Dann partitionierte ich die Platte mit den neuen Größen und band diese wieder in den RAID Verbund ein. Da muss man geduldig sein, das dauert bei großen Platten mehrere Stunden. Nun entfernte ich die andere Platte (/dev/sdb
) aus dem RAID Verbund. Auf diese Platte übertrug ich nun das Partitionsschema von Platte /dev/sda
. Für alle Vergesslichen, das geht so:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Damit wird das Partitionsschema von Platte /dev/sda
auf /dev/sdb
gespiegelt. Nun bindet man die Platte /dev/sdb
wieder in den RAID Verbund ein.
mdadm --add /dev/mdX /dev/sdaY
Das dauert jetzt wieder, möglicherweise gibt es noch einen schnelleren Weg, aber so bin ich auf der sicheren Seite, daß ich immer eine Platte mit meinen Daten vorliegen habe.
GRUB installieren
Nun startet man ein Debian 12 Bookworm Livesystem, um GRUB auf /dev/sdb zu installieren. Früher war das mit einem SoftRAID immer ein ziemliches Gewürge, das geht heute einfacher, aber nicht unbedingt einfach.;) Das RAID System lässt sich gleich mit Bordmitteln des Installers ins Rescuesystem einbinden und auch gleich über das Rescuemenü den GRUB auf die entsprechende Platte installieren.
Nachdem das geschehen ist, bootet man das System neu. Nun könnte man noch testen, ob die GRUB Installation auch geklappt hat, indem man z.B. /dev/sda abklemmt und neu bootet, dann sollte das System starten, tut es das nicht, war die Installation von GRUB nicht erfolgreich, dann noch einmal versuchen.
Dasselbe kann man mit /dev/sdb
machen. Kann von beiden Platten gebootet werden, hat alles soweit geklappt,. Nachteil, das RAID muss erst wieder resynct werden, bevor man weitermachen kann.
RAID erweitern
Nun wird als erstes mal das RAID vergrößert, dazu gibt es den ‚mdadm‘ Befehl ‚grow‘. Aber zuerst schaut man nach, ob das RAID Array nicht gerade gesynct wird. Möchte man das Rootfilesystem erweitern, wird man wahrscheinlich eine Live bzw. chroot Umgebung starten müssen um die folgenden Aktionen auszuführen.
Erstmal den Status des RAID Arrays überprüfen:
cat /proc/mdstat
Wenn sich da nichts tut und alle Laufwerke synchron sind, dann kann man das RAID Array erweitern. Angenommen man hat ein RAID 1 mit zwei Festplatten (dev/sda
und /dev/sdb
) mit jeweils drei Partitionen:
Die sda2
Partition möchte man nun beispielsweise auf 300GB erweitern, da gibt es mehrere Möglichkeiten.
1.) Mit diesem Befehl wird die RAID Partition auf ihr Maximum erweitert und dann synchronisiert:
sudo mdadm --grow /dev/md0 -z max
2.) Mit diesem Befehl wird die RAID Partition ebenfalls auf ihr Maximum vergrößert, aber nicht synchronisiert, das ist besonders bei RAID 1 Systemen interessant.
sudo mdadm --grow /dev/md0 -z max --assume-clean
Danach kann man dann mit sudo mdadm -D /dev/md0 | grep -e "Array Size" -e "Dev Size"
prüfen, ob die Aktion geklappt hat.
Dateisystem erweitern
Auch hier muss man ein Live System starten, da sich die eingehängte Rootpartition nicht vergrößern lässt. Ich beschreibe hier nur das Vergrößern von ext3/ext4, da ich keine anderen Dateisysteme nutze. Mit folgender Befehlsfolge lassen sich die Dateisysteme vergrößern:
sudo umount /dev/md0 # Dateisystem aushängen
sudo fsck.ext4 -f /dev/md0 # Filesystem prüfen
sudo resize2fs /dev/md0 # Auf Maximalgröße erweitern
sudo mount /dev/md0 # Dateisystem einhängen
Bei resize2fs kann man auch einen Größenparameter angeben, wenn man eine bestimmte Größe des Filesystems erhalten will.
Das war’s im Großen und Ganzen, jetzt kann man wieder ins System booten und das RAID wieder zusammenbauen, dauert halt wieder etwas bis alles synchronisiert ist.