详解CentOS7 安装 MariaDB 10.2.4的方法
一,背景
一大早研发过来报错,home目录之前分配10G空间,使用率100%,自己先尝试了扩容到50G,今天早上来了发现又100%了。。。
os:Red Hat Enterprise Linux Server release 6.6 (Santiago)
二,问题检测
登录问题服务器,执行命令 df -h,发现/home目录已占满,但是进入home,执行du -s -h发现只使用了1.4G的空间
初步怀疑是删除文件未释放导致的,执行命令 lsof |grep deleted
发现tomcat下的日志文件占用过大。。。。应该是开发人员删除了日志文件,但并未重启服务导致的。
三,解决问题
由于是测试环境,所以直接kill掉了服务,再次查看,空间已释放,目录使用率已恢复正常。
四,小结
脑补一下df du lsof
df命令使用的是statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针对整个分区。由于df直接读取超级块,所以运行速度不受文件多少影响。
du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。
lsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。
lsof详解见另外一篇文章
https://www.qedev.com/linux/576.html
精彩评论