Festplatten
6 Minuten Lesezeit
Jeder Server wird mit mindestens zwei Festplatten im RAID1-Verbund mit installiertem Betriebssystem ausgeliefert.
Von Ihnen gebuchte weitere Festplatten werden nicht automatisch konfiguriert - dies muss mittels Konfigurationstools erfolgen.
Installation von RAID-Konfigurationstools
Tipp
Nicht nötig, wenn Sie das Rescue-System zur Konfiguration nutzen.Je nach Servertyp sind unterschiedliche Festplatten und Controller verbaut, weswegen unterschiedliche Werkzeuge benötigt werden:
| Servertyp | Storage | Werkzeuge | Installationsbefehl |
|---|---|---|---|
| SSD via HPE Smart Storage Array RAID Controller | ssacli | wget https://mirror.plusserver.com/hp-mcp/debian/pool/non-free/ssacli-6.45-8.0_amd64.deb -O ssacli.deb && dpkg -i ssacli.deb |
| direct attached NVMe | nvme-cli, mdadm | apt install nvme-cli mdadm |
RAID Rebuild nach Festplattendefekt
Nachdem unsere Techniker die Festplatte ausgetauscht haben, müssen Sie den Status des RAIDs prüfen und ggf. den Rebuild einleiten.
ssacli
Der Rebuild startet automatisch. Status und Fortschritt können via ssacli ctrl slot=0 show config überprüft werden.
nvme-cli und mdadm
Das jeweilige mdadm Array und seine Festplatten müssen zunächst identifiziert werden:
mdadm --detail --scan
ARRAY /dev/md0 metadata=1.0 name=any:0 UUID=08bcece4:9410c68c:24e5305b:5d49dd00
mdadm --detail /dev/md0
(...)
Number Major Minor RaidDevice State
0 259 0 0 removed
1 259 1 1 active sync /dev/nvme0n1
Wie in obigem Beispiel zu sehen, gilt eine Festplatte als “removed”. Die neue Festplatte muss dem Array erst noch hinzugefügt werden.
Prüfen Sie bitte vorher genau, unter welchem Device-Namen die neue Festplatte zu finden ist, etwa via fdisk -l, und stellen Sie sicher, dass diese Festplatte nirgends genutzt wird.
Mit dem Device-Namen der Festplatte lässt sie sich zum Array hinzufügen:
mdadm --zero-superblock /dev/nvme1n1
mdadm --manage /dev/md0 --add /dev/nvme1n1
Nun wird die Festplatte eingesynced. Der Fortschritt lässt sich mit dem Befehl mdadm --detail /dev/md0 verfolgen.
RAID erstellen
Beispielsweise um zusätzlich gebuchte Festplatten in einen RAID-Verbund zusammenzufassen.
Gefahr von Datenverlust
Wählen Sie immer ein RAID Level mit Redundanzen, da wir proaktiv defekte Festplatten tauschen.ssacli
Zunächst müssen die Identifier der nicht zugewiesenen Festplatten ermittelt werden. Dies geschieht mit dem Befehl ssacli ctrl slot=0 pd all show, die Ausgabe sieht dann beispielsweise so aus:
ssacli ctrl slot=0 pd all show
(...)
Unassigned
physicaldrive 1I:2:1 (port 1I:box 2:bay 1, SATA SSD, 480 GB, OK)
physicaldrive 1I:2:2 (port 1I:box 2:bay 2, SATA SSD, 480 GB, OK)
Wir benötigen zum weiteren Vorgehen die ID, welche nach “physicaldrive” ausgegeben wird - hier also 1I:2:1 und 1I:2:2. Mit diesen IDs kann man nun ein neues RAID1 erzeugen:
ssacli ctrl slot=0 create type=ld drives=1I:2:1,1I:2:2 raid=1
Sollten Sie vier oder mehr zusätzliche Festplatten gebucht haben und ein RAID10 anlegen wollen, so sind entsprechend mehr IDs anzugeben. Der RAID Level nennt sich hier dann 1+0 statt umgangssprachlich 10 - also z.B. so:
ssacli ctrl slot=0 create type=ld drives=1I:2:1,1I:2:2,1I:2:3,1I:2:4 raid=1+0
Anschließend können Sie mittels ssacli ctrl slot=0 ld all show detail die Informationen zu den konfigurierten Logical Drives anschauen - dort wird auch der Pfad zum Blockdevice angezeigt, welcher dann wie gewohnt partitioniert und formatiert werden kann.
nvme-cli und mdadm
Achtung
Bei individuell installierten Betriebssystemen muss sichergestellt werden, dass mdadm installiert und das mdadm-Kernelmodul im Bootloader (z.B. grub) schon aktiv ist.
dracut (RedHat, Ubuntu ab 26.04) benötigt rd.auto=1 als Kernel-Parameter, um RAIDs automatisch zu starten.
Zunächst müssen die nicht zugewiesenen NVMes identifiziert werden. Dazu die Befehle nvme list und mdadm --detail --scan mit mdadm --detail /dev/mdX nutzen, beispielsweise:
nvme list
(...)
Node Generic SN Model Namespace Usage Format FW Rev
--------------------- --------------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme3n1 /dev/ng3n1 XXXXXXXXXXXX VO000960KYDZH 1 0.00 B / 960.20 GB 512 B + 0 B HPK1
/dev/nvme2n1 /dev/ng2n1 XXXXXXXXXXXX VO000960KYDZH 1 0.00 B / 960.20 GB 512 B + 0 B HPK1
/dev/nvme1n1 /dev/ng1n1 XXXXXXXXXXXX VO000960KYDZH 1 0.00 B / 960.20 GB 512 B + 0 B HPK1
/dev/nvme0n1 /dev/ng0n1 XXXXXXXXXXXX VO000960KYDZH 1 0.00 B / 960.20 GB 512 B + 0 B HPK1
mdadm --detail --scan
ARRAY /dev/md0 metadata=1.0 name=any:0 UUID=08bcece4:9410c68c:24e5305b:5d49dd00
mdadm --detail /dev/md0
(...)
Number Major Minor RaidDevice State
0 259 0 0 active sync /dev/nvme1n1
1 259 1 1 active sync /dev/nvme0n1
In diesem Beispiel sind /dev/nvme2n1 und /dev/nvme3n1 noch frei verwendbar. Mit diesen kann man nun ein neues RAID1 erzeugen - da /dev/md0 schon verwendet wird, verwenden wir /dev/md1.
--metadata=1.0 sorgt dafür, dass der Superblock am Ende des Arrays ist, was notwendig ist, wenn die EFI-Partition mit auf dem Array liegt (Standard in unseren Installationen). Der EFI Bootloader schaut nur an den Anfang von Festplatten, sodass dort nicht der Superblock des mdadm Arrays liegen darf. Zu dem Zeitpunkt, an dem der EFI Bootloader ausgeführt wird, sind Software-RAIDs noch nicht zusammengebaut.
--size gibt mdadm eine sichere Maximalgröße vor, damit genug Platz (1 MiB) für den Superblock am Ende des Arrays bleibt. Formel: ((Abgerundete Gigabyte-Größe der kleinsten Festplatte * 1.000.000.000) / 1024) - 1024
In diesem Beispiel also: ((960 * 1.000.000.000) / 1024) - 1024
mdadm --create /dev/md1 --homehost=any --level 1 --raid-devices=2 --size=937498976K --metadata=1.0 --run /dev/nvme2n1 /dev/nvme3n1
mdadm: array /dev/md0 started.
Siehe Manpage von mdadm für weitere Optionen, etwa für Spares und weitere RAID-Level.
RAID zerstören
Gefahr von Datenverlust
Fertigen Sie im Vorfeld immer ein Backup Ihrer Daten an.ssacli
Das jeweilige Logical Drive und seine Festplatten müssen zunächst identifiziert werden:
ssacli ctrl slot=0 show config
(...)
Array A (Solid State SATA, Unused Space: 0 MB)
logicaldrive 1 (447.10 GB, RAID 1, OK)
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SATA SSD, 480 GB, OK)
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SATA SSD, 480 GB, OK)
Damit kann das Logical Drive gelöscht werden - in unserem Fall hat es den Index 1:
ssacli ctrl slot=0 logicaldrive 1 delete
Nun können die Festplatten im nächsten Logical Drive oder direkt als Blockdevices verwendet werden.
Wenn die Festplatten komplett gewiped werden sollen, können sie erased werden, was in der Regel innerhalb einer Stunde fertig ist:
ssacli ctrl slot=0 pd 1I:1:1 modify erase erasepattern=block unrestricted=off
ssacli ctrl slot=0 pd 1I:1:2 modify erase erasepattern=block unrestricted=off
Alternativ, wenn obiges Erasepattern nicht supported wird (deutlich langsamer, dauert mehrere Stunden):
ssacli ctrl slot=0 pd 1I:1:1 modify erase erasepattern=random_random_zero
ssacli ctrl slot=0 pd 1I:1:2 modify erase erasepattern=random_random_zero
Der Fortschritt des Wipes lässt sich via ssacli ctrl slot=0 pd all show und ssacli ctrl slot=0 pd all show detail nachvollziehen. Falls der Wipe zu lange dauert und vorzeitig unterbrochen werden soll, kann je Festplatte der Befehl ssacli ctrl slot=0 pd XYZ modify stoperase verwendet werden (XYZ durch ID der Festplatte ersetzen).
nvme-cli und mdadm
Das jeweilige mdadm Array und seine Festplatten müssen zunächst identifiziert werden:
mdadm --detail --scan
ARRAY /dev/md0 metadata=1.0 name=any:0 UUID=08bcece4:9410c68c:24e5305b:5d49dd00
mdadm --detail /dev/md0
(...)
Number Major Minor RaidDevice State
0 259 0 0 active sync /dev/nvme1n1
1 259 1 1 active sync /dev/nvme0n1
Damit können das Array gestoppt und die Superblocks zerstört werden:
mdadm --stop /dev/md0 --zero-superblock /dev/nvme0n1 /dev/nvme1n1
mdadm: stopped /dev/md0
Nun können die Festplatten im nächsten Array oder direkt als Blockdevices verwendet werden.
Wenn die Festplatten komplett gewiped werden sollen, können sie sanitized werden, was in der Regel innerhalb einer Minute fertig ist:
nvme sanitize /dev/nvme0n1 -a 0x02
nvme sanitize /dev/nvme1n1 -a 0x02
Der Fortschritt des Wipes lässt sich je NVMe via nvme sanitize-log XYZ einsehen (XYZ durch ID der Festplatte ersetzen).