磁盘空间使用率100%的故障处理过程
环境介绍:
1.云服务器
2.操作系统 CentOS 5.6
3.内存8G
磁盘与挂载路径的介绍:
mounted on size
/ 20G
/usr/local/mysqlslavedb 200G
/usr/local/mysqlslavedb/mysql 100G
/dev/shm 2G
事故发生情景:
监控软件磁盘使用率100%告警,老大 RTX 通知要进行空间释放解除报警。
分析过程:
1.df -h
[
root@iZ25lJlnb57z local ]# df -h
filesystem Size Used
Avail Use% Mount on
/dev/xvda1 20G 2.2G
17G 12% /
tmpfs 1.9G 0
1.9G 0% /dev/shm
/dev/xvdc1 197G 197G
0 100% /usr/local/mysqlslavedb
/dev/xvdb1 99G 29G
66G 31% /usr/local/mysqlslavedb/mysql
/usr/local/mysqlslavedb
注释:此路径存放一些MySQL的逻辑备份和计划任务跑的脚本 库的输出 实时查询的主从状态文件。
/usr/local/mysqlslavedb/mysql
注释:这个是存放的MySQL数据库的相关文件
2.进入到指定目录下查看文件总共占用空间的大小
[
root@iZ25lJlnb57z mysqlslavedb ]# cd /usr/local/mysqlslavedb
[
root@iZ25lJlnb57z mysqlslavedb ]#pwd
/usr/local/mysqlslavedb
[
root@iZ25lJlnb57z mysqlslavedb ]#du -sh
32G
3.根据以上的1、2分析得出磁盘不是真正的文件占用满的。
4.产看磁盘是否掉了。
fdisk -l
显示完整的三块磁盘 (因为是内网环境,所以没有办法贴出结果)
忽然想起来,此服务器是在云服务器上面。
5.寻找云服务器管理人员,查看磁盘状态。
显示:磁盘状态全部正常
6.想到是否删除的文件没能释放磁盘空间
百度查询了以下资料.
When you open a
file, you get a pointer. Subsequent writes to this file
references this file pointer. The write call does not check to see if the
file
is there or not. It just writes to the specified number of characters
starting
at a predetermined location. Regardless of whether the file exist or not,
disk
blocks are used by the write operation.
The df command reports the number of disk blocks used while du goes through
the
file structure and and reports the number of blocks used by each directory.
As
far as du is concerned, the file used by the process does not exist, so it
does
not report blocks used by this phantom file. But df keeps track of disk
blocks
used, and it reports the blocks used by this phantom file.
7.更加确定是磁盘空间未能释放
8.利用lsof命令进行删除查询,看那些进程还在运行未能释放
查看相关路径下是存在删除的操作而且没有释放
9. ps -ef查看所有进程
图表 SEQ图表\* ARABIC1
因为有一个进程已经KILL掉,所以不能还原全部进程。(还有一个进程是,ftp 上传到备份机的进程,每次我们要将本机的MySQL逻辑备份打包上传到我们的备份机,上传后我们的脚本里要删除想对应的文件)
此时我怀疑是我们上传备份的时候,网络有问题导致了ftp进程一直存在。然后查看近几天是否有操作。
我询问运维10月30日是否调整网络?
运维回答是调整了防火墙。
总结:看图标1的进程,确实30号还有一个 rar 打包的进程存在,还有一个sh 执行脚本的进程。然后进行 kill 这两个进程
10. df -h
再次查看磁盘空间,恢复正常!
11.再次查看删除进程进程
没有显示异常
再次查看进程
ps -ef
所有进程正常!
以上就是此次问题解决过程!