Impossível montar o sistema de arquivos btrfs “open_ctree failed”

6

Tendo problemas para montar um sistema de arquivos btrfs. Originalmente criado em um servidor rodando xbian. Tentando montar em um servidor OpenSUSE 42.2 atualizado. Reclama sobre o recurso não suportado 0x10, open_ctree falhou.

Como posso montar esse sistema de arquivos?

Tentativa de montagem

# file -s /dev/sdc2
/dev/sdc2: BTRFS Filesystem (label "xbian", sectorsize 4096, nodesize 16384, leafsize 16384)
# mount -t btrfs /dev/sdc2 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sdc2,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
#

saída do dmesg

[  119.698406] BTRFS info (device sdc2): disk space caching is enabled
[  119.698409] BTRFS: couldn't mount because of unsupported optional features (10).
[  119.744887] BTRFS: open_ctree failed

versão do btrfs

# rpm -qa|grep btrfs
btrfsprogs-udev-rules-4.5.3-3.1.noarch
btrfsprogs-4.5.3-3.1.x86_64
libbtrfs0-4.5.3-3.1.x86_64
btrfsmaintenance-0.2-13.1.noarch
#

btrfs inspecionar internamente

Denuncia um sinalizador desconhecido. Esse comportamento é visto na versão btrfs do estoque fornecido com o OpenSUSE (btrfs-progs v4.5.3 + 20160729) e com o mais recente quando baixado do git e compilado (btrfs-progs v4.9.1)

# btrfs inspect-internal dump-super /dev/sdc2
superblock: bytenr=65536, device=/dev/sdc2
---------------------------------------------------------
csum                    0x394d4988 [match]
bytenr                  65536
flags                   0x1
                        ( WRITTEN )
magic                   _BHRfS_M [match]
fsid                    71ecbcc5-c88f-4f27-b4d8-763bd801765e
label                   xbian
generation              129
root                    4669440
sys_array_size          97
chunk_root_generation   102
root_level              0
chunk_root              131072
chunk_root_level        0
log_root                0
log_root_transid        0
log_root_level          0
total_bytes             7451181056
bytes_used              691642368
sectorsize              4096
nodesize                16384
leafsize                16384
stripesize              4096
root_dir                6
num_devices             1
compat_flags            0x0
compat_ro_flags         0x0
incompat_flags          0x179
                        ( MIXED_BACKREF |
                          COMPRESS_LZO |
                          COMPRESS_LZOv2 |
                          BIG_METADATA |
                          EXTENDED_IREF |
                          SKINNY_METADATA |
                          unknown flag: 0x10 )
csum_type               0
csum_size               4
cache_generation        129
uuid_tree_generation    112
dev_item.uuid           a8b49751-56e3-4c42-a1d3-40a1554c800c
dev_item.fsid           71ecbcc5-c88f-4f27-b4d8-763bd801765e [match]
dev_item.type           0
dev_item.total_bytes    7451181056
dev_item.bytes_used     926941184
dev_item.io_align       4096
dev_item.io_width       4096
dev_item.sector_size    4096
dev_item.devid          1
dev_item.dev_group      0
dev_item.seek_speed     0
dev_item.bandwidth      0
dev_item.generation     0

#
    
por steve 05.03.2017 / 18:07

1 resposta

4

O problema é que as duas versões do Linux apresentam uma versão BTRFS ligeiramente diferente, ou seja, não suportam os mesmos recursos:

[ 119.698406] BTRFS info (device sdc2): disk space caching is enabled
[ 119.698409] BTRFS: couldn't mount because of unsupported optional features (10).

Parece que o xbian habilitou esses recursos, enquanto o OpenSuse 42.2 não, o que impede a interoperabilidade.

Esses recursos do FS são opcionais: Isso significa que é possível criar partições BTRFS compatíveis com versões anteriores em sistemas mais recentes que sejam legíveis de sistemas mais antigos (sem esses recursos), controlados pelos parâmetros que são passados para o programa mkfs.btrfs.

O código numérico dos recursos é 10 - sinalizador desconhecido: 0x10. Tive dificuldade em descobrir o que significam esses códigos (minha suposição: referências de inodes estendidos). Mas, como o número é muito baixo, acho que isso é algo básico. Eu acho que você não pode mais tornar este sistema de arquivos legível por kernels não corrigidos. Caso contrário, conhecendo o recurso, talvez possamos especificar uma opção de montagem para evitar o erro; como aqui, onde o algoritmo de compressão fs é especificado:

mount -t btrfs -o compress=lz4 dev /mnt

Se não soubermos o que é esse recurso, você nem poderá atualizar seu kernel no OpenSuse para casar com xbian. Normalmente, em tal situação, você confiaria no ext4 por motivos de compatibilidade.

    
por 17.07.2017 / 21:25

Tags