作家
登录

Linux 下删除了文件,空间为何不释放?

作者: 来源: 2017-11-03 11:13:58 阅读 我要评论

解释:Close older closes the file handler for which were not modified for longer then close_older. Time strings like 2h (2 hours), 5m (5 minutes) can be used.


你是否碰见过 Linux 情况下,文件已江山除,然则空间未被释放的情况?这篇小文就会介绍一下,这种问题的一个场景,以及响应的解决筹划。

我们的一台应用办事器,操作体系是 Red Hat Linux,监控报警,/opt/applog文件体系应用率超阈值,整体容量为50G,但发明实际文件容量20G,剩下的30G空间是什么?

  1. force_close_files: false 
  1. >lsof 
  2. COMMAND      PID      USER   FD      TYPE    DEVICE  SIZE/OFF      NODE NAME 
  3. ... 
  4. filebeat  111442   app  1r      REG     253,3 209715229   1040407 /opt/applog/E.20171016.info.012.log 
  5. 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)

他的含义,就是这文件已被删除,但打开文件的句柄,并未封闭,再看 COMMAND 的名称是 filebeat,USER 过程所有者是 app,这是我们的日记采集过程,app 用户开启了 filebeat 过程。

我们知道,Linux 情况下,任何事物,都是以文件的情势存在,体系在后台,为每个应用法度榜样,分派了一个文件描述符,他为应用法度榜样和操作体系之间的交互操作供给了通用的接口,既然是文件,就会占用空间,此时可以应用 lsof 指令,他可以列出,当前体系正在打开的文件。

插播一下日记采集平台

传统的开源日记平台,即 ELK,由 ElasticSearch、Logstash 和 Kiabana 三个开源对象构成,个中:

  • Elasticsearch 是个开源分布式搜刮引擎,分布式,零设备,主动发明,索引主动分片,索引副本机制,restful 风格接口,多半据源,主动搜刮负载等。
  • Logstash 是一个开源的采集对象,他可以对日记进行收集、过滤,并将其存储供今后应用。
  • Kibana 是一个开源的图形 Web 对象,可认为 Logstash 和 ElasticSearch 供给日记分析友爱的 Web 界面,可以汇总、分析和搜刮重要数据日记。

常见的安排图,如下所示

对于膳绫擎提到的 filebeat 又是什么?和 ELK 有什么接洽?

因为 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,其实有两个参数:

  1. close_older: 1h 

  2.   推荐阅读

      怕被网站带走数据?火狐欲增强防御能力

    帆布指纹(Canvas Fingerprinting)是今朝十分风行的一种追踪迹巧,其可以赞助网站抓取用户的行动,大年夜而向>>>详细阅读


    本文标题:Linux 下删除了文件,空间为何不释放?

    地址:http://www.17bianji.com/lsqh/38445.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)