ZFS degraded, brauche Hilfe

Lueghi

Well-Known Member
Jan 8, 2021
64
16
48
Germany, near Bonn
Hallo proxmox-Freunde,

mein proxmox (auf HP Microserver Gen8) läuft seit Jahren mit mehreren VM's und Containern klaglos und tut alles was ich von ihm erwarte :cool:. Bei einem Update auf VE 9.2.21 ist mir mehr oder weniger per Zufall aufgefallen, dass das ZFS-System ein Problem hat. Ich habe das System damals eingerichtet und mich nicht mehr groß damit beschäftigt daher stehe ich jetzt ewas auf dem Schlauch und weiß nicht so recht weiter. Daher hoffe ich auf die geballte Kompetenz hier ...

Mein System zeigt mir folgendes:
2026-10-16 12_56_52-proxmox - Proxmox Virtual Environment — Mozilla Firefox.png

2026-10-16 12_57_57-proxmox - Proxmox Virtual Environment — Mozilla Firefox.png

2026-10-16 12_58_27-proxmox - Proxmox Virtual Environment — Mozilla Firefox.png

Besonders der rpool macht mir Sorgen, da hier schon eine Platte weg ist. Die Festplatten sind alle vom identischen Typ, die ursprünglich vorhandene Reserveplatte habe ich vor ca. 3 Jahren schon einsetzen müssen. Diesen Festplattentyp gibt es zwar noch (wenn auch zu ziemlich hohen Preisen) aber ich wollte eigentlich bei einem Austausch auf schnellere Platten gehen. Die verbauten sind doch recht lahm. Leider ist meine Wunschplatte (WD Gold 4TB) extrem teuer geworden. Kann man in einem ZFS auch ohne Probleme verschiedene Plattengrößen/-typen verwenden? Wenn ich das richtig sehe, komme ich um einen Austausch der Platten nicht herum. Für Vorschläge zu HDD-Alternativen bin auch auch offen.

Was wäre denn jetzt die sinnvolle Vorgehensweise um das Problem zu beheben? Benötige neben der Beschreibung u.U. auch ganz praktische Hilfe bzgl. der zu verwendenden Tools/Befehle. Das kann ich aber dann bei Bedarf auch noch erfragen.

Wenn weitere Informationen zur Hilfestellung fehlen, dann liefere ich die gerne nach.
 

Attachments

  • 2026-10-16 12_56_52-proxmox - Proxmox Virtual Environment — Mozilla Firefox.png
    2026-10-16 12_56_52-proxmox - Proxmox Virtual Environment — Mozilla Firefox.png
    9 KB · Views: 6
Moin,

ich würde mir 2x Seagate IronWolf Pro NAS 4 TB CMR kaufen und Schritt für Schritt den ZFS Pool rpool ersetzen,
bitte die 80% Quota nicht vergessen zu setzen.

# https://www.alternate.de/Seagate/IronWolf-Pro-NAS-4-TB-CMR-Festplatte/html/product/1875119?sug=seagete pro nas

Dein Wiki ist OpenZFS.
Code:
zpool detach <pool-name> <dead-drive-name>
zpool attach <pool-name> <current-drive-name> <new-drive-name>

# https://openzfs.github.io/openzfs-docs/man/master/8/zpool-detach.8.html
# https://openzfs.github.io/openzfs-docs/man/master/8/zpool-attach.8.html

Da beim zfs rpool noch das BIOS und EFI Boot existiert, muss man aufpassen und nur die passenden Partitionen "anfassen".
# https://www.thomas-krenn.com/en/wiki/Boot-Device_Replacement_-_Change_of_Proxmox_ZFS_Mirror_Disk

Später kann man dann noch die zfs partionen der beiden neuen Platten auf ihr Maximum vergrößern und dieses auch für den zfs rpool nutzen.

Das ist aber eine weitere Storry..
 
Last edited:
  • Like
Reactions: Lueghi
Moin,

ich würde mir 2x Seagate IronWolf Pro NAS 4 TB CMR kaufen und Schritt für Schritt den ZFS Pool rpool ersetzen,
bitte die 80% Quota nicht vergessen zu setzen.
...
Vielen Dank für Deine Ausführungen und den HDD-Vorschlag :). Ich erinnere mich gaaannnz schwach an die von Dir genannten Befehle.

Zu Quota habe ich aber noch eine Frage:
wenn ich das Partitionsschema mit sgdisk kopiere, dann sollte das doch von der Größe erst mal passen? Oder warum bzw. wann muss man den Quota-Befehl nutzen?

Viele Grüße
Lueghi
 
Nun das Setup von ZFS-Quota, so wie ich das nutze, zeigte ich noch nicht.

ZFS allgemeine und im speziellen. das auf nur HDDs läuft, darf nie volllaufen, denn dann steht das gesamte System.
So setzt man einfach Quota von ca. 80 % auf den gesamten Pool, um diesen Bereich, bei Problem einfach dem System wieder zur Verfügung zu stellen.
Denn auch beim Löschen müssen Daten neu geschrieben werden - ohne freien Platz - "dead lock".

Code:
# ich mache das global so für z.B. den rpool:
zfs create rpool/quota
zfs set refreservation=<20% max-pool-size> rpool

# z.B.:
zfs set refreservation=200G rpool # 1 GB HDD, usw.

# no space left:
zfs set refreservation=none rpool
# oder
zfs set refreservation=1G rpool # was im Augenblick dann passend erscheint.

Mache dich bitte auch mit dem zfs vdev special device als Mirror mit >=2 SSDs (sata3 reicht) bekannt.
Das erhöht die IOPs des gesamten Pools, da keine Metadaten mehr zusätzlich auf die HDDs geschrieben werden.
Besser und mehr 'ZFS Like' wäre es, den Pool mit 4x HDD ZFS Raid10 mit 2x SSDs anzulegen.
Dann kann man seine "Unterteilung" mit unterschiedlichen zfs dataset zfs create rpool/dataset realisieren.
 
Last edited:
  • Like
Reactions: Lueghi
@Lueghi Ich gehe davon aus, dass du eine aktuelle Datensicherung hast. Dann musst du dir vermutlich keine großen Sorgen machen. Wie bereits vorgeschlagen, solltest du die Festplatten anschließend Schritt für Schritt ersetzen.
 
  • Like
Reactions: Johannes S
@Lueghi Ich gehe davon aus, dass du eine aktuelle Datensicherung hast. Dann musst du dir vermutlich keine großen Sorgen machen. Wie bereits vorgeschlagen, solltest du die Festplatten anschließend Schritt für Schritt ersetzen.
Das wäre schon sinnvoll - ansonsten wäre das der erste Schritt jetzt!
Die Festplatten sind alle vom identischen Typ, die ursprünglich vorhandene Reserveplatte habe ich vor ca. 3 Jahren schon einsetzen müssen.
Wenn man schon seine vorhanden Reserveplatten nicht gegen neu ersetzt, wenn die zum Einsatz kommen...
 
  • Like
Reactions: micneu
Guten Mittag, na jetzt ist ja alles geklärt und bis auf das Geld ausgeben für zwei oder vier neue Festplatten, ist das System ja gerettet.
Möchte noch auf den einen Beitrag von mir verweisen, indem du ein RAID 10 anstreben solltest und dann deine Daten über ZFS datersets verwaltest. Das bedeutet zusammengefasst ZFS airpool wird wiederhergestellt und später um zwei weitere mirror Platten als stripe set erweitert.
 
Mit dem on-the-fly die 2 rpool disks erfolgreich tauschen sehe ich aber (noch) nicht ... 44 chksum errors auf der "guten" und die andere ist schon raus ...
 
129 und 13 data errors auf den Pools. Da hilft nur neu machen und hoffen, dass das Backup fehlerfrei ist.
 
Last edited:
Normalerweise definiert man in prod Systemen immer spare disks (oder spare Kapa bei EC-code) zzgl. Monitoring mit Meldung, damit man garnicht in die Lage kommt, daß ein raid Verbund baden geht - ist insofern auch für Heimbetrieb empfohlen, wenn man im Bedarfsfall nicht die Backup-Restore Schleife drehen möchte.
 
  • Like
Reactions: Johannes S
Normalerweise definiert man in prod Systemen immer spare disks (oder spare Kapa bei EC-code) zzgl. Monitoring mit Meldung, damit man garnicht in die Lage kommt, daß ein raid Verbund baden geht - ist insofern auch für Heimbetrieb empfohlen, wenn man im Bedarfsfall nicht die Backup-Restore Schleife drehen möchte.
Ja, oder zumindest sofort ersetzen, wenn eine anfängt, Fehler zu werfen.

