ext4 및 btrfs 파일 시스템의 블록 크기를 어떻게 결정합니까?

ext4 및 btrfs 파일 시스템의 블록 크기를 어떻게 결정합니까?

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 …가장 쉽고 보편적입니다.

관련 정보