Ersetzen einer ausgefallenen Platte im ZFS-Root | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

Ersetzen einer ausgefallenen Platte im ZFS-Root

Dieser Leitfaden erklärt, wie Sie unter Linux eine ausgefallene Festplatte in einem ZFS-Mirror-Pool ersetzen. Das Verfahren umfasst das Offline-Schalten der Festplatte, das Kopieren der Partitionstabelle auf die Ersatzfestplatte, das erneute Hinzufügen der Festplatte zum Pool und die Installation des Bootloaders nach Abschluss des Resilverings.

Voraussetzungen

Es sind Root-Rechte erforderlich. Die folgenden Beispiele gehen von einem Server mit zwei Festplatten aus: /dev/sda (funktionierend) und /dev/sdb (ausgefallen). Passen Sie die Gerätenamen an Ihre Konfiguration an.

Warning

Sichern Sie alle wichtigen Daten, bevor Sie fortfahren. Der Austausch einer Root-Festplatte ist ein Vorgang mit hohem Risiko. Ein Fehler in einem beliebigen Schritt kann zu Datenverlust oder dazu führen, dass das System nicht mehr bootfähig ist. Vermeiden Sie die Verwendung von /dev/sdX-Gerätenamen in ZFS-Befehlen. Gerätenamen können sich nach einem Neustart ändern. Verwenden Sie stattdessen stabile Bezeichner wie /dev/disk/by-id/. Die folgenden Beispiele verwenden /dev/sdX der Einfachheit halber bei der Arbeit mit Partitionierungswerkzeugen. ZFS-Befehle müssen immer /dev/disk/by-id/ verwenden.

Schritt 1: Status des Pools überprüfen

Überprüfen Sie vor allen Änderungen den aktuellen Zustand des Pools:

zpool status -v

Die Ausgabe zeigt, welche Festplatte fehlerhaft ist und welchen Bezeichner sie im Pool hat.

Schritt 2: Die ausgefallene Festplatte offline schalten

Wenn die Festplatte noch ONLINE ist, aber Fehler aufweist, schalten Sie sie vor dem physischen Austausch offline:

zpool offline rpool <failed-device>

ZFS beendet dadurch die Verwendung der fehlerhaften Festplatte, bevor sie physisch ausgetauscht wird. Ersetzen Sie <failed-device> durch den Bezeichner, der in zpool status -v angezeigt wird. Wenn die Festplatte bereits den Status FAULTED oder REMOVED hat, überspringen Sie diesen Schritt und fahren Sie direkt mit Schritt 3 fort.

Schritt 3: Festplatte physisch austauschen

Wenn Ihr Server Hot-Swap unterstützt, können Sie die Festplatte ohne Herunterfahren des Systems austauschen.

Andernfalls fahren Sie das System herunter:

poweroff

Starten Sie den Server nach dem Einbau der Ersatzfestplatte und überprüfen Sie, ob die neue Festplatte erkannt wird:

lsblk -o NAME,SIZE,MODEL ls -l /dev/disk/by-id/

Verwenden Sie in den folgenden Schritten den by-id-Bezeichner der neuen Festplatte.

Schritt 4: Typ der Partitionstabelle bestimmen

Installieren Sie gdisk, falls es noch nicht vorhanden ist:

apt install gdisk -y

Überprüfen Sie den Typ der Partitionstabelle auf der funktionierenden Festplatte:

gdisk -l /dev/sda

Suchen Sie in der Ausgabe nach dem Abschnitt Partition table scan. Bei MBR wird MBR: MBR only und GPT: not present angezeigt. Bei GPT wird MBR: protective und GPT: present angezeigt.

Schritt 5: Partitionstabelle für die neue Festplatte vorbereiten und kopieren

Die meisten ZFS-Root-Systeme verwenden eine GPT-Partitionierung. Die MBR-Methode ist für ältere Systeme enthalten.

GPT

Ermitteln Sie zunächst den /dev/sdX-Namen, der der neuen Festplatte entspricht, da Partitionierungswerkzeuge diesen benötigen:

lsblk -o NAME,SIZE,MODEL,SERIAL

Löschen Sie alle alten Signaturen von der Ersatzfestplatte, bevor Sie die Partitionstabelle kopieren:

wipefs -a /dev/disk/by-id/<new-disk>

Warning

wipefs -a entfernt dauerhaft alle Dateisystem- und Partitionssignaturen von der Festplatte. Stellen Sie sicher, dass vor der Ausführung dieses Befehls der richtige Festplattenbezeichner angegeben wurde.

Der folgende Befehl kopiert die Partitionstabelle von /dev/sda (Quelle) nach /dev/sdb (Ziel):

sgdisk -R /dev/sdb /dev/sda

