linux – du -skh * in /返回与centos 5.5上的df大不相同的大小

我有一个vps切片运行centos 5.5我应该有15演出的磁盘空间,但根据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演出的东西.

谢谢.

最佳答案
导致此效果的最常见原因是已删除的打开文件.

如果删除的文件在删除时未被使用,则内核将仅释放已删除文件的磁盘块.否则,这将延迟到文件关闭或系统重新启动.

确保不留下临时文件的常见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映像.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...