系统出现 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
删除过多的小文件


感谢老男孩教育 感谢强哥

www.oldboyedu.com

www.etiantian.org

http://oldboy.blog.51cto.com/

http://8078255.blog.51cto.com/8068255/1746570