我们先来模拟一下演示环境
首先我们看一下磁盘的存储状况
[root@Centos7 ~]#df -h #df 显示每个文件所在的文件系统的信息 。-h以人类易读的类型显示。
文件系统 容量 已用 可用 已用% 挂载点
[root@Centos7 ~]#dd if=/dev/zero of=/boot/456 bs=1M count=900
##dd if=/dev/zero of=/boot/456 bs=1M count=900 #通俗点来讲及时批量创建文件内容到/boot/456中。
input file output file block size count
输入文件 输出文件 (批次大小) (批次)
[root@Centos7 ~]#ll -h /boot/456 显示/boot/456的文件的详细信息
#通过df -h命令我们看到 /boot目录的使用率已经100%了。
下面我们通过常用的命令rm来进行删除
删除操作执行成功了,怎么/boot目录的使用率还是100%?难道文件还存在??
那我们通过#ll -h /boot来查看一下/boot下的文件列表。是不是很奇怪?文件没有了为什么占用的空间却没有正常的释放!难道系统出问题了?
那怎么办呢?
不要担心,接下来我们来排查一下问题。
因为命令执行没有失败,文件也确实删除掉了。
那么我们来通过lsof命令:来查询一下文件即被打开编辑中同时又被执行了删除操作的文件。
[root@Centos7 ~]#lsof |grep deleted
通过查询我们看到最下边的那一条vi编辑着的文件居然就是我们刚刚删除的/boot/456文件,占用的空间居然还是800+M大小。
这就是明明删除了文件,可是存储空间却没有及时释放的原因了。因为文件还在使用中,系统默认是在程序关掉后才会释放空间。我们直接kill杀掉这个进程既可以了。
其实工作中经常遇到这种情况,服务器是很多人都可以访问的,部分文件(例如日志文件等)的访问权限比较低大多数都是开放读写权限的。这就有可能造成一个人在删除日志文件的同时,还有别的同事正打开查看这个日志文件。从而造成空间未及时释放。
[root@Centos7 ~]#kill -9 PID 【PID 即程序运行的ID编号,实验中的编号是3699】
[root@Centos7 ~]#kill -9 3699
杀掉该进程后df -h 命令发现空间立刻释放出来了,是不是很神奇呢!
接下来,我们再来介绍另外一种删除释放存储空间的办法。这种方法就不会出现rm删除后可能无法及时释放空间的问题。
首先:我们先来恢复一下上面的实验环境,还是/boot 目录吧
环境搭建好了。
接下来开始试验
[root@Centos7 ~]#> /boot/456 #这里我们使用【>】来先清空文件内容。
清空后df -h发现存储空间即刻得到释放了。
当然如果文件真的不需要了,在执行rm命令删除即可。
后边介绍的这种方法,是不是又简单又实用呢?
不过这两种方法使用的时候要注意文件不要跟错咯,否则删除的文件都是很难恢复的哦!
小伙伴们还有没有别的更好的方法呢?
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88533