BTRFS RAID10 하위 볼륨 스냅샷을 생성할 때 다음을 클릭했습니다.
[21816375.986061] ? btrfs_cleanup_transaction+0x530/0x530 [btrfs]
[21816375.986065] kthread+0x112/0x130
[21816375.986066] ? kthread_bind+0x30/0x30
[21816375.986070] ret_from_fork+0x1f/0x40
[21816375.986072] ---[ end trace a2d9b072102a4b9d ]---
[21816375.986116] BTRFS: error (device sdb) in btrfs_run_delayed_refs:2934: errno=-28 No space left
[21816375.986157] BTRFS info (device sdb): forced readonly
[21816375.986160] BTRFS warning (device sdb): Skipping commit of aborted transaction.
[21816375.986161] BTRFS: error (device sdb) in cleanup_transaction:1870: errno=-28 No space left
[21816376.167051] BTRFS error (device sdb): pending csums is 188416
비어 있는 공간과 할당되지 않은 공간이 너무 많아서 놀랐습니다.
Overall:
Device size: 87.32TiB
Device allocated: 67.31TiB
Device unallocated: 20.00TiB
Device missing: 0.00B
Used: 56.73TiB
Free (estimated): 15.29TiB (min: 15.29TiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Data,RAID10: Size:33.57TiB, Used:28.28TiB
/dev/sdb 11.19TiB
/dev/sdc 11.19TiB
/dev/sdd 11.19TiB
/dev/sde 11.19TiB
/dev/sdf 11.19TiB
/dev/sdg 11.19TiB
Metadata,RAID10: Size:92.72GiB, Used:89.08GiB
/dev/sdb 30.91GiB
/dev/sdc 30.91GiB
/dev/sdd 30.91GiB
/dev/sde 30.91GiB
/dev/sdf 30.91GiB
/dev/sdg 30.91GiB
System,RAID10: Size:103.88MiB, Used:3.05MiB
/dev/sdb 34.62MiB
/dev/sdc 34.62MiB
/dev/sdd 34.62MiB
/dev/sde 34.62MiB
/dev/sdf 34.62MiB
/dev/sdg 34.62MiB
Unallocated:
/dev/sdb 3.33TiB
/dev/sdc 3.33TiB
/dev/sdd 3.33TiB
/dev/sde 3.33TiB
/dev/sdf 3.33TiB
/dev/sdg 3.33TiB
따라서 이론적으로 최소 10TB의 여유 공간(RAID10의 경우 3x3.33)이 필요합니다.
우리는 다음과 같이 첫 번째 재조정을 수행했습니다.
btrfs fi balance start -dusage=5 /mnt
그리고 이것을 얻었습니다 :
Overall:
Device size: 87.32TiB
Device allocated: 56.86TiB
Device unallocated: 30.45TiB
Device missing: 0.00B
Used: 56.21TiB
Free (estimated): 15.54TiB (min: 15.54TiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Data,RAID10: Size:28.34TiB, Used:28.02TiB
/dev/sdb 9.45TiB
/dev/sdc 9.45TiB
/dev/sdd 9.45TiB
/dev/sde 9.45TiB
/dev/sdf 9.45TiB
/dev/sdg 9.45TiB
Metadata,RAID10: Size:92.72GiB, Used:81.35GiB
/dev/sdb 30.91GiB
/dev/sdc 30.91GiB
/dev/sdd 30.91GiB
/dev/sde 30.91GiB
/dev/sdf 30.91GiB
/dev/sdg 30.91GiB
System,RAID10: Size:7.88MiB, Used:2.58MiB
/dev/sdb 2.62MiB
/dev/sdc 2.62MiB
/dev/sdd 2.62MiB
/dev/sde 2.62MiB
/dev/sdf 2.62MiB
/dev/sdg 2.62MiB
Unallocated:
/dev/sdb 5.08TiB
/dev/sdc 5.08TiB
/dev/sdd 5.08TiB
/dev/sde 5.08TiB
/dev/sdf 5.08TiB
/dev/sdg 5.08TiB
질문이 몇 개 있습니다:
- "btrfs fi us"에 "할당되지 않은" 공간이 많이 표시되지만 공간 부족 문제(아마도 메타데이터 데이터 - 하위 볼륨 스냅샷)가 있는 경우 이는 무엇을 의미하며 메타데이터가 해당 할당되지 않은 공간으로 자동으로 확장되지 않는 이유는 무엇입니까?
- btrfs 균형을 정기적으로(얼마나 자주) 실행해야 합니까?
- -usage의 최적 값은 무엇입니까?
- 이거 위험한가요? 메타데이터의 균형을 재조정해야 합니까(예: -musage=5?)
- 우리는 btrfs가 데이터/메타데이터 할당을 위해 낮은 수준의 블록을 사용한다는 것을 알고 있지만 어떻게든 그 사용량을 모니터링할 수 있는 방법이 있는지 궁금합니다.