linux centos 系统提示No space left on device错误 centos清理硬盘空间
一、问题描述
线上的一个centos系统,硬盘满了,通过以下方式清理后,启动程序还是会提示No space left on device错误,具体请看解决方法,这里讲下如何清理硬盘:
1、查看系统磁盘是否已满
df -h
看哪个目录use到100%,我这里是删除过了的结果。
2、查看具体哪个目录占用了大量空间
du -h --max-depth=1 | sort -nr //统计当前目录大小,并按大小排序,按数字降序排序
可以看到root目录下有3.9G占用
查看GB以上文件夹目录并且排序,可以使用以下命令:
du -h --max-depth=1 |grep 'G' |sort
3、进入root目录中继续排查哪个目录占用占用最大
cd /root
ls -lh
重复以上步骤,将大文件全找出来,如果想看目录下哪个文件占用最多,直接使用如下命令即可:
du -a /root/ -h | sort -n -r | head -n 100
如果想看某个目录下文件统计,可通过如下命令
for i in /*; do echo $i; find $i | wc -l; done
(如果确定是某个目录下面,则/转换为该目录绝对路径,如/xxx/xxx,则使用for i in /xxx/xxx*; do echo $i; find $i | wc -l; done)
然后通过以下命令删除
rm -rf xxx
二、解决方法
上面操作后,通过
df -h
查询空间确实降下来了,可是还是提示No space left on device,此时再通过
df -i
查看了下inodes,发现根目录下的inodes值使用率为100%了
发现/目录下显示还是100%,通过以下命令查看/目录下文件占用
du -sh /*
大概了解了一下du和df的区别:
du: disk usage 磁盘空间,是文件夹里所有文件大小叠加在一起计算的。
df: disk free 磁盘空闲空间,是通过统计磁盘中空闲计算的。
进入到/root目录下执行
du -sh *
注意,如果删除后,再次运行命令 df -h ,发现目录空间还是占满了的话,要把使用这个xxx文件的所属进程干掉,空间才能恢复正常!!
通过以下命令查看已删除空间却没有释放的进程
lsof -n |grep deleted
提示找不到命令时,需要安装下
yum install lsof -y
找到进程编号,然后
kill -9 xxx