Linux-文件之inode

本文介绍了Linux中的文件空洞,它是指文件结尾到新写入部分之间的空间,不占用磁盘块。inode是存储文件元数据的结构,包括创建者、日期、大小等。文件的硬链接和软链接分别指向相同的inode和不同的inode。df与du命令用于检查磁盘空间,两者在某些场景下可能存在差异。文章提供了磁盘空间问题的排查思路,并提到了被删除但仍在使用的文件可能导致的空间占用问题。
摘要由CSDN通过智能技术生成

一、什么是空洞文件?


+=======+-------+====+

start        end        a         b   


  1. 定义:从文件结尾到新写入的文件之间的这段空间被称之为:文件空洞,如上图中从end到a之间的一段就是文件空洞。

  2. 空洞文件必须满足2个条件:

    (1)写文件时超出文件结尾

    (2)超出之后继续写文件

  3. lseek()系统调用可以改变文件的偏移量,但如果程序调用使得文件偏移量跨越了文件结尾,然后再执行I/O操作,将会发生什么情况? read()调用将会返回0,表示文件结尾。令人惊讶的是,write()函数可以在文件结尾后的任意位置写入数据

  4. 文件空洞不会占用任何磁盘块,当在文件空洞中写入了数据时,文件系统才会为之分配磁盘块。空洞的存在意味着一个文件名义上的大小可能要比其占用的磁盘存储总量要大(有时大出许多)。向文件空洞中写入字节,内核需要为其分配存储单元,即使文件大小不变,系统的可用磁盘空间也将减少。

  5. 常用命令如下,可见du命令可以查看一个文件准确的占用磁盘空间的大小,ls -l 命令不准确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值