mke2fs 명령의 출력은 다음과 같습니다.
root@localhost:~# mke2fs /dev/xvdf
mke2fs 1.42.9 (4-Feb-2023)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
내가 이해하지 못하는 것은 이 줄이다.
그룹당 32768개 블록, 그룹당 32768개 세그먼트
내가 이해한 바에 따르면 하드 드라이브(보통 512B)의 섹터는 먼저 그룹으로 나뉩니다. 섹터 그룹을 블록이라고 합니다. 각 블록 그룹에는 32768개의 블록이 있습니다.
여기서 내가 이해하지 못하는 것은 단편화입니다.
이것들은 무엇입니까? 무슨 뜻이에요? 그리고 내 FS에서 조각을 변경할 수 있습니까?
답변1
Linux는 의도적으로 UNIX와 호환되도록 시도합니다. 여기서 우리가 말하는 것은 유닉스주의이며, ext2/ext3/ext4 파일 시스템은 구현할 만큼 중요한 개념을 찾지 못했습니다.
1996년에 McKusick et al. 14페이지의 개념이 설명되어 있습니다. "4.4 BSD 운영 체제의 설계 및 구현" 페이지 271.
이 섹션은 청크 크기가 도움이 될 수 있다는 점을 관찰하는 것으로 시작됩니다. 따라서 파일 시스템 쌍(블록 크기가 1KiB인 시스템과 블록 크기가 8KiB인 시스템)에서 대용량 파일을 읽을 때 블록 크기가 클수록 오버헤드가 적고 런타임이 더 빨라지는 것을 볼 수 있습니다.
그러나 대부분의 "파일 시스템에는 주로 작은 파일이 포함되어 있기 때문에 비용이 듭니다. 균일한 블록 크기는 공간 낭비입니다." 1TB의 디스크 스토리지를 구입하는 데 지출된 비용이 그때와 지금은 크게 달랐다는 점을 기억하세요.
또한 중간 파일 크기가 2KiB 미만이고 평균 크기가 22KiB인 당시의 일부 일반적인 파일 시스템을 조사합니다. 이는 작은 파일이나 큰 파일의 뒷부분을 "조각"에 넣는 것을 의미합니다. 8개의 KiB 블록에 8개의 1KiB 조각이 있을 수 있으며, 8개의 개별 파일 내용을 저장할 수 있습니다.
요약: 조각 뒤에 있는 동기는 작은 파일 끝에 0을 저장하는 8KiB 청크의 대부분을 낭비하지 않는 것입니다. 스토리지 경제성의 변화는 인센티브를 변화시킵니다.
답변2
이것Debian Stretch의 mke2fs 매뉴얼 페이지(e2fsprogs 버전 1.43.4)설명하다
-f
mke2fs는 [조각 크기 지정] 옵션을 허용 하지만 두 번째 확장 파일 시스템에서는 조각이 아직 지원되지 않기 때문에 현재 이를 무시합니다.
그리고 최신 버전에는 조각에 대한 언급이 없으므로... 아마도 실제로 존재하지 않을 것입니다. 그러나 나는 그것이 무엇인지 모른다.