Ich verwende Ubuntu Server 13.04 64-Bit mit nativem ZFS. Ich habe einen Zpool bestehend aus 4 Festplatten, von denen eine gestern gestorben ist und jetzt vom Betriebssystem oder vom BIOS nicht mehr erkannt wird.
Leider habe ich das Problem erst nach dem nächsten Neustart gesehen, so dass jetzt die Laufwerksbezeichnung fehlt und ich die Festplatte nicht anhand der offiziellen Anweisungen hier und hier austauschen kann .
zpool status hermes -x
druckt
root@zeus:~# zpool status hermes -x
pool: hermes
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 2h4m with 0 errors on Sun Jun 9 00:28:24 2013
config:
NAME STATE READ WRITE CKSUM
hermes DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ata-ST3300620A_5QF0MJFP ONLINE 0 0 0
ata-ST3300831A_5NF0552X UNAVAIL 0 0 0
ata-ST3200822A_5LJ1CHMS ONLINE 0 0 0
ata-ST3200822A_3LJ0189C ONLINE 0 0 0
errors: No known data errors
Ich habe das Laufwerk bereits durch ein neues ersetzt (mit dem Etikett /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
)
Beliebiger der Befehle
zpool replace hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
zpool offline hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
zpool detatch hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
scheitert mit
root@zeus:~# zpool offline hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
cannot offline /dev/disk/by-id/ata-ST3300831A_5NF0552X: no such device in pool
weil das Etikett des Laufwerks, das gestorben ist, nicht mehr im System vorhanden ist. Ich habe auch versucht, die obigen Befehle auszuführen, wobei der Pfad zum Etikett des Laufwerks erfolglos ausgelassen wurde.
Wie kann ich die "Ghost" -Diskette ersetzen?
-n
switch-g
ausführen , aber auch der Switch greift auf diese Weise nach der uuid.zpool status
(Namen wie sdab) aufgelistet wurden, waren NICHT die gleichen wie die Pfade in/dev/disk/by-id
(verrückte lange ID-Namen). Esls -la /dev/disk/by-id
zeigt sich jedoch, dass es sich bei allen um Links handelt,/dev/...
sodass ich denjenigen gefunden habe, der auf meine UNAVAIL- (und anschließend OFFLINE-) Festplatte verweist, und diese Schritte erfolgreich ausführen konnte. Es ist jetzt resilvering. Vielen Dank!zpool status -g
, den Status mithilfe von GUIDs für jedes Gerät anzuzeigen. Außerdem wird für @Mattzpool status -L
der Status unter Verwendung der grundlegenden Gerätenamen anstelle der langen/dev/disk/by-id
Namen angezeigt .Das Problem ist, dass die Festplatten nach IDs und nicht nach Gerät referenziert werden.
Hier ist eine Problemumgehung, die funktionieren sollte:
Edit: Ich war 30 Sekunden zu spät ...
quelle
no such device in pool
.zpool status
offline
undreplace
Schritte ausgeführt). Ich habe den Pool ein zweites Mal importiert, nachdem ich den Null-Link entfernt habe. Vielleicht war es nur ein Problem mit der Laufwerksbezeichnung? Tatsächlich blieb der Laufwerksname gleich. Ich habe danach ein komplettes Peeling durchgeführt und keine Fehler gefunden.@Marcus: Danke, dass du diese ausgezeichnete Antwort auf deine eigene Frage gepostet hast, das hat mir sehr geholfen.
Neulich habe ich eine Wendung entdeckt, die Sie interessieren könnte (und jeden anderen, der in Zukunft hierher kommt): Ich hatte ein Cache-Gerät, das aufgrund desselben Fehlers aus dem Pool entfernt (und als "UNAVAIL" markiert) wurde (ZFS-8000-4J, "Etikett fehlt oder ist ungültig") und der Versuch, es offline zu schalten / zu entfernen / zu ersetzen, schlug mit genau der Meldung "Kein solches Gerät im Pool" fehl.
Aber, als ich versuchte , Ihre Lösung anzuwenden, plain „ZDB“ (ohne Argumente) hat nicht die Geräteliste, viel weniger seinen GUID.
Nach einigem Durchsuchen stellte ich fest, dass "zdb -l / dev / DEVICENAME" die GUID auflistete (direkt vom Gerät und nicht von den Pool-Datensätzen) und die Verwendung dieser GUID den Austausch ermöglichte (tatsächlich habe ich eine durchgeführt) "zpool offline" gefolgt von einem "zpool remove" und einem "zpool add" (was perfekt funktioniert hat).
quelle
zdb -l /dev/...
zeigte immer "Etikett konnte nicht entpackt werden".Ich hatte ein ähnliches Problem:
Das Laufwerk ist so ausgefallen, dass es sich nicht mehr im BIOS registriert hat (völlig tot). Das
zpool status
deutete darauf hin, dass es warUNAVAILABLE
.Ich habe eine ähnliche Kapazität Laufwerk in, und ich schaffte es als ein neues zuzuordnen ,
spare
die warINUSE
und Resilvering durchgeführt das Laufwerk. Aber es war eigentlich kein Teil des Zpools, sondern der Pool hatte eine Erinnerung an das fehlende Laufwerk und dachte, es würde eines Tages wieder erscheinen.Die Lösung bestand darin, zuerst das fehlende Laufwerk aus dem zpool zu löschen:
Lassen Sie dann das mit gekennzeichnete Laufwerk fallen
spare-1 INUSE
:Sobald ich das getan habe, sieht es so aus, als hätte FreeNAS es herausgefunden, ohne dass ich einen
replace
Befehl ausführen muss. Wenn Ihr System es jedoch nicht selbst herausfindet, sollte der folgende Befehl ein Gerät durch das andere ersetzen:Beispielsweise:
zpool status
Befehl.quelle