Hetzner - DokuWiki

Hot Swapping

Inhaltsverzeichnis

Hot Swapping

Hot Swapping ermöglicht den Austausch von Festplatten im laufenden Betrieb des Systems, um die Downtime des Servers im Falle eines Festplattenausfalls zu minimieren.

Kompatibilität

Einige unserer Server-Modelle sind Hot-Swap-fähig.

Bei diesen Server-Modellen ist es möglich, die Platten im laufenden Betrieb des Systems auszutauschen:

  • DX-Server
  • EX41(-SSD)
  • EX40 (im RZ17*)
  • SX131
  • SX291

*In welchem RZ sich Ihr Server befindet, können Sie in Ihrer Administrationsoberfläche Robot in der Serverübersicht unter "Hauptfunktionen; Server" einsehen.

Wichtige Hinweise

Prinzipiell muss die auszutauschende Festplatte, wenn diese nicht bereits aus dem RAID entfernt worden ist, vor Erteilung des Auftrages aus dem RAID-Verbund ausgeschlossen werden, um weitere Defekte an der HDD durch den Austausch zu vermeiden. Es muss zudem, wie generell beim Austausch einer HDD, auf die korrekte Angabe der Seriennummer geachtet werden.

Ablauf

Hardware-RAID

Durch einen Hardware-RAID-Controller besteht unabhängig vom Betriebssystem die Möglichkeit, bei den genannten Servermodellen die Festplatten via Hot Swap auszutauschen. Derzeit werden Adaptec- und LSI-RAID-Controller verbaut.

Informationen zu den Controllern befinden sich beispielsweise auf folgenden Wiki-Seiten:

Der Austausch wird wie gewohnt über ein entsprechendes Support-Ticket beauftragt.

Nachfolgend einige Beispiele:

Wichtig: Beachten Sie generell, dass es sich hierbei um Beispiele handelt. Die Schritte und insbesondere die Kommandoparameter müssen an das konkrete System angepasst werden!

LSI-Controller

Beispielkonfiguration: Debian 8.2-Installation auf einem RAID-1-Array mit zwei SSDs

  • Es wird das Kommandozeilen-Tool 'MegaCli64' benötigt. Dieses finden Sie z. B. unter http://download.hetzner.de/tools/LSI/tools/MegaCLI/8.07.10_MegaCLI_Linux.zip (das RPM-Paket kann mittels 'alien' in ein deb-Paket umgewandelt und anschließend installiert werden).
  • Das Tool ist bezüglich der Schreibweise von Parametern recht tolerant. Diese können mit oder ohne Bindestrich und unter Be- oder Missachtung der Groß- und Kleinschreibung angegeben werden.
  • Für einfacheres Handling wird ein Alias angelegt:
alias megacli='/opt/MegaRAID/MegaCli/MegaCli64'

In diesem Beispiel wird von einer defekten SSD an Slot 0 ausgegangen.

1) Status und Seriennummern (Inquiry Data) können bspw. mit folgendem Befehl ermittelt werden:

megacli pdlist a0 | grep -Ei 'enclosure|slot|firmware state|inquiry'

2) Falls die defekte Festplatte noch nicht den Status (Firmware-State) 'offline' hat, wird diese mit MegaCli auf 'offline' gesetzt:

megacli pdoffline physdrv[252:0] a0

3) Nun wird die SSD als fehlend markiert ...

megacli pdmarkmissing physdrv[252:0] a0

4) ... und für den Austausch vorbereitet.

megacli pdprprmv physdrv[252:0] a0

5) Der Austausch wird nun über ein Support-Ticket beauftragt.

6) Nach erfolgtem Tausch sollte der Status erneut geprüft werden:

megacli pdlist a0 | grep -Ei 'enclosure|slot|firmware state|inquiry'

7) Falls der Rebuild nicht selbstständig startet, muss dies manuell durchgeführt werden.

Adaptec-Controller

Im Beispiel wird von einer Debian 8.2-Installation auf einem RAID-1-Array mit zwei Festplatten ausgegangen.

Die defekte Festplatte ist an Slot 0 angeschlossen.

1) Status und Seriennummern können bspw. mit folgendem Befehl ermittelt werden:

arcconf getconfig 1 pd|egrep "Device #|State\>|Reported Location|Reported Channel|Serial|S.M.A.R.T. warnings"

2) Falls die defekte Festplatte noch nicht den Status 'failed' aufweist, wird dieser gesetzt.

arcconf setstate 1 device 0 0 ddd

3) Der Austausch wird nun über ein entsprechendes Support-Ticket beauftragt.

4) Nach erfolgtem Tausch sollte der Status erneut geprüft werden.

arcconf getconfig 1 pd | egrep "Device #|State\>|Reported Location|Reported Channel|Serial|S.M.A.R.T. warnings"

5) Falls der Rebuild nicht selbstständig startet, muss dies manuell durchgeführt werden.

Software-RAID

