Сегодня я нашел это на сервере (FreeBSD 8.2 STABLE):
NAME STATE READ WRITE CKSUM
data DEGRADED 1.38K 0 0
raidz1-0 DEGRADED 1.38K 0 0
ad10 ONLINE 1.38K 0 0
ad12 ONLINE 0 0 0
ad14 ONLINE 0 0 0
ad16 REMOVED 0 0 0
Я быстро вытащил не тот жесткий диск и вставил новый. После этого я набрал эту неудачную команду:
zpool add data ad16
В результате в пуле появилось новое устройство ad16:
NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
ad14 ONLINE 0 0 0
ad16 FAULTED 0 0 0 corrupted data
ad16 ONLINE 0 0 0
Первое устройство ad16 неисправно и является частью тома data / raidz1-0. Второе устройство ad16 находится в сети и не является частью какого-либо тома. Проблема в том, что они имеют одинаковое имя, поэтому команда replace не работает:
gw# zpool replace -f data ad16 ad16
invalid vdev specification
the following errors must be manually repaired:
/dev/ad16 is part of active pool 'data'
Я думаю, что мне следует удалить ONLINE диск ad16, прежде чем я смогу заменить FAULTED ad16 disk. Но это не работает, потому что я не могу ни отключить его, ни удалить:
gw# zpool offline data ad16
gw# zpool status
pool: data
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scan: scrub in progress since Thu Apr 18 03:23:06 2013
26.1G scanned out of 3.13T at 50.7M/s, 17h52m to go
0 repaired, 0.81% done
config:
NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
ad14 ONLINE 0 0 0
ad16 OFFLINE 0 0 0
ad16 ONLINE 0 0 0
errors: No known data errors
gw# zpool remove data ad16
cannot remove ad16: only inactive hot spares, cache, top-level, or log devices can be removed
Я предполагаю, что команда "offline ad16" нацелена на неисправное устройство. Но я бы хотел отключить другой. Я также попытался загрузить систему в однопользовательском режиме с удаленным новым диском, но это привело к тому, что оба устройства ad16 оказались UNAVAIL, а весь пул стал непригодным для использования (что странно, потому что дисков достаточно, чтобы заставить его работать .. .)
Команда 'zpool add' предназначена для добавления новых устройств (vdev) в пулы. Когда вы изначально запускали эту команду, вы добавили новый vdev (состоящий только из ad16) в пул. Вы начали с четырехдискового raidz, с одним отказавшим диском, но теперь у вас есть пул, в котором данные чередуются между raidz и ad16. Потеря этого ОНЛАЙН-диска ad16 приведет к ОТКАЗУ всего пула.
Поскольку сейчас невозможно удалить ad16 (вы не можете удалить vdev из пула), и я сомневаюсь, что вы хотите, чтобы ваши данные чередовались между 4-дисковым raidz и одним диском, я не думаю, что стоит тратить время на сортировку из этого НЕИСПРАВНОГО диска. Вам было бы лучше посмотреть на перенос ваших данных на отдельный пул / диск / сервер и уничтожить / воссоздать этот пул.
Предложение: укажите базовое устройство по UUID и логическому имени.