virtfs 磁盘使用率高

virtfs 磁盘使用率高

我想弄清楚(1) 我的服务器上实际使用了多少空间(2) 如果我使用更多会发生什么。我最初发布ServerFault 上这个问题的一个版本,但他们把我踢到了这里。

背景:我正在运行一个使用 virtfs 的服务器(感谢 cPanel),并且发现与每个用户实际上传/创建的数据量相比,磁盘使用率非常高。我收到警告电子邮件,告诉我我正在使用几乎所有可用空间。

以下是 的输出df -h /

Filesystem      Size  Used Avail Use% Mounted on
/dev/simfs       30G   25G  5.9G  81% /

我跑去du -h / | grep "[0-9][MG]" | sort -n -r生成使用最多空间的路径列表。这是输出:

68G    /
44G    /home
43G    /home/virtfs
11G    /home/virtfs/john
11G    /home/virtfs/paul
11G    /home/virtfs/george
11G    /home/virtfs/ringo
11G    /backup
5.3G   /usr
5.3G   /home/virtfs/john/usr
5.3G   /home/virtfs/paul/usr
5.3G   /home/virtfs/george/usr
5.3G   /home/virtfs/ringo/usr
5.2G   /var
5.2G   /home/virtfs/john/var
5.2G   /home/virtfs/paul/var
5.2G   /home/virtfs/george/var
5.2G   /home/virtfs/ringo/var
4.6G   /var/lib
4.6G   /home/virtfs/john/var/lib
4.6G   /home/virtfs/paul/var/lib
4.6G   /home/virtfs/george/var/lib
4.6G   /home/virtfs/ringo/var/lib
4.3G   /home/virtfs/paul/usr/local
4.2G   /usr/local
4.2G   /home/virtfs/john/usr/local
4.2G   /home/virtfs/george/usr/local
4.2G   /home/virtfs/ringo/usr/local
3.8G   /usr/local/cpanel
3.8G   /home/virtfs/john/usr/local/cpanel
3.8G   /home/virtfs/paul/usr/local/cpanel
3.8G   /home/virtfs/george/usr/local/cpanel
3.8G   /home/virtfs/ringo/usr/local/cpanel
3.0G   /var/lib/mysql.orig
3.0G   /home/virtfs/john/var/lib/mysql.orig
3.0G   /home/virtfs/paul/var/lib/mysql.orig
3.0G   /home/virtfs/george/var/lib/mysql.orig
3.0G   /home/virtfs/ringo/var/lib/mysql.orig
2.6G   /backup/weekly
2.2G   /backup/cpbackup
2.1G   /var/lib/mysql.orig/ringo_demo
2.1G   /home/virtfs/john/var/lib/mysql.orig/ringo_demo
2.1G   /home/virtfs/paul/var/lib/mysql.orig/ringo_demo
2.1G   /home/virtfs/george/var/lib/mysql.orig/ringo_demo
2.1G   /home/virtfs/ringo/var/lib/mysql.orig/ringo_demo
1.9G   /cpanel_backups
1.7G   /backup/monthly
1.6G   /var/lib/mysql
1.6G   /home/virtfs/john/var/lib/mysql
1.6G   /home/virtfs/paul/var/lib/mysql
1.6G   /home/virtfs/george/var/lib/mysql
1.6G   /home/virtfs/ringo/var/lib/mysql
1.2G   /usr/local/cpanel/bin
1.2G   /home/virtfs/john/usr/local/cpanel/bin
1.2G   /home/virtfs/paul/usr/local/cpanel/bin
1.2G   /home/virtfs/george/usr/local/cpanel/bin
1.2G   /home/virtfs/ringo/usr/local/cpanel/bin
1.1G   /root

(不,我的用户实际上并不都是以披头士乐队命名的...)看起来几乎所有磁盘使用都是由于 virtfs 冗余造成的,例如对/usr/local/cpanel/....

我的用户实际上没有使用所报告的那么多空间。例如,它们中没有一个单独使用上面报告的完整 1.6 GB 空间/var/lib/mysql。当我在 Web 界面中查看 cPanel 自己的报告时,我发现这些帐户的磁盘使用量范围从基本为零到不超过 237 MB:与报告的 11 GB 相差甚远。

所以,我的问题是:

  1. 如何确定实际使用了多少空间?
  2. 如果我再向服务器添加 10 GB 数据,会发生什么情况?它会因为df认为我使用了 30 GB 中的 35 GB 而出现某种崩溃吗?或者一切都会正常工作,因为我仍然使用不到 30 GB 的空间?

请注意:这个问题是不是关于 cPanel;这是关于 virtfs 以及我可以使用哪些工具来确定可用磁盘空间的内容。

答案1

VirtFS 消耗的空间可能是由于孤立的 VirtFS 挂载造成的。

您可以使用以下命令卸载任何绑定安装的目录:

for i in `cat /proc/mounts | awk '/virtfs/ {print $2}'`; do umount $i;done

或者,由于您使用的是 cPanel,因此您可以使用他们的脚本来执行此操作:

/scripts/clear_orphaned_virtfs_mounts --clearall

在此之后尝试一下df -h

可能值得您花时间阅读有关 cPanel 的 VirtFS 和 Jailed Shell 实现的更多信息这里

至于你的第二个问题,如果你添加更多空间,它不应该自动安装到 VirtFS,所以你应该没问题。

答案2

我已经找到了答案。事实上,我几乎使用了服务器的所有空间,部分原因是磁盘上的备份存储过多。这很容易解决。

对于遇到同样问题的人:以下是如何知道您正在使用多少磁盘空间的方法。

首先,df将为您提供有关文件系统使用的空间的准确信息;我的 cPanel 版本(11.50)实际上并没有打破这一点。这意味着我收到的有关磁盘使用情况的电子邮件是准确的。截至今天,df给我:

Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/simfs      31457280 27281568   4175712  87% /
none             3145728        4   3145724   1% /dev

我调查这些数字的来源的方法是运行两个命令:

# get the per-directory usage for /
du --max-depth=1 / 2>> /dev/null

# get the per-directory usage for /home
du --max-depth=1 /home 2>> /dev/null

这些命令会产生大量输出,其中只有几行是相关的:

$ du --max-depth=1 / 2>> /dev/null

    ...
    44294300 /home
    ...
    13223520 /backup
    70300192 /

$ du --max-depth=1 /home 2>> /dev/null

    227176   /home/george
    ...
    43093568 /home/virtfs
    ...
    44294844 /home

(这些命令之间的 /home 大小略有不同,只是因为它们执行时文件系统发生了更改。)

这告诉我:

  1. 我的总使用量实际上是 27 GB,
  2. /home/virtfsdu由于过度计算系统文件等,使报告比实际存在的多 42 GB,
  3. 我有一个很多我的磁盘上有一些我并不真正需要的备份。是时候重新安置它们了。

我希望有人觉得这有帮助。如果您有任何疑问,请在评论中提问。

相关内容