ZFS Festplatte ersetzen unter Proxmox
Ein neuer Server für das Homelab musste her und bereits von Tag eins an haben die neuen SATA SSDs Probleme bereitet. Dies begann bereits der Installation von Proxmox und nach einigen Tagen im Betrieb zeigten sich kontinuierlich Lese- und Checksummenfehler. In diesem Artikel zeigen wir, wie Sie schnell und sicher unter Proxmox eine ZFS Festplatte ersetzen.
Das Fehlerbild der Festplatte
Proxmox wurde auf einem neuen HM90 aufgesetzt. Das Betriebssystem wurde auf der mitgelieferten M.2 2280 512GB PCIe 3.0 SSD installiert. Zusätzlich wurden zwei Crucial MX500 1TB 3D NAND SATA 2,5 Zoll SSD bestellt und eingebaut.
Bereits bei der Installation kam es zu kontinuierlichen Freezes sobald in irgendeiner Form die beiden SSDs angesprochen wurden. Nach mehrmaligen Versuchen lief die Installation durch. Der ZFS-Pool wurde über die Proxmox Oberfläche angelegt und ein Mirror mit den beiden Festplatten erstellt.
Über die nächsten Tage zeigten sich im operativen Einsatz zwar keine merklichen Probleme, doch die Lese- und Checksummenfehler der einen Festplatte nahmen kontinuierlich zu. Ein Scrubbing und ein zpool clear
löschten zwar die Fehler in der Anzeige, diese traten aber kurze später wieder auf und eindeten in folgendem Status:
root@pve01:~# zpool status
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
ata-CT1000MX500SSD1_2240E674CA8F DEGRADED 2 0 0 too many errors
ata-CT1000MX500SSD1_2240E674DF77 ONLINE 0 0 0
Eine kurze Recherche zeigte, dass man bei den Crucial SSDs entweder im Himmel oder in der Hölle landet – hier war offenbar letzteres der Fall
Defekte Festplatte im ZFS Pool identifzieren
Es wurden daher beide Datenplatten des ZFS-Pools namens tank
ersetzt. Zwar war bisher nur eine der Festplatten fehlerhaft, aber nur eine der Platten einer vermutlich identischen Charge auszutauschen, war zu riskant – also wurden beide Festplatten ersetzt.
Die Ersetzung von Festplatten in einem ZFS-Verbund ist grundsätzlich sehr einfach, wenn man weiß, wie es geht.
Durch die Eingabe von
ls -alh /dev/disk/by-id/
kann man sich einen Status über alle Block Devices verschaffen, da wir später die Id der Festplatten kennen müssen. Das sieht dann zum Beispiel so aus (Hinweis, das ist NACH dem Ersetzen auf dem Server):
root@pve01:~# ls -alh /dev/disk/by-id/
total 0
drwxr-xr-x 2 root root 580 Feb 7 19:41 .
drwxr-xr-x 8 root root 160 Feb 7 19:41 ..
lrwxrwxrwx 1 root root 9 Feb 7 19:41 ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T907058N -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 7 19:41 ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T907058N-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Feb 7 19:41 ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T907058N-part9 -> ../../sda9
lrwxrwxrwx 1 root root 9 Feb 7 19:41 ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T910187F -> ../../sdb
lrwxrwxrwx 1 root root 10 Feb 7 19:41 ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T910187F-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Feb 7 19:41 ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T910187F-part9 -> ../../sdb9
Die Ids wären in diesem Fall ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T907058N
und ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T910187F
.
Jetzt geht es darum, erst einmal die defekte SSD im Server zu identifzieren und mit einer neuen SSD zu ersetzen. Ich habe mich in diesem Fall für Samsung 870 EVO SATA III 2.5 Zoll SSD entschieden.
- Solid State Drive (SSD) für eine verbesserte PC-Leistung im täglichen Einsatz, gut geeignet als Alternative zur HDD (Festplatte)
- Mehr Leistung, um schneller ans Ziel zu kommen: bis zu 3,6 Mal schneller als eine HDD (560 MB/s Lese-, 530 MB/s Schreibgeschwindigkeit)
- Zuverlässigkeit, die überzeugt: Hohe Lebensdauer mit 150 Terabytes Written spezifizierter Gesamtschreibdatenmenge (250 GB-Variante)
- Kompatibel und vielseitig dank umfangreicher Kompatibilitätstests mit gängigen Chipsätzen, Mainboards, NAS-Systemen und Video-Aufahmegeräten
- Upgrade ganz leicht: Einfache Übertragung der Daten von Ihrer alten Festplatte auf die SSD dank kostenloser Samsung Data Migration Software – Magician
Defekte Festplatte im ZFS Pool ersetzen
Dazu den Server herunterfahren, eine Festplatte ausbauen und hoffen, dass es die richtige war. Der Proxmox Server bootet auch, da sich das Betriebssystem auf der separaten M.2 befindet. Nachdem der Server wieder hochgefahren ist, sieht das ungefähr wie folgt aus:
root@pve01:~# zpool status
pool: tank
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
2526873008305822243 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-CT1000MX500SSD1_2240E674CA8F-part1
ata-CT1000MX500SSD1_2240E674DF77 ONLINE 0 0 0
errors: No known data errors
Wenn die defekte Festplatte identifiziert und physisch ersetzt wurde, erfolgt die Aufnahme der neuen Platte und die Ersetzung der alten Platte im ZFS-Pool mit
zpool replace -f <pool> <old device> <new device>
In unserem Fall mit
zpool replace -f tank ata-CT1000MX500SSD1_2240E674CA8F ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T907058N
Die neue Platte wird daraufhin resilvered. Resilvering bezeichnet den Vorgang des Übertragens von Daten von einem Datenspeichergerät auf ein anderes Gerät. Konkret bedeutet das, dass wir die Daten auf der guten alten Festplatte auf die neue gespiegelt haben und diese wieder fehlerfrei im Mirror zur Verfügung stehen.
root@pve01:~# zpool status
pool: tank
state: ONLINE
scan: resilvered 230G in 00:11:04 with 0 errors on Tue Feb 7 18:47:30 2023
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T907058N ONLINE 0 0 0
ata-CT1000MX500SSD1_2240E674DF77 ONLINE 0 0 0
errors: No known data errors
Die Dauer des Vorgangs ist abhängig von der Größe der vorhandenen Daten. In diesem Fall hat der Übertragungsvorgang 11 Minuten gedauert.
Für die zweite alte Festplatte wird der Vorgang analog wiederholt. Wir übertragen dabei die Daten von der guten neuen Festplatte auf eine leere gute neue Festplatte. Im Ergebnis sieht das dann so aus:
root@pve01:~# zpool status
pool: tank
state: ONLINE
scan: resilvered 230G in 00:08:35 with 0 errors on Tue Feb 7 19:04:30 2023
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T907058N ONLINE 0 0 0
ata-Samsung_SSD_870_EVO_1TB_S6P5NL0T910187F ONLINE 0 0 0
errors: No known data errors
Fazit
Grundsätzlich sind defekte Festplatten mit Schreib-, Lese- und Checksummenfehlern immer problematisch und müssen ersetzt werden. Die anfänglich eingesetzten Crucial SSDs mögen Sonntagsgeräte gewesen sein, aber das ist keine Entschuldigung. Insbesondere bei einem halbwegs ernsthaften Serverbetrieb im Homelab sollte die Verlässlichkeit der eingesetzten Hardware an oberster Stelle stehen.
Die Ersetzung der defekten Festplatte und der am Ende erfolgte, komplette Austausch der Festplatten im ZFS-Pool verlief absolut problemlos. Beim Thema ZFS Festplatte ersetzen zeigen sich die Vorzüge eines Raids, obwohl es in diesem Fall nur ein Mirror war.
In einem Folgeartikel werden wir den kompletten Umzug eines Proxmox-Servers (bzw. der Container und VMs) auf neue Hardware zeigen. Mit einer guten Planung verlief die Migration wie am Schnürchen.
Letzte Aktualisierung am 4.10.2024 / Affiliate Links / Bilder von der Amazon Product Advertising API
Super Anleitung! Hat perfekt funktioniert. Danke.
Wenn es sich aber um Systemplatten handelt. Muss die Partionstsbelle und der Bootloader auch mit kopiert werden.
Hier bitte aufpassen.
Ich habe meine Platten genau gleich konfiguriert. Was ist aber, wenn die Hauptplatte abschmiert? Sind dann auch die beiden anderen Platten unbrauchbar?
Hallo Karlheinz,
ich vermute, Du meinst: „Hauptplatte“ = Platte mit dem Betriebssystem und „meine Platten“ = ZFS-Datenbereich?
Wenn ja, dann haben die Hauptplatte und die Datenplatten erst einmal gar nichts miteinander zu tun. Der ZFS-Pool auf den Datenplatten ist selbstbeschreibend und Du kannst diesen, zum Beispiel nach einer frischen Proxmox-Installation per
# zpool import tank
ganz einfach hinzufügen.
https://docs.oracle.com/cd/E19253-01/819-5461/gazuf/index.html