我有一个磁盘驱动器,其中inode使用率为100%(使用df -i命令)。 但是在大量删除文件后,使用率仍然是100%。
那么正确的做法是什么呢?
一个磁盘空间使用较少的磁盘驱动器怎么可能有 更高的Inode使用率比更高的磁盘驱动器磁盘空间使用率?
它是可能的,如果我压缩大量的文件,会减少使用的索引节点数?
我有一个磁盘驱动器,其中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耗尽的原因,在我们的例子中正是如此。为了补充这个答案,我建议检查php.ini文件并确保session。Gc_probability = 1也是session。gc_除数= 1000和 会话。Gc_maxlifetime = 1440。在我们的案例会议上。Gc_probability等于0,导致了这个问题。
迟到的回答: 对我来说,是我的会话文件
/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存储使用情况:
df -i
下一步就是找到那些文件。为此,我们可以使用一个小脚本列出目录和其中的文件数量。
for i in /*; do echo $i; find $i |wc -l; done
从输出中,您可以看到使用大量文件的目录,然后对该目录重复此脚本,如下所示。重复该操作,直到看到可疑目录。
for i in /home/*; do echo $i; find $i |wc -l; done
当您发现有大量不需要的文件的可疑目录时。只需删除该目录上不需要的文件,并通过以下命令释放一些inode空间。
rm -rf /home/bad_user/directory_with_lots_of_empty_files
你已经成功地解决了这个问题。现在再次使用df -i命令检查inode的使用情况,您可以看到如下的差异。
df -i
如果你使用docker,删除所有图像。他们使用了很多空间....
停止所有容器
docker stop $(docker ps -a -q)
删除所有容器
docker rm $(docker ps -a -q)
删除所有图片
docker rmi $(docker images -q)
对我有用
我们最近遇到了类似的问题,如果一个进程指向一个被删除的文件,Inode不会被释放,所以你需要检查lsof /, kill/ restart进程会释放Inode。
如果我说错了,请指正。