Introduction

Web hosting providers limit the number of files (inodes) per account to ensure fair resource usage. When an account exceeds this limit -- often due to accumulated session files, email queues, cache files, or log files -- the hosting provider suspends the account, making the website and email inaccessible.

Symptoms

  • Website returns Account Suspended or 503 Service Unavailable page
  • cPanel login shows Inode usage exceeded warning
  • Email delivery fails with Mailbox full or quota exceeded errors
  • SSH access returns No space left on device when creating new files
  • cPanel dashboard shows inode usage at 100% of the plan limit

Common Causes

  • Session files accumulating in /tmp or sessions directory
  • Email queue filling up with undeliverable messages
  • Cache directories (WordPress, application caches) growing unbounded
  • Log files not being rotated, creating thousands of small log files
  • Git repository with many small files in the .git directory

Step-by-Step Fix

  1. 1.Check inode usage by directory: Find which directories consume the most inodes.
  2. 2.```bash
  3. 3.# SSH into the account (if accessible) or use cPanel File Manager
  4. 4.for dir in /home/username/*/; do
  5. 5.count=$(find "$dir" -xdev -type f | wc -l)
  6. 6.echo "$count $dir"
  7. 7.done | sort -rn | head -20
  8. 8.`
  9. 9.Remove accumulated session files: Clean up temporary files.
  10. 10.```bash
  11. 11.# Remove old session files (older than 24 hours)
  12. 12.find /home/username/tmp/sessions -type f -mtime +1 -delete
  13. 13.# Remove old cache files
  14. 14.find /home/username/public_html/wp-content/cache -type f -mtime +7 -delete
  15. 15.`
  16. 16.Clear the email queue: Remove stuck emails.
  17. 17.```bash
  18. 18.# List queued emails
  19. 19.exim -bpc
  20. 20.# Remove frozen messages
  21. 21.exim -Mrm $(exim -bp | grep frozen | awk '{print $3}')
  22. 22.`
  23. 23.Delete old log files: Remove rotated logs that accumulated.
  24. 24.```bash
  25. 25.# Remove old access logs
  26. 26.find /home/username/access-logs -type f -mtime +30 -delete
  27. 27.# Compress remaining logs
  28. 28.find /home/username/logs -name "*.log" -mtime +7 -exec gzip {} \;
  29. 29.`
  30. 30.Contact hosting provider to restore the account: Request unsuspension after cleanup.
  31. 31.`
  32. 32.# After reducing inode count below the limit:
  33. 33.# Contact hosting support to unsuspend the account
  34. 34.# Verify website and email are working after unsuspension
  35. 35.`

Prevention

  • Monitor inode usage in cPanel and alert when usage exceeds 80%
  • Configure automatic cleanup of session files and cache directories
  • Set up log rotation with compression and deletion of old logs
  • Use database-backed sessions instead of file-based sessions
  • Implement email forwarding rules to prevent queue buildup
  • Choose a hosting plan with adequate inode limits for the expected file count