Восстановить 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?