【知识点】NO.1—-关于删除文件后未及时释放磁盘空间问题

删除了某些占用大存储的文件,发现占用的磁盘空间并没有的到释放。怎么解决呢?
在工作中经常遇到服务器某个存放日志或者某些数据的磁盘(或者目录),因为检查不及时磁盘存储满了的状况。释放空间真的只是删除文件这么简单吗?nonono…

我们先来模拟一下演示环境

首先我们看一下磁盘的存储状况

[root@Centos7 ~]#df     -h       #df   显示每个文件所在的文件系统的信息 。-h以人类易读的类型显示。

文件系统               容量     已用   可用   已用%  挂载点

1

[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
输入文件          输出文件 (批次大小) (批次)

2

[root@Centos7 ~]#ll  -h  /boot/456   显示/boot/456的文件的详细信息

4

#通过df -h命令我们看到 /boot目录的使用率已经100%了。

3

下面我们通过常用的命令rm来进行删除

5

删除操作执行成功了,怎么/boot目录的使用率还是100%?难道文件还存在??

6

那我们通过#ll -h /boot来查看一下/boot下的文件列表。是不是很奇怪?文件没有了为什么占用的空间却没有正常的释放!难道系统出问题了?

那怎么办呢?

不要担心,接下来我们来排查一下问题。

因为命令执行没有失败,文件也确实删除掉了。

那么我们来通过lsof命令:来查询一下文件即被打开编辑中同时又被执行了删除操作的文件。

[root@Centos7 ~]#lsof |grep deleted

7

通过查询我们看到最下边的那一条vi编辑着的文件居然就是我们刚刚删除的/boot/456文件,占用的空间居然还是800+M大小。

这就是明明删除了文件,可是存储空间却没有及时释放的原因了。因为文件还在使用中,系统默认是在程序关掉后才会释放空间。我们直接kill杀掉这个进程既可以了。

其实工作中经常遇到这种情况,服务器是很多人都可以访问的,部分文件(例如日志文件等)的访问权限比较低大多数都是开放读写权限的。这就有可能造成一个人在删除日志文件的同时,还有别的同事正打开查看这个日志文件。从而造成空间未及时释放。

[root@Centos7 ~]#kill -9 PID    【PID 即程序运行的ID编号,实验中的编号是3699】

[root@Centos7 ~]#kill -9 3699

8

杀掉该进程后df -h 命令发现空间立刻释放出来了,是不是很神奇呢!

接下来,我们再来介绍另外一种删除释放存储空间的办法。这种方法就不会出现rm删除后可能无法及时释放空间的问题。

首先:我们先来恢复一下上面的实验环境,还是/boot 目录吧

9

环境搭建好了。

接下来开始试验

[root@Centos7 ~]#> /boot/456   #这里我们使用【>】来先清空文件内容。

清空后df -h发现存储空间即刻得到释放了。

10

当然如果文件真的不需要了,在执行rm命令删除即可。

 

后边介绍的这种方法,是不是又简单又实用呢?

不过这两种方法使用的时候要注意文件不要跟错咯,否则删除的文件都是很难恢复的哦!

小伙伴们还有没有别的更好的方法呢?

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88533

(1)
lvshijunlvshijun
上一篇 2017-11-18 10:53
下一篇 2017-11-18 11:54

相关推荐

  • Nginx:

    来自为知笔记(Wiz)

    Linux干货 2016-10-26
  • 小练习题。【第四周】

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 home]# chmod g-rwx,o-rwx -R tuser1 2、编辑/etc/group文件,添加组hadoop。 /]# vim /etc/group …

    Linux干货 2016-11-26
  • linux中如何使用帮助

     在linux学习过程中,会遇到许多困难,尤其是一些命令掌握不牢固,不知道具体用法;或者是想要实现一些功能而不知道使用何种命令。这时求人不如求己,上网求助不如自己学会使用帮助,下面介绍几种linux帮助的用法。 1.what is +命令    执行这条命令可以显示命令的简短描述,让大家了解命令的基本功能。同时可以看到命令相关章…

    2017-07-23
  • centos6开机启动流程以及系统服务配置管理

    内容:   CentOS6 的启动流程   服务管理(chkconfig)   手动制定系统开机服务脚本 一、centos6系统启动流程 综述过程: POST–>BIOS(Boot Sequence)–>MBR(grub,446)–>Kernel–>init…

    Linux干货 2016-09-08
  • 新的开始

    hello,我在这里,马哥运维,一起努力!

    Linux干货 2016-12-26
  • CentOS 6.5下编译安装httpd+mysql+php过程实录

    一、安装环境     Linux系统:CentOS 6.5     Apache版本:http-2.4.12     MySQL版本:MySQL 5.6.24     PHP版本:PHP-5.6.8 …

    Linux干货 2015-05-18