Table of Contents
Find inode usage
Updated Jun 8th, 2021 at 15:12 BST
Disk space issues can be caused by large files or too many inodes. Inodes store information about files and directories (folders), such as file ownership, access mode (read, write, execute permissions), and file type. The maximum number of inodes, like disk space, is set when the server is created.
Symptoms:
Some symptoms of too many inodes will be the same as disk space issues.
You may receive emails from Plesk or WHM that inode limits are being approached or have been exceeded.
You may receive error messages like Out of disk space. Unable to write content to file or failed: No space left on device.
You may receive these errors when, in fact, there is plenty of physical disk space available.
The server may hang or take a long time to respond when attempting to view the contents of a directory.
Warning: This article is intended for advanced SSH users. If you don't know the purpose of a file or folder, don't remove it. Removing system files or directories is irreversible and may break the server (taking all of the sites down).
Switch to the root user.
For an overview of disk usage on the server, use the "df" command.
[root@server[~]: df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/ploop29904p1 125684164 11693260 107699656 10% /
devtmpfs 524288 60 524228 1% /dev
tmpfs 524288 1 524287 1% /dev/shm
tmpfs 524288 311 523977 1% /run
tmpfs 524288 10 524278 1% /sys/fs/cgroup
tmpfs 524288 1 524287 1% /run/user/1000
If you have exhausted the inodes within your main file system, it may look similar to the example below:
[root@server[~]: df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/ploop29904p1 7864320 7864222 82 100% /
devtmpfs 524288 60 524228 1% /dev
tmpfs 524288 1 524287 1% /dev/shm
tmpfs 524288 311 523977 1% /run
tmpfs 524288 10 524278 1% /sys/fs/cgroup
tmpfs 524288 1 524287 1% /run/user/1000
To view the inode distribution within the current working directory:
find * -maxdepth 0 -type d -exec sh -c "echo -n {} ' ' ; ls -lR {} | wc -l" \;
So, if you switched to the root directory of the server and ran the command, it would produce output that looks like this:
[root@server[~]: cd /
root@server[/]: find * -maxdepth 0 -type d -exec sh -c "echo -n {} ' ' ; ls -lR {} | wc -l" \;
backup 2
boot 7
dev 78
etc 7769
home 1448
lost+found 2
media 2
mnt 2
opt 11749
proc 21481
root 56
run 393
srv 2
sys 1643
tmp 11
usr 231243
var 7468179
In the example, you can see that the var directory contains the bulk of the inodes. For more specifics, move into /var and run the command again.
Note: It is important to drill down enough in the filesystem to separate what can be removed (like cache files) from what can't be removed (like your email content).
[root@server[/]: cd /var
root@server[/var]: find * -maxdepth 0 -type d -exec sh -c "echo -n {} ' ' ; ls -lR {} | wc -l" \;
adm 2
cache 779
cpanel 13698
db 20
empty 6
games 2
gopher 2
installatron 48856
kerberos 10
lib 13004
local 2
log 419
named 49
nis 2
opt 2
preserve 2
spool 7391257
tmp 29
www 18
yp 2
In the example above, you can see that the /var/spool directory is where the bulk of the inodes are being used. We know this is where the email queue is located on a WHM/cPanel server, so we can come to the conclusion that we have an issue with excessive email messages that need to be addressed.
Not out of inodes?
Too many inodes in a single folder can cause performance issues, even if inodes aren't exhausted on the server. This may be more noticeable if you have several directories with more than 1,024 inodes.
To scan all of the directories on the server, and list the 20 directories with the largest amount of inodes, you can use this command:
find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n | tail -20]]>
The output of the command will look like this:
[root@server ~]# find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n | tail -20
2180 /home/onecool/public_html/wp-content/uploads/2018/05
2180 /home/onecool/public_html/wp-content/uploads/2019/07
2271 /home/onecool/public_html/wp-content/uploads/2019/05
2683 /home/onecool/public_html/wp-content/uploads/2020/11
2768 /home/onecool/public_html/wp-content/uploads/2020/09
2822 /home/onecool/public_html/wp-content/uploads/2019/12
2929 /home/onecool/public_html/wp-content/uploads/2020/06
3064 /home/onecool/public_html/wp-content/uploads/2020/04
3100 /home/onecool/public_html/wp-content/uploads/2020/07
3186 /home/onecool/public_html/wp-content/uploads/2020/08
3332 /home/onecool/public_html/wp-content/uploads/2020/01
3354 /home/onecool/public_html/wp-content/uploads/2019/11
3445 /home/onecool/public_html/wp-content/uploads/2020/02
3706 /home/onecool/public_html/wp-content/uploads/2019/09
3743 /home/onecool/public_html/wp-content/uploads/2020/03
3846 /opt/cpanel/ea-openssl11/share/doc/openssl/html/man3
3846 /opt/cpanel/ea-openssl11/share/man/man3
3964 /home/onecool/public_html/wp-content/uploads/2019/08
4845 /home/onecool/public_html/wp-content/uploads/2020/05
5078 /home/onecool/public_html/wp-content/uploads/2020/10
Once you have identified where the use is, you can remove content and work to prevent the issue from happening again.