Und ja, "Spares", die man vor drei Jahren gekauft hätte, wären bei den heutigen Preisen definitiv von Vorteil, selbst wenn sie nur im Schrank gelegen haben, anstatt tatsächliche Spares in einem ZFS-Pool zu sein. ;) Aber ja konnte man damals noch nicht unbedingt wissen.
 
Last edited:
  • Like
Reactions: waltar
Ich würde alles neu machen und die VMs aus dem Backup zurückspielen.
Verstehe ich das richtig: für beide rpool-Platten neue einbauen und proxmox komplett neu installieren um dann anschließend die Backups einzuspielen?

Habe jetzt erst mal die beiden Platten sda und sdb in den Schächten getauscht da meine Hardware nur von Schacht 1 booten kann. Jetzt läuft ein resilver, vorher geht ja wohl auch kein zpool detach ....
 
Normalerweise definiert man in prod Systemen immer spare disks (oder spare Kapa bei EC-code) zzgl. Monitoring mit Meldung, damit man garnicht in die Lage kommt, daß ein raid Verbund baden geht - ist insofern auch für Heimbetrieb empfohlen, wenn man im Bedarfsfall nicht die Backup-Restore Schleife drehen möchte.
ja, ihr habt da sicher recht. Aber ich bin nur ein Hobby-Admin mit Enthusiasmus, Halbwissen begrenzter Zeit und begrenztem Budget. War bisher sehr stolz, dass alles so lief wie ich wollte. Und das über Jahre! Ich habe die Platten wirklich vernachlässigt und ein Monitoring war bei mir nicht installiert / konfiguriert. Also geht nicht zu streng mit mir ins Gericht ....

Aber ich bin auch Rheinländer: et hät noch immer jod gejangen ;) (Übersetzung: es ist noch immer gut gegangen).

Und mit Eurer Hilfe werde ich aus dem selbstverschuldeten Schlamassel hoffentlich ohne größere Probleme rauskommen.
 
  • Like
Reactions: news
Ich hatte die alte Platte mit zpool rpool detach aus dem Pool entfernt. Die neue Platte ist eingebaut und partitioniert. Ich schaffe es aber nicht die neue ZFS-Partition in den rpool einzuhängen. Die attach Option erwartet ja neben dem Poolnamen 2 weitere Parameter. Das ist mir aber nicht so ganz klar was ich da angeben muss.

zpool attach rpool <parameter1> <parameter2>

Was gibt man bei Parameter1 an?

Oder ist das der falsche Befehl und ich muss mit zpool add arbeiten?

aktueller Stand (neue Platte grün):
2026-10-20 21_02_52-proxmox - Proxmox Virtual Environment — Mozilla Firefox.png
2026-10-20 21_06_29-proxmox - Proxmox Virtual Environment — Mozilla Firefox.png
 
Zeige bitte mal die Ausgabe von:

CLI zpool status rpool

Gesucht sind die Bezeichnungen von
Code:
# zpool attach [-fsw] [-o property=value] pool vdev new_device

Quelle: https://openzfs.github.io/openzfs-docs/man/master/8/zpool-attach.8.html

Die sollte in etwas so was zeigen:
Code:
    NAME                                        STATE     READ WRITE CKSUM
    rpool                                       ONLINE       0     0     0
      mirror-0                                  ONLINE       0     0     0
        ata-XXXXX-YYYY-part3  ONLINE       0     0     0
        ata-XXXXX-ZZZZ-part3  ONLINE       0     0     0

rpool ist der Poolname pool und mirror-0 ist dann ein vdev.

Die Bezeichnung zu new_device müssen wir noch erarbeiten:
a) Schaue Dir bitte als Erstes die equivalenten Namen zu /dev/sd[ab] Namen an:

ls -la /dev/disk/by-id/ | grep sd[ab]

b) Wenn Du dann die Namen und die entsprechenden Partionen erkennst, geht es weiter:

ls -la /dev/disk/by-id/ | grep part3 | grep sd[ab]

new_device := ist etwas mit ata-ST4000NT001...-part3
 
Last edited: