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)

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

  • 相关阅读:
    Intellij Idea安装主题包
    Spring中bean的含义
    IntelliJ IDEA 中 右键运行时没有run;新建时,选项没有Java class的解决方法和具体解释
    Linux下修改profile后用户无法登陆的问题
    11 | 怎么给字符串字段加索引?
    09 | 普通索引和唯一索引,应该怎么选择?
    08 | 事务到底是隔离的还是不隔离的?
    07 | 行锁功过:怎么减少行锁对性能的影响?
    06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
    05 | 深入浅出索引(下)
  • 原文地址:https://www.cnblogs.com/aquester/p/10154834.html
Copyright © 2011-2022 走看看