ZFS HDD tausch

🛠️ HDD in einem ZFS‑Pool unter Proxmox tauschen

Der Austausch einer defekten Festplatte in einem ZFS‑Pool unter Proxmox ist unkompliziert, wenn man die richtigen Schritte kennt. Diese Anleitung führt dich sicher durch Diagnose, Austausch und Resilvering.

🔍 Schritt 1: Defekte Festplatte identifizieren

Führe folgenden Befehl aus:

bash

zpool status

Achte auf Hinweise wie:

  • DEGRADED
  • FAULTED
  • UNAVAIL
  • OFFLINE

Beispiel:

Code

NAME        STATE   READ WRITE CKSUM
sda         FAULTED

🧩 Schritt 2: Physisches Gerät zuordnen

ZFS arbeitet am zuverlässigsten mit /dev/disk/by-id/‑Bezeichnungen.

bash

ls -l /dev/disk/by-id/

Vergleiche die IDs mit der Ausgabe aus zpool status.

🛑 Schritt 3: Defekte Platte offline setzen

Falls ZFS die Platte nicht automatisch offline gesetzt hat:

bash

zpool offline <poolname> <device>

Beispiel:

bash

zpool offline tank ata-ST4000DM000-1FA17

🔌 Schritt 4: Festplatte physisch austauschen

  • Server herunterfahren oder
  • bei Hot‑Swap‑fähigen Bays im laufenden Betrieb tauschen

Danach die neue HDD einbauen.

🆕 Schritt 5: Neue Festplatte prüfen

bash

ls -l /dev/disk/by-id/

Die neue Platte sollte nun sichtbar sein.

🔁 Schritt 6: Neue Platte in den ZFS‑Pool einbinden

bash

zpool replace <poolname> <olddevice> <newdevice>

Beispiel:

bash

zpool replace tank ata-ST4000DM000-1FA17 ata-WDC_WD40EFRX-68N32N0

Falls die alte Platte nicht mehr erkannt wird:

bash

zpool replace <poolname> <newdevice>

🔄 Schritt 7: Resilvering überwachen

bash

zpool status

Während des Wiederaufbaus siehst du:

Code

scan: resilver in progress

Abschluss:

Code

scan: resilvered ... with 0 errors

🧹 Schritt 8: Alte Platte entfernen (optional)

Falls sie noch im Pool gelistet ist:

bash

zpool detach <poolname> <olddevice>

📊 Schritt 9: SMART‑Werte prüfen (empfohlen)

bash

smartctl -a /dev/sdX

✅ Fazit

Mit diesen Schritten kannst du eine defekte HDD in einem ZFS‑Pool unter Proxmox sicher austauschen. Der Prozess ist robust, solange du die ZFS‑Kommandos korrekt ausführst und das Resilvering vollständig abwarten lässt.

Proxmox PBS ZFS best practice

ZFS Pool erstellen mit special device für Metadaten

zpool create  -o ashift=12  backupstorage raidz1  \
  /dev/disk/by-id/ata-ST24000NM000C-3WD103_ZXA0JCB5 \
  /dev/disk/by-id/ata-ST24000NM000C-3WD103_ZXA0EPHT \
  /dev/disk/by-id/ata-ST24000NM000C-3WD103_ZXA0K5GS \
  /dev/disk/by-id/ata-ST24000NM000C-3WD103_ZXA0MQM7 \
  special mirror /dev/disk/by-id/nvme-eui.01000000000000008ce38ee306063c4d /dev/disk/by-id/nvme-eui.01000000000000008ce38ee30a536b19

zpool add backupstorage log mirror /dev/disk/by-id/xxx /dev/disk/by-id/xxx
zpool add backupstorage cache /dev/disk/by-id/xxx

zfs set mountpoint=/mnt/pbs backupstorage
zfs set recordsize=1M backupstorage
zfs set compression=zstd backupstorage
zfs set atime=off backupstorage
zfs set xattr=sa backupstorage
zfs set acltype=posixacl backupstorage

zfs set recordsize=128K backupstorage
zfs set special_small_blocks=128K backupstorage # 32K alternativ

Benchmark

Sequentielle Backup-Performance (fio write, 1M)

fio --rw=write --bs=1M --numjobs=1 --iodepth=4
StorageDurchsatzLatenz (avg)
1× HDD-Mirror250–300 MB/s4–6 ms
2× HDD-Mirror450–550 MB/s5–8 ms
LimitierendHDD-Sequential

Sequentielle Restore-Performance (fio read, 1M)

fio --rw=read --bs=1M --numjobs=1 --iodepth=4
StorageDurchsatz
1× HDD-Mirror280–320 MB/s
2× HDD-Mirror500–650 MB/s
Mit warmem ARC+10–20 %

Verify-ähnlicher Read (fio read, 128K, 4 Jobs)

fio --rw=read --bs=128K --numjobs=4 --iodepth=2
SzenarioDurchsatzIOPS
Ohne Special Device80–150 MB/s600–1.200
Mit NVMe Special 250–400 MB/s2.000–3.500