I have a disk drive where the inode usage is 100% (using df -i command). However after deleting files substantially, the usage remain 100%.
What’s the correct way to do it then?
How is it possible that a disk drive with less disk space usage can have higher Inode usage than disk drive with higher disk space usage?
It’s quite easy for a disk to have a large number of inodes used even if the disk is not very full.
An inode is allocated to a file so, if you have gazillions of files, all 1 byte each, you’ll run out of inodes long before you run out of disk.
It’s also possible that deleting files will not reduce the inode count if the files have multiple hard links. As I said, inodes belong to the file, not the directory entry. If a file has two directory entries linked to it, deleting one will not free the inode.
Additionally, you can delete a directory entry but, if a running process still has the file open, the inode won’t be freed.
My advice would be to delete all the files you can, then reboot the box to ensure no processes are left holding the files open.
If you are very unlucky you have used about 100% of all inodes and can’t create the scipt. You can check this with the command
$ df -ih
then below command may help you:
$ sudo find . -xdev -type f | cut -d “/” -f 2 | sort | uniq -c | sort -n
And yes, this will take time, but you can locate the directory with the most files