当Linux系统的inode使用率达到100%时,即使磁盘空间还有剩余,系统也无法创建新文件或目录。以下是解决这个问题的详细步骤:
df -i
# 或者查看特定分区
df -i /dev/sda1
# 查看当前目录下各子目录的文件数量
for i in /*; do echo $i; find $i | wc -l; done
# 更详细的版本
find /path/to/directory -type f | awk -F/ '{print $NF}' | sort | uniq -c | sort -nr
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
# 清理/tmp目录
rm -rf /tmp/*
# 清理旧的日志文件
find /var/log -type f -name "*.log" -mtime +30 -delete
# 删除小于1KB的文件
find /path/to/search -type f -size -1k -delete
# 对于Postfix
postsuper -d ALL
# 清理无用的容器、镜像和卷
docker system prune -a
# 清理PHP会话文件
rm -rf /var/lib/php/sessions/*
如果经常遇到inode耗尽问题,考虑:
1. 重新格式化分区时增加inode数量
bash
mkfs.ext4 -N <inode数量> /dev/sdX
2. 使用更大的inode比例(默认是每16KB空间分配一个inode)
bash
mkfs.ext4 -i <bytes-per-inode> /dev/sdX
将以下命令加入cron定期检查:
df -i | awk '{print $5}' | grep -v Use | sort -nr | head -1
如果系统已经无法创建新文件,但需要立即恢复操作:
# 创建一个临时挂载点
mkdir /mnt/temp
mount /dev/sdX /mnt/temp
这样可以在临时挂载点上继续操作,同时解决主文件系统的inode问题。
通过以上步骤,您应该能够有效解决inode使用率100%的问题。