Warning

Bei sgdisk -R ist das erste Argument die Zielfestplatte und das zweite die Quelle. Wenn Sie die Argumente vertauschen, wird die Partitionstabelle der funktionierenden Festplatte überschrieben.

Wenn die Ersatzfestplatte größer als die ursprüngliche Festplatte ist, erweitern Sie die GPT, damit der gesamte Speicherplatz verwendet wird:

sgdisk -e /dev/sdb

Weisen Sie der Ersatzfestplatte anschließend eine neue eindeutige UUID zu:

sgdisk -G /dev/sdb

Warning

sgdisk -G weist allen Partitionen auf der Ersatzfestplatte neue UUIDs zu. Wenn /etc/fstab UUID-basierte Einträge für eine dieser Partitionen enthält, kann das System möglicherweise nicht mehr booten. Überprüfen Sie nach Abschluss des Resilverings, dass /etc/fstab /dev/disk/by-id/-Bezeichner anstelle von UUIDs verwendet.

Laden Sie die Partitionstabelle neu, damit der Kernel das neue Layout übernimmt:

udevadm trigger udevadm settle

Wenn die Ersatzfestplatte zuvor in einem anderen ZFS-Pool verwendet wurde, löschen Sie alte ZFS-Metadaten, um Konflikte zu vermeiden:

zpool labelclear /dev/disk/by-id/<new-disk-partX> 2>/dev/null || true

Ersetzen Sie <new-disk-partX> durch den tatsächlichen ZFS-Partitionsbezeichner.

MBR

Der folgende Befehl kopiert die Partitionstabelle von /dev/sda (Quelle) nach /dev/sdb (Ziel):

sfdisk -d /dev/sda | sfdisk /dev/sdb

Wenn die neuen Partitionen nach dem Kopieren im System nicht sichtbar sind, laden Sie die Partitionstabelle neu:

udevadm trigger udevadm settle

Schritt 6: Festplatte zum Pool hinzufügen

Ersetzen Sie den ausgefallenen Festplatteneintrag im Pool durch die neue Festplatte. Überprüfen Sie zunächst den genauen Bezeichner der ausgefallenen Festplatte, wie er im Pool angezeigt wird:

zpool status rpool

Suchen Sie in der Ausgabe in der Geräteliste des Pools nach dem Eintrag der fehlerhaften Festplatte. Er wird als vollständiger Pfad angezeigt, beispielsweise /dev/disk/by-id/ata-WDC_WD10_12345-part3, mit dem Status FAULTED, UNAVAIL oder OFFLINE. Verwenden Sie diesen Pfad als <old-device> im Replace-Befehl:

zpool replace rpool <old-device> /dev/disk/by-id/<new-disk-part>

Ersetzen Sie <old-device> durch den Bezeichner der fehlerhaften Festplatte aus dem vorherigen Schritt. Ersetzen Sie <new-disk-part> durch den by-id-Bezeichner der Partition auf der Ersatzfestplatte. Verwenden Sie dabei dieselbe Partitionsnummer wie auf der funktionierenden Festplatte, beispielsweise -part3 oder -part4. Um den richtigen Bezeichner zu ermitteln, führen Sie ls -l /dev/disk/by-id/ aus.

Wenn die alte Festplatte vollständig nicht verfügbar ist (UNAVAIL) und zpool replace einen Fehler zurückgibt, fügen Sie das Flag -f hinzu, um den Austausch zu erzwingen:

zpool replace -f rpool <old-device> /dev/disk/by-id/<new-disk-part>

Überprüfen Sie nach der Ausführung von zpool replace, ob das Resilvering begonnen hat und die neue Festplatte als ONLINE angezeigt wird:

zpool status

Das Resilvering wird automatisch im Hintergrund fortgesetzt.

Schritt 7: Resilvering überwachen

Überwachen Sie den Fortschritt des Resilverings mit:

zpool status -v

Die Ausgabe zeigt den Fortschritt, die Geschwindigkeit und die geschätzte verbleibende Zeit. Warten Sie, bis der Status state: ONLINE anzeigt und das Resilvering vollständig abgeschlossen ist, bevor Sie fortfahren. Je nach Festplattengröße kann dies mehrere Stunden dauern.

Schritt 8: Boot-Dataset überprüfen

Überprüfen Sie vor der Installation des Bootloaders, ob für den Pool das richtige Boot-Dataset konfiguriert ist:

zpool get bootfs rpool

Die Ausgabe sollte einen Dataset-Pfad wie rpool/ROOT/debian anzeigen. Wenn der Wert none lautet oder auf das falsche Dataset verweist, legen Sie ihn manuell fest:

zpool set bootfs=rpool/ROOT/debian rpool