Grundsätzlich ist auch bei Festplatten am SATA-Controller Hot Swapping möglich. Das eingesetzte Betriebssystem erkennt die Änderung des Verbindungsstatus am jeweiligen Controller und die neue HDD sobald diese angeschlossen wurde. Die notwendigen Schritte unterscheiden sich abhängig vom Betriebssystem und Konfiguration.

Nachfolgend einige Beispiele:

Wichtig: Beachten Sie generell, dass es sich hierbei um Beispiele handelt. Die Schritte und insbesondere die Kommandoparameter müssen an das konkrete System angepasst werden!

Linux

Informationen und ein ausführliches Beispielszenario um Festplatten im Linux Software-RAID zu ersetzen, finden Sie auf folgender Wiki-Seite: Festplattenaustausch im Software-RAID

Windows

Wichtig: Unter Windows ist das Hot-Swapping des Start-Plexes* nicht möglich. Daher muss das System vor dem Austausch vom intakten Plex gebootet werden. (* Microsoft bezeichnet die Spiegelung auch als Plexing, ein Plex entspricht somit einem Teil eines gespiegelten Volumes)

Folgendes Beispiel geht von einer Hetzner-Standard-Installation von Windows Server 2012 R2 im UEFI-Modus mit zwei Festplatten und Spiegelung aus. Die defekte Festplatte ist disk 1 (Sekundärer Plex). Das System wurde vom primären Plex gestartet.

1) HDD aus dem RAID entfernen.

In der Datenträgerverwaltung (diskmgmt.msc) das Kontextmenü des Volume C: öffnen und "Spiegelung entfernen" auswählen.

2) Auslesen der Seriennummer der defekten bzw. intakten HDD mit diskid32.exe.

3) Supportanfrage zum Austausch der Festplatte (Hot Swapping) stellen

4) Nach erfolgtem Tausch diskpart starten

5) Festplatte vorbereiten / Partitionen entsprechend der intakten HDD anlegen

  • falls Austausch-HDD nicht erkannt wird:
DISKPART> rescan
  • Festplatten anzeigen lassen
DISKPART> list disk
  • für den Fall, dass die defekte Festplatte als M1 (Missing) angezeigt wird
DISKPART> select disk M1
DISKPART> delete disk
  • Tauschfestplatte in dynamischen Datenträger mit GPT konvertieren
  • EFI-Partition anlegen, formatieren und ihr den Laufwerksbuchstaben E zuweisen
  • HDD der Spiegelung von C hinzufügen und warten bis die Synchronisation abgeschlossen ist
DISKPART> select disk 1
DISKPART> convert gpt
DISKPART> create partition efi size=200
DISKPART> format fs=fat32 quick
DISKPART> assign letter=e
DISKPART> convert dynamic
DISKPART> select volume c
DISKPART> add disk 1 wait
  • EFI-Partition der intakten HDD den Buchstaben x zuweisen
DISKPART> select disk 0
DISKPART> select part 1
DISKPART> assign letter=x
DISKPART> exit

6) EFI-Partition und Bootmanager

Im Beispiel wurden den EFI-Partitionen folgende Laufwerksbuchstaben zugeordnet:
x: vorhandene EFI-Partition
e: neu angelegte EFI-Partition auf der Austauschfestplatte

  • Zunächst ist es ratsam den System-BCD-Speicher zu sichern (hier in die Datei BCD_backup im aktuellen Verzeichnis), um später Änderungen ggf. mittels bcdedit /import rückgängig machen zu können:
bcdedit /export BCD_backup
  • Die EFI-Partition wird nun rekursiv kopiert, dabei aber der BCD-Speicher und der Ordner "System Volume Information" übersprungen:
robocopy x:\ e:\ * /e /copyall /dcopy:t /xf BCD.* /xd "System Volume Information"
  • Nun kann der System-BCD-Speicher mit 'bcdedit' auf die Austauschfestplatte exportiert werden:
bcdedit /export e:\EFI\Microsoft\Boot\BCD

Nun kann von beiden Bootmanagern aus jedem der beiden Plexe gestartet werden.

Unter Umständen sind weitere Anpassungen des BCD-Speichers (bspw. falls noch ein verwaister Start-Eintrag existiert) notwendig. Umfassende Informationen (Windows Server 2012) finden Sie unter anderem in folgendem Dokument (englisch):

http://download.microsoft.com/download/6/E/E/6EE26977-FAA0-41CC-8BDA-7A0C5E6EB9CC/Configuring%20Disk%20Mirroring%20for%20Windows%20Server%202012.docx

FreeBSD

gmirror + UFS

Beispielkonfiguration: FreeBSD 10.2-Installation mit UFS und gmirror mit folgenden Arrays:

/dev/mirror/boot (ada0p1 + ada1p1)

/dev/mirror/swap (ada0p2 + ada1p2)

/dev/mirror/root (ada0p3 + ada1p3)

Die defekte HDD ist ada1.

