df vs du。我的磁盘真的满了吗?


13

奇怪的问题...

为什么我使用了完整/分区,但实际上并没有使用?

快速信息:

xwing ~ # df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           16G   15G   75M 100% /
/dev/root        16G   15G   75M 100% /
devtmpfs        5,9G     0  5,9G   0% /dev
tmpfs           5,9G  552K  5,9G   1% /run
rc-svcdir       1,0M   72K  952K   8% /lib64/rc/init.d
cgroup_root      10M     0   10M   0% /sys/fs/cgroup
shm             5,9G     0  5,9G   0% /dev/shm
cachedir        4,0M  4,0K  4,0M   1% /lib64/splash/cache
/dev/sda1       124M   43M   76M  36% /boot
/dev/sda5        63G   25G   36G  42% /home
/dev/sda6       483G  147G  312G  33% /mnt/data
tmpfs           8,0G     0  8,0G   0% /var/tmp/portage

也许是i节点?不...

xwing ~ # df -i
Filesystem       Inodes  IUsed    IFree IUse% Mounted on
rootfs          1048576 548459   500117   53% /
/dev/root       1048576 548459   500117   53% /
devtmpfs        1525561    517  1525044    1% /dev
tmpfs           1525918    374  1525544    1% /run
rc-svcdir       1525918     61  1525857    1% /lib64/rc/init.d
cgroup_root     1525918      5  1525913    1% /sys/fs/cgroup
shm             1525918      1  1525917    1% /dev/shm
cachedir        1525918      2  1525916    1% /lib64/splash/cache
/dev/sda1         32768    314    32454    1% /boot
/dev/sda5       4194304 145765  4048539    4% /home
/dev/sda6      32153600  11325 32142275    1% /mnt/data
tmpfs           1525918      1  1525917    1% /var/tmp/portage

但:

xwing ~ # du -sxh /
8,3G    /

也许我坐骑中有东西坏了?(但无论如何,请注意我将du与-x一起使用,后者仅从/文件系统计算文件...)

/我添加的空格,以提高可读性/

xwing ~ # mount
rootfs      on /                        type rootfs   (rw)
/dev/root   on /                        type ext4     (rw,noatime,data=ordered)
devtmpfs    on /dev                     type devtmpfs (rw,relatime,size=6102244k,nr_inodes=1525561,mode=755)
proc        on /proc                    type proc     (rw,nosuid,nodev,noexec,relatime)
tmpfs       on /run                     type tmpfs    (rw,nosuid,nodev,relatime,mode=755)
rc-svcdir   on /lib64/rc/init.d         type tmpfs    (rw,nosuid,nodev,noexec,relatime,size=1024k,mode=755)
sysfs       on /sys                     type sysfs    (rw,nosuid,nodev,noexec,relatime)
debugfs     on /sys/kernel/debug        type debugfs  (rw,nosuid,nodev,noexec,relatime)
cgroup_root on /sys/fs/cgroup           type tmpfs    (rw,nosuid,nodev,noexec,relatime,size=10240k,mode=755)
cpuset      on /sys/fs/cgroup/cpuset    type cgroup   (rw,nosuid,nodev,noexec,relatime,cpuset)
cpu         on /sys/fs/cgroup/cpu       type cgroup   (rw,nosuid,nodev,noexec,relatime,cpu)
cpuacct     on /sys/fs/cgroup/cpuacct   type cgroup   (rw,nosuid,nodev,noexec,relatime,cpuacct)
freezer     on /sys/fs/cgroup/freezer   type cgroup   (rw,nosuid,nodev,noexec,relatime,freezer)
devpts      on /dev/pts                 type devpts   (rw,nosuid,noexec,relatime,gid=5,mode=620)
shm         on /dev/shm                 type tmpfs    (rw,nosuid,nodev,noexec,relatime)
cachedir    on /lib64/splash/cache      type tmpfs    (rw,nosuid,nodev,noexec,noatime,size=4096k,mode=755)
/dev/sda1   on /boot                    type ext2     (rw,noatime)
/dev/sda5   on /home                    type ext4     (rw,noatime)
/dev/sda6   on /mnt/data                type ext4     (rw,noatime)
tmpfs       on /var/tmp/portage         type tmpfs    (rw,size=8G)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)

核心:

morsik@xwing ~ $ uname -a
Linux xwing 3.6.2-gentooxwing #8 SMP Sun Oct 21 21:36:53 CEST 2012 x86_64 Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz GenuineIntel GNU/Linux

真的...我对此没有任何想法。

我试过的

  • 检查rm -rf / usr / portage / distfiles / *后是否还有一些fd仍在打开
  • 同步
  • 重启
  • fsck

编辑和解决方案:

一如既往,我在寻求帮助后找到了解决方案(-;

在其他地方挂载(如Luke404所说)/分区,然后执行du -sh / mnt / something告诉我们有15G的数据,所以就像在df中一样。

怎么了

安装!

我后来创建了/ home分区,添加到/ etc / fstab,我将文件从/ home(在/分区上)复制到/ home(在/ home分区上),但是我不想从/ home在/分区上删除文件。

所以我仍然将旧文件放在/ home(在/分区上)上。

但是,为什么du -sxh告诉我8G?简单...

-x强制不检查不同的挂载点,因此...在挂载时未检查/ home。而且有我的失踪/家。

感谢Luke404和pidpawel在IRC上对我的帮助。

写完这个EDIT部分后,我在这里看到了答案,而Scrivener在这里得到了要点!

愚蠢的问题是愚蠢的(-;


请提供您自己的答案,并在该时间段到期后接受。另外,接受Scrivener's,因为它会引导您完成此操作。
Andrew B

实际上,将其安装在其他地方可以告诉我所有信息,但是Scrivener的答案最能说明问题,所以让未来的人们看到它的好处(-;
morsik

好吧,关键是这个问题需要一个公认的答案,无论是您贡献的(允许您对自己的问题发表答案)还是他们的答案。:) 谢谢!
安德鲁B

关于接受的答案-我知道。但我不知道我能接受我自己的( - ;感谢信息
morsik

Answers:


13

这种问题总是很有趣。

我猜?您的一个挂载点下有文件。这意味着什么?好吧,du -sh将手动处理它可以找到的所有文件。

假设我有一个目录A。如果我将一堆文件转储到A中,然后将/ dev / sdb挂载到A上,则df -h将表示我有一堆du不会的文件能够找到!

这种情况最经常发生在定期挂载和挂载的挂载点(例如USB驱动器,网络驱动器等)上。在引导过程中自动发生挂载时,很少见到它,因为发生挂载的窗口要小得多。


2
在Linux下,在mount --bind不卸载文件系统的情况下识别这些文件非常有用。即mount --bind / /mnt/tmp,然后查看您的挂载点。您将能够找到被屏蔽的文件并将其安全删除。
Andrew B

3

您是否在(当前)无法访问的地方签出了文件?就像/home 根文件系统上的东西一样,您du看不见,因为您已经在上面挂载了另一个文件系统/home

您可以通过将文件系统绑定安装到其他位置来查看这些文件:

# mkdir /foo
# mount -o bind / /foo
# cd /foo
# du...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.