我正在尝试测试我们设置的磁盘空间监视器。为此,我运行了该监视器,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
我怀疑您看到的是稀疏文件分配。您可以创建一个大文件,但直到您将数据写入其中时,驱动器上的实际空间才被占用。
可能有方法可以分配并实际使用空间,但我还没有遇到过。如果您想确保空间已物理分配,您可以编写一个简单的程序,将数据附加到文件,直到文件大小合适。