Festplatten

Verwaltung der Festplattenkonfiguration

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

Je nach Servertyp sind unterschiedliche Festplatten und Controller verbaut, weswegen unterschiedliche Werkzeuge benötigt werden:

ServertypStorageWerkzeugeInstallationsbefehl
  • Essential-100
  • Essential-200
SSD via HPE Smart Storage Array RAID Controllerssacliwget https://mirror.plusserver.com/hp-mcp/debian/pool/non-free/ssacli-6.45-8.0_amd64.deb -O ssacli.deb && dpkg -i ssacli.deb
  • Performance-100
  • Performance-200
direct attached NVMenvme-cli, mdadmapt 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.

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

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

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).