【知识点】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
下一篇 2017-11-18

相关推荐

  • Linux文件和目录管理

    Linux目录和文件管理 Linux文件信息详述 文件数据存储在块中 文件元数据存储在inode中 文件名和其对应的inode号码存储在目录项中 数据块的概念: 文件在硬盘上的最小存储单位叫做扇区,1扇区=512字节,操作系统读取硬盘的时候不会一个一个读,这样太慢,会一次连续读多个扇区,即一个读取一个“块”,常见的 1块=八个扇区=4kB inode的概念:…

    Linux干货 2016-11-04
  • 磁盘管理

    一、磁盘结构     设备文件         I/O Ports: I/O设备地址         一切皆文件:    &nbs…

    Linux干货 2016-09-01
  • N25-第12周博客作业

    1、请描述一次完整的http请求处理过程;   1)客户端和服务器端建立连接。服务器接收或者拒绝请求。   2)服务器端接收客户端请求。接收来自于网络的请求报文中对某资源的一次请求。对请求的处理响应,可分为单进程(启动一个进程处理请求,一次只处理一个)和多进程(并行启动多个进程,每个进程处理一个请求)。  &…

    Linux干货 2017-05-21
  • corosync + pacemaker + iscsi实现高可用mysql (上)

    一、实验图   二、准备实验环境:  1)确保sql服务器之间可以基于主机名通信 [root@SQL1 ~]# vim /etc/hosts 172.16.2.13  SQL1.linux.com  SQL1 172.16.2.14  SQL2.li…

    Linux干货 2015-07-09
  • N27_第二周作业。

    linux上的文件管理类命令都有哪些?其常用的使用方法及其相关示例演示。 答: 有cp、mv、rm cp  复制命令 常用选项: cp -i        #交互式 cp -r       #递归复制目录及其子目录的内容 cp -a      # 归档,相当于dR –preserve=all cp -d     #表示不跟踪符号链接所指向的原文件…

    2017-10-09
  • nginx及I/O介绍原理

    上课笔记

    2018-03-12