你是否删除了Linux下的一个文件,但是系统空间并没有被释放,本篇文章重点为大家阐述一下Linux删除了文件空间而没有释放的具体原因及解决方法。
我们的一台应用服务器,操作系统是 Red Hat Linux,监控报警,/opt/applog文件系统使用率超阈值,整体容量为50G,但发现实际文件容量20G,剩下的30G空间是什么?
我们知道,Linux 环境下,任何事物,都是以文件的形式存在,系统在后台,为每个应用程序,分配了一个文件描述符,他为应用程序和操作系统之间的交互操作提供了通用的接口,既然是文件,就会占用空间,此时可以使用 lsof 指令,他可以列出,当前系统正在打开的文件。
>lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... filebeat 111442 app 1r REG 253,3 209715229 1040407 /opt/applog/E.20171016.info.012.log filebeat 111442 app 2r REG 253,3 209715254 385080 /opt/applog/E.20171015.info.001.log (deleted) ...
表头各字段,含义如下:
COMMAND:进程的名称 PID:进程标识符 USER:进程所有者 FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等 DEVICE:指定磁盘的名称 SIZE:文件的大小 NODE:索引节点(文件在磁盘上的标识) NAME:打开文件的确切名称
可以看出,有一些行中,NAME标识了(deleted)
/opt/applog/E.20171015.info.001.log (deleted)
他的含义,就是这文件已被删除,但打开文件的句柄,并未关闭,再看 COMMAND 的名称是 filebeat,USER 进程所有者是 app,这是我们的日志采集进程,app 用户开启了 filebeat 进程。
插播一下日志采集平台
传统的开源日志平台,即 ELK,由 ElasticSearch、Logstash 和 Kiabana 三个开源工具组成,其中:
常见的部署图,如下所示
为什么删除了文件空间却不释放?为什么删除了文件空间却不释放?
对于上面提到的 filebeat 又是什么?和 ELK 有什么联系?
知乎上有一段大牛饶琛琳的介绍(《ELKstack 权威指南》作者),非常精辟,引自 https://www.zhihu.com/question/54058964/answer/137882919
因为 logstash 是 jvm 跑的,资源消耗比较大,所以后来作者又用 golang 写了一个功能较少但是资源消耗也小的轻量级的 logstash-forwarder。不过作者只是一个人,加入http://elastic.co公司以后,因为 es 公司本身还收购了另一个开源项目 packetbeat,而这个项目专门就是用 golang 的,有整个团队,所以 es 公司干脆把 logstash-forwarder 的开发工作也合并到同一个 golang 团队来搞,于是新的项目就叫 filebeat 了。
为什么删除了文件空间却不释放?为什么删除了文件空间却不释放?
简单来讲,filebeat 就是日志采集的进程 agent,负责采集应用日志文件。
对于我上面的这个问题,之所以有大量的(deleted),未释放文件句柄,还有个背景,就是由于磁盘空间非常有限,临时加了任务,每小时删除12小时前的日志,换句话说,定时任务会自动删除此时 filebeat 正在打开着的一些文件,于是这些文件,就变为了未释放的文件,因此实际文件删除了,但空间未被释放。
解决方案1:
为了迅速释放空间占用,最直接的方法,就是 kill -9 filebeat 进程,此时空间会释放。但并不是从根本解决,定时任务还会删除这些,filebeat 打开的文件,导致空间满。
解决方案2: filebeat 的配置文件 filebeat.yml,其实有两个参数:
即如果一个文件在某个时间段内没有发生过更新,则关闭监控的文件handle,默认1小时。
即当文件名称有变化时,包括改名和删除,会自动关闭一个文件。
这两个参数结合起来,根据应用需求,一个文件30分钟内不更新,则需要关闭句柄,文件改名或删除,需要关闭句柄
close_older: 30m force_close_files: true
可以满足,filebeat 采集日志,以及定时删除历史文件,这两个任务的基本要求。
本文标题:Linux删除了文件之后空间没有释放原因及解决方法
本文来源:http://www.csdahua.cn/qtweb/news16/339216.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网