p2p商城网站建设,企业常用系统各系统介绍,把wordpress改成返利网,广告联盟排行问题现象
Linux操作系统云服务器根目录空间占用率过高。例如#xff0c;以图1为例#xff0c;根目录空间占用率为96%。 根目录空间占用率过高
查询当前系统存在一个约42G 大小的文件access_log#xff0c;这个文件应该是apache产生的访问日志文件#xff0c;从日志大小来…问题现象
Linux操作系统云服务器根目录空间占用率过高。例如以图1为例根目录空间占用率为96%。 根目录空间占用率过高
查询当前系统存在一个约42G 大小的文件access_log这个文件应该是apache产生的访问日志文件从日志大小来看应该是很久没有清理的apache 日志文件了。
执行以下命令删除access_log。 rm /tmp/access_log 执行以下命令查看文件系统使用率。 df -h 删除该文件后使用df查看文件系统使用率仍是96%。
根因分析
通常不会出现删除文件后空间不释放的情况但是也存在例外比如文件进程锁定或者有进程一直在向这个文件写数据要明白这个问题首先需要知道 linux 下文件的存储机制和存储结构。
一个文件在文件系统中存放分为两个部分
指针部分指针位于文件系统的meta-data中在将数据删除后这个指针就从meta-data中清除了。 数据部分而数据部分存储在磁盘中。 将数据对应的指针从meta-data中清除后文件数据部分占用的空间就可以被覆盖并写入新的内容。之所以出现删除access_log文件后空间还没有释放就是因为httpd进程还在一直向这个文件写入内容导致虽然删除了access_log文件但是由于进程锁定文件对应的指针部分并未从meta-data中清除而由于指针并未删除系统内核就默认文件并未被删除因此查询文件系统使用率时显示空间并未释放。
处理方法 使用lsof命令查看是否有进程一直在向 access_log 文件中写入数据。
lsof -n |grep delete 从输出可以看出/tmp/access_log 文件被进程 httpd 锁定而 httpd 进程还一直向这个文件写入日志数据最后一列的‘deleted’状态说明这个日志文件已经被删除但是由于进程还在一直向此文件写入数据因此空间并未释放。
可以选择关闭或者重启httpd进程或重启操作系统。本节操作推荐在线清空access_log。 执行以下命令清空access_log。
echo “”/access_log
通过这种方法磁盘空间不但可以马上释放也可以保证进程继续向文件写入日志再次执行df -h查看根分区空间已经释放。