교체 작업 후 btrfs에서 사용하는 크기는 두 배로 늘어납니다.

교체 작업 후 btrfs에서 사용하는 크기는 두 배로 늘어납니다.

오늘 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 출력에 대한 이해 부족으로 인한 문제가 아닙니다. 실제로는 사용되지 않고 할당만 됩니다.)

관련 정보