天天看点

[CentOS 7.6]消失的磁盘空间

前段时间,同事向我反馈,有台服务器的业务停止运行了,让我检查下。

先介绍下这台服务器的基本情况,操作系统为CentOS 7.6 64位,磁盘有2块,一块是200多G的系统盘;另一块是8T的数据盘,挂载在/app-data目录下。

我查看了服务器之后,发现原因是根目录的磁盘空间满了。于是删除了业务程序的部分日志,但也只空出来几个G的空间,于是想看下是哪些文件占用了根目录的磁盘空间。

使用df命令查看文件系统的磁盘使用情况(以下是正常之后的情况):

[CentOS 7.6]消失的磁盘空间

从上图中可以看到,根目录"/"挂载的是磁盘sda的一个分区/dev/sda3,容量为220G,已用24G,可用空间为197G,已使用空间百分比为11%。

但那天查看时,可用空间为13M,已用100%。

另外,磁盘sdb的/dev/sdb1分区大小为7.3T,挂载在/app-data目录下。

使用du命令查看根目录下,各文件、文件夹占用的空间的大小:

[CentOS 7.6]消失的磁盘空间

上图中,usr、home和var文件夹大小加起来,有24G多一点,其他的可忽略不计,和df命令查出来的已用空间是相符合的。

app-data文件夹虽然有56G,但因为挂载在磁盘b上,所以其大小不计入根目录的占用空间。

所以当时就比较奇怪,根目录下190多G的空间哪里去了。经过仔细询问得知,该服务器一开始是在没有挂载磁盘sdb的情况下运行的,后来客户加购了数据盘,并挂载到/app-data目录下,正常运行了几天,然后磁盘就满了。

看来问题出现在挂载上。于是停止了业务程序,

umount /dev/sdb1
           

此时再du一下,发现/app-data文件夹达195G。也就是说,原来没数据盘b的时候,业务运行了一段时间,数据都存在系统盘sda的/app-data文件夹下。但是将数据盘挂载的时候,没有将系统盘里的数据迁移到数据盘,就直接挂载上去了。导致系统盘的这部分空间就这么“消失”了。

后面删除了大部分测试数据,将有用的数据mv到/app-data1文件夹下,清空/app-data文件夹,再挂载数据盘。然后将/app-data1文件夹下的数据迁移到数据盘,最后删除/app-data1文件夹。

再df一下,发现磁盘空间都回来了。

继续阅读