Why Your Linux Server Runs Out of Inodes and How to Fix It
The article explains what inodes are, why they can become fully consumed even when disk space remains, and provides step‑by‑step Linux commands and cron adjustments to identify the offending directories, delete excess files, and prevent future inode exhaustion.
1. What is an inode?
In Linux, file data is stored in blocks, while metadata such as owner, timestamps, and size is stored in a structure called an inode (index node). During formatting the disk is split into a data area and an inode table that holds these metadata entries.
Typical inode sizes are 128 bytes or 256 bytes, and the total number of inodes is fixed at format time (often one inode per 1 KB or 2 KB of space). For example, on a 1 GB disk with 128‑byte inodes and one inode per 1 KB, the inode table would occupy about 128 MB (12.8% of the disk).
2. When inodes run out
Running out of inodes is similar to running out of disk space: you cannot create new files or execute certain commands. This often happens when many small files are created, filling the inode table while the actual data usage remains low.
Typical monitoring commands: df -h – shows overall disk usage. df -i – shows inode usage.
In the example, disk space was only 71% used, but inode usage reached 100%.
3. How to resolve inode exhaustion
Inodes are allocated when the filesystem is created; larger partitions have more inodes. Small root partitions on Linux can quickly fill if temporary or log files are not cleaned.
(1) Identify directories with the most files for i in /*; do echo $i; find $i | wc -l; done Running this command revealed that /var/spool/postfix/maildrop contained many tiny files generated by failed cron‑email notifications.
Additionally, a per‑minute cron job created a small file each time, further contributing to inode consumption.
(2) Delete the excess files ls | xargs -n 1000 rm -rf Use xargs to batch deletions and avoid argument‑list‑too‑long errors.
Preventive measures
Disable mail notifications from cron by adding MAILTO="" to crontab -e.
Redirect unwanted cron output to /dev/null: */10 * * * * /tmp/test.sh >/dev/null 2>&1 Schedule regular cleanup of old files, e.g.:
find /path/to/dir -type f -mtime +30 | xargs -n 1000 rm -fMonitor inode usage periodically with df -i and adjust cron jobs accordingly.
4. Summary
Inode exhaustion can be avoided by proper cron configuration, redirecting unnecessary output, and implementing periodic file cleanup. Regular monitoring of inode usage helps catch issues before they block file creation.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Liangxu Linux
Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
