我有一个磁盘驱动器,其中inode使用率为100%(使用df -i命令)。 但是在大量删除文件后,使用率仍然是100%。

那么正确的做法是什么呢?

一个磁盘空间使用较少的磁盘驱动器怎么可能有 更高的Inode使用率比更高的磁盘驱动器磁盘空间使用率?

它是可能的,如果我压缩大量的文件,会减少使用的索引节点数?


当前回答

到目前为止,这个问题有很多答案,上面所有的答案似乎都是具体的。我认为你使用stat是安全的,但根据操作系统的不同,你可能会遇到一些inode错误。因此,使用64位来实现自己的统计调用功能以避免任何溢出问题似乎是相当兼容的。

其他回答

如果您非常不幸,您已经使用了大约100%的inode,并且无法创建scipt。 你可以用df -ih来检验。

那么这个bash命令可以帮助您:

sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

是的,这将花费时间,但您可以找到拥有最多文件的目录。

这篇文章拯救了我: https://bewilderedoctothorpe.net/2018/12/21/out-of-inodes/

find . -maxdepth 1 -type d | grep -v '^\.$' | xargs -n 1 -i{} find {} -xdev -type f | cut -d "/" -f 2 | uniq -c | sort -n

我的情况是我没有inodes了,我已经删除了所有我能删除的东西。

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361     11  100% /

我使用的是ubuntu 12.04LTS,无法删除旧的linux内核,它占用了大约400,000个inodes,因为apt因为缺少一个包而损坏了。我无法安装新包,因为我没有inodes了,所以我被卡住了。

我最终手动删除了一些旧的linux内核,以释放大约10,000个inode

$ sudo rm -rf /usr/src/linux-headers-3.2.0-2*

这足以让我安装丢失的包并修复我的apt

$ sudo apt-get install linux-headers-3.2.0-76-generic-pae

然后使用apt删除剩余的旧Linux内核

$ sudo apt-get autoremove

现在情况好多了

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361 434719   54% /

迟到的回答: 对我来说,是我的会话文件

/var/lib/php/sessions

使用Inodes的。 我甚至无法打开crontab或创建新目录,更不用说触发删除操作了。 因为我使用PHP,所以在本指南中,我复制了示例1中的代码,并设置了cronjob来执行这部分代码。

<?php
// Note: This script should be executed by the same user of web server 
process.

// Need active session to initialize session data storage access.
session_start();

// Executes GC immediately
session_gc();

// Clean up session ID created by session_gc()
session_destroy();
?>

如果您想知道我是如何打开crontab的,那么好吧,我通过CLI手动删除了一些会话。

希望这能有所帮助!

执行sudo apt-get autoremove命令 在某些情况下,它是有效的。如果存在以前未使用的头数据,则将清除这些数据。