btrfs가 메타데이터를 RAID1로 변환하는 것을 거부하는 이유

btrfs가 메타데이터를 RAID1로 변환하는 것을 거부하는 이유

단일 장치 btrfs 파일 시스템을 만들었습니다. btrfs 위키 기사에 따르면여러 장치 사용, 다음을 사용하여 RAID1으로 변환할 수 있어야 합니다.

btrfs balance start -dconvert=raid1 -mconvert=raid1 /path

Linux 3.16에서 시작했는데 실패했습니다(커널 패닉). Linux 4.0으로 업그레이드하고 파일 시스템을 마운트한 후 계속해서 완료하세요. 하지만 메타데이터나 시스템(기반 btrfs fi df)이 아닌 데이터만 다루고 있습니다. 나는 git에서 최신 btrfs-progs를 얻었고(이전 버전으로 인한 것이 아닌지 확인하기 위해) 다음을 수행했습니다.

Watt:/home/anthony/src/btrfs-progs# ./btrfs balance start -v -mconvert=raid1 /path
Dumping filters: flags 0x6, state 0x0, force is off
  METADATA (flags 0x100): converting, target=16, soft is off
  SYSTEM (flags 0x100): converting, target=16, soft is off
Done, had to relocate 6 out of 1411 chunks

그러나 분명히 그것은 실제로 그것을 반영하지 않습니다. 지금 나 한테있어:

Watt:/home/anthony/src/btrfs-progs# ./btrfs fi usage /path
Overall:
    Device size:                   7.28TiB
    Device allocated:              2.75TiB
    Device unallocated:            4.53TiB
    Device missing:                  0.00B
    Used:                          2.74TiB
    Free (estimated):              2.26TiB      (min: 2.26TiB)
    Data ratio:                       2.00
    Metadata ratio:                   2.00
    Global reserve:              512.00MiB      (used: 0.00B)

Data,RAID1: Size:1.37TiB, Used:1.37TiB
   /dev/mapper/luks-562e4e2f-2894-415a-aaf1-7c94a11c33b9           1.37TiB
   /dev/mapper/luks-ec97c1ad-21d8-41bb-9072-e5a74f68e416           1.37TiB

Metadata,DUP: Size:2.50GiB, Used:1.58GiB
   /dev/mapper/luks-562e4e2f-2894-415a-aaf1-7c94a11c33b9           5.00GiB

System,DUP: Size:32.00MiB, Used:224.00KiB
   /dev/mapper/luks-562e4e2f-2894-415a-aaf1-7c94a11c33b9          64.00MiB

Unallocated:
   /dev/mapper/luks-562e4e2f-2894-415a-aaf1-7c94a11c33b9           3.17TiB
   /dev/mapper/luks-ec97c1ad-21d8-41bb-9072-e5a74f68e416           1.36TiB

다시 전체 밸런싱을 시도했지만( -dconvert=raid1및 을 모두 사용하여 -mconvert=raid1) 그것도 작동하지 않았습니다.

참고: 더 큰 디스크(56…b9)는 제가 추가했습니다.

메타데이터와 시스템 이미지를 얻는 방법은 무엇입니까?

답변1

이는 밸런싱 시 전환 필터가 작동하지 않게 만드는 커널 4.0의 회귀입니다. 모든 전환이 영향을 받는 것처럼 보입니다(단지 단일->raid1 또는 raid1->raid5가 아님). 최근 보기메일링 리스트 스레드, 현재 공식적인 수정 사항은 없습니다. 커널을 패치하려는 경우 간단한 패치를 임시 수정으로 사용할 수 있습니다.

이는 v4.0의 알려진 버그입니다. 회귀를 일으킨 커밋을 되돌리기 위해 패치[1]를 보냈지만 응답을 받지 못했습니다. 해당 방법을 적용하거나 2f0810880f08("btrfs: 블록 그룹 ro 설정 시 블록 할당 시도 제거됨")을 복원하여 문제를 일시적으로 해결할 수 있습니다.

[1]:https://patchwork.kernel.org/patch/6238111/

관련 정보