稀疏文件是 Linux 文件系统的一种特性,允许文件声明一个较大的逻辑大小而不实际占用对应的磁盘空间。稀疏文件的产生有多种方式:
- 使用
dd命令显式创建,例如dd if=/dev/zero of=sparse bs=1 count=0 seek=10M - 通过
lseek系统调用手动调整文件写入指针位置,跳过中间区域 - 误操作场景:当文件被外部清空(如 echo 覆盖)而持有句柄的进程继续在旧偏移位置写入时
稀疏文件的特征是 ls 显示的逻辑大小远大于 du 显示的实际磁盘占用。其中未分配数据块的区域称为 hole,读取时返回 \0。这种特性本意是节省磁盘空间,但如果误操作产生,会导致日志采集等场景出现异常。