当前位置 博文首页 > lyndon:文件大小 和 文件占用空间

    lyndon:文件大小 和 文件占用空间

    作者:[db:作者] 时间:2021-09-16 13:29

    创建一个文件 b.txt

    $ echo -n "b" > b.txt
    
    1. 查看文件大小
    $ ls -lh b.txt 
    -rw-rw-r-- 1 liyongjun liyongjun 1 10月  2 16:53 b.txt
    

    文件中仅存放一个字符 ‘b’ ,所以文件大小为 1

    1. 查看文件占用空间
    $ du -ah
    4.0K	./b.txt
    
    1. 文件大小 和 文件占用空间
      文件大小只有 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:每块的字节数

    文件存储在磁盘上,磁盘的最小存储单位叫做“扇区”(Sector)。每个扇区存储 512 字节。
    操作系统读取硬盘时,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是 4KB,即连续 8 个 Sector 组成一个 block。

    在这里插入图片描述
    一个“块”只能被一个文件占用,即使一个文件只占用了“块”的一个字节,其他文件也不能再使用这个“块”存储数据。所以文件的占用空间为“块”的整数倍。

    参考:
    理解inode
    文件属性中“大小”和“占用空间”的区别

    cs
    下一篇:没有了