A conversão do sistema de arquivos BTRFS para RAID1 falha com “ioctl inadequado para o dispositivo”

3

Eu tinha um volume BTRFS de ~ 1,6 TB em uma única partição, para a qual eu adicionei com êxito outra partição recém-criada e formatada (em outro dispositivo) de mesmo tamanho com a intenção de espelhá-los. O tamanho do volume agora parece ser de ~ 3,2TB. No entanto, quando tento converter o volume (montado em /mnt/mnt0 ) em um RAID-1 com

btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/mnt0

(de aqui )

Eu recebo o seguinte erro:

ERROR: error during balancing '/mnt/mnt0' - Inappropriate ioctl for device
There may be more info in syslog - try dmesg | tail

dmesg output é bastante desinteressante (e nada disso parece ter sido produzido pela execução do comando acima em qualquer caso):

root@Xeon:~# dmesg | tail
[26712.029432] device label Storage devid 1 transid 3760 /dev/sdb1
[26712.029464] device fsid 7c7bb4a7-f403-4dad-b7e3-92fa1a30c764 devid 1 transid 175588 /dev/sdb2
[26712.029494] device fsid 56a9e829-c964-4f16-a37f-3bde05fb22a0 devid 1 transid 172361 /dev/sdb3
[26712.029524] device fsid 29181083-c9d6-4d8a-bd3b-1f17b925bb21 devid 1 transid 70197 /dev/sdb4
[26712.029582] device fsid ff65812c-9515-465d-8536-e8d00cfb2193 devid 1 transid 3677 /dev/sda1
[26712.029641] device label Storage devid 2 transid 3760 /dev/sdc1
[26712.029886] device fsid 44c395d9-df4e-4ab2-8a41-5b06e584e854 devid 1 transid 4 /dev/sdc2
[26828.213983] device label Storage devid 1 transid 3760 /dev/sdb1
[26967.116350] device label Storage devid 1 transid 3760 /dev/sdb1
[27079.571213] device label Storage devid 2 transid 3763 /dev/sdc1

btrfs fi show dá (caso isso seja relevante):

Label: 'Storage'  uuid: 77a43f33-908b-468b-9570-55964547d1a1
        Total devices 2 FS bytes used 744.68GB 
        devid    2 size 1.62TB used 0.00 path /dev/sdc1
        devid    1 size 1.62TB used 947.54GB path /dev/sdb1

Ambas as partições passaram btrfs.fsck .

Como eu faria funcionar?

EDIT: Isto está em uma instalação Debian Wheezy atualizada com um kernel 3.2.

ATUALIZAÇÃO: Curiosamente, btrfs balance start /mnt/mnt0 funcionou bem - no entanto, btrfs balance cancel /mnt/mnt0 falhou com o mesmo erro. Após o balanceamento, os dois volumes parecem ter os mesmos dados, mas os dados ainda estão no RAID0; btrfs fi show

Label: 'Storage'  uuid: 77a43f33-908b-468b-9570-55964547d1a1
        Total devices 2 FS bytes used 744.66GB
        devid    2 size 1.62TB used 901.01GB path /dev/sdc1
        devid    1 size 1.62TB used 901.01GB path /dev/sdb1

e btrfs fi df :

Data, RAID0: total=1.72TB, used=742.51GB
System, RAID1: total=8.00MB, used=144.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=19.00GB, used=2.15GB
    
por jaymmer 05.04.2013 / 16:45

1 resposta

3

Resolvido atualizando o kernel para 3.8.4. Tive que compilar o meu próprio, mas as configurações de estoque parecem estar funcionando bem (eu construí o btrfs estaticamente e não como um módulo, embora eu não tenha certeza se isso era necessário).

EDIT: Eu não posso acreditar que eu perdi isso ... de acordo com o wiki BTRFS , a alteração dos níveis de raid após o sistema de arquivos ter sido criado não é compatível com os kernels série 3.2 e mais antigos. Esse deve ter sido o meu problema.

    
por 06.04.2013 / 08:23