外观
服务器空间不足
约 427 字大约 1 分钟
2025-06-19
创建目录或编辑文件时提示
No space left on device,通常由磁盘空间满或 inode 耗尽引起。
可能原因
| 原因 | 说明 |
|---|---|
| 磁盘空间已满 | 大文件、日志文件占满分区 |
| inode 耗尽 | 大量小文件(如 session、缓存)占满 inode 表 |
排查磁盘空间
1. 查看磁盘使用率
df -h2. 定位占用空间大的挂载点
cd /path/to/mountpoint例如系统盘:cd /
3. 查找占用空间最大的目录
du -x --max-depth=1 | sort -n
du -x跨文件系统时跳过其他文件系统的目录,sort -n按数值从小到大排序。
排查 inode 使用率
1. 查看 inode 使用情况
df -i2. 定位 inode 占用最多的挂载点
cd /path/to/mountpoint3. 查找文件数量最多的目录
find / -type f | awk -F / -v OFS=/ '{dir=$0; sub(/\/[^\/]+$/, "", dir); counts[dir]++} END {for (d in counts) print counts[d], d}' | sort -rn | head -20该命令较耗时,请耐心等待。
解决方案
清理磁盘空间
| 场景 | 命令 |
|---|---|
| 清理日志 | journalctl --vacuum-size=100M |
| 清空大文件 | cat /dev/null > large_file.log |
| 清理包缓存 | apt clean / yum clean all |
| 删除旧内核 | `dpkg --list |
| 查找大文件 | find / -type f -size +100M |
清理 inode
# 查找某目录下文件数量最多的子目录
find /path -type f | cut -d/ -f1-4 | sort | uniq -c | sort -rn | head
# 删除大量小文件(谨慎操作)
find /path -type f -name "*.session" -delete