Два устройства с одинаковым именем в zpool не могут заменить

Сегодня я нашел это на сервере (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. Но это не работает, потому что я не могу ни отключить его, ни удалить:

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, и весь пул был непригоден для использования (что странно, потому что дисков достаточно для его работы)..)

2 ответа

Решение

Команда zpool add предназначена для добавления новых устройств (vdevs) в пулы. Когда вы изначально выполняли эту команду, вы добавили в пул новый vdev (состоящий только из ad16). Вы начали с 4-х дискового raidz, с одним неисправным диском, но теперь у вас есть пул, в котором данные чередуются между raidz и ad16. Потеря этого ONLINE ad16 диска приведет к отказу всего пула.

Поскольку сейчас невозможно удалить ad16 (вы не можете удалить vdev из пула), и я сомневаюсь, что вы хотите, чтобы ваши данные чередовались между 4-дисковым raidz и одним диском, я не думаю, что стоит потратить ваше время на попытки сортировки из этого неисправного диска. Вы бы лучше посмотрели, как перенести свои данные в отдельный пул / диск / сервер и уничтожить / воссоздать этот пул.

Предложение: Ссылка на базовое устройство по UUID против логического имени.

Смотрите: http://forums.freebsd.org/showthread.php?t=37394

Другие вопросы по тегам