• 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)

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

  • 相关阅读:
    Caffe 编译
    Caffe 在 Ubuntu 中安装
    【转】git
    Using OpenCV with gcc and CMake
    【转】linux下安装opencv
    【转】shell 教程——07 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
    【转】shell 教程——06 Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
    python全栈开发-面向对象-初识2
    python全栈开发-面向对象-初识
    python全栈开发-前方高能-内置函数2
  • 原文地址:https://www.cnblogs.com/aquester/p/10154834.html
Copyright © 2020-2023  润新知