btrfs 파일 시스템 "open_ctree 실패"를 마운트할 수 없습니다.

btrfs 파일 시스템 "open_ctree 실패"를 마운트할 수 없습니다.

btrfs 파일 시스템을 마운트하는 동안 문제가 발생했습니다. 원래 xbian을 실행하는 서버에서 생성되었습니다. 최신 OpenSUSE 42.2 서버에 설치해 보세요. 지원되지 않는 기능 0x10에 대한 불만, open_ctree가 실패했습니다.

이 파일 시스템을 어떻게 마운트할 수 있나요?

마운트 시도

# 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.
#

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

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 검사 내부

알 수 없는 플래그를 신고하세요. 이 동작은 OpenSUSE에서 제공하는 기본 btrfs 버전(btrfs-progs v4.5.3+20160729)과 git에서 다운로드하고 컴파일한 최신 버전(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

#

답변1

문제는 실제로 두 Linux 버전의 BTRFS 버전이 약간 다르다는 것입니다. 즉, 동일한 기능을 지원하지 않습니다.

[119.698406] BTRFS 정보(장치 sdc2): 디스크 공간 캐시가 활성화되었습니다.
[119.698409] BTRFS: 선택적 기능이 지원되지 않아 설치할 수 없습니다(10).

xbian에는 이 기능이 활성화되어 있지만 OpenSuse 42.2에는 활성화되어 있지 않아 상호 운용성을 방해하는 것으로 보입니다.

이러한 FS 기능은 선택 사항입니다. 이는 mkfs.btrfs 프로그램에 전달된 매개변수에 의해 제어되는 이전 시스템에서 읽을 수 있는(이러한 기능 없이) 최신 시스템에서 이전 버전과 호환되는 BTRFS 파티션을 생성할 수 있음을 의미합니다.

이 기능의 숫자 코드는 10 - 알 수 없는 플래그: 0x10입니다. 이 코드가 무엇을 의미하는지 알아내는 데 시간이 좀 걸렸습니다(제 생각에는 확장된 inode 참조). 하지만 숫자가 너무 적기 때문에 이것이 근본적인 문제라고 생각합니다. 패치되지 않은 커널에서는 더 이상 이 파일 시스템을 읽을 수 없을 것 같습니다. 그렇지 않으면 기능을 알고 있으면 여기와 같이 fs 압축 알고리즘을 지정하여 오류를 피하기 위해 마운트 옵션을 지정할 수 있습니다.

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

이 기능이 무엇인지 모르면 OpenSuse의 커널을 xbian과 일치하도록 업데이트할 수도 없습니다. 일반적으로 이 경우 호환성 이유로 ext4를 사용합니다.

답변2

나한테는 그래

BTRFS error (device dm-5): open_ctree failed

커널을 5.10에서 4.19로 다운그레이드한 후. 문제는 입니다 compress=zstd:5./etc/fstab문서,

ZSTD...4.14 이후 레벨, 5.1 이후 레벨

변경 후 다시 compress=zstd사용할 수 있습니다 .

관련 정보