오늘 btrfs RAID1 장치를 교체해야 했습니다. 작업 전 파일 시스템 상태는 다음과 같습니다.
$ btrfs filesystem show /mnt
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 2 FS bytes used 2.11TiB
devid 1 size 0 used 0 path MISSING
devid 2 size 5.46TiB used 2.17TiB path /dev/mapper/datadungeon
그런 다음 나는 달렸다 btrfs replace start -r 1 /dev/mapper/eternalepoch /mnt
. 잘못된 부분을 읽어서 -r
잘못 배치했지만 매뉴얼 페이지에는 괜찮을 것이라고 나와 있습니다. 작업을 시작한 직후의 파일 시스템은 다음과 같습니다.
$ btrfs filesystem show /mnt
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 3 FS bytes used 2.11TiB
devid 0 size 2.73TiB used 2.17TiB path /dev/mapper/eternalepoch
devid 1 size 0 used 0 path MISSING
devid 2 size 5.46TiB used 2.18TiB path /dev/mapper/datadungeon
다음은 작업이 완료된 후의 파일 시스템입니다(저도 하나 만들었습니다 btrfs filesystem resize 1:max /mnt
).
$ btrfs filesystem show /mnt
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 2 FS bytes used 2.11TiB
devid 1 size 5.46TiB used 2.17TiB path /dev/mapper/eternalepoch
devid 2 size 5.46TiB used 4.35TiB path /dev/mapper/datadungeon
나는 du -sch
마운트된 장치 2의 루트에서 이것을 실행했고 -o degraded
(해당 드라이브에 대한 결과를 별도로 원함) 예상대로 2.17TB를 얻었습니다. 그래서 제 질문은 보고된 크기가 왜 두 배가 되고 어떻게 되돌릴 수 있느냐는 것입니다. ? 마치 자기 자신을 복제한 것과 같습니다. 균형 조정 작업이 작동합니까, 아니면 다른 장치의 크기가 두 배로 늘어나나요?
답변1
그래서 가끔 확인한 결과 filesystem usage
( device usage
비슷한 정보 제공 filesystem show
) 2.17TB는 실제로 매우 작은 데이터라는 것을 알았습니다.
$ btrfs filesystem usage /mnt
Overall:
Device size: 10.92TiB
Device allocated: 6.52TiB
Device unallocated: 4.39TiB
Device missing: 0.00B
Device slack: 0.00B
Used: 4.22TiB
Free (estimated): 4.45TiB (min: 3.72TiB)
Free (statfs, df): 1.17TiB
Data ratio: 1.50
Metadata ratio: 1.50
Global reserve: 512.00MiB (used: 0.00B)
Multiple profiles: yes (data, metadata, system)
Data,single: Size:2.17TiB, Used:256.00KiB (0.00%)
/dev/mapper/datadungeon 2.17TiB
Data,RAID1: Size:2.17TiB, Used:2.10TiB (97.22%)
/dev/mapper/eternalepoch 2.17TiB
/dev/mapper/datadungeon 2.17TiB
Metadata,single: Size:10.00GiB, Used:112.00KiB (0.00%)
/dev/mapper/datadungeon 10.00GiB
Metadata,RAID1: Size:10.00GiB, Used:3.05GiB (30.50%)
/dev/mapper/eternalepoch 10.00GiB
/dev/mapper/datadungeon 10.00GiB
System,single: Size:32.00MiB, Used:240.00KiB (0.73%)
/dev/mapper/datadungeon 32.00MiB
System,RAID1: Size:32.00MiB, Used:336.00KiB (1.03%)
/dev/mapper/eternalepoch 32.00MiB
/dev/mapper/datadungeon 32.00MiB
Unallocated:
/dev/mapper/eternalepoch 3.28TiB
/dev/mapper/datadungeon 1.11TiB
그래서 결국 균형을 맞추게 되었습니다 btrfs balance start -dprofiles=single,convert=raid1,soft -mprofiles=single,convert=raid1,soft /mnt
(이 경우에는 소프트와 프로필=싱글이 중복된다고 생각합니다). 몇 분 후에 다음을 얻습니다.
btrfs filesystem show /data
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 2 FS bytes used 2.11TiB
devid 1 size 5.46TiB used 4.35TiB path /dev/mapper/eternalepoch
devid 2 size 5.46TiB used 4.35TiB path /dev/mapper/datadungeon
하지만! , 파일 시스템 사용량은 실제로 2.10TB에 불과합니다.
Data,RAID1: Size:4.33TiB, Used:2.10TiB (48.61%)
/dev/mapper/eternalepoch 4.33TiB
/dev/mapper/datadungeon 4.33TiB
used
따라서 교체 명령을 실행하기 전에 일부 데이터가 첫 번째 디스크에 기록되었고 btrfs는 어떤 이유로 즉시 2.17TB를 할당했습니다. 이는 btrfs 출력에 대한 이해 부족으로 인한 문제가 아닙니다. 실제로는 사용되지 않고 할당만 됩니다.)