Восстановить btrfs RAID? Ошибка: неподходящий ioctl для устройства

У меня RAID5 btrfs с 8 дисками и жесткий диск умер и просто исчез из списка.

Теперь я попытался удалить его, но получил ошибку:

ERROR: error removing the device '/dev/sdb' - Inappropriate ioctl for device

После отключения авто-монтирования в /etc/fstab, Я выключил систему, заменил неисправный диск и перезагрузил систему, чтобы сбросить контроллер на случай, если он сработал из-за какой-то другой ошибки, а утерянный диск теперь отсутствовал, что привело к повторному перечислению всех остальных дисков, поэтому диск для замены стал /dev/sdd скорее, чем sdb,

Бег btrfs fi show -d дал это:

Label: 'store'  uuid: ...
        Total devices 8 FS bytes used 5.27TiB
        devid    2 size 1.36TiB used 784.63GiB path /dev/sdb
        devid    3 size 1.36TiB used 784.63GiB path /dev/sdc
        devid    4 size 1.36TiB used 784.63GiB path /dev/sde
        devid    5 size 1.36TiB used 784.63GiB path /dev/sdf
        devid    6 size 1.36TiB used 784.63GiB path /dev/sdg
        devid    7 size 1.36TiB used 784.63GiB path /dev/sdh
        devid    8 size 1.36TiB used 784.63GiB path /dev/sdi
        *** Some devices missing

Btrfs v3.12

Сейчас попробовал btrfs device add /dev/sdd /mnt/x, но получил

ERROR: error adding the device '/dev/sdd' - Inappropriate ioctl for device

Что теперь? Как я могу восстановить или смонтировать RAID?

Я даже не могу его смонтировать. Пытался mount [-t btrfs] -o degraded /dev/sdb /mnt/x а также mount [-t btrfs] -o degraded,device=/dev/sdb,[...] /dev/sdb /mnt/x ([...] это технические характеристики устройства, конечно):

mount: wrong fs type, bad option, bad superblock on /dev/sdb,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Это Ubuntu 14.04 с ядром версии 3.13.0-36 x64.

1 ответ

Это не "полный" ответ, но у меня была та же проблема с BTRFS RAID 10. Вы должны подключить массив к сети в ухудшенном режиме, прежде чем вы сможете удалить полностью неисправное устройство.

Удаление устройства btrfs используется для удаления устройств в сети. Он перераспределяет любые используемые экстенты на удаляемом устройстве на другие устройства в файловой системе.

В противном случае вы продолжите получать сообщение:

ОШИБКА: ошибка при добавлении устройства '/dev/sdd' - неподходящий ioctl для устройства

Все, на что я могу надеяться, это то, что ваша команда mount неверна. Вам просто нужно указать одно из устройств в вашем массиве и путь, по которому вы хотите его смонтировать. Например:

sudo mount -o degraded /dev/sda /raid10

... где /dev/sda для меня было одно из работающих устройств в массиве. Когда я попытался перечислить все устройства примерно так:

sudo mount -o degraded -t btrfs\
/dev/sda \
/dev/sdb \
/dev/sdc1 \
/dev/sdd \
/dev/sde \
/dev/sdf \
/raid10

... команда потерпит неудачу.

После того, как вы установили массив, просто выполните sudo btrfs device delete missing /raid10 и ждать в течение длительного периода времени, пока массив не уладится. Если вы не можете смонтировать массив, я не уверен, что вы можете что-то сделать. Возможно, два диска на самом деле вышли из строя вместо одного, или (что более вероятно) возникает больше проблем с BTRFS RAID 5, поскольку он существовал не так давно, как BTRFS RAID 1/10?

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