磁盘缓存对 Linux df 结果的影响

磁盘缓存对 Linux df 结果的影响

我遇到了一个问题,即 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因为这就是在任何给定时间实际使用的内容。

相关内容