zoukankan      html  css  js  c++  java
  • Linux磁盘满问题分析

    线上一台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)

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

  • 相关阅读:
    VC 常见问题百问
    python windows 环境变量
    Check server headers and verify HTTP Status Codes
    Where are the AES 256bit cipher suites? Please someone help
    outlook 如何预订会议和会议室
    安装Axis2的eclipse插件后,未出现界面
    windows 环境变量
    python 时间日期处理汇集
    openldap学习笔记(使用openldap2.3.32)
    set p4 environment in windows
  • 原文地址:https://www.cnblogs.com/aquester/p/10154834.html
Copyright © 2011-2022 走看看