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

嗯,两天前,我的工作电脑突然像老爷车一样死机了。
鼠标能动一会儿,但键盘上敲的字却好像什么也没有。
重启也没用,只好重装系统。
安装完系统后,发现共享磁盘的空间突然变小,导致满了。
这让我想起了之前在服务器上遇到的一个情况。

我记得2 01 9 年春天左右,我负责维护一台运行多个网站的服务器。
当时什么都没有,只是定期检查。
有一天,我登录服务器,发现我的硬盘突然空间不足。
我用 df -h 检查发现根目录几乎已满,但我无法判断哪个文件占用了空间。
用du来一一检查也很麻烦。

这时候,有同事提醒我试试df -i。
当我看到的时候,天哪,inode利用率居然是1 00%! Linux 中有两种类型的文件系统。
一种是我们平时使用的,直接通过文件名索引,称为普通文件系统;另一种是像U盘、SSD这样的类型,必须通过索引节点inode找到,称为ext系列。
该服务器使用ext4 ,因此已满。

解决办法其实很简单。
首先查找哪个inode目录已满,例如df -i显示/var/log已满。
进去一看,发现是临时日志目录。
我用ls -lt /var/log查看,发现很多都是几个月前的日志文件。
虽然数据文件很大,但日志文件却都是空的。

这时候就需要想办法清理了。
有些是系统自动生成的,有些旧的可以直接删除。
有些是手动加载的备份,这要看情况。
例如,我发现一些2 01 8 年的文件显然没有用,所以我直接使用 sudo rm 删除它们。
还有一些临时文件,例如下载的包。
我用 sudo find /var/log -type f -size 0 -exec rm {} \;删除所有 0 字节文件。
注意这里有\;在查找命令中。
这是限制,不能拼写错误,否则会报语法错误。

清理后,使用df -i查看一下,发现inode使用率下降了。
这时候再查看df -h,已经释放了不少硬盘空间。
这时我才明白什么是inode。
它是文件的身份证,包含文件在哪里、有多大、谁有权查看等信息,但文件名是单独存储的。
就像图书馆里的书一样,它有书名(文件名)、书架号(索引节点),书架上有书的内容(数据)。

等一下,我忘了说,有时还有一些隐藏文件,例如.tmp和.bak,也需要清理。
这次在电脑上重装系统后,轻松使用了 sudo find /tmp -type f -size 0 -exec rm {} \;来清洁它。
虽然只有几个小文件,但是以后我就不用再处理这种麻烦了。

现在想想,其实这些小技巧只要你多留意一下还是蛮有用的。
但话说回来,空间服务器硬盘空间不足,应该先清理哪些文件?有时系统注册表确实很重要,不能被意外删除。

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

上周 那个朋友 Linux inode 已满。
非常烦人
解决方案
首先使用 df -i 检查 inode 使用情况
确认临时文件是否已满。
进入/tmp目录。
通过命令删除。
sudo find /tmp -type f -exec rm {}
0 字节文件 也可以使用删除命令。
sudo find / -type f -size 0 -exec rm {}
进入 df -i 查看
小心点。
定期清理垃圾。
不占用inode。
程序也进行了优化。
创建小文件
什么是 Indium? 系统使用索引节点来定位文件。
存储文件大小和权限等信息
文件名不存储在 inode 中。
保存到目录条目。
访问文件时,名称对应红色数字

找到第一个目录条目以获取索引节点号。
再次查找inode位置数据。

如何解决服务器存储 inode 耗尽的问题 | Linux 中国

服务器索引节点耗尽?简单地!
问题:小文件太多,inode 不够。

解决方案:创建文件系统时使用-Tsmall来分配更多的inode。

流程:先检查分区,然后用mkfs.ext4 -Tsmall格式化。

看看效果:挂载分区,用df -i查看inode。

注意:小头文件太多,大文件可能读取缓慢。

快速解决方案:删除空文件并归档小文件。

长期:监视 inode、正确分区以及修改文件系统。
首先,你自己看看。