系统盘空间莫名消失怎么解
- 2019 年 10 月 8 日
- 笔记
问题原因 进程文件句柄数占用 磁盘分区inode满 挂载点覆盖:原有文件系统目录已经存在大量文件。从新挂载了新磁盘后,使用 df 命令统计的是新挂载目前使用空间
磁盘空间满 (不多说,是地球人都知道怎么处理)
1.关于磁盘的inode满100%--i节点大爆发处理办法
原因:
通常是发现磁盘没有满但是无法写入文件。提示“no space left on device”
用df -i 查看,应该会发现相应的分区是100%
一般都是crontab的job有问题,造成/var/spool/clientmqueue中产生许多的零碎文件。
处理方法:
dumpe2fs -h /dev/sda2 | grep "Free inodes"(空闲inodes查看)
用rm -rf *会不能删除,并会有相应的提示,大意是参数太多。
可以用多种方法,这里提及一个我随便写的,
在/var/spool/clientmqueue/下执行命令:“lsattr ./|awk -F"/" '{print $3}'|xargs -i rm -rf {}”用lsattr列出./下面的文件名的属性,用awk取出名字,然后rm -rf。
还有一个方法比较普遍的使用:“find /var/spool/clientmqueue/ -type f -exec rm {} ;”或者在/var/spool/clientmqueue/目录下“find ./ -exec rm {} ;”。
将crontab中没有定向输出的行都在最后加上“> /dev/null 2>&1”,在删除的过程中操作。或者先停止crontab,加上重定向。
如何增加磁盘的inode number 需要格式化
inode这个词大多资料都是译为索引节点,在ext3文件系统,调整磁盘的inode number。这里只是调整inode number这个参数,如果想调整inode size或是blocksize等可以具体mkfs.ext3命令。
1。卸载文件系统
#>umount /data0
2。建立文件系统,指定inode节点数
#>mkfs.ext3 /dev/sda6 -N ”inode节点数“
3。修改fstab文件
#>vi /etc/fstab
/dev/sda6 /data0 ext3 defaults 1 2
4,挂载文件系统
#>mount -a
4。查看修改后的inode参数
#dumpe2fs -h /dev/sda2 | grep "Free inodes"(空闲inodes查看)
dumpe2fs 1.41.9 (22-Aug-2009)
Free inodes: 1825965
[注意]调整inode数会格式化磁盘,执行前应确定磁盘上没有重要数据或是先备份数据
2.进程文件句柄数占用空间处理
进程占用了文件句柄数 所以空间没有释放,如果这些文件过多,会占用很大的磁盘空间。
案例:删除nginx日志文件有23G 但是空间迟迟没有释放
du -h –max-depth=1 / | grep G 查看空间为G的文件

执行sudo losf | grep delete 查看是否存在文件句柄数


存在java进程ID 9616占用了/var/log/nginx/game-access.logbak文件句柄,所以导致rm /var/log/nginx/game-access.logbak后空间没有释放
解决办法: Kill 9616
3.挂载点覆盖 (通常很难想到,也是最容易出现的问题)
先取消磁盘挂载,再检查原挂载目录下的空间占用情况。
du -cksh * | sort -rn | head -n 10 查看排名前10的文件

du -h –max-depth=1 / 查看目录空间

du -h –max-depth=1 / | grep G 查看空间为G的文件
