• 系统磁盘空间满的一个问题


    我们的集成环境如果磁盘空间满,一般情况下可以通过删除log或者多余的文件来解决,但有时候,这种方法是无法解决的。以上次碰到情况为例:

    服务器10.2.5.4磁盘空间满,致使某核心无法正常运行。于是登陆核查,如下:
    # df -h
    文件系统              容量  已用 可用 已用% 挂载点
    /dev/sda2 9.7G 7.0G 2.3G 76% /
    /dev/sda1 251M 19M 219M 8% /boot
    /dev/sda5 54G 24G 28G 100% /home
    none 1004M 0 1004M 0% /dev/shm
    ccvob.alipay.net:/ccvob1
    133G 68G 59G 54% /ccvob1
    10.2.4.98:/home/nfsshare
    225G 145G 69G 68% /share/upload

    进入/home目录使用du查看/home下的磁盘使用率
    # cd /home
    # du -sh *
    3.1M admin
    1.3G ctu
    1.2G godzilla
    76K log
    40K nagios
    609M paygw
    784M smsgw
    20G trade
    24K ukulele

    发现目录home目录下的子目录所有文件大小加起来远远少于54G,可是却提示home已经100%占用。这种干扰du查看磁盘空间使用率的问题,一般是下面两种情况造成的:
     1、用户删除了文件,这些删除的文件使用du无法查看,但系统仍然有进程在写被删除的文件。
     2、磁盘分区的某一个目录挂载了另外一个分区时,du查看到的磁盘空间为挂载分区后的目录空间。
    由于home目录未挂载另一分区,所以应该是用户删除系统的日志文件,而系统java进程没被停掉这一情况造成的。

    解决方法:
    1、查找被删除文件
     被删除文件,在写程序未退出的情况下,被删除文件同样会占用磁盘空间。
    # lsof -n | head -1
    COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    # lsof -n /home | grep deleted

    由上面可以看出,这些log已经被删除,但是java进程依然在写这些log。

    2、杀掉写文件的java进程,磁盘空间会自然释放
    #pkill -9 19543
    # df
    文件系统               1K-块        已用     可用 已用% 挂载点
    /dev/sda2 10080520 7257740 2310712 76% /
    /dev/sda1 256667 19223 224192 8% /boot
    /dev/sda5 56087900 25093392 28145384 45% /home

    总结:由于我们经常在没有停掉系统的时候就直接删除log,而有时候系统的java进程在重新启动的时候并没有停掉,依然在系统中运行并不停的在写已经被删除的日志文件,多次累积过后,就会造成磁盘空间变满。所以,建议每次删除系统log前,请执行下#killall java 先将该用户下的系统停掉

  • 相关阅读:
    DSP EPWM学习笔记2
    DSP EPWM学习笔记1
    DSP
    DSP bootloader学习笔记1
    Source Insight 中使用 AStyle 代码格式工具
    DSP基础学习-ADC同步采样
    DSP算法学习-过采样技术
    救救一个只会用万能头的孩子!
    传参(转)
    return
  • 原文地址:https://www.cnblogs.com/s1328/p/4885334.html
Copyright © 2020-2023  润新知