找回丢失的磁盘空间
经常接触linux,尤其是多人共用的服务器上的linux的朋友,也许会经常遇到这样的问题:
收到一个磁盘告警,说某某分区已经满了,然后登录服务器 df 一看,发现磁盘确实快满了,然后你就想找到具体是哪个目录满了,于是 du -s * 一看,却发现所有子目录的大小总和却和df显示的总已使用磁盘空间对不上,有时候甚至还相差很多,于是就纳闷了:我的磁盘空间去哪了呢?
隐藏文件
linux系统把文件名以.(点号)开头的文件视为隐藏文件,而类似bash里*这样的操作符是不会匹配隐藏文件的,所以如果根目录下有个较大的隐藏文件的话,是不会被du -sh * 统计到的,解决办法就是: du -sh .[^.]* 。
非空目录被mount
一般挂载其他分区的时候都是建议mount到一个空目录的,那么如果mount到一个非空的目录,情况会怎么样呢?比如/mnt目录本来里面是有文件的,然后执行了sudo mount /dev/sda6 /mnt。其实这个mount命令完全能正常执行,被mount的分区也能正常访问,只是原先在/mnt里的文件,现在已经访问不到了,包括du也看不到大小了,但是磁盘空间却还是被占着,因为如果你 umount /mnt 以后,原来的文件都还会回来的。
空洞文件
一个文件的大小和所占磁盘空间也不一定完全一致,比如某个程序一直打开着一个叫log的文件在写,而中间有人用 > log 命令清除了log的内容,就会产生这样的文件。这里有这种文件的介绍。
Case 1:
[问题]
nfs它mount到/worktmp下、也有本地磁盘mount到/worktmp下
[root@phagibdb1 ~]# more /etc/fstab
……….
LABEL=/worktmp /worktmp ext3 defaults 1 2
10.177.1.93:/oracle/gib/temp /worktmp nfs defaults 0 0
df -h输出:
/dev/cciss/c0d0p6 24G 11G 12G 49% /worktmp
10.189.128.93:/oracle/gib/temp 24G 11G 12G 49% /worktmp
[原因]
10.177.1.93:/oracle/gib/temp是数据库服务器产生导入和导出的工作目录,映射到本地以便AP服务器读写,所以不用mount本地磁盘目录,而用nfs mount到本地网络文件目录
所以fstab文件中只需要保留下面一行即可
本地挂载点是OS安装时,初始分区时预留的,这个分区可以不用了,空间可分配给其他应用
[解决]
在/etc/fstab文件里把
LABEL=/worktmp /worktmp ext3 defaults 1 2
移除掉就可以了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23490498/viewspace-708437/,如需转载,请注明出处,否则将追究法律责任。