Intro
Zunächst einmal für alle, die das gleiche Problem unter Ubuntu 16.04 haben, handelt es sich derzeit um einen laufenden Fehler, der meines Wissens bisher nicht behoben wurde. Sie können das Github-Gespräch hier besuchen, um den Fehler zu sehen, auf den ich mich beziehe . Zweitens schreibe ich diesen Beitrag als begeisterter und fortgeschrittener Linux-Benutzer. Ich bin kein Entwickler oder arbeite derzeit an Linux als Beruf. Ich werde jedoch die Informationen, die ich zu diesem Thema gefunden habe, nach bestem Wissen zur Verfügung stellen.
Die Angelegenheit:
Die im zfsonlinux
Paket integrierte Hot-Spare-Funktion funktioniert derzeit nicht wie auf der Manpage angegeben. zpool
Manpage:
Hot Spares ZFS allows devices to be associated with pools as "hot spares". These devices are not actively used in the pool, but when an active device fails, it is automatically replaced by a hot spare.
Hinweis: Die Cold Spare-Funktion (ein Ersatz, der nicht automatisch ersetzt wird) funktioniert nur in Konfigurationen, die aus einer mirrors
oder einer der folgenden bestehen raidz's
. Wenn Sie eine Konfiguration wie die folgende haben:
NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 spares sdd AVAIL
Bei einem Ausfall eines Laufwerks können Sie das Laufwerk aufgrund des pool I/O is currently suspended
Fehlers nicht ersetzen .
Versuchte Lösungen:
Dies ist eine Liste von Lösungsversuchen, die ich durchlaufen habe, und die Ergebnisse sind erhalten:
ZFS-Autoersetzung: Es stellt sich heraus, dass gemäß der
zpool
Manpage und meinem Verständnis dieautoreplace
Funktionalität darin besteht, ein beschädigtes Laufwerk nicht durch das Ersatzgerät zu ersetzen, sondern das beschädigte Laufwerk selbst durch ein neues Gerät an seinem Standort zu ersetzen.zpool
Manpage:If set to "on", any new device, found in the same physical location as a device that previously belonged to the pool, is automatically formatted and replaced.
autoreplace
ist gut zu haben, aber um die Funktionalität eines Hot-Spare zu erreichen, glaube ich nicht, dass es nötig ist. Ich kann das nicht anders bestätigen, als durch die Manpage, weil ich das Ersatzteil nicht zur Arbeit bekommen konnte.ZED.rc: Ich habe später im Gespräch auf Github herausgefunden, dass die
ZED_SPARE_ON_CHECKSUM_ERRORS
und -ZED_SPARE_ON_IO_ERRORS
Flags in derzed.rc
. Wie @ user121391 in seiner Antwort auf diesen Beitrag gesagt hat, bestimmt der Zed-Dienst / Daemon den Status des Pools und was auf der Grundlage dieses Status erforderlich ist. Sie können zed.d bei der Arbeit sehen, indem Sie ausführenzpool events
. Mehr zu zed.d zu Linux hier . Nach dem Setzen der Flags, dem Neustart und dem erneuten Konfigurieren eines neuen Pools für den Fall war mein Test des Hot-Spare wieder negativ.ZED.d-Skripts: In @Michael Kjörlings Kommentar erwähnte er einige mit ZED gepackte Skripts, die für das Hot-Spare-Szenario geschrieben wurden. Ich fand die Skripte tatsächlich in
/etc/zfs/zed.d
. Sie können diese Skripte auf der Github Seite sehen hier . Nach meinem Verständnis von zed.d führt der ZED-Dämon beim Auslösen eines Ereignisses eines dieser Skripts basierend auf seinem Status aus. Nachdem dies gesagt wurde, habe ich versucht, dasio-spare.sh
undchecksum-spare.sh
manuell auszuführen und zu beurteilen, wann und wie lange der Vorgang ausgeführt wurde, und der unveränderte Status des Pools. Sie schienen nicht korrekt zu laufen. Vielleicht ist dies eine potenzielle Quelle für das Problem.
Meine Pläne
Für Ubuntu 16.04-Benutzer von ZFS scheint meines Wissens derzeit keine Lösung für dieses Problem zu sein. Ich habe vor, ZFS weiterhin mit der Konfiguration eines mirrored
oder raidz
(RAID5) zu verwenden, abhängig von der Leistung, die ich beim Testen bekomme. (Gespiegelt wird schneller, aber ich möchte die Geschwindigkeit von sehen raidz
) Aber leider müssen wir auf die weitere Entwicklung des zfsonlinux
Projekts warten .