Назад | Перейти на главную страницу

Два устройства с одинаковым именем в 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 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 и логическому имени.

Видеть: http://forums.freebsd.org/showthread.php?t=37394