Reparar o RAID do btrfs? Erro: ioctl inadequado para o dispositivo

1

Eu tenho um RAID5 btrfs com 8 discos e um disco rígido morreu e desapareceu da lista.

Agora tentei removê-lo, mas recebi um erro:

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

Após desabilitar a montagem automática em /etc/fstab , encerrei o sistema, substituí a unidade defeituosa e reiniciei o sistema para reinicializar o controlador, caso ocorresse algum erro, e o disco morto estava ausente, causando todos os outros discos para enumerar novamente, portanto, o disco de substituição tornou-se /dev/sdd em vez de sdb .

A execução de btrfs fi show -d resultou em:

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

Agora tentei btrfs device add /dev/sdd /mnt/x , mas consegui

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

E agora? Como posso restaurar ou montar o RAID?

Eu não consigo nem montá-lo. Tentei mount [-t btrfs] -o degraded /dev/sdb /mnt/x e mount [-t btrfs] -o degraded,device=/dev/sdb,[...] /dev/sdb /mnt/x ( [...] são as especificações do dispositivo, é claro):

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

Esta é uma caixa do Ubuntu 14.04 com o kernel x64 3.13.0-36-genérico.

    
por Archimedix 06.07.2015 / 13:32

1 resposta

0

Esta não é uma resposta "completa", mas eu tive o mesmo problema com o BTRFS RAID 10. Você tem que coloca o array online em modo degradado antes que você possa remover um dispositivo com falha completa .

btrfs device delete is used to remove devices online. It redistributes the any extents in use on the device being removed to the other devices in the filesystem.

Caso contrário, você continuará recebendo a mensagem:

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

Tudo o que posso esperar é que seu comando de montagem esteja incorreto. Você só precisa listar um dos dispositivos em sua matriz e o caminho em que você deseja montá-lo. Por exemplo:

sudo mount -o degraded /dev/sda /raid10

... onde /dev/sda para mim era um dos dispositivos trabalhando na matriz. Quando tentei listar todos os dispositivos da seguinte forma:

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

... o comando falharia.

Uma vez que você tenha o array montado, apenas execute sudo btrfs device delete missing /raid10 e aguarde por um longo período de tempo enquanto o array se auto-classifica. Se você não conseguir montar seu array, não tenho certeza se há algo que você possa fazer. Talvez duas unidades realmente falharam em vez de apenas uma, ou (mais provavelmente) há mais problemas com o BTRFS RAID 5, uma vez que não existe há tanto tempo quanto o BTRFS RAID 1/10?

    
por 07.02.2016 / 11:31