Eine schrittweise Anleitung, um ein Software RAID (in diesem Fall RAID-1) mit mdadm im laufenden Betrieb zu vergrößern:
Annahme:
Raid: /dev/md0
mdadm -D /dev/md0
...
...
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 65 1 active sync /dev/sde1
Unsere Platten sind also: sdb1, sde1
Empfehlung:
Ich rate dringend zu Einbaurahmen, um die Platten nicht nur komfortabel sondern vor allem SICHER im laufenden Betrieb ein- und auszubauen. Der Einbaurahmen sorgt nicht nur dafür, dass es zu keinen Kurzschlüssen bei den Kontakten kommt, sondern auch, dass man nicht aus versehen den anderen Platten zu nahe kommt!
1. Identifizieren der Platten
(siehe auch diesen Eintrag)
Wir prüfen die Kabel vom Mainboard zu den Festplatten. Die SATA Anschlüsse sind bei mir von 1 bis 6 nummeriert. Die Platte sdb hängt in meinem Fall am Port SATA2.
(Es empfiehlt sich, die Platten in der Reihenfolge im Gehäuse zu verbauen, wie sie auch angeschlossen sind. Dann weiß man immer, dass die 2. Platte in der Halterung die 2. Platte am Controller ist).
Wir prüfen das mit lshw:
...
*-storage
description: SATA controller
...
*-disk:0
description: ATA Disk
...
physical id: 0
bus info: scsi@0:0.0.0
...
*-disk:1
description: ATA Disk
product: WDC WD20EFRX-68E
vendor: Western Digital
physical id: 1
bus info: scsi@1:0.0.0
logical name: /dev/sdb
...
*-disk:4
description: ATA Disk
product: WDC WD20EFRX-68E
vendor: Western Digital
physical id: 0.0.0
bus info: scsi@4:0.0.0
logical name: /dev/sde
...
Das deckt sich mit unseren Beobachtungen (sdb ist die 2. Platte, auch laut scsi bus info, sde ist die 5. Platte)
2. Austausch der Platten
Ab hier wird's kritisch. Wir tauschen die Platten im laufenden Betrieb, mit gemounteten Dateisystem. Sobald wir eine Platte entfernen ist unser RAID-1 "degraded", hat also nur noch eine Platte. Wenn während des Vorganges mit dieser Platte etwas passiert, dann haben wir ein Problem!
Deshalb unbedingt für ein Backup der Daten sorgen!
Die folgenden Punkte werden pro Platte durchgeführt! Wir beginnen mit /dev/sdb
2.1 Lösen der Platte aus dem RAID
Wir markieren die Platte als "Failed" und Entfernen Sie aus dem RAID
mdadm -f /dev/md0 /dev/sdb1
mdadm -r /dev/md0 /dev/sdb1
2.2 Entfernen der Platte aus dem System
Zur Sicherheit notieren wir den Host des SATA Controllers:
ls -al /sys/block/sdb
lrwxrwxrwx 1 root root 0 2015-10-27 09:24 /sys/block/sdb -> ../devices/pci0000:00/0000:00:11.0/host1/target1:0:0/1:0:0:0/block/sdb
Siehe dazu diesen Eintrag
Wir fahren die Platte herunter
echo 1 > /sys/block/sdb/device/delete
Jetzt können wir die Platte ausbauen.
2.3 Installation der neuen Platte
Wir bauen die neue Platte ein. Diese sollte jetzt mit dem gleichen Buchstaben erkannt werden.
Wenn nicht, kann es sein, dass die Platte nicht aus mdadm entfernt wurde und dieser daher den Buchstaben noch reserviert hat. Eine nicht existierende Platte lässt sich aber nicht per mdadm -r enfernen. Statt dessen nutzt man mdadm -r /dev/md0 detached
, um nicht mehr existente Platten aus der RAID-Definition zu löschen.
Dann muss man die Platte nochmals aushängen (zuerst per Software, dann physisch) und einhängen.
Wir legen mit gparted die Partition an, die den gesamten freien Platz belegt und bei einem Offset von 1MB beginnt. Dieses Offset ist dazu da, dass die Blöcke richtig aligned sind und kostst uns im Endeffekt wenige Kilobyte.
parted /dev/sdb
mktable
gpt
print free # zeigt bei uns "2000GB"
mkpart primary 1M 2000GB # der oben angezeigte freie Platz
print # wir prüfen die fertige Partitionstabelle
quit
2.4 Hinzufügen der neuen Platte ins RAID
mdadm --add /dev/md0 /dev/sdb1
mdadm beginnt sofort mit der Synchronisation der neuen "Spare" Platte. Den Status können wir mit
cat /proc/mdstat
überwachen.
Jetzt heißt es Warten, bis die Synchronisation abgeschlossen ist (in meinem Fall bei 500 GB ca. 80 Minuten pro Platte).
Wenn das erfolgt ist, wiederholen wir das ganze für die zweite Platte (/dev/sde)
3. Vergrößern des RAID
Wenn wie in unserem Fall größere Platten eingebaut wurden, will man die auch nutzen.
mdadm -D /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Mon Aug 16 21:01:26 2010
Raid Level : raid1
Array Size : 488383936 (465.76 GiB 500.11 GB)
Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Tue Oct 27 15:21:10 2015
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : ad7a32a2:aef07a1c:abf10df6:61138df0 (local to host imladris)
Events : 0.775552
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 65 1 active sync /dev/sde1
Der Status zeigt unsere neuen Platten und alles ist synchron. Aber die Größe ist noch die alte. Deshalb vergrößern wir unser RAID auf die maximale Größe:
mdadm --grow /dev/md0 --size=max
Wir prüfen den Status und warten erneut (diesmal fast 6 Stunden von 500GB auf 2 TB):
cat /proc/mdstat
Quellen (u.a.):
https://www.psit.at/blogs/peter-schmidt/20130626-festplatte-unter-linux-...
http://linux.die.net/man/8/mdadm
https://raid.wiki.kernel.org/index.php/Growing
http://www.linuxquestions.org/questions/linux-newbie-8/mdadm-cannot-remo...
- Blog von Peter Schmidt
- 5342 Aufrufe