Ext文件系统中,采用"inode/block"结构来存储目录文件和一般文件。即目录文件有1个inode节点和1到多个block节点,block节点中存储“<子文件文件名,子文件inode节点序号>”记录;一般文件有1个inode节点和0到多个block节点,block节点中存储一般文件的具体内容。
由于采用block节点机制,关于文件的“大小”,就有两个概念:占用大小和使用大小。占用大小=文件对应的block节点个数*单个block节点大小。使用大小=block节点1使用大小(有些空间被空置)+block节点2使用大小(有些空间被空置)+...+block节点N使用大小(有些空间被空置)[假定文件对应N个block节点]。
因而,一般情况下,文件的使用大小<=文件的占用大小。
Linux中有些命令能够选择是统计文件的占用大小,还是使用大小。这些命令的实现有一个特点:对于一般文件来说,占用大小与使用大小这两个值一般情况下不相同;对于目录文件来说,占用大小与使用大小这两个值一般相同。
比如stat命令,ls命令,du命令实现都符合以上特点。