我有一个磁盘驱动器,inode使用率为100%(使用df -i
命令).但是,在大幅删除文件后,使用率仍为100%.
这样做的正确方法是什么?
如果磁盘空间使用量较少的磁盘驱动器可能比磁盘空间使用率较高的磁盘驱动器具有更高的Inode使用率,那怎么可能?
如果我压缩很多文件会减少使用的inode数量吗?
如果你非常不走运,你已经使用了大约100%的inode并且无法创建scipt.你可以用它来检查df -ih
.
然后这个bash命令可以帮助你:
sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
是的,这需要时间,但您可以找到包含最多文件的目录.
即使磁盘不是很满,磁盘也很容易使用大量的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,我已经删除了我能做的一切.
$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 942080 507361 11 100% /
我使用的是ubuntu 12.04LTS并且无法删除占用大约400,000个inode的旧Linux内核,因为apt因包丢失而被破坏.我无法安装新的软件包因为我没有inode所以我被卡住了.
我最终手动删除了一些旧的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% /
我的解决方案
尝试查找这是否是inode问题:
df -ih
尝试查找具有大inode计数的根文件夹:
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
这解决了我的问题.
我有同样的问题,通过删除PHP的目录会话修复它
rm -rf /var/lib/php/sessions/
/var/lib/php5
如果您使用较旧的PHP版本,它可能会下.
使用以下权限重新创建它
mkdir /var/lib/php/sessions/ && chmod 1733 /var/lib/php/sessions/
Debian目录的默认权限显示drwx-wx-wt
(1733)