资讯专栏INFORMATION COLUMN

Linux服务器文件删除策略

qujian / 2414人阅读

摘要:磁盘空间满由于没有回收站功能,所以线上服务器上所有要删除的文件都会先移动到系统目录下,然后定期清除目录下的数据。最后一列的状态说明这个日志文件已经被删除,但由于进程还在一直向此文件写入数据,因此空间并未释放。

磁盘空间满

由于Linux没有回收站功能,所以线上服务器上所有要删除的文件都会先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据。这个策略本身没有问题,但是通过检查发现这台服务器的系统分区中并没有多带带划分/tmp分区,这样/tmp下的数据其实占用了根分区的空间。既然找到了问题,那么删除/tmp目录下一些占空间较大的数据文件即可,检查/tmp下最大的三个数据文。

du -sh /tmp/* | sort -nr | head -3 

查看/tmp下最大的前三个数据文件 通过命令输出发现在/tmp目录下有个66GB大小的文件access_log,这个文件应该是Apache产生的访问日志文件,从日志大小来看,应该是很久没有清理Apache日志文件了,基本判定是这个文件导致的根空间爆满,在确认此文件可以删除后,执行如下删除操作:

rm /tmp/access_log 

接着查看系统根分区空间是否释放,从输出可以看到,根分区空间仍然没有释放,这是怎么回事?

删除文件空间不释放

一般来说不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件被进程锁定,或者有进程一直在向这个文件写数据等,要理解这个问题,就需要知道Linux下文件的存储机制和存储结构。

文件的数据与指针部分

一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中。在将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以在出现删除access_log文件后,空间还没释放,就是因为httpd进程还在一直向这个文件写入内容,导致虽然删除了access_log文件,但是由于进程锁定,文件对应的指针部分并未从meta-data中清除,而由于指针并未删除,系统内核就认为文件并未删除。

查找被应用程序占用的已删除文件列表

因此通过df命令查询空间并未释放也就既然有了解决问题的思路,那么接下来看看是否有进程一直在向access_log文件中写数据,这里需要用到Linux下的lsof命令,通过这个命令可以获取一个仍然被应用程序占用的已删除文件列表:

lsof | grep delete

从输出结果可以看到,/tmp/access_log文件被进程httpd锁定,而httpd进程还一直向这个文件写入日志数据。从第7列可知,这个日志文件大小约70GB,而系统根分区总大小才100GB,由此可知,这个文件就是导致系统根分区空间耗尽的罪魁祸首。最后一列的“deleted”状态说明这个日志文件已经被删除,但由于进程还在一直向此文件写入数据,因此空间并未释放。

正确地清空文件

解决这一类问题的方法有很多种,最简单的方法是关闭或重启httpd进程,当然也可以重启操作系统,不过这些并不是最好的方法。对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件,具体可以通过如下命令完成:

[root@localhost ~]# echo " " >/tmp/access_log 

通过这种方法,磁盘空间不但可以马上释放,也可保障进程继续向文件写入日志,这种方法经常用于在线清理Apache、Tomcat、Nginx等Web服务产生的日志文件。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9636.html

相关文章

  • Linux下常用安全策略设置的六个方法

    摘要:安全第一对于管理界乃至计算机也都是一个首要考虑的问题。如果没有人能通机器并收到响应,那么就可以大大增强服务器的安全性,下可以执行如下设置,禁止请求默认情况下的值为,表示响应操作。接着设置不允许登录的机器,也就是配置文件了。 安全第一对于linux管理界乃至计算机也都是一个首要考虑的问题。加密的安全性依赖于密码本身而非算法!而且,此处说到的安全是指数据的完整性,由此,数据的认证安全和完整...

    Godtoy 评论0 收藏0
  • 军工级SELinux

    摘要:博文参考简介历史,是美国国家安全局和开发的的一个强制访问控制的安全模块。年以后以发布,内核版本后集成在内核中。环境下策略的规则决定控制的严格程度。的四种工作类型严格的对每个进程都受到的控制。提供多级安全机制的安全性。 博文参考 http://www.178linux.com/48336 http://www.178linux.com/47812 http://www.178linux....

    brianway 评论0 收藏0
  • 军工级SELinux

    摘要:博文参考简介历史,是美国国家安全局和开发的的一个强制访问控制的安全模块。年以后以发布,内核版本后集成在内核中。环境下策略的规则决定控制的严格程度。的四种工作类型严格的对每个进程都受到的控制。提供多级安全机制的安全性。 博文参考 http://www.178linux.com/48336 http://www.178linux.com/47812 http://www.178linux....

    meteor199 评论0 收藏0
  • 军工级SELinux

    摘要:博文参考简介历史,是美国国家安全局和开发的的一个强制访问控制的安全模块。年以后以发布,内核版本后集成在内核中。环境下策略的规则决定控制的严格程度。的四种工作类型严格的对每个进程都受到的控制。提供多级安全机制的安全性。 博文参考 http://www.178linux.com/48336 http://www.178linux.com/47812 http://www.178linux....

    RdouTyping 评论0 收藏0
  • Linux运维:redis(1)数据类型和持久化策略

    摘要:模式不变,但是是键值对常用命令将哈希表中的字段的值设为获取存储在哈希表中指定字段的值。只有在字段不存在时,设置哈希表字段的值。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是。 NoSQL概述 为什么会出现NoSQL 单机Mysql的年代,网站大多是静态网页,动态交互性网站不多,一个网站的访问量不大,用单个数据库足以应付。这种单机架构的网站,数据存储的瓶颈分为: 数据量的总大...

    adie 评论0 收藏0

发表评论

0条评论

qujian

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<