![ext4如何决定文件的块数?](https://linux22.com/image/7445/ext4%E5%A6%82%E4%BD%95%E5%86%B3%E5%AE%9A%E6%96%87%E4%BB%B6%E7%9A%84%E5%9D%97%E6%95%B0%EF%BC%9F.png)
我正在使用stat
基本上显示索引节点信息的命令。虽然我显示的是一个小文件的信息(146 个字符),但它显示了 8 个块。我想知道这是为什么?由于页面的大小应该是 4KB,我希望这个数字是 1。顺便说一句,我使用的文件系统是 ext4。为您提供更多详细信息:
更多 tmp.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 磁盘空间,假设该空间很快就会被写入。当文件关闭时,未使用的推测分配当然会被释放,但如果推测正确(通常是小文件的完整写入的情况),则文件数据将在单个多块范围中写出。