我有一个vps slice运行CentOS 5.5我应该有15次磁盘空间,但是根据DF,它似乎将我的磁盘空间使用加倍。

当我跑步时 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

这与我已将其上传到机器相一致,总计约5Gigs。

但是当我跑步时 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个演出的东西。

谢谢。

有帮助吗?

解决方案

这种效果的最常见原因是已删除的打开文件。

如果内核在删除时不使用删除文件的磁盘块。否则将推迟到文件关闭或重新启动系统。

一个常见的unix-world技巧,以确保没有临时文件留在以下内容:

  • 一个过程创建并打开一个临时文件

  • 在仍持有打开的文件描述符时,该进程会取消链接(即删除)文件

  • 该过程使用文件描述符正常读取并写入文件

  • 该过程完成后关闭文件描述符,并且内核释放了空间

  • 如果该过程(或系统)意外终止,则临时文件已被删除,无需清理。

  • 作为奖励,删除文件会减少创建临时文件时命名碰撞的机会,并且它还在运行过程中提供了一层晦涩的层面 - 对于除根用户以外的任何人而言。

这种行为确保过程不必处理突然从脚下拉出的文件,而且过程不必互相咨询即可删除文件。但是,对于来自Windows系统的人来说,这是出乎意料的行为,因为通常不允许您删除正在使用的文件。

lsof 命令将作为root运行时,将显示所有打开的文件,它将特别指示已删除的已删除文件:

# 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图像。

其他提示

我遇到的另一种情况,尽管似乎并不是您的问题,即如果您在现有文件的“顶部”上安装一个分区。

如果这样做,则有效地隐藏了已安装分区的固定分区(安装点)中目录中存在的现有文件。

要修复:停止在固定分区上使用打开文件的任何进程,卸载分区,查找并移动/删除现在显示在安装点目录中的所有文件。

我在FreeBSD服务器上遇到了同样的麻烦。重新启动帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top