详解Linux系统中inode索引节点已满问题的解决方法

悲欢浙借华

悲欢浙借华

2016-03-31 16:39

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是详解Linux系统中inode索引节点已满问题的解决方法,一起来学习了解下吧!

详解Linux系统中inode索引节点已满问题的解决方法

   今天login server的一个网站,发现login后没有生成session。根据以往经验,一般是空间已满导致session文件生成失败。

  代码如下:

  df -h

  代码如下:

  Filesystem Size Used Avail Use% Mounted on

  /dev/mapper/dev01-root 75G 58G 14G 82% /

  udev 2.0G 4.0K 2.0G 1% /dev

  tmpfs 396M 292K 396M 1% /run

  none 5.0M 0 5.0M 0% /run/lock

  none 2.0G 4.0K 2.0G 1% /run/shm

  /dev/sda1 228M 149M 68M 69% /boot

  空间剩余14G,可以排除空间已满的情况。导致文件生成失败还有另一个原因,就是文件索引节点inode已满。

  代码如下:

  df -i

  代码如下:

  Filesystem Inodes IUsed IFree IUse% Mounted on

  /dev/mapper/dev01-root 4964352 4964352 0 100% /

  udev 503779 440 503339 1% /dev

  tmpfs 506183 353 505830 1% /run

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/fuwuqi/)

  none 506183 5 506178 1% /run/lock

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/fuwuqi/)

  none 506183 2 506181 1% /run/shm

  /dev/sda1 124496 255 124241 1% /boot

  inodes 占用100%,果然是这个问题。

  解决方法:删除无用的临时文件,释放inode。

  查找发现 /tmp 目录下有很多sess_xxxxx的 session临时文件。

  代码如下:

  ls -lt /tmp | wc -l

  4011517

  进入/tmp目录,执行find -exec命令

  代码如下:

  sudo find /tmp -type f -exec rm {} ;

  如果使用rm *,有可能因为文件数量太多而出现Argument list too long错误。除了/tmp的临时文件外,0字节的文件也会占用inode,应该也释放。

  遍历寻找0字节的文件,并删除。

  代码如下:

  sudo find /home -type f -size 0 -exec rm {} ;

  删除后,inode 的使用量减少为19%,可以正常使用了。

  代码如下:

  df -i

  代码如下:

  Filesystem Inodes IUsed IFree IUse% Mounted on

  /dev/mapper/dev01-root 4964352 940835 4023517 19% /

  udev 503779 440 503339 1% /dev

  tmpfs 506183 353 505830 1% /run

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/fuwuqi/)

  none 506183 5 506178 1% /run/lock

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/fuwuqi/)

  none 506183 2 506181 1% /run/shm

  /dev/sda1 124496 255 124241 1% /boot

  PS:什么是inode

  linux中,文件查找不是通过文件名称来查找的。实际上是通过inode来实现文件的查找定位的。我们可以形象的将inode看做是一个指针fip。当文件存储到磁盘上去的时候,文件肯定会存放到一个磁盘位置上,可以这样想象,既然文件数据是存放在磁盘上的,如果我们知道这个文件数据的地址,当我们想要读写文件的时候,我们是不是直接使用这个地址去找到文件就可以了呢?

  是的,linux下,inode其实就是可以这么认为,把inode看作是一个指向磁盘上该文件存储区的地址。只不过这个地址我们一般是没办法直接使用的,而是通过文件名来间接使用的。事实上,inode不仅包含了文件数据存储区的地址,还包含了很多信息,比如数据大小,等等文件信息。但是inode是不保存文件名的。文件名是保存在一个目录项中。每一个目录项中都包含了文件名和inode。

  我们可以通过一个图来看看目录项,inode,文件数据四者之间的关系。

201633115915009.jpg (640×483)

  从上图可以看到,目录项中包含了文件名和inode。

展开更多 50%)
分享

猜你喜欢

详解Linux系统中inode索引节点已满问题的解决方法

服务器
详解Linux系统中inode索引节点已满问题的解决方法

MAC解决Spotlight 的‘索引中问题

服务器
MAC解决Spotlight 的‘索引中问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

图解win8.1系统蓝屏问题的解决方法

电脑入门
图解win8.1系统蓝屏问题的解决方法

Linux系统中head命令实例详解

电脑入门
Linux系统中head命令实例详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Linux系统造成处理Tomcat异常的原因和解决方法

服务器
Linux系统造成处理Tomcat异常的原因和解决方法

Linux系统中file命令的使用详解

服务器
Linux系统中file命令的使用详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

玩Win7自带截图工具 任意形状随心裁

玩Win7自带截图工具 任意形状随心裁

Win7美化攻略:替换imageres.dll图标全变样

Win7美化攻略:替换imageres.dll图标全变样
下拉加载更多内容 ↓