使用截断来创建大文件 - df 没有显示可用空间减少

使用截断来创建大文件 - df 没有显示可用空间减少

我正在尝试测试我们设置的磁盘空间监视器。为此,我运行了该监视器,truncate -s 125G /publish/data/bigFile它应该占用足够的空间来触发警报。

但是,df -h 显示该分区:( /dev/vdb1 196G 66G 121G 36% /publish/data 也就是说,运行 truncate 命令后可用空间没有改变。)

ls -lh文件上显示: -rw-r--r-- 1 username users 126G Aug 7 11:27 /publish/data/bigFile

挂载/publish/data 的输出: /dev/vdb1 on /publish/data type ext4 (rw,relatime,data=ordered)

编辑:我也刚刚意识到,这些数字没有意义:196-66=130gb,那么为什么 df 首先说有 121gb 可用呢?

答案1

看不到任何支持它的文档,但truncate必须创建一个稀疏文件:

测试 truncate -s 10G testfile

du testfile # 显示占据尺寸

   0  testfile

du -h --apparent-size # 演出明显的尺寸

   10G   testfile

来自 du man 页面:

   --apparent-size
          print   apparent  sizes,  rather  than  disk  usage;
          although the apparent size is  usually  smaller,  it
          may  be  larger  due  to  holes in ('sparse') files,
          internal fragmentation,  indirect  blocks,  and  the
          like

谬误

尝试使用fallocate,它非常快并且不会创建稀疏文件。

fallocate -l 125G filename

答案2

我怀疑您看到的是稀疏文件分配。您可以创建一个大文件,但直到您将数据写入其中时,驱动器上的实际空间才被占用。

可能有方法可以分配并实际使用空间,但我还没有遇到过。如果您想确保空间已物理分配,您可以编写一个简单的程序,将数据附加到文件,直到文件大小合适。

相关内容