An inode represents a filesystem object such as a file or directory. An account can have gigabytes free but fail to create one more file, so plugin extraction, uploads, sessions and email stop with “No space left” or permission-like errors.
Deleting one large archive frees bytes but only one inode. Measure file counts by area.
Confirm inode exhaustion
Use hosting resource/usage tools and error logs. Record quota, used inodes, free bytes and exact failing path.
High-count candidates:
cache directories
PHP sessions/temp
email Maildir
backup chunks
image thumbnails
staging/vendor/node_modules
security/log fragments
Do not recursively enumerate enormous trees through a web PHP script; it can time out.
Pause inode creation
Stop cache preloading, backup splitting, imports, thumbnail generation, scanners and mail loops through supported controls.
Avoid retrying plugin installs; each extraction can leave thousands of partial files.
If PHP sessions cannot be created, administrator/login behaviour may fail; preserve panel/SFTP access.
Count by directory safely
cPanel/Plesk may show file usage. On authorised shell, use bounded filesystem tools during low traffic and avoid following symlinks across accounts.
Identify owner, age and generator before deleting. A directory with many files may contain authoritative email or uploads.
Record the top counts for recurrence monitoring.
Check deployment dependencies and release copies
Composer vendor, npm node_modules, Git object packs and timestamped release directories can account for hundreds of thousands of files. Determine whether dependencies are required at runtime or should be built elsewhere.
Do not remove the active release or shared dependency target. Keep only the documented number of previous releases for rollback and package production artifacts as efficiently as the deployment supports. Rebuild on staging/CI rather than running npm install repeatedly on shared hosting.
Review WordPress thumbnail growth
Each original image can create many registered sizes; several themes/plugins can multiply the file count. Inventory current image sizes and media volume before regenerating.
Disable only unused sizes through maintained code, then clean obsolete derivatives with a WordPress-aware, backed-up tool. Never delete originals or filenames referenced in attachment metadata. Test responsive srcset after cleanup.
Clean cache and temp through owners
Use the cache plugin/host purge and PHP session retention mechanism. Confirm sessions are genuinely expired before removal.
Do not delete active session files indiscriminately; users may be logged out and transactions interrupted.
Fix cron so expired cache/session data is cleaned automatically.
Review email Maildir
Maildir uses an inode per message, so spam or catch-all loops can exhaust quota with small messages.
Use mailbox reports, archive authorised mail and apply retention/spam controls. Do not remove business email without approval.
Check Spam/Trash and disabled accounts retained indefinitely.
Inspect backups and staging
Incremental backups can create huge trees; full uncompressed staging copies duplicate every thumbnail/plugin file.
Move verified backups off-server and remove obsolete staging with exact path/ownership approval. Keep .git, dependency and build directories only where deployment needs them.
Do not remove the live site or only restore copy.
Reduce future file count
Limit unnecessary WordPress image sizes before regenerating, consolidate cache strategy and use external/object storage where appropriate.
An upgrade to a plan with higher inode allowance may be justified, but fix runaway generators first.
Set alerts before the limit; inode usage can rise faster than disk bytes.
Verify updates and normal operation
After freeing safe inode headroom, remove/repair partial update directories and install one trusted package. Confirm uploads, PHP sessions, cron and email.
Monitor file count over days. Recurring care should track both inodes and bytes; WordPress needs the ability to create many small files, not merely a large nominal disk quota.