DF-H

DF-H

我已经尝试解决这个问题好几天了,但都没有成功。在这个论坛和其他论坛上,我看到了很多关于这个问题的讨论,但没有一个解决方案对我有用。

我目前的情况是,我有一些 GB“丢失”,我无法释放它们,也无法在任何地方找到它们。我猜这是内存泄漏之类的问题,只有在重新启动时才能修复,但我只是想问问是否有人有更好的主意,因为该服务器上目前有几个客户。

以下是我在其他线程中看到的一些命令和我的特定输出:

DF-H

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G   16G  1.8G  90% /
tmpfs                 384M     0  384M   0% /lib/init/rw
udev                   10M  1.2M  8.9M  12% /dev
tmpfs                 384M     0  384M   0% /dev/shm

du-Pshx/*2>/dev/null

4.8M    /bin
27M /boot
0   /cdrom
1.2M    /dev
8.8M    /emul
504M    /etc
4.0K    /grubconf
88K /home
60K /images
0   /initrd.img
147M    /lib
0   /lib32
0   /lib64
16K /lost+found
12K /media
4.0K    /mnt
4.4M    /opt
777M    /proc
57M /root
4.7M    /sbin
4.0K    /selinux
4.0K    /srv
0   /sys
4.0K    /tmp
332M    /usr
471M    /var
0   /vmlinuz

lsof +L1

(no output)

lsof | grep -i 删除

(no output)

查找 / -size +50000 -exec ls -lah {} +;

-r-------- 1 root    root 777M 2015-07-21 06:19 /proc/kcore
-rw------- 1 root    root  64M 2015-07-09 03:31 /sys/devices/pci0000:00/0000:00:06.0/0000:01:04.0/resource0
-rw-r----- 1 root    adm   49M 2015-07-21 06:19 /var/log/auth.log
-rw-r----- 1 root    adm  174M 2015-07-19 06:25 /var/log/auth.log.1
-rw-rw---- 1 control mail 100M 2015-07-21 06:00 /var/mail/control

例如,如果你从 du 进行计算,你会得到几 GB,但远不及 16GB。

/ 是 ext3。

操作系统是Debian 6.0

我这里遗漏了什么吗?

答案1

99.9% 的情况下发生这种情况的原因是一个或多个文件已被删除,但仍有一个进程在写入旧文件句柄。

当程序想要对文件执行 I/O 操作时,它会询问内核“嘿内核,我想访问文件 /bla.txt,并且我希望能够对其进行读写”。然后内核返回一个“文件句柄”,它是对可用于执行读写操作的文件的引用。

只要程序保持文件句柄打开,它就可以继续写入,即使该文件随后被删除。

这通常在您对文件执行某些操作时变得明显,大多数情况下会像旋转日志文件一样。然后发生的是报告df磁盘上的实际使用情况,其中可能包括仍在写入的打开文件所占用的空间。du另一方面,它会遍历所有已知文件名并将其空间考虑在内。这个数字可能会更少,因为已删除的文件不再具有文件名,因此du不会将其考虑在内。

要查看这是否是您的问题,请运行以下命令:lsof +L1,如果您看到任何文件名显示“(deleted)”,则需要停止输出的“COMMAND”列中指定的进程,然后找出它为何保持已删除文件打开。一旦您弄清楚了,您就可以采取措施阻止这种情况发生。

答案2

我只能想到两个原因:

  1. 一个 rootkit 感染;
  2. 文件系统损坏。

用来dd将您的分区转储到可移动/网络磁盘并在其他地方安装/检查它。转储时您可能会遇到一些不一致的情况,但很有可能可以轻松修复它们。

相关内容