zoukankan      html  css  js  c++  java
  • No space left on device(转载)

    本文转自

    http://blog.163.com/ly_89/blog/static/186902299201191233058625/

    =====================概述=====================

    block 还有     inodes 满了     ====== 》 小文件太多  ======》 /var/spool/clientmqueue 小文件太多  =====》 cron 产生的

    ==========================解决思路=========================

    ..1 把小文件删除

    ..2 把产生小文件的源头干掉

    一:

    设置crontab 时提示No space left on device
    用df -k 检查还有空间

    用df -i  显示 /var 已占用100%,如果inode耗尽,则系统上将不能创建文件。

    在/var/spoo/clientmqueue/下有超多的文件 ls 半天没反应
    用rm -rf * 会自动跳出root,用xargs来解决。

    # cd /var/spool/clientmqueue

    # ls | xargs rm -f


    原因分析:系统中cron执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件;
    解决办法:  将crontab里面的命令后面加上> /dev/null 2>&1

    二:

    故障现象:

    1 when you create a new directory or file , system will say : No space left on device

    [shelladm@linux /var]# mkdir aa

    mkdir: cannot create directory `aa': No space left on device


    2 when create crontab for account shelladm , you will receive error information as follows:


    "crontab.6655" 1L, 13C written

    crontab: installing new crontab

    cron/tmp.6655: No space left on device

    crontab: edits left in /tmp/crontab.6655

    处理步骤:

    1 检查分区使用率

    [root@linux ~]# df -lk
    Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/hda2              3020172    136008   2730744   5% /
    /dev/hda1               101089      9378     86492  10% /boot
    /dev/hda7            105708092  38996880  61341488  39% /b2006
    none                   1028548         0   1028548   0% /dev/shm
    /dev/hda3              3020172   1421092   1445660  50% /usr
    /dev/hda6               497829    371795    100332  79% /var
    分区/var的使用率只有79%,系统有空间可以用

    2 检查/var/lock下的文件,删除/var/lock/subsys/nfs后,touch /var/aa,成功创建文件,删除/var/aa

    3 发现删除/var/lock下的任意一个文件后

    [root@linux /var]#touch /var/aa        -------------------成功

    [root@linux /var]# touch aa1                -------------------失败
    touch: creating `aa1': No space left on device

    4 将检查扩大到/var下的其他目录,
    [root@linux icons]# cd /var/www/icons
    [root@linux icons]# mv a.gif /tmp
    [root@linux icons]# mv a.png /tmp     -------------------移走两个文件
    [root@linux icons]# df -li
    [root@linux icons]# touch aa
    [root@linux icons]# touch bb
    [root@linux icons]# touch cc
    touch: creating `cc': No space left on device -----------只能创建两个文件,当创建第三个文件时,出错

    5 怀疑分区/var的inode用尽导致上述问题,检查inode使用率

    [root@linux icons]# df -li
    Filesystem            Inodes   IUsed   IFree IUse% Mounted on
    /dev/hda2             384000   23698  360302    7% /
    /dev/hda1              26104      41   26063    1% /boot
    /dev/hda7            13434880    7964 13426916    1% /b2006
    none                  257137       1  257136    1% /dev/shm
    /dev/hda3             384000   78026  305974   21% /usr
    /dev/hda6             128520  128520       0  100% /var
    发现/var的inode使用率已经达到100%,空余的inode为0

    6 分区/var没有配置quota ,平均每个inode的占用空间为:497829k(var size)/128520(inodes)=3.87k,说明分区的最小block为4k,无法增加inode限额。

    7 发现/var/spool/clientmqueue下面有太多的文件,共有127679个,占用了127679/128520(inodes)=99.3%的inode
      系统的邮件配置有问题,导致系统发出的邮件堆积在队列中,占用的大量的inode.


    处理方法:确认/var/spool/clientmqueue下的文件已经无用后,删除之。然后/var写入正常。
              最好的解决办法是重新设置系统邮件,使其能正常发送。

    删除文件后的inode使用情况
    [root@linux clientmqueue]# df -li
    Filesystem            Inodes   IUsed   IFree IUse% Mounted on
    /dev/hda2             384000   23698  360302    7% /
    /dev/hda1              26104      41   26063    1% /boot
    /dev/hda7            13434880    7964 13426916    1% /b2006
    none                  257137       1  257136    1% /dev/shm
    /dev/hda3             384000   78026  305974   21% /usr
    /dev/hda6             128520    4561  123959    4% /var

    结论:分区/var的inode全部用尽,free inode为0,导致无法创建新的文件或目录,以后遇到类似的问题要注意

          用df -li 检查inode的使用情况。
    ################################################################################

    当启动apache的时候报这种错:

    No space left on device: Couldn't create accept lock
    df -h 一下发现不是磁盘空间的问题,google了一下发现是系统的Semaphore Arrays不够用了,用以下命令可以查看所有的
    Semaphore Arrays:
    ipcs -s  
    然后用这行命令删除所有的Semaphore Arrays即可:
    ipcs -s | grep nobody | perl -lane 'print `ipcrm sem $F[1]`'  (其中nobody表示用户名)
  • 相关阅读:
    大龄开发人员如何破局
    在c++MFC下用PCL显示操作点云文件 MFC对话框显示操作PCL点云
    记录学习图像处理过程中不错的教程博客
    做三维模型识别目标定位配准测量的有关资料记录
    OpenCASCADE(一) VS2017+OpenCASCADE+MFC +win10下载配置安装运行单文档程序画个基本图形
    关于opengl中的三维矩阵平移代码,矩阵旋转代码,推导过程理解 OpenGL计算机图形学的一些必要矩阵运算知识 glTranslatef(x,y,z)glRotatef(angle,x,y,z)函数详解
    深度学习系列教程目录
    c/c++ 2019公司面试题目录
    c++ 知道旋转平移变换前后矩阵向量值 求旋转变换矩阵c++/c#代码 知道两个向量求他们的旋转变换矩阵
    OpenCV与MFC实战之图像处理 样本采集小工具制作 c++MFC课程设计
  • 原文地址:https://www.cnblogs.com/fepapa/p/5395345.html
Copyright © 2011-2022 走看看