linux删除文件空间不释放问题解决
场景描述
某天,收到Prometheus报警,生产中某台机器出现磁盘空间不足报警,该台服务器是mysql其中一台从库,远程登录到该服务后,排查磁盘空间的原因,发现mysql日志文件过多,于是清空日志文件,但是日志清理后,发现磁盘空间并没有释放,下面分析处理过程和原因
日志清理后,查看磁盘空间
[root@hhjy3-21 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 98G 65G 33G 73% /
devtmpfs devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs tmpfs 1.5G 8.9M 1.5G 1% /run
tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 120M 895M 12% /boot
tmpfs tmpfs 293M 0 293M 0% /run/user/0
原因
在Linux或Unix系统中,通过使用rm删除文件的原理,rm命令只是从文件系统的目录结构上解除链接(unlink),也就是说如果文件是被打开的(有一个进程正在使用该文件句柄),那该进程还是可以读取已删除的文件,而我删除的正是在运行中的MySQL的Logs,删除的时候文件正在被使用中,所以并不释放磁盘空间。
解决方法
Linux中使用lsof | grep deleted命令可以获取一个已经被删除但是仍然被应用程序占用的文件列表
[root@hskj3-21 ~]# lsof | grep -i delete
mysqld_sa 1311 root 2u CHR 136,0 0t0 3 /dev/pts/0 (deleted)
mysqld 1607 mysql 1w REG 8,3 312627 1700052 /mysql/3306/logs/mysql.log (deleted)
mysqld 1607 mysql 2w REG 8,3 312627 1700052 /mysql/3306/logs/mysql.log (deleted)
mysqld 1607 mysql 5u REG 8,3 0 134335687 /mysql/3306/tmp/ibz8LDOk (deleted)
mysqld 1607 mysql 6u REG 8,3 0 134374089 /mysql/3306/tmp/ibprHY8C (deleted)
mysqld 1607 mysql 7u REG 8,3 0 135173881 /mysql/3306/tmp/ibS7LjtV (deleted)
mysqld 1607 mysql 8u REG 8,3 0 134429856 /mysql/3306/tmp/ibX2QZcx (deleted)
mysqld 1607 mysql 12u REG 8,3 0 134429858 /mysql/3306/tmp/ibMxDsTQ (deleted)
mysqld 1607 mysql 21w REG 8,3 153673 1700035 /mysql/3306/logs/slow.log (deleted)
mysqld 1607 1609 mysql 1w REG 8,3 312627 1700052 /mysql/3306/logs/mysql.log (deleted)
......
用该命令后,我发现占用的文件列表非常多,我们需要将占用已删除文件的进程给一个一个的杀掉
[root@hskj3-21 ~]# kill -9 PID
在线清空文件
其实上面那种直接rm删除文件的方法非常危险,特别是针对MySQL,Mongodb,数据相关的服务,rm删除之后,没法释放空间,还得手动重启或者kill这些数据相关的服务进程,会影响到业务。
可以使用以下方法,磁盘空间不足可以马上释放,也可以保证进程继续向文件写入日志,这种方法适合在线清理。
$ echo >xxx/log
linux删除文件空间不释放问题解决的更多相关文章
- linux 删除文件空间未释放问题
现象:我们测试环境上,导出数据文件时,由于作业报错,重复导出,空间使用到达100%,按理说,导出的文件时在相同的路径下,文件名也是一致的,会自动替换. 那么之前导出的文件会被删除,问题就出现在删除这一 ...
- linux删除文件未释放空间问题处理
linux删除文件未释放空间问题处理 或者 /根分区满了 (我的根分区是/dev/sda1,/dev/sda1满了) http://blog.csdn.net/donghustone/article/ ...
- 【转】Linux删除文件未释放空间问题处理
linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么 ...
- Linux 删除文件未释放空间问题处理,下清空或删除大文件
linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么 ...
- Linux-删除文件空间不释放问题解决
场景描述: 收到zabbix监控报警,晋中生产机器出现磁盘空间不足报警. 远程到该服务器,排查占员工磁盘空间的原因,发现tomcat日志过多,于是清除3天前的日志. 日志清理后,发现磁盘空间没有释放, ...
- linux删除文件未释放
https://access.redhat.com/solutions/2316 $ /usr/sbin/lsof | grep deleted ora 25575 data 33u REG 65,6 ...
- Linux文件删除空间未释放
当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放,很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系统的回收站一样,删除只是逻辑删除到回 ...
- 解决linux删除文件后空间没有释放问题
linux删除文件后沒有释放空间 今天发现一台服务器的home空间满了,于是要清空没用的文件,当我删除文件后,发现可用空间沒有变化 os:centos4.7 现象: 发现当前磁盘空间使用情况: [ro ...
- Linux 删除文件后空间不释放【原创】
删除MySQL备份文件后,查找文件所在目录发现文件已经备删除了,但是空间没有释放,还是83% 解决方法: lsof|grep -i delete 发现进程还在,杀掉进程 kill -9 5377 再次 ...
随机推荐
- 关于windows下服务一直处于启动ing的处理办法
1,找到服务名称,xxxx 进入cmd 2,sc queryex xxxx,找到pid 3,taskkill /f /pid 123 就可以终止这个启动中的进程了
- JSP原理剖析
什么是JSP JSP长得和html没有区别,但是服务器会把jsp转换为servlet类 JSP(Java Server Page)Java服务器端页面,和Servlet一样,用于动态Web 在jsp之 ...
- WPF 基础 - xaml 语法总结
Attribute 与 Property 之间的区别 Property 对应着抽象对象身上的性状: Attribute 是针对标签的特征: 往往一个标签具有的 Attribute 对于它所代表的对象的 ...
- Linux系统用户与用户组管理
一.用户和用户组的管理 1.新增组 groupadd 命令 格式:groupadd 组名 2.删除组 groupdel 格式:groupdel 组名 3.增加用用户命令 useradd 格式:us ...
- struct2中package的参数解析
struct2框架的核心组件是action和拦截器,它使用包来管理action和拦截器,每个包就是多个action.多个拦截器引用的集合.在struct.xml中,package元素用于定义包的配置, ...
- [笔记] CRT & exCRT
[笔记] CRT & exCRT 构造法 求多组\(x \equiv r_i (\bmod d_i)\)的解,\(d_i\)互质 余数\((r_i = remainder)\),除数\((d_ ...
- python常用数据处理库
Python之所以能够成为数据分析与挖掘领域的最佳语言,是有其独特的优势的.因为他有很多这个领域相关的库可以用,而且很好用,比如Numpy.SciPy.Matploglib.Pandas.Scikit ...
- Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架
目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...
- python两个字典相加
x = {"a":1,"b":2} 2 y = {"c":3} 3 from collections import Counter 4 X, ...
- 攻防世界 resver catch-me
catch-me asis-ctf-quals-2016 附件给了个压缩包文件,重命名,解压,获取到elf文件 程序有两处关键比较 第一处: 这里进行动态调试,得到v3=0xB11924E1, byt ...