我想弄清楚(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 相差甚远。
所以,我的问题是:
- 如何确定实际使用了多少空间?
- 如果我再向服务器添加 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 大小略有不同,只是因为它们执行时文件系统发生了更改。)
这告诉我:
- 我的总使用量实际上是 27 GB,
/home/virtfs
du
由于过度计算系统文件等,使报告比实际存在的多 42 GB,- 我有一个很多我的磁盘上有一些我并不真正需要的备份。是时候重新安置它们了。
我希望有人觉得这有帮助。如果您有任何疑问,请在评论中提问。