没啥意思的站点

找回丢失的磁盘空间

经常接触linux,尤其是多人共用的服务器上的linux的朋友,也许会经常遇到这样的问题:
收到一个磁盘告警,说某某分区已经满了,然后登录服务器 df 一看,发现磁盘确实快满了,然后你就想找到具体是哪个目录满了,于是 du -s * 一看,却发现所有子目录的大小总和却和df显示的总已使用磁盘空间对不上,有时候甚至还相差很多,于是就纳闷了:我的磁盘空间去哪了呢?

这里就列一下我所知的3种情况:

  1. 隐藏文件
  2. linux系统把文件名以.(点号)开头的文件视为隐藏文件,而类似bash里*这样的操作符是不会匹配隐藏文件的,所以如果根目录下有个较大的隐藏文件的话,是不会被du -sh * 统计到的,解决办法就是: du -sh .[^.]*

  3. 非空目录被mount
  4. 一般挂载其他分区的时候都是建议mount到一个空目录的,那么如果mount到一个非空的目录,情况会怎么样呢?比如/mnt目录本来里面是有文件的,然后执行了sudo mount /dev/sda6 /mnt。其实这个mount命令完全能正常执行,被mount的分区也能正常访问,只是原先在/mnt里的文件,现在已经访问不到了,包括du也看不到大小了,但是磁盘空间却还是被占着,因为如果你 umount /mnt 以后,原来的文件都还会回来的。

  5. 空洞文件
  6. 一个文件的大小和所占磁盘空间也不一定完全一致,比如某个程序一直打开着一个叫log的文件在写,而中间有人用 > log 命令清除了log的内容,就会产生这样的文件。这里有这种文件的介绍。

上面3种是我所知的,应该还有其他情况,欢迎留言补充。

18 评论

  1. 还有一种比较邪恶的东西….不知骨头是否知道linux下的rootkit….那个东西可以劫持系统调用…du -h是用某个系统调用(类似ls获得文件明,但df貌似是获得inode所以不同),劫持了系统调用后对某个文件隐藏了所以du看不到…

  2. 等了三个月,终于又见新文章了~

  3. 骨头兄终于又更新文章啦,好久不见。

  4. 这点空间已经不在乎了

  5. 很好,不错,又发现一个技术博客。ubuntu.org.cn过来的。

  6. 再来浏览一次,上次没看懂。

  7. 我还没遇到过这种情况呢。

  8. 好久没来了 过来看看博主 石家庄SEO的朋友到此一游啊

  9. 这个真心不错,赞一个

  10. 非空目录被mount的情况比较多;
    其他情况的话,inode被用尽也算是一种情况吧。

  11. 这么好的博客 为什么停更了。。

1 引用通告

  1. skin care treatments

发表评论