Ersetzen Sie rpool/ROOT/debian durch den tatsächlichen Namen des Root-Datasets auf Ihrem System. Um die verfügbaren Datasets aufzulisten, führen Sie zfs list aus.

Schritt 9: Bootloader installieren

Installieren Sie den Bootloader auf der Ersatzfestplatte, nachdem das Resilvering abgeschlossen ist. Während des Resilverings läuft das System weiterhin von der ursprünglichen Festplatte, sodass dieser Schritt sicher durchgeführt werden kann, sobald der Pool wieder fehlerfrei ist.

BIOS (Legacy)

grub-install /dev/disk/by-id/<new-whole-disk>

Auf einigen Systemen akzeptiert grub-install möglicherweise keinen by-id-Pfad. Ersetzen Sie in diesem Fall /dev/disk/by-id/<new-whole-disk> durch den entsprechenden Gerätenamen, beispielsweise /dev/sdb.

UEFI

Hängen Sie die EFI-Partition der Ersatzfestplatte in ein temporäres Verzeichnis ein, bevor Sie grub-install ausführen. Dadurch wird verhindert, dass die aktuell aktive EFI-Partition überlagert wird:

mkdir -p /mnt/new_efi mount /dev/disk/by-id/<new-disk-part1> /mnt/new_efi

Ersetzen Sie <new-disk-part1> durch den tatsächlichen EFI-Partitionsbezeichner (normalerweise -part1 oder -part2; Partitionstyp EF00). Überprüfen Sie bei Unsicherheit ls -l /dev/disk/by-id/.

Wenn die EFI-Partition leer ist, kopieren Sie den Inhalt der vorhandenen EFI-Partition, bevor Sie grub-install ausführen:

cp -r /boot/efi/* /mnt/new_efi/

Installieren Sie den Bootloader:

apt install grub-efi-amd64 efibootmgr -y grub-install --target=x86_64-efi --efi-directory=/mnt/new_efi --bootloader-id=debian --recheck /dev/disk/by-id/<new-whole-disk> update-grub update-initramfs -u -k all

Ersetzen Sie --bootloader-id=debian durch den Namen, der Ihrer Distribution entspricht, beispielsweise ubuntu oder debian. Ersetzen Sie /dev/disk/by-id/<new-whole-disk> durch den by-id-Bezeichner der gesamten Ersatzfestplatte, nicht einer Partition.

Durch die Ausführung von update-initramfs wird sichergestellt, dass das initiale RAM-Dateisystem die aktuellen ZFS-Module enthält und das neue Pool-Layout erkennt. Ohne diesen Schritt kann das System nach dem Austausch möglicherweise nicht mehr booten.

Hängen Sie die EFI-Partition nach der Installation wieder aus:

umount /mnt/new_efi

Überprüfen Sie die EFI-Booteinträge:

efibootmgr -v

Warning

Auf Systemen mit einem ZFS-Root kann grub-install je nach GRUB-Version und Systemkonfiguration fehlschlagen oder zusätzliche Optionen erfordern. Auf einigen Systemen muss GRUB beispielsweise mit ZFS-Unterstützungsmodulen installiert oder der Befehl aus einer chroot-Umgebung ausgeführt werden. Wenn der Befehl einen Fehler zurückgibt, konsultieren Sie die Dokumentation Ihrer Distribution zur ZFS-spezifischen GRUB-Installation.

Info

Unter Proxmox VE ist grub-install deaktiviert. Verwenden Sie stattdessen proxmox-boot-tool. Das folgende Beispiel verwendet /dev/sdb2 – ersetzen Sie diesen Pfad durch die tatsächliche EFI-Partition Ihres Systems:

proxmox-boot-tool format /dev/sdb2 proxmox-boot-tool init /dev/sdb2

Fazit

Starten Sie den Server nach der Installation des Bootloaders neu und überprüfen Sie, ob er normal bootet. Führen Sie anschließend einen Scrub durch, um Lese-/Schreibfehler zu erkennen, die während des Resilverings aufgetreten sein könnten:

zpool scrub rpool

Überprüfen Sie anschließend den Pool-Status:

zpool status -v

Der Pool sollte online und ohne Fehler sein. Wenn während des Vorgangs Probleme auftreten, überprüfen Sie die Systemprotokolle mit journalctl -xe, um weitere Informationen zu erhalten.

Warning

Bevor Sie die in Schritt 3 entfernte ausgefallene Festplatte entsorgen, starten Sie den Server neu und überprüfen Sie, ob das System mit der Ersatzfestplatte normal bootet. Bewahren Sie die ausgefallene Festplatte als Fallback auf, bis der erfolgreiche Systemstart bestätigt wurde.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA