Używam 64-bitowego systemu Ubuntu Server 13.04, używając natywnego ZFS. Mam zpool składający się z 4 dysków twardych, z których jeden zmarł wczoraj i nie jest już rozpoznawany przez system operacyjny ani BIOS.
Niestety problem pojawił się dopiero po następnym uruchomieniu, więc teraz brakuje etykiety dysku i nie mogę wymienić dysku, korzystając z oficjalnych instrukcji tu i tutaj .
zpool status hermes -x
odbitki
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
Już wymieniłem dysk na nowy (który otrzymał etykietę /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
)
Dowolne z poleceń
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
nie działa z
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
ponieważ etykieta dysku, który zmarł, nie istnieje już w systemie. Próbowałem też powyższych poleceń, pomijając ścieżkę do etykiety dysku, ale bezskutecznie.
Jak mogę wymienić dysk „ghost”?
-n
przełącznika, ale również-g
przełącznik pobierze uuid w ten sposób.zpool status
(nazwy takie jak sdab) NIE były takie same jak ścieżki w/dev/disk/by-id
(zwariowane długie nazwy identyfikatorów). Alels -la /dev/disk/by-id
ujawnia, że wszystkie są linkami do,/dev/...
więc znalazłem ten, który wskazuje na mój dysk UNAVAIL (a następnie OFFLINE) i udało mi się pomyślnie wykonać te kroki. Teraz się zmienia. Dziękuję Ci!zpool status -g
wyświetlenie statusu za pomocą identyfikatorów GUID dla każdego urządzenia. Ponadto w przypadku @Mattzpool status -L
pokaże status przy użyciu podstawowych nazw urządzeń zamiast długich/dev/disk/by-id
nazw.Problem polega na tym, że dyski są przywoływane przez identyfikatory, a nie przez urządzenie.
Oto obejście, które powinno działać:
Edycja: Spóźniłem się 30 sekund ...
źródło
no such device in pool
.zpool status
offline
i wykonałemreplace
kroki). Zaimportowałem pulę drugi raz po usunięciu linku zerowego. Może to był tylko problem z etykietą napędu? W rzeczywistości nazwa napędu pozostała taka sama. Później wykonałem pełne czyszczenie i nie znaleziono błędów.@Marcus: Dzięki za opublikowanie tej doskonałej odpowiedzi na twoje pytanie, bardzo mi pomogło.
Pewnego dnia znalazłem zwrot, który może Cię zainteresować (i każdego, kto przyjdzie tutaj, a-googling w przyszłości): miałem pamięć podręczną, która została usunięta z puli (i oznaczona jako „UNAVAIL”) z powodu tego samego błędu (ZFS-8000-4J, „brak etykiety lub jest ona nieprawidłowa”) i próba jej wyłączenia / usunięcia / zastąpienia nie powiodła się z dokładnie tym samym komunikatem „brak takiego urządzenia w puli”.
ALE, kiedy próbowałem zastosować twoje rozwiązanie, zwykły „zdb” (bez argumentów) nie wyświetlał urządzenia, a tym bardziej jego GUID.
Po pewnym kopaniu okazało się, że „zdb -l / dev / DEVICENAME” wyświetla GUID (biorąc go bezpośrednio z urządzenia, a nie z rekordów puli), a użycie tego GUID umożliwiło mi wykonanie wymiany (właściwie zrobiłem „zpool offline”, a następnie „zpool remove”, a następnie „zpool add”, które działały doskonale).
źródło
zdb -l /dev/...
zawsze pokazywał „nie udało się rozpakować etykiety”.Miałem podobny problem:
Napęd zawiódł w taki sposób, że nie zarejestrował się już w systemie BIOS (całkowicie martwy).
zpool status
Wskazała, żeUNAVAILABLE
.Włożyłem dysk o podobnej pojemności i udało mi się przydzielić go jako nowy,
spare
który byłINUSE
dyskiem. Ale tak naprawdę to nie była część zpool, raczej pula miała pamięć o brakującym dysku, myśląc, że kiedyś się pojawi.Rozwiązaniem było najpierw upuścić brakujący dysk z zpool:
Następnie upuść dysk oznaczony
spare-1 INUSE
również:Gdy to zrobię, wygląda na to, że FreeNAS zrozumiał to bez konieczności wykonywania
replace
polecenia, jednak jeśli twój system sam tego nie zrozumie, następujące polecenie powinno zastąpić jedno urządzenie drugim:Na przykład:
zpool status
polecenia.źródło