Der Unterschied zwischen günstigen und teuren RAID Controller Karten stellt sich oft erst in seltenen Momenten dar – aktuell bei mir gerade mal wieder bei einem 3-Ware RAID Controller Modell 9750-4i. Ein RAID 1 aus zwei 1 TB Platten wurde etwas zu klein und musste durch größere 4 TB Platten erweitert werden.
In der Theorie wäre meine Vorgehensweise so:
– Die 1. Platte mit 4 TB Platte tauschen
– RAID Rebuild mit neuer Platte starten und abwarten
– Die 2. Platte mit 4 TB Platte tauschen
– RAID Rebuild erneut starten und abwarten
– anschließend Volumes und Filesysteme vergrößern und fertig…
In der Praxis scheitert das Ganze beim Vergößeren der RAID1 Unit – der 3Ware Controller kennt zwar theoretisch einen Befehl dafür, das klappt aber wohl nur wenn man z.B: bei einem RAID5 eine weitere Platte ins System hängen will. Mit einem RAID1 funktioniert es schlicht so nicht. Die Hilfe von tw_cli ist nicht wirklch sehr hilfreich, oder wer kann mit „[disk=<p:-p..>]“ wirklich viel anfangen?
Der Trick mit dem es funktioniert ist das komplette RAID1 zu zerpflücken und ein Laufwerk zu entfernen bevor die Daten auf die neue Platte kopiert werden:
- RAID1 Array aufteilen. Es entstehen zwei Arrays mit dem gleichen Inhalt und der gleichen Größe.
tw_cli /c0/u1 migrate type=single
Die bisherige Partitionen /dev/sd* welche auf das RAID1 Einheit
/u1
zeigen bleiben erhalten. Man bekommt eine neue Einheit/u2
welche aus der zweiten Platte besteht. - Jetzt können wir die zweite Platte/Einheit
/u2
komplett vom Controller entfernen und anschließend die größere Platte einbauen.tw_cli /c0/u2 del
- Die neue Platte im Controller anlegen, das geht im BIOS oder im fertig gestartetem System mit folgendem Befehl:
tw_cli /c0 add type=single disk=1
die neue Platte/Einheit
/u2
sollte jetzt die volle Plattengröße anzeigen (4 TB). - Jetzt werden alle Daten von der alten Platte
/u1
auf die neue/u2
übertragen
dd if=/dev/sdc of=/dev/sdd bs=64k
Wer in einer zweiten Konsole
watch -n60 "kill -USR1 $(pgrep ^dd)"
startet, bekommt alle 60 Sekunden beim dd Befehl den aktuellen Fortschritt angezeigt. Bei 183 MB/s waren meine knapp 1TB an Daten in etwas mehr als 1,5 Stunden kopiert. Von den gelegentlichen Neustarts die nötig sind ist dies die einzige längere Downtime die man hinnehmen muss. - Die verbliebene alte Festplatte kann jetzt aus dem Controller entfernt und durch die neue 4TB Platte ersetzt werden.
tw_cli /c0/u1 del
- Und jetzt kommt der spannende Teil, wir erstellen aus einer Platte die noch nicht in Verwendung ist und der 4 TB Platte mit den Daten
/u2
ein neues RAIDtw_cli /c0/u2 migrate type=raid1 disk=1
Der Rebuild sollte jetzt in Kürze starten:
watch „tw_cli /c0 show“
beobachtet den Rebuild Prozess…
- Anschließend muss man nur noch die Partitionen vergrößern
parted /dev/sdd resizedisk 3 2000G
Vergrößert die 3. Partition wobei die 2000G nicht die Größe sondern den Endpunkt der Partition darstellen!
- Und das Filesystem anpassen
resize2fs -p /dev/sdd3
Der Parameter „-p“ vergrößert das Filesystem auf das maximal mögliche – je nach Größe der Partition.
Ich hoffe dem einen oder anderen Hilft diese Anleitung weiter, mir wird sie künftig auf jeden Fall etwas Zeit einsparen! 🙂