1) Defekte HDD aus dem RAID entfernen

  • Status prüfen
# gmirror status
  • Partitionen der defekten HDD ggf. deaktivieren
# gmirror deactivate boot ada1p1
# gmirror deactivate swap ada1p2
# gmirror deactivate root ada1p3
  • Partitionen der defekten HDD "vergessen"
# gmirror forget boot
# gmirror forget swap
# gmirror forget root

2) Seriennummer der defekten HDD ermitteln

  • bspw. mit 'smartctl' aus dem Paket smartmontools:
# smartctl -a /dev/ada1 |grep -i serial
  • alternativ mittels 'camcontrol':
# camcontrol identify /dev/ada1 |grep -i serial

3) Austausch der Festplatte über ein Supportticket beauftragen

4) Nach erfolgtem Tausch die Partitionstabelle von ada0 nach ada1 kopieren

# gpart backup ada0 | gpart restore ada1

HINWEIS: Aktuell scheint ein Fehler im FreeBSD 11 beim Restore der Partitionstabelle zu geben, wodurch ein Booten von der ersetzten Festplatte verhindert werden kann. Falls dieses Problem auftauchen sollte, bitte folgenden FreeBSD Forum Eintrag beachten: [1]

5) Partitionen der Tausch-HDD zu gmirror hinzufügen

# gmirror insert boot ada1p1
# gmirror insert swap ada1p2
# gmirror insert root ada1p3

6) Bootcode auf der Tausch-HDD installieren

# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1

ZFS

Beispielkonfiguration: FreeBSD 10.2-Installation mit ZFS mit folgenden Arrays:

/dev/mirror/boot (ada0p1 + ada1p1)

/dev/mirror/swap (ada0p2 + ada1p2)

ZFS-Pool zroot mit Spiegelung über gpt/root0 (GPT-Label für ada0p3) und gpt/root1 (GPT-Label für ada1p3)

Die defekte HDD ist ada0.

(Die beiden gmirror-Spiegel boot und swap werden entsprechend der oben genannten Vorgehensweise behandelt.)

1) Sollte ZFS zur Spiegelung eingesetzt werden, muss auch hier vor dem Austausch geprüft werden, in welchem Zustand sich der Mirror befindet, und ggf. die entsprechende Partition (in folgendem Beispiel gpt/root0) offline gesetzt werden:

# zpool status
 pool: zroot
state: ONLINE
 scan: none requested
config:
       NAME           STATE     READ WRITE CKSUM
       zroot          ONLINE       0     0     0
         mirror-0     ONLINE       0     0     0
           gpt/root0  ONLINE       0     0     0
           gpt/root1  ONLINE       0     0     0
# zpool offline zroot gpt/root0
# zpool status
 pool: zroot
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
       Sufficient replicas exist for the pool to continue functioning in a
       degraded state.
action: Online the device using 'zpool online' or replace the device with
       'zpool replace'.
 scan: none requested
config:
       NAME                     STATE     READ WRITE CKSUM
       zroot                    DEGRADED     0     0     0
         mirror-0               DEGRADED     0     0     0
           8894732708877724737  OFFLINE      0     0     0  was /dev/gpt/root0
           gpt/root1            ONLINE       0     0     0

# gmirror deactivate boot ada0p1
# gmirror deactivate swap ada0p2
# gmirror forget boot
# gmirror forget swap

2) Falls wie im Beispiel GPT-Label eingesetzt werden, kann mittels 'gpart' die Zuordnung zur Festplatte ermittelt werden.

# gpart list | grep -Ei 'geom|label'
Geom name: ada0
label: boot0
label: swap0
label: root0
Geom name: ada1
label: boot1
label: swap1
label: root1

3) Seriennummer der defekten HDD ermitteln

  • bspw. mit smartctl aus dem Paket smartmontools
# smartctl -a /dev/ada0 |grep -i serial
  • alternativ mittels camcontrol
# camcontrol identify /dev/ada0 |grep -i serial

4) Der Austausch erfolgt über ein Support-Ticket unter Angabe der Seriennummer der auszutauschenden HDD. Nach dem Austausch wird mittels gpart die Partitionstabelle übertragen, die gmirror-Spiegelung repariert und der Bootcode installiert:

# gpart backup ada1 | gpart restore ada0
# gmirror insert boot ada0p1
# gmirror insert swap ada0p2
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

5) Anschließend wird das GPT-Label der ZFS-Partition (in diesem Fall die dritte, also ada0p3) der Austauschfestplatte angepasst (gpt/root0):

# gpart modify -i 3 -l root0 ada0

6) Das neue Gerät kann nun den ausgefallenen Teil des Spiegels ersetzen:

# zpool replace zroot gpt/root0
# zpool status -x
all pools are healthy

Ausführliche Informationen zur Konfiguration und Verwaltung des ZFS-Dateisystems sind in der Dokumentation von Oracle zu finden:

Oracle ZFS-Dokumentation (deutsch)



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.