zoukankan      html  css  js  c++  java
  • MySQL Error--存储inode用完后报设备没有空间

    问题描述:
    磁盘有足够剩余空间,但在创建文件或文件夹时报错,提示“设备没有空间”。

    问题原因:
    当存储设备通过分区格式化为文件系统后,会分为两部分:
    1、block部分: 存储的最小单位为扇区(Sector),8个连续的扇区为block,为提高效率,操作系统通常按照block来进行数据访问。
    2、inode部分: 存储block的元数据信息,如文件创建者/创建时间/文件大小/文件block位置等。

    每个分区的inode数量有限,当block有剩余,但inode用完时,系统也会提示磁盘空间不足。

    问题排查:
    查看各分区的inode使用情况

    ## 查看根目录下的inode使用:
    df -lhi
    
    
    正常的输出信息:
    Filesystem     Inodes IUsed IFree IUse% Mounted on
    /dev/sda1        1.3M  421K  831K   34% /
    tmpfs            7.9M     1  7.9M    1% /dev/shm
    /dev/sda3        222M   40K  222M    1% /export
    
    如果IUse%为100%,则表示该分区所有inode用完。

    查看根目录下各目录的inode使用情况:

    for i in /*; 
    do 
    node_count=`find $i | wc -l` 
    echo "$i : $node_count "
    done

    输出结果:

    /bin : 112 
    /boot : 29 
    /dev : 818 
    /etc : 1548 
    /export : 40854 
    /home : 32 
    /lib : 3657 
    /lib64 : 394 
    /lost+found : 1 
    /media : 1 
    /mnt : 1 
    /opt : 18 
    /proc : 2371402 
    /root : 43 
    /sbin : 274 
    /selinux : 1 
    /srv : 1 
    /sys : 20774 
    /tmp : 10 
    /usr : 72055 
    /var : 358262

    可以发现/var目录下使用较多,查看/var目录的使用:

    for i in /var/*; 
    do 
    node_count=`find $i | wc -l` 
    echo "$i : $node_count "
    done

    最后定位到/var/spool/clientmqueue下面使用较多。

    问题扩展

    由于早期在配置cron进行定时作业时,未在文件头部配置MAILTO="",导致在/var/spool/clientmqueue下面创建大量小文件,导致inode被用完。

    如果直接使用rm命令删除特定目录下大量小文件,会存在性能问题,推荐使用下面方式:

    ls /var/spool/clientmqueue | xargs /bin/rm -rf
  • 相关阅读:
    1.2.2 标准命令概述
    1.3 第一个Go程序
    2. 基础类型
    转载:Pixhawk源码笔记一:APM代码基本结构
    IIS6的工作进程回收
    在电脑前独坐,又已经凌晨3点了
    IT人:为什么快乐不起来
    平淡的一天,平淡的心情
    发现一个很好玩的东西
    Jmeter脚本增强检查点
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10883049.html
Copyright © 2011-2022 走看看