Linux/centos inode 占用100%的解决办法

当你的 Linux 系统没法建立新文件时,有多是你的磁盘满了,还有多是你的磁盘的 inode 用光了,咱们今天要说的就是后一种状况,要解决这个问题,只能是删除一些文件,可是通常状况下,实际上是你的系统中的某个地方产生了大量的你并不须要的文件,你要作的就是找到他们并删除就能够了,我并非让你删除你有用的文件,由于你通常不会有那么多有用的文件来把系统的 inode 用光。
什么是 inode ?
文件储存在硬盘上,硬盘的最小存储单位叫作”扇区”(Sector)。每一个扇区储存512字节(至关于0.5KB)。
操做系统读取硬盘的时候,不会一个个扇区地读取,这样效率过低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最多见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在”块”中,那么很显然,咱们还必须找到一个地方储存文件的元信息,好比文件的建立者、文件的建立日期、文件的大小等等。这种储存文件元信息的区域就叫作inode,中文译名为”索引节点”。
每个文件都有对应的inode,里面包含了与该文件有关的一些信息。
如何查看系统的 innode 占用状况
df -i
如何查找那个目录下文件最多
首先切到根目录  /
cd /
而后执行
for i in /*; do echo $i ; find $i | wc -l; done
或者(如下命令能够任意目录执行)
for i in `ls -1A | grep -v "\.\./" | grep -v "\./"`; do echo "`find $i | sort -u | wc -l` $i"; done | sort -rn | head -10

这样会依次返回 / 目录下文件最多的目录,进入这个目录,再执行上述命令,就这样层层深刻最终肯定是那个目录文件最多node

如何删除那个目录的的全部文件
通常状况下,若是这个目录下应该会有数以百万的文件,若是你直接用  rm -rf 目录名  的话效率会很低,能够用下面方法
find 目录 - type f -name '*' -print0 | xargs - 0 rm
时间可能会比较久,因此你最好开一个 screen 来处理
有多是你遇到了下面的状况
/var/spool/postfix/maildrop 下面有不少文件该目录为cron计划任务时记录的日志文件
为了不,能够执行  crontab -e
在最开头添加  MAILTO=""  保存 这样就不会记录日志了,而后  server crond restart  重启 crond
能够执行
cd /var/spool/postfix/maildrop
rm -rf * //命令删除全部文件若是太多这个命令会报错,能够用下面的命令
ls | xargs -n 10 rm -rf 循环删除
相关文章
相关标签/搜索