线上一台Linux服务器最近经常磁盘根分区满告警,
但不是普通的日志文件或数据文件过多过大,现象如下:

1)执行“df -h”查看各分区空间的使用情况
[root@XEN64 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.8G 8.7G 535M 95% /
devtmpfs 7.7G 0 7.7G 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 7.7G 666M 7.1G 9% /run
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/sda3 20G 3.3G 16G 18% /usr/local

可以看到根分区使用率超过了预警值,
进入根目录,查看根目录下各子目录的大小:
[root@XEN64 /]# du -sm *
0 bin
180 boot
0 dev
24 etc
3 home
0 lib
0 lib64
1 lost+found
1 media
1 mnt
32 opt
du: cannot access 'proc/17842/task/17842/fd/4': No such file or directory
du: cannot access 'proc/17842/task/17842/fdinfo/4': No such file or directory
du: cannot access 'proc/17842/fd/4': No such file or directory
du: cannot access 'proc/17842/fdinfo/4': No such file or directory
0 proc
2 root
666 run
0 sbin
1 srv
0 sys
96 tmp
5856 usr
221 var

进一步检查/usr目录:
[root@XEN64 /usr]# du -sm *
358 1.2-compat
164 bin
1 etc
1 games
33 include
912 lib
432 lib64
101 libexec
3269 local
1 man
46 sbin
547 share
1 src
0 tmp

对比du和df的结果,可以发现两者的已使用大小不一致,
du命令得到的已用大小远小于df命令已用大小,初步猜测存已被删除文件仍然有进程在写它,导致du命令发现不了。
如果允许,最简单的处理方式是重启机器,不然用下列命令找出被删除的,但仍然可能有进程在写它的文件:
pids=`ps aux|awk '{print $2}'`;for pid in $pids; do lsof -p $pid|grep del; done

见到庐山真面目:
[root@XEN64 /proc]# pids=`ps aux|awk '{ if (NR>1) print $2}'`;for pid in $pids; do lsof -p $pid|grep del; done
stati 28885 root 1w REG 8,1 5969132048 409096 /tmp/process_monitor-root.log (deleted)
stati 28885 root 2w REG 8,1 5969132048 409096 /tmp/process_monitor-root.log (deleted)
stati 28885 root 3u REG 8,4 20480039 35651587 /data/consumer/log/consumer.log.5 (deleted)
consumer 29756 root 1w REG 8,1 5969132048 409096 /tmp/process_monitor-root.log (deleted)
consumer 29756 root 2w REG 8,1 5969132048 409096 /tmp/process_monitor-root.log (deleted)
consumer 29756 root 3u REG 8,4 20480039 35651587 /data/consumer/log/consumer.log.5 (deleted)

果然是有大量的已经删除文件,办法要么重启,要么重启持有它们的进程,问题即可解决。

Linux磁盘满问题分析的更多相关文章

  1. linux磁盘满时,如何定位并删除文件

    原文链接: http://www.cnblogs.com/yinxiangpei/articles/4211743.html @1.一般情况   一般情况下先df看一下,然后cd到要满的盘,执行: d ...

  2. linux磁盘空间占用分析

    df -h # 查看目前磁盘空间占用 cd / # 切换到根目录 du -sh # 查询每个目录占用的大小 lsof | grep delete # 查看当前系统打开文件 # 删除不使用的文件, 如果 ...

  3. 阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例

    阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录 ...

  4. linux磁盘空间满的处理

    Java中运行SQL插入数据时报错: linux磁盘空间满处理: 1.df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) 2.分别查看输入以下命令 (面对磁盘满了,通过下列命令 ...

  5. Web服务器磁盘满故障

    问题: 硬盘显示被写满,但是用du -sh /*查看时占用硬盘空间之和还远小于硬盘大小,即找不到硬盘分区是怎么被写满的.今天下午接到同事紧急求助,说生产线服务器硬盘满了.该删的日志都删掉了.可空间还是 ...

  6. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

  7. df、du、fdisk:Linux磁盘管理三板斧的使用心得(转载)

    From:http://os.51cto.com/art/201012/240726_all.htm 作者介绍:李洋(博客),博士毕业于中科院计算所.10多年来一直从事计算机网络信息安全研发工作,曾主 ...

  8. linux磁盘清理方法 Linux 下垃圾清理工具 BleachBit

    由于当初安装系统设计不合理,有些分区的过小,以及网络通讯故障等造成日志文件速度增长等其他原因都可以表现为磁盘空间满,造成无法读写磁盘,应用程序无法执行等.下面就给你支几招(以/home空间满为例): ...

  9. linux磁盘管理系列-LVM的使用

    LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的LVM,分别是 LVM1,LVM2.LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本. ...

随机推荐

  1. docker搭建lnmp(二)

    上一篇利用 不同的命令来构建 nginx,mysql,php镜像 和 容器. 这样做比较麻烦,也很容易出错,当然可以写入 sh脚本来执行.但是可以通过 docker-compose 来达到效果,管理起 ...

  2. Repeater绑定数组

    前台代码: <asp:Repeater ID="rptarry" runat="server" >         <HeaderTempla ...

  3. u-boot之start_armboot函数分析

    在分析start.S文件过程中提到过,最后从汇编跳到C函数执行的是start_armboot函数,位于lib_arm\board.c文件下,它的执行流程图如下,截图来源于<嵌入式LINUX应用开 ...

  4. 11. 标准库浏览 – Part II

    第二部分包含了支持专业编程工作所需的更高级的模块,这些模块很少出现在小脚本中. 11.1. 输出格式 reprlib 模块为大型的或深度嵌套的容器缩写显示提供了 :repr() 函数的一个定制版本: ...

  5. Junit4知识梳理

    一.junit官网 junit4:http://junit.org/junit4/ junit5:http://junit.org/junit5/ 二.github junit4: https://g ...

  6. HTTP.ContentType

    1. multipart/x-mixed-replace http://blog.dubbelboer.com/2012/01/08/x-mixed-replace.html

  7. 爬虫初窥day3:BeautifulSoup

    信息提取 1.通过Tag对象的属性和方法 #!/usr/bin/python # -*- coding: utf- -*- from urllib.request import urlopen fro ...

  8. rapidjson 的封装学习

    #pragma once #include "Util.h" #include "rapidjson/writer.h" #include "rapi ...

  9. Sort Array By Parity LT905

    Given an array A of non-negative integers, return an array consisting of all the even elements of A, ...

  10. 解决linux ubuntu不能识别华为手机的问题--升级内核

    敝人手中有一个华为mate8,但是debian, ubuntu及一系列衍生版均不能识别.只能识别出一个华为手机助手,但是无法使用华为的内置存贮. 在fedora上是可以完美使用的. 归根到底的原因,是 ...