Derzeit habe ich 8 Festplatten mit jeweils 32 GB, die ein RAID 10 bilden. Jetzt möchte ich die Größe dieses RAIDs durch Hinzufügen zusätzlicher Festplatten erhöhen. Dies ist ein Produktionsgerät, daher befinden sich bereits wichtige Daten im RAID. Das Dateisystem ist XFS. Gibt es eine Möglichkeit, die Größe dieses RAIDs zu erhöhen, ohne die laufenden Lese-/Schreibvorgänge auf diesem RAID zu beeinträchtigen? Wenn nicht, wie kann dies mit minimaler Offlinezeit erreicht werden?
Antwort1
Die vorhandenen Antworten sind ziemlich veraltet. Hier im Jahr 2020 ist es nun möglich, ein mdadm
Software-RAID 10 zu erweitern, indem einfach zwei oder mehr gleich große Festplatten hinzugefügt werden.
Erstellen des Beispiel-RAID-10-Arrays
Zu Testzwecken habe ich anstelle von physischen Laufwerken sechs LVM-Volumes mit jeweils 10 GB erstellt, /dev/vg0/rtest1
worüber rtest6
es von mdadm keine Beanstandungen gab.
# Using the thinpool lvthin on VG vg0 - I created 6x 10G volumes
lvcreate -T vg0/lvthin -V 10G -n rtest1
lvcreate -T vg0/lvthin -V 10G -n rtest2
...
Als nächstes habe ich ein RAID 10 mdadm-Array mit den ersten 4 rtestX
Volumes erstellt
mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/vg0/rtest[1-4]
mdadm -D
Wenn wir (gleich ) verwenden --detail
, können wir sehen, dass das Array 4x „Laufwerke“ hat, mit einer Kapazität von 20 GB von den 40 GB an Volumes, wie es bei RAID 10 zu erwarten ist.
root@host ~ # mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:04:24 2020
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 23
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
Erweiterung des RAID10 um 2 neue gleich große Volumes/Festplatten
Um das Array zu erweitern, müssen Sie zunächst --add
die Festplattenpaare zum Array hinzufügen und dann --grow --raid-devices=X
(wobei X die neue Gesamtanzahl der Festplatten im RAID ist) anfordern, dass mdadm das RAID10 so umgestaltet, dass die beiden Ersatzfestplatten als Teil des Arrays verwendet werden.
mdadm --add /dev/md0 /dev/vg0/rtest5 /dev/vg0/rtest6
mdadm --grow /dev/md0 --raid-devices=6
Überwachen des Resynchronisierungsprozesses
Jetzt kommt der langweilige Teil: Sie müssen je nach Größe Ihres RAID Minuten, Stunden, Tage oder sogar Wochen warten, bis mdadm die Neustrukturierung um die neuen Laufwerke herum abgeschlossen hat.
Wenn wir nachsehen mdadm -D
, können wir sehen, dass das RAID derzeit neu gestaltet wird.
mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:15:05 2020
State : clean, reshaping
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Reshape Status : 0% complete
Delta Devices : 2, (4->6)
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 31
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
5 253 14 4 active sync set-A /dev/dm-14
4 253 13 5 active sync set-B /dev/dm-13
Viel Spaß mit Ihrem größeren RAID10-Array!
Wenn die Umformung schließlich mdadm
abgeschlossen ist, können wir nun sehen, dass die Array-Größe ~30 G statt ~20 G beträgt, was bedeutet, dass die Umformung erfolgreich und relativ schmerzlos war :)
mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 31429632 (29.97 GiB 32.18 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:25:01 2020
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 93
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
5 253 14 4 active sync set-A /dev/dm-14
4 253 13 5 active sync set-B /dev/dm-13
Antwort2
Es gibt 2 Fälle:
- Sie fügen neue Laufwerke hinzu. Der einfachste und sicherste Weg ist, ein neues Array auf den neuen Laufwerken zu erstellen, ein physisches Volume auf dem neuen Array zu erstellen und fertig. Hier kommt es zu keinem Leistungsverlust. Als Bonus können Sie eine neue Volume-Gruppe erstellen, um Ihre Daten in das eine oder andere Array zu legen.
- Sie ersetzen vorhandene Laufwerke durch größere. Ersetzen Sie sie nacheinander und erstellen Sie jedes Mal zwei Partitionen auf der Festplatte. Sie fügen die erste (z. B. sdX1) zum vorhandenen Array hinzu (es sollte automatisch wiederhergestellt werden) und können dann auf allen zweiten Partitionen (sdX2) ein neues Array erstellen. Abhängig von Ihrer Nutzung kann es bei einigen Vorgängen zu Leistungseinbußen kommen (im Wesentlichen, wenn Sie Daten zwischen beiden Arrays kopieren).
In beiden Fällen gehen keine Daten verloren und wenn Ihre Hardware Hotplug zulässt, kommt es zu keinen Ausfallzeiten.
Übrigens, selbst wenn mdadm eine dynamische Größenänderung des Arrays erlauben würde, würde ich bei Produktionsdaten kein Risiko eingehen.
Antwort3
Vorausgesetzt, dies läuft unter Linux mdadm
, ist dies nicht möglich.
mdadm
unterstützt kein wachsendes RAID10