Auf Proxmox virtualisiertes TrueNAS - Ersetzen einer defekten Festplatte
Veröffentlicht am 15. September 2024 • 7 Min. Lesezeit • 1.479 WörterDieser Artikel beschreibt wie eine vom Proxmox-Host an ein virtualisiertes TrueNAS durchgereichte defekte Festplatte ausgetauscht werden kann.
Serie TrueNAS
Dies ist ein Beitrag im Rahmen der Serie TrueNAS - das NAS im Homelab .
Vor einiger Zeit hat mich das Dashboard meines Backup-NAS auf ein Problem im storage-pool hingewiesen. Anstatt des regulären Pool-Status “ONLINE” wurde nun der Pool-Status “DEGRADED” gemeldet, zusammen mit einem freundlichen Hinweis-Zeichen.
Bei genauerem Hinsehen zeigte die Statusseite des Pools zwar keine Lese- oder Schreibfehler an, wohl aber Fehler bei der Berechnung der Prüfsummen. Das System ist so eingestellt, dass der gesamte Pool alle vier Wochen ein Scrub, also eine Überprüfung aller Pools vornimmt. Ich nehme an, dass bei einem dieser Tests die Fehler festgestellt wurden. (wenngleich ich einige Tage bevor ich den Screenshot gemacht habe 48 Fehler angezeigt bekam - Ursache unklar)
Wenn es nun schon so weit ist, dass das von TrueNAS verwendete ZFS Filesystem ein Problem feststellt, ist es Zeit sich ein paar Gedanken zu machen.
Noch bevor ich den Beschluss gänzlich zu Ende gedacht hatte, die defekte Festplatte auszutauschent, fiel mir ein, dass ich TrueNAS auf Proxmox virtualisiert hatte. Wer denkt schon an den Tausch einer Festplatte, wenn man sich einen Home-Server zusammenschraubt? Mal schauen ob man die Platte getauscht bekommt ohne alle Laufwerkszuordnungen in den Mixer zu schmeißen.
Um eine Festplatte eines ZFS-RAID-Verbundes, wie es bei TrueNAS verwendet wird, auszutauschen, benötigt man zumindest eine Ersatzplatte mit gleicher oder größeren Kapazität. Das hier betrachtete System stellt im Heimnetzwerk das Backup-NAS dar (ein NAS mit RAID ist kein Backup) und füllt sich kontinuierlich mit allerlei Daten. Aus diesem Grund nutze ich die Gelegenheit, um die Gesamt-Kapazität perspektivisch zu erhöhen. Aus diesem Grund habe ich ein 8TB Festplatte als Ersatz ausgewählt.
Die Gesamtkapazität eines ZFS RAIDZ-Verbundes wird durch die Einzelplatte mit der kleinsten Kapazität bestimmt:
Platten Kapazitäten | RAID-Verbund | Ungefähre nutzbare Kapazität |
---|---|---|
3x 4TB | RAIDZ1 | ~7TB |
2x 4TB + 1x 8TB | RAIDZ1 | ~7TB |
3x 8TB | RAIDZ1 | ~15TB |
Das bedeutet, dass alle drei Platten getauscht werden müssen, bevor sich eine höhere nutzbare Kapazität ergibt. Deswegen perspektivisch. Aber zumindest sagt die TrueNAS Dokumentation, dass die Pool-Kapazität automatisch erweitert wird, sobald dies möglich ist. (Ich werde berichten…)
Ersetzt man aus Versehen eine noch funktionierende Platte, bleibt der RAID-Verbund zwar auf dem Papier weiterhin benutzbar. Während des intensiven, viele Stunden dauernden Resilvering-Prozesses (Wiederherstellung) könnte die bereits angeschlagene Festplatte jedoch komplett den Geist aufgeben.
Die neue Platte ist noch nicht komplett integriert, eine weitere Platte ist nun ausgefallen, bleibt nur noch eine übrig, die jedoch nicht alle Daten des Verbundes hält. In diesem Moment ist der Verbund und damit seine Daten verloren.
Wer also aus Kostengründen Raid-Verbünde mit der Minimalzahl an Platten betreibt, bzw. nur eine Parity-Platte im Verbund hat (RAIDZ1), muss einfach genauer hinschauen. Vielleicht sollte man dann auch zeitnah reagieren, um den Gesundheitszustand des Verbundes nicht zu riskieren.
Die TrueNAS Dokumentation empfiehlt nachdrücklich, dass die defekte Platte zunächst aus dem Pool werden soll. Negative Effekte könnten ein deutlich langsamerer Wiederaufbau des Pools sein.
In TrueNAS: Storage -> Pools -> Zahnrad -> Status
um den Pool-Status anzuzeigen.
Die drei Punkte neben der zu ersetzenden Platte
drücken und dann OFFLINE
klicken, bestätigen
und OFFLINE
klicken.
Die Platte wird jetzt aus dem Verbund genommen.
TIPP
Schlägt der Prozess fehl (z.B. mit “Disk offline failed - no valid replicas”) dann wird vorgeschlagen zunächst ein Scrub des Pools durchzuführen und es anschließend erneut zu versuchen.
Manchmal dauert es einen Moment aber dann sollte der Status der Platte auf “OFFLINE” wechseln.
TrueNAS über die Web-GUI ausschalten.
Zunächst werfen wir einen Blick auf den Pool Status (siehe 2.) und sehen, dass die offline geschaltete Platte den Namen da2
hat. Die System-Platte hat den Namen da0
, somit handelt es sich bei unserer defekten Platte um die 3. Platte in der Liste.
Proxmox führt eine Liste der Festplatten einer jeden virtuellen Maschine. Dazu wählt man in diesem Fall die VM des TrueNAS Backup-NAS
aus, dann Hardware
und betrachtet die Liste der Festplatten, die Proxmox für diese VM verwendet. scsi:0
ist die virtualisierte Systemplatte und scsi:1 - scsi:3
sind die durchgereichten Festplatten des RAID-Verbundes.
qm config <vmid>
Die Seriennummer der Platte findet sich als Teil des Disknamens, hier ZDH8R8B4
.
Um das System gleich in einem geordneten Zustand auszuschalten, entfernt man die Platte scsi:2
über die Harware-Einstellungen der VM. Festplatte auswählen
und Detach
auswählen.
Nachdem eventuell noch laufende VMs oder LXCs angehalten wurden, kann nun der Proxmox-Rechner ausgeschaltet werden.
Über die zuvor notierte Seriennummer identifiziert man nun die defekte Platte und entfernt sie aus dem System.
Sofern sich die Kapazität der neuen Platte nicht von den anderen unterscheidet, ist es eine gute Idee, die Seriennummer der neuen Platte zu notieren, um sie später im laufenden System zu erkennen. In meinem Fall WSD9DT7R
.
Jetzt den Proxmox-Rechner wieder einschalten.
Zunächst muss die neue Platte von Proxmox erkannt werden, dazu kann man sich in der Proxmox Shell die Liste der Systemplatten anschauen:
ls -l /dev/disk/by-id
ST8...
anstatt ST4...
) im dritten Festplatteneinschub (sdc
). Das ist natürlich nur in meinem Setup so.
Nun muss die neue Platte wieder an die TrueNAS VM durchgereicht werden. Dies kann z.B. in der Proxmox Shell geschehen. Dazu benötigt man die ID der virtuellen Maschine (vmid
), den Namen/Nummer die die Platte in der VM einnehmen soll (hdname
) sowie den kompletten Namen der Proxmox Systemplatte, wie er im letzten Schritt ausgegeben wurde (disk name by ID
).
qm set <vmid
> -<hdname
> <disk name by ID
>
In meinem Fall wäre das
qm set 204 -scsi2 /dev/disk/by-id/ata-ST8000VN004-2M2101_WSD9DT7R
scsi:2
, weil das der Name der (virtuellen) Platte war, die zuvor aus der VM entfernt wurde.
Mit dem Starten der TrueNAS VM ist man schon auf der Zielgeraden.
Die restlichen Schritte werden über die TrueNAS GUI im Webbrowser durchgeführt
TrueNAS im Browser aufrufen
Pool-Status aufrufen Storage -> Pools -> Zahnrad -> Status
Da dem storage-pool eine Platte fehlt, wird diese als “OFFLINE” mit einer internen ID angezeigt.
Nun wählt man das Drei-Punkte-Menu neben der als “OFFLINE” angezeigten Festplatte aus und wählt “Replace”
Im aufkommenden Dialg wird die Platte ausgewählt, die für die vakante Position im Pool eingesetzt werden soll. Die Liste enthält als Auswahl nur Festplatten, die TrueNAS erkannt aber noch keinem Pool zugeordnet hat. Wer möchte kann mit einem Haken bei Force
ein Löschen der Platte erzwingen.
Force
nicht gesetzt, kann es sein, dass der Vorgang scheitert sofern sich Partitionen oder Daten auf der Platte befinden. In diesem Fall kann “Force” ausgewählt werden, um die neue Platte vor dem Einbinden vollständig zu löschen.
Der Wiederherstellungsprozess (Resilvering
) startet automatisch.
Dieser Vorgang kann je nach Größe des Pools sehr lange dauern. In meinem Fall wurden zwischenzeitlich Schätzungen von über 4 Tagen ausgegeben. Dies scheint zu Beginn normal zu sein, während hauptsächlich Meta Daten des Pools verarbeitet werden. Nach ein paar Stunden verkürzte sich die Vorhersage und am Ende war in 1 Tag und 10 Stunden alles durch.
Nach Abschluß des Prozesses geht der Pool in den Status ‘ONLINE’ über.