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

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

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

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


当前回答

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

/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手动删除了一些会话。

希望这能有所帮助!

其他回答

即使磁盘不是很满,也很容易在磁盘上使用大量的inode。

inode被分配给一个文件,因此,如果您有无数个文件,每个文件都是1个字节,那么在耗尽磁盘之前,您就会耗尽inode。

如果文件有多个硬链接,删除文件也可能不会减少inode计数。正如我所说,inode属于文件,而不是目录条目。如果一个文件有两个目录条目链接到它,删除一个不会释放inode。

此外,您可以删除目录条目,但如果正在运行的进程仍然打开该文件,则不会释放inode。

我最初的建议是尽可能删除所有文件,然后重新启动计算机,以确保没有进程保留这些文件。

如果你这样做,你仍然有问题,让我们知道。

顺便说一下,如果你正在寻找包含大量文件的目录,这个脚本可能会有帮助:

#!/bin/bash

# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

在上面的一个回答中,有人建议会话是inode耗尽的原因,在我们的例子中正是如此。为了补充这个答案,我建议检查php.ini文件并确保session。Gc_probability = 1也是session。gc_除数= 1000和 会话。Gc_maxlifetime = 1440。在我们的案例会议上。Gc_probability等于0,导致了这个问题。

我有同样的问题,通过删除php的目录会话来修复它

rm -rf /var/lib/php/sessions/

如果您使用的是较旧的php版本,它可能在/var/lib/php5下。

使用以下权限重新创建它

mkdir /var/lib/php/sessions/ && chmod 1733 /var/lib/php/sessions/

Debian默认目录权限显示drwx-wx-wt (1733)

我的情况是我没有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手动删除了一些会话。

希望这能有所帮助!