Centos7 中查看磁盘使用情况并做清理
一、背景说明
经常会在运维工作中会遇到某服务器磁盘满了,一些应用无法开启的情况,就需要去清理垃圾文件,释放磁盘空间,这时候就要先查看磁盘使用情况,尤其是接手别人运维的服务器,不了解之前的应用部署,常用的是命令有df和du以及ls。
题外话,应用服务器的磁盘满的情况大部分是由于应用服务产生大量的日志文件没有做定时转储,撑爆了磁盘;数据库服务器的磁盘满的情况大部分是备份文件或者归档日志没有做清理或者没有移动至专门的存储服务器上。
二、du和df的区别
- du:disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。可以理解成统计文件大小相加。
- df:disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件所占用的空间并不是立马被释放,可能还有进程在使用,df命令就依然可以统计的到,只有当涉及到的进程都被kill掉之后,空间释放,这时候du和df就一致了。可以理解成统计数据块的使用情况。
三、常用命令
-
可以通过
df --help
和du --help
查看参数说明 -
df -h
查看磁盘使用情况[NOTE]
-h --human-readable print sizes in human readable format,是将大小信息转换成k,M,G。 -
du -h --max-depth=1 /data
[NOTE]
-h --human-readable print sizes in human readable format,是将大小信息转换成k,M,G。
--max-depth=1 查看/data目录下的各个目录占用空间大小和/data目录所占空间大小,不计算各个目录中的子目录,如果--max-depth=0就是查看/data目录所占空间大小,不添加此参数会递归统计/data目录下所有目录大小包含子目录,可以理解成目录结构的层数。
四、解决问题案例
- 先通过
df -h
命令查看各个磁盘的使用情况,查看对应的挂载目录,假设根目录满了 - 再通过
du -h --max-depth=1 /
命令查看具体是根目录下哪一个目录所占空间过度,并以此类推逐层去查看,假设是/var/log目录所占空间过大 - 先
cd /var/log
目录,最后通过ll -h
查看此目录下具体是哪一个文件过大,再做处理,当然后续可以配置好自动转储或者自动清理等。