/ 超出区块,无法找出原因

/ 超出区块,无法找出原因

可能的重复:
如何诊断和修复丢失的驱动器空间?

root@database:/# treesize -x 2>/dev/null
1.1 GB .
757.1 MB ./usr
232.0 MB ./lib
97.2 MB ./var
29.0 MB ./boot
6.3 MB ./sbin
5.5 MB ./etc
5.4 MB ./bin
80.0 KB ./home
68.0 KB ./root
32.0 KB ./tmp
16.0 KB ./lost+found
12.0 KB ./mnt
12.0 KB ./media
4.0 KB ./srv
4.0 KB ./selinux
4.0 KB ./opt
0.0 KB ./sys
0.0 KB ./proc
0.0 KB ./dev
root@database:/# df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9,2G  9,0G     0 100% /
root@database:~$ df -i /
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             610800   57516  553284   10% /
root@database:/# du -sh /* 2>/dev/null
5,4M        /bin
29M /boot
0   /cdrom
144K        /dev
5,5M        /etc
84K /home
0   /initrd.img
0   /initrd.img.old
232M        /lib
0   /lib64
16K /lost+found
12K /media
12K /mnt
69G /opt
0   /proc
104K        /root
6,4M        /sbin
4,0K        /selinux
4,0K        /srv
0   /sys
32K /tmp
758M        /usr
98M /var
0   /vmlinuz
0   /vmlinuz.old

树大小的内容

#/bin/sh
du -k --max-depth=1 "$@" | sort -nr | awk '
     BEGIN {
        split("KB,MB,GB,TB", Units, ",");
     }
     {
        u = 1;
        while ($1 >= 1024) {
           $1 = $1 / 1024;
           u += 1
        }
        $1 = sprintf("%.1f %s", $1, Units[u]);
        print $0;
     }
    '

从 Ubuntu 9 升级到 10 LTS 后几天后突然发生这种情况。

当我找不到占用空间的单个文件时,为什么 / 空间不足?我已经尝试过 gparted live 的 fsck 。我还启动到单用户模式并保存了 lsof 输出的副本。但由于机器已重新启动多次,我怀疑这是由于打开的文件造成的。

我在 /opt 上有 mysqld,它在 /var/log 中打开了一些 error.logs,我尝试关闭所有可以关闭的东西,vmware 工具、cron、syslog、mysql、atd、nrpe、snmpd 并再次检查树大小,但没有区别输出。

编辑:我想我的接受率将不得不进一步下降,因为看起来这是另一个可以回答的问题。

我的解决方案是安装一个新的VM,在新的VM中安装旧的VMDK,然后从旧的VMDK安装/opt。有趣的是,当我在 /mnt/root 上安装旧的 / 时,我发现 FS 仍然已满。

# df -h /mnt/root
Filsystem            Storlek Anvnt Tillg Anv% Monterat på
/dev/sdb1             9,2G  9,2G     0 100% /mnt/root

答案1

重新启动后,大量利用率是否持续存在?是否有可能有一个打开的文件描述符写入了一个不再存在的文件?我见过这导致文件系统认为它们是 100%,但实际上并非如此。在这种情况下,重新启动即可修复该问题。

另外,我没有看到您的treesize脚本默认会考虑隐藏 (.) 文件。

尝试像这样的命令

find . -x -type f -exec du -k {} \; | awk -F'  ' '{sum+=$1} {print $1"\t"$2} END{print "--------\n"sum"\tTotal K-Bytes"}'

这将为您的脚本提供类似的输出,但会在底部包含一个总行,您可以使用它来与 df 关于文件系统的内容进行比较。

相关内容