我有一个vps slice运行centos 5.5我应该有15 GB的磁盘空间,但根据df它似乎是我的磁盘空间使用量加倍。
当我在/以root身份运行du -skh *
时,我得到:
[root@yardvps1 /]# du -skh *
0 aquota.group
0 aquota.user
5.2M bin
4.0K boot
4.0K dev
4.9M etc
2.5G home
12M lib
14M lib64
4.0K media
4.0K mnt
299M opt
0 proc
692K root
23M sbin
4.0K selinux
4.0K srv
0 sys
48K tmp
2.0G usr
121M var
这与我上传到机器的内容一致,最多可增加5gig。
但我跑df
时得到:
[root@yardvps1 /]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/simfs 15728640 11659048 4069592 75% /
none 262144 4 262140 1% /dev
它显示我已经使用了近12场演出。
造成这种差异的原因是什么,我可以做些什么,我根据15场演出计划了服务器,但现在它基本上只让我有大约7演出的东西。
感谢。
答案 0 :(得分:11)
此效果的最常见原因是已删除的打开文件。
如果删除的文件在删除时未被使用,则内核将仅释放已删除文件的磁盘块。否则,这将延迟到文件关闭或系统重新启动。
确保不留下临时文件的常见Unix世界技巧如下:
进程创建并打开临时文件
在保持打开文件描述符的同时,该进程取消链接(即删除)文件
该进程通常使用文件描述符
进程完成后关闭文件描述符,内核释放空间
如果进程(或系统)意外终止,则临时文件已被删除,无需进行清理。
作为奖励,删除文件可以减少在创建临时文件时命名冲突的可能性,并且还会为正在运行的进程提供额外的隐藏层 - 对于除root用户之外的任何人,即。
此行为可确保进程不必处理突然从脚下拉出的文件,并且进程不必相互协商以删除文件。但是,对于来自Windows系统的人来说,这是一种意外的行为,因为通常不允许删除正在使用的文件。
以root身份运行时,lsof
命令将显示所有打开的文件,它将明确指出已删除的已删除文件:
# lsof 2>/dev/null | grep deleted
bootlogd 2024 root 1w REG 9,3 58 917506 /tmp/init.0W2ARi (deleted)
bootlogd 2024 root 2w REG 9,3 58 917506 /tmp/init.0W2ARi (deleted)
停止并重新启动有罪进程,或者只是重新启动服务器应解决此问题。
例如,如果已删除的文件是挂载的文件系统映像,则内核也可以保持打开状态。在这种情况下,卸载文件系统或重新启动服务器应该可以解决问题。
在您的情况下,根据“缺失”空间的大小判断,我会查找您用于设置VPS的文件的任何引用,例如安装后删除的Centos DVD映像。
答案 1 :(得分:3)
我遇到的另一个案例虽然看起来不是你的问题但是如果你在现有文件的“顶部”安装一个分区。
如果这样做,您可以有效地隐藏已安装分区中挂载分区(安装点)上的目录中存在的现有文件。
修复:停止挂载分区上打开文件的任何进程,卸载分区,查找并移动/删除现在出现在挂载点目录中的所有文件。
答案 2 :(得分:2)
我遇到了与FreeBSD服务器相同的问题。重启有帮助。