ext4는 파일의 블록 수를 어떻게 결정합니까?

ext4는 파일의 블록 수를 어떻게 결정합니까?

stat기본적으로 inode 정보를 표시하는 명령을 사용하고 있습니다 . 작은 파일(146자)에 대한 정보를 표시하고 있지만 8개의 청크가 표시됩니다. 이유를 알고 싶습니다. 페이지 크기는 4KB여야 하므로 이 숫자는 1로 하고 싶습니다. 그런데 제가 사용하는 파일 시스템은 ext4입니다. 더 자세한 정보를 제공하려면:

Moretmp.sh

#DATE=$(date +"%Y%m%d_%H%M%S")
#cp /var/log/filter.log /var/log/logHistory/filter_{$DATE}.log
dd=$(date --date='-1 day' +"%Y%m%d")
rm filter_$dd*

통계tmp.sh

  File: ‘tmp.sh’
  Size: 146         Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 1835522     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/timestring)   Gid: ( 1000/timestring)
Access: 2016-05-05 17:34:08.251864800 -0700
Modify: 2015-01-22 20:40:18.971521274 -0800
Change: 2015-01-22 20:40:18.975521274 -0800
 Birth: -

답변1

보고된 "청크"는 stat()512바이트 단위입니다. ext4가 사용하는 일반적인 블록 크기는 4kb, 즉 8개의 "청크"입니다. 즉, ext4의 파일이 사용하는 공간은 8 "블록"의 정수배여야 하므로 4096바이트 이하의 파일이 사용하는 최소 크기는 8,512바이트 블록입니다.

답변2

ext4 파일 시스템추측하다파일이 생성되었을 때의 파일 크기입니다. 아래에 이를 인용해 보세요협회:

파일이 처음 생성되면 블록 할당자는 이 공간이 빠르게 기록될 것이라는 가정 하에 파일에 대해 8KiB의 디스크 공간을 추론적으로 할당합니다. 사용되지 않은 추측적 할당은 물론 파일이 닫힐 때 해제되지만 추측이 올바른 경우(일반적으로 작은 파일의 전체 쓰기의 경우) 파일 데이터는 단일 다중 블록 범위에 기록됩니다.

관련 정보