我遇到了一个问题,即 df 结果不可靠。我在 sles 11 sp3 上使用 xfs 文件系统。
基本上,在我清除磁盘缓存之前和之后,可用大小有很大差异(几 GB)。有人知道为什么磁盘缓存使用额外的存储。
例如:
VideoEdge:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
...
/dev/sdb2 870942208 824794856 46147352 95% /mediadb
/dev/sdc1 975746564 924536548 51210016 95% /mediadb1
/dev/sdd1 975746564 153177500 822569064 16% /mediadb2
VideoEdge:/ # echo 3 > /proc/sys/vm/drop_caches
VideoEdge:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb2 870942208 822225756 48716452 95% /mediadb
/dev/sdc1 975746564 923374888 52371676 95% /mediadb1
/dev/sdd1 975746564 148323524 827423040 16% /mediadb2
VideoEdge:/ # df
从上面可以看出,清理磁盘空间之后,有更多的可用空间。
我们使用 df 来估计可以使用多少空间,并在 df 显示存储已满 95% 时尝试删除旧数据。由于磁盘缓存占用了不可预测的存储空间,因此会造成问题。
有人知道为什么磁盘缓存会暂时消耗存储空间吗?有没有办法计算磁盘缓存占用了多少空间或磁盘缓存可能占用的最大空间?
我们不想清除可能时不时影响性能的磁盘缓存。
VideoEdge:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 8259484 5592116 2247724 72% /
udev 2021220 228 2020992 1% /dev
tmpfs 2021220 144 2021076 1% /dev/shm
/dev/sda1 8259484 5592116 2247724 72% /
/dev/sda3 463282160 75389072 387893088 17% /var
/dev/sdb1 104804356 32928 104771428 1% /var/opt/americandynamics/venvr/clipexport
/dev/sdb2 870942208 821370196 49572012 95% /mediadb
/dev/sdc1 975746564 923423496 52323068 95% /mediadb1
/dev/sdd1 975746564 148299180 827447384 16% /mediadb2
/dev/sdb2 on /mediadb type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
/dev/sdc1 on /mediadb1 type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
/dev/sdd1 on /mediadb2 type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
答案1
请参见:
为什么我的 XFS 文件系统突然占用更多空间并且充满稀疏文件?
这是 XFS 动态预分配功能的结果。这些基本上是文件缓冲区,它们合并写入以防止文件碎片。有几种解决方法。
du --apparent-size
会有帮助。- XFS 文件系统的挂载选项详见链接问题。
在这两种情况下,您的文件系统都处于危险的满载水平(95% 以上)。考虑到您的利用率应该远低于 80%,缓冲区空间的少量无关紧要。您也可以使用结果,df
因为这就是在任何给定时间实际使用的内容。