创建一个文件 b.txt
$ echo -n "b" > b.txt
- 查看文件大小
$ ls -lh b.txt
-rw-rw-r-- 1 liyongjun liyongjun 1 10月 2 16:53 b.txt
文件中仅存放一个字符 ‘b’ ,所以文件大小为 1
- 查看文件占用空间
$ du -ah
4.0K ./b.txt
- 文件大小 和 文件占用空间
文件大小只有 1B,为什么占用空间为 4KB?
使用 stat 查看文件详情
$ stat b.txt
File: ‘b.txt’
Size: 1 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 922330 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ centli) Gid: ( 1000/ centli)
Access: 2020-10-02 16:47:00.496640070 +0800
Modify: 2020-10-02 16:59:34.705082876 +0800
Change: 2020-10-02 16:59:34.705082876 +0800
Birth: -
Size:文件的字节数
Blocks:块数
(ps:个人更倾向于这里应该写成 Sectors,即占用多少扇区)
IO Block:每块的字节数
2021/10/27 修订:
Size:文件大小
Blocks:文件占用磁盘块数
,此时的磁盘块为扇区,一个扇区为 512 字节,即 0.5K
IO Block:系统的 IO 缓冲区 buffer 大小,为 4096 字节
文件存储在磁盘上,磁盘的最小存储单位叫做“扇区”(Sector)。每个扇区存储 512 字节。
操作系统读取硬盘时,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是 4KB,即连续 8 个 Sector 组成一个 block。
一个“块”只能被一个文件占用,即使一个文件只占用了“块”的一个字节,其他文件也不能再使用这个“块”存储数据。所以文件的占用空间为“块”的整数倍。