参考文档:
(系统磁盘空间/dev/xvda1占满原因分析)
(/dev/xvda1 满了处理方法)
引言:
我是在使用zookeeper的时候,zookeeper服务端没有关闭的情况下,人为的使用命令删除了bin目录下的zookeeper.out日志文件,所以导致/dev/vda1磁盘空间被占满的问题。
现状描述:当我使用cd命令切换目录并且用了tab补充命令时报了“cd ../c-bash: cannot create temp file for here-document: No space left on device”这个问题。(vda1这里为123的1)
分析(直接从上面的参考 文档中copy的):
(1)产生问题的原因:
在apache/tomcat在运行状态下,清空了运行服务的日志,从而导致了/dev/xvda1 满了的问题。一般情况下,大多数服务(包括脚本)在运行时,是不能删除当前正在写入的日志文件的。
原理分析:
a. 当前access.log日志正在被apache进程占用。
b. 通过rm命令删除access.log,实际只删除了文件名(该日志文件应用记数不为0,因此空间不会被释放)。
c. 通过rm命令删除了access.log后,apache依然写日志到access.log中,当开启apache进程时,已经通过access.log定位到该文件的inode了,就是说再写日志是不通access.log,
因此即使删除了access.log,apache依然写日志到access.log所在的inode节点,所以导致硬盘空间增加。
d. 因为删除了access.log,所以我们就找不到该文件了,du也查不到,就会出现硬盘满了但看不到究竟是哪些文件占用的。
解决办法:
(1) 使用 df -h 发现 /dev/vda1满了 多数为日志太多了 需要清理日志 ,如图:
(2) 进入到/usr/local/zookeeper01/bin目录,然后通过命令du -sh * ,如图:
原本才十几k的文件,居然变成了2.3g.
然后输入命令 ./zkServer.sh stop 停止服务,再去清除zookeeper.out日志文件,
>zookeeper.out :该命令为清除日志的命令,清除以后在查看,如图,
如此,问题得到解决!