我有一个磁盘驱动器,其中inode使用率为100%(使用df -i命令)。 但是在大量删除文件后,使用率仍然是100%。
那么正确的做法是什么呢?
一个磁盘空间使用较少的磁盘驱动器怎么可能有 更高的Inode使用率比更高的磁盘驱动器磁盘空间使用率?
它是可能的,如果我压缩大量的文件,会减少使用的索引节点数?
我有一个磁盘驱动器,其中inode使用率为100%(使用df -i命令)。 但是在大量删除文件后,使用率仍然是100%。
那么正确的做法是什么呢?
一个磁盘空间使用较少的磁盘驱动器怎么可能有 更高的Inode使用率比更高的磁盘驱动器磁盘空间使用率?
它是可能的,如果我压缩大量的文件,会减少使用的索引节点数?
当前回答
这篇文章拯救了我: 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
其他回答
这篇文章拯救了我: 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
我有同样的问题,通过删除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% /
我的解决方案:
尝试查找这是否是一个inodes问题:
df -ih
尝试查找索引节点数较大的根文件夹:
for i in /*; do echo $i; find $i |wc -l; done
试着找到特定的文件夹:
for i in /src/*; do echo $i; find $i |wc -l; done
如果这是linux头文件,尝试删除最老的文件:
sudo apt-get autoremove linux-headers-3.13.0-24
就我个人而言,我把它们移动到一个挂载文件夹(因为对我来说,上一个命令失败了),并安装了最新的:
sudo apt-get autoremove -f
这解决了我的问题。
对于大量的文件,可以使用RSYNC删除
rsync -a --delete blanktest/ test/
创建空白测试文件夹,其中包含0个文件,命令将与大量文件同步测试文件夹(我已经使用这种方法删除了近500万个文件)。
感谢http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux