由索引节点(inode)爆满引发的问题

关于磁盘空间中索引节点爆满的问题还是挺多的,借此跟大家分享一下:

一、发现问题
  在公司一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。

二、分析问题
  后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。
[[email protected] ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
.......
.......
/dev/mapper/VolGroup-lv_home
53452800 53452800 0 100% /data

inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。

  而这台服务器的Block虽然还有剩余,但inode已经用满,因此在创建新目录或文件时,系统提示磁盘空间不足。

三、查找原因:
  /data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

四、解决方案:
  1、删除/data/cache目录中的部分文件,释放出/data分区的一部分inode,特别要留意那些spool出来的文件,这种文件一般会占用比较多的节点,因为比较小而且零碎,同时要多留意日志文件信息等

  2、用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:
  ln -s /opt/newcache /data/cache

  3、更换服务器,用高配置的服务器替换低配置的服务器。很多时候用钱去解决问题比用技术更有效,堆在我办公桌上5台全新的 DELL PowerEdge 2950 服务器即将运往IDC机房。一般不建议

***********************************************************
关于磁盘的inode满100%--i节点大爆发
原因:
通常是发现磁盘没有满但是无法写入文件。提示“no space left on device”
用df -i 查看,应该会发现相应的分区是100%
一般都是crontab的job有问题,造成/var/spool/clientmqueue中产生许多的零碎文件。
处理方法:
用rm -rf *会不能删除,并会有相应的提示,大意是参数太多。
可以用多种方法,这里提及一个我随便写的,在/var/spool/clientmqueue/下执行命令:“lsattr ./|awk -F"/" ‘{print $3}‘|xargs -i rm -rf {}”用lsattr列出./下面的文件名的属性,用awk取出名字,然后rm -rf
还有一个方法比较普遍的使用:“find /var/spool/clientmqueue/ -type f -exec rm {} \;”或者在/var/spool/clientmqueue/目录下“find ./ -exec rm {} \;”
将crontab中没有定向输出的行都在最后加上“> /dev/null 2>&1”,在删除的过程中操作。或者先停止crontab,加上重定向。

***********************************************************

no space left on device的解决:

服务器磁盘不足,df -h 一下,var下正常,还有剩余,发现问题没有,到后来显示大量的No space left on device:

/var明明还有很大的空间,为什么就提示“没有足够的空间”了呢?结果用到了df -i命令查看磁盘的节点发现如下图:

节点100%了.

这个时候用户可以先看下日志文件是否太多,如果是日志文件占用大量的inodes可以临时释放清理下过期的日志。

以下是检查inodes满的某一种情况,仅供参考:

查看原来是crontab里面定时执行的句子里没有加 > /dev/null 2>&1,系统中cron执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了很大零碎的文件:

cd /var/spool/clientmqueue/  进入这个目录,删掉这些没用的文件,用ls 查看一下,结果是没有反应,文件太多,于是就用到了这个命令:ls |xargs rm -rf 可以分批的处理删除文件,如下图是删除后的效果:

操作到该步骤,可以根据较大目录的文件占用情况,临时转移部分文件到占用磁盘较小的目录中。

时间: 2024-10-12 00:40:49

由索引节点(inode)爆满引发的问题的相关文章

Linux索引节点(inode)用满导致的一次故障

一.发现问题: 在一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题. 二.分析问题: 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件. inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份

Linux索引节点(Inode:no space for device)用满导致的一次故障

问题描述 在storm测试环境集群上上nimbus和supervisor自动挂调,重启时显示no space for device,也不能创建,添加文件及目录,df -h查看 ilesystem Size Used Avail Use% Mounted on /dev/vda1 40G 2.9G 35G 8% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/vdc1 100G 3.1G 92G 4% /home /dev/vdd1 50G 180M 48G 1% /ho

Centos 06 文件类型和扩展名&索引节点inode和存储块block

本节内容 1.文件类型 2.文件扩展名 3.索引节点inode和block块 首先需要申明一点, 1.在linux里面文件扩展名和文件类型是没有关系的 2.为了容易区分和兼容用户使用windows的习惯,在linux里面也会用扩展名来表示文件类型 3.在linux里面需要提起一个概念"一切皆文件". 文件类型 文件类型分为:普通文件.目录.字符设备文件.符号链接文件.块设备文件.套接口文件.管道 之前我们通过find命令查找过文件,所以可以查看一下find命令里面的规定,man fin

Linux文件系统与索引节点inode浅析

我们知道磁盘在分区后还需要进行格式化,之后操作系统才能使用这个分区.而需要格式化的原因正是因为每种操作系统所设置的文件属性/权限并不相同.在Linux中,传统的磁盘文件系统是EXT,下面以EXT为例浅析Linux的文件系统与索引节点. 我们知道,文件的数据除了文件实际内容之外,通常还含有非常多的属性.文件系统通常会将权限与属性等数据放置到inode(index node)中,至于实际数据则放置到data block块中:另外,还有一个超级块会记录整个文件系统的整体信息. 在文件系统中,每个ino

彻底解决Linux索引节点(inode)用满导致故障的方法

登录到服务器上df -i一看/路径下96%而数据目录/data下才用了30%故初步判断生成的数据量正常可能是一些系统产生的文件把根路径占满了 于是乎在执行以下命令查看根路径下各个文件夹的文件数 for i in /*; do echo $i; find $i |wc -l|sort -nr; done 数文件数超过10W的有两个/data我们的数据分区确认数据量正常和/var /data 13W+文件 /var下70W+文件 楼主linux水平有限于是把/var下的目录一个个的执行了上面的命令

Linux索引节点(Inode)用满导致空间不足

https://blog.csdn.net/liuxiao723846/article/details/79423581 https://blog.csdn.net/samxx8/article/details/44779245 原文地址:https://www.cnblogs.com/jing1617/p/10419670.html

inode 索引节点和软硬链接

Inode 索引节点 inode(index node)表中包含文件系统所有文件列表 一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括: 文件类型,权限,UID,GID 链接数(指向这个文件名路径名称个数) 该文件的大小和不同的时间戳 指向磁盘上文件的数据块指针 有关文件的其他数据 inode表结构 ls -i 可以查看节点编码 Inode table 节点表 是存放元数据的,每一个分区都有一个节点表. 在一个分区里一个文件只有一个节点号,就像人的身份证号 硬链接: 命令是l

Linux索引节点以及链接

在学习Linux中,索引节点以及链接概念都是一个既简单又重要的基础概念,一下是我学习这两个概念的总结,在此分享给大家,如有不当之处,敬请各位大神留言提醒,谢谢! 1.0  Linux索引节点 在Linux文件系统中,不管什么类型的文件,保存在磁盘分区中,系统都会给它分配一个编号,称为索引节点index node.在Linux中,存在多个文件指向同一个inode,这种情况一般称为硬链接[hard link]. 一个索引节点(inode)是在一个表项,包含有关文件的信息(元数据),包括:文件类型,权

linux中文件索引节点知识

概念 索引节点     inode表中包含了文件系统所有文件列表     一个节点是在一个表项里,包含文件数据(元数据).         1.文件类型,权限,UID,GID         2.链接数(指向这个文件名路径名称个数)         3.文件的大小和时间戳         4.指向磁盘上文件的指针         5.有关文件的其他数据         6.inode 索引节点编号 inode表结构      直接块指针:有12个块直接指向对应的数据单元,每个数据单元可以容纳4K