小众需求,如何在服务器上造一个5T的文件,骗过df -h检查

2 阅读1分钟

想让 df -h 显示磁盘空间真的被占用,有几种方法:

方法1: 稀疏文件 (推荐用于测试)

这种文件显示为5TB,但实际不占用空间:

创建5TB的稀疏文件

truncate -s 5T large_file.img

或使用 dd

dd if=/dev/zero of=large_file.img bs=1 count=0 seek=5T

注意: 稀疏文件用 ls -lh 会显示5TB,但 du -h 会显示实际占用的空间(很小)。df -h 不会显示空间被占用。

方法2: 真实占用磁盘空间

如果您需要 df -h 真的显示5TB被占用:

使用 dd 创建真实占用空间的文件(会很慢!)

dd if=/dev/zero of=large_file.img bs=1M count=5242880 status=progress

这将需要:

  • 实际有5TB的可用空间
  • 花费大量时间(可能数小时到数天)

方法3: 使用 fallocate (快速且真实占用)

在支持的文件系统上(ext4, XFS等):

快速分配5TB空间

fallocate -l 5T large_file.img

这会立即分配空间,df -h 会显示空间被占用。