ext4와 btrfs 형식 드라이브의 할당량을 알려주는 명령을 찾고 있습니다.
배경: 저는 사용자가 개별 파일을 복원할 수 있는 백업 시스템을 사용하고 있습니다. 시스템은 rsync만 사용하고 서버측 소프트웨어는 사용하지 않으며 백업은 압축 해제됩니다. 그 결과 약 3.6TB의 파일이 생겼는데, 그 중 대부분은 매우 작습니다.
내 데이터 세트의 경우 LVM에서 btrfs 볼륨의 스토리지 효율성은 일반 기존 ext4 볼륨보다 훨씬 낮은 것 같습니다. 이는 최소 파일 크기 및 블록 크기와 관련이 있는 것으로 의심되지만 어떻게 되는지는 알 수 없습니다. 비교를 위해 이러한 치수를 얻으려면 btrfs 위키에서는 "페이지 크기"를 사용한다고 나와 있지만 해당 숫자를 얻는 방법에 대한 정보는 찾지 못했습니다.
답변1
모든 파일에 할당할 수 있는 가장 작은 블록인 데이터 블록 할당 크기를 살펴봐야 합니다. 대용량 파일은 여러 블록으로 구성됩니다. 그리고 큰 파일(또는 모든 작은 파일)의 끝에는 항상 마지막 블록이 완전히 채워지지 않아 사용되지 않는 "낭비"가 있습니다.
내가 아는 한, 널리 사용되는 모든 Linux 파일 시스템은 기본적으로 4K 블록을 사용합니다. 왜냐하면 이것이 최신 CPU의 기본 페이지 크기이기 때문입니다. 이는 메모리 매핑된 파일과 디스크 블록 간에 간단한 매핑이 있음을 의미합니다. BTRFS 및 Ext4(대부분의 시스템에서는 4K)의 기본 페이지 크기를 알고 있습니다.
ext4에서는 다음 tune2fs
을 사용하여 블록 크기를 확인하세요 /dev/sda1
.
[root@centos8 ~]# tune2fs -l /dev/sda1 |grep "^Block size:"
Block size: 4096
[root@centos8 ~]#
btrfs에서 다음 명령을 사용하여 블록 크기를 확인하십시오( /dev/mapper/cr_root
자신의 장치 경로로 변경하십시오. 이 예에서는 일반적인 암호화된 BTRFS-on-LUKS 경로를 사용합니다).
sudo btrfs inspect-internal dump-super -f /dev/mapper/cr_root | grep "^sectorsize"
답변2
stat -f
이를 사용하여 모든 파일 시스템에 대한 답을 얻을 수 있습니다 . 예를 들면 다음과 같습니다.
% stat -f /home
File: "/home"
ID: 5013a37be3cd6a47 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 113391734 Free: 472450 Available: 468304
Inodes: Total: 28868608 Free: 27969906
답변3
관련 없는 정보를 너무 많이 파헤치고 싶다면, btrfs-show-super -f /dev/md1
그렇지 않으면 대답은 stat -f …
가장 간단하고 일반적입니다.