磁盘被占满系统出现 no space left on 报错(block被占满/inode被占满)
系统出现 no space left on 报错 但是使用df -h 发现磁盘并没有满
企业中在什么情况下会发生
解答:
ext4文件系统在格式化的时候会创建inode 和 block
磁盘空间满是由inode和block两个标准来决定的
题意说用df -h 查看没有满 df -h 是查看block块的说明block块没有满所以应使用df -i 查看inode是否满了
1 block被占满
定位问题
1、查看实际文件占用空间的大小
# mount | awk '/sd|hd/{print $3}' | xargs -i du -sh {} 2>/dev/null | sed -r 's#([^ \t]*)[ \t]*(.*)#echo -e "`mount | grep "\\b \2 \\b" | cut -d " " -f1`\\t\1\\t\2" #g' | bash
/dev/sda2 1.6G /
/dev/sda1 34M /boot
2、使用df查看block占用量
# df -h | awk -F "[ \t]*" '/sd|hd/{print $1"\t"$3"\t"$6}'
/dev/sda2 1.6G /
/dev/sda1 36M /boot
3、比较(1)和(2)的结果
1> (1)和(2)的结果不相等
# lsof | grep deleted 查看是否有删除了的文件还在被程序调用
确认该数据不是误删除的文件
重启调用该文件的程序
2> (1)和(2)的结果相等
# find / -type f 2>/dev/null | xargs du 2>/dev/null | sort -n | taildf 查看占用系统空间最多的文件
确认该文件已经无用
使用 >/路径/路径 清空该文件
2 inode被占满
定位问题
查看小文件最多的目录
# find / -type f -size -1k | xargs -i dirname {} | sort | uniq -c | sort -n | tail
在确定该目录下的小文件没用之后
# find /路径/路径 -size -1k -type f | xargs rm -f
删除过多的小文件
阅读(1126) | 评论(0) | 转发(0) |