Я использую Ubuntu Server 13.04 64-bit, используя нативную ZFS. У меня есть zpool, состоящий из 4 жестких дисков, один из которых умер вчера, и теперь он больше не распознается ни ОС, ни BIOS.
К сожалению, я увидел проблему только после следующей перезагрузки, так что теперь метка диска отсутствует, и я не могу заменить диск, используя официальные инструкции здесь и здесь .
zpool status hermes -x
печать
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
Я уже заменил диск на новый (который получил ярлык /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
)
Любая из команд
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
не удается с
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
потому что метка диска, который умер, больше не существует в системе. Я также пробовал команды выше, пропуская путь к метке диска, но безрезультатно.
Как заменить диск-призрак?
-n
переключателя, но также и-g
переключатель получит uuid таким же образом.zpool status
(такие имена, как sdab), НЕ совпадали с путями в/dev/disk/by-id
(сумасшедшие длинные имена идентификаторов). Ноls -la /dev/disk/by-id
обнаруживает, что все они являются ссылками,/dev/...
поэтому я нашел ту, которая указывает на мой диск UNAVAIL (и впоследствии в автономном режиме), и я смог успешно выполнить эти шаги. Это теперь снова и снова. Спасибо!zpool status -g
показать состояние, используя GUID для каждого устройства. Кроме того, для @Mattzpool status -L
будет отображаться состояние с использованием основных имен устройств вместо длинных/dev/disk/by-id
имен.Проблема в том, что на диски ссылаются идентификаторы, а не устройства.
Вот обходной путь, который должен работать:
Изменить: я опоздал на 30 секунд ...
источник
no such device in pool
.zpool status
offline
иreplace
пошагово). Я импортировал пул во второй раз после удаления нулевой ссылки. Может быть, это просто проблема с этикеткой диска? На самом деле название диска осталось прежним. Я сделал полный скраб после этого, и никаких ошибок не было найдено.@Marcus: Спасибо за публикацию этого превосходного ответа на свой вопрос, он мне очень помог.
На днях я обнаружил поворот, который может вас заинтересовать (и любого другого, кто придет сюда в будущем): у меня было устройство кэширования, которое было удалено из пула (и помечено как «UNAVAIL») из-за этой же ошибки (ZFS-8000-4J, «метка отсутствует или недействительна»), и попытка отключить / удалить / заменить ее не удалась с точно таким же сообщением «нет такого устройства в пуле».
НО, когда я попытался применить ваше решение, обычный «zdb» (без аргументов) не перечислил устройство, тем более его GUID.
После некоторого копания я обнаружил, что "zdb -l / dev / DEVICENAME" перечисляет GUID (беря его непосредственно с устройства, а не из записей пула), и использование этого GUID позволило мне выполнить замену (на самом деле я сделал «zpool offline», за которым следует «zpool remove», а затем «zpool add», который работал отлично).
источник
zdb -l /dev/...
всегда показывали «не удалось распаковать ярлык».У меня была похожая проблема:
Диск вышел из строя таким образом, что он больше не регистрируется в BIOS (полностью мертв).
zpool status
Показал , что это былоUNAVAILABLE
.Я вставил накопитель аналогичной емкости, и мне удалось выделить его как новый,
spare
который былINUSE
и повторно скопировал накопитель. Но на самом деле это не было частью zpool, скорее в пуле была память о пропавшем диске, и он думал, что когда-нибудь он появится снова.Решением было сначала удалить отсутствующий диск из zpool:
Затем опустите диск, отмеченный
spare-1 INUSE
также:После того, как я это сделал, похоже, что FreeNAS понял, что мне не нужно выполнять
replace
команду, однако, если ваша система сама этого не понимает, следующая команда должна заменить одно устройство другим:Например:
zpool status
команды.источник