805 字
约 2 分钟
8
S15-B05 · 磁盘、分区与挂载
适用读者:遇到"磁盘满了但文件不大"的人。
前置:S15-B01。
实测环境:Ubuntu 24.04(2026-11-05)。
覆盖旧文:1339(34) 1326(25) 1298(29) = 88 点。
覆盖扩展:E-S15-012(inode 与"删了文件空间不释放")。
上一篇:S15-B04 · 进程、端口与内存
下一篇:S15-B06 · 时间、时区与系统信息。
1. 一句话结论
"磁盘满"有两种:块(block)满和 inode 满。前者看 df -h,后者看 df -i——文件很小但数量极多时,inode 会先耗尽。
实测(本机):
df -h / → 97G 32G 66G 33%
df -i / → 12,902,400 inodes, 517,596 used (5%)
2. df 与 du 的分工
| 命令 | 看什么 | 典型用途 |
|---|---|---|
df -h |
文件系统级总量/已用 | 哪个挂载点满了 |
df -i |
inode 使用 | 是否 inode 耗尽 |
du -sh dir |
目录级占用 | 哪个目录大 |
du -h --max-depth=1 | sort -h |
逐层排序 | 定位大目录 |
"为什么 df 满了但 du 加起来不够":被删除但仍被进程打开的文件(lsof | grep deleted)——空间要等进程关闭才释放。
3. 分区、格式化与挂载(A-1339/A-1326/A-1298)
| 步骤 | 命令 |
|---|---|
| 看磁盘 | lsblk / fdisk -l |
| 分区 | fdisk /dev/sdb / parted |
| 格式化 | mkfs.ext4 /dev/sdb1 |
| 挂载 | mount /dev/sdb1 /data |
| 开机自动挂载 | /etc/fstab(改错会导致启动失败) |
fstab 的安全做法:加 nofail 选项,避免挂载失败阻断启动。
判据:"这块盘会不会在开机时不可用?" 会(云盘/网络盘)→ 必须 nofail。
4. 空间不足的四步处置
① df -h 看哪个挂载点满
② du -sh /* 2>/dev/null | sort -h | tail 找大目录
③ 如果是日志:logrotate 或 truncate(不要直接 rm 正在写的日志)
④ 如果 inode 满:找小文件海(find / -xdev -type f | wc -l 按目录统计)
"为什么不要 rm 正在写的大日志":文件仍被进程持有 → 空间不释放。正确做法 truncate -s 0 或让服务重开日志。
5. 五个误区
| 误区 | 真相 |
|---|---|
"df 满就是文件多" |
可能是 inode 或已删除文件 |
"rm 大日志立刻释放空间" |
进程还持有就不释放 |
"fstab 写错无所谓" |
可能导致无法启动 |
"du 与 df 数字必须相等" |
统计口径不同(含保留块/删除文件) |
| "扩容就能解决" | 先找根因 |
6. 自检
df -h与df -i各查什么?- "删了文件空间没释放"的原因?
fstab为什么要nofail?- 为什么不要
rm正在写的日志? - 定位大目录的命令组合?
7. 下一篇
S15-B06 · 时间、时区与系统信息
磁盘讲完,下一篇讲"时间不对会炸什么":时区、NTP 与系统信息命令。
本篇属于系列《S15 · Linux 与运维》。旧文来源:A-1339/1326/1298;扩展点 E-S15-012。df/df -i 为 Ubuntu 24.04 实测。
S15-B05 · 磁盘、分区与挂载
https://www.clxhxhhr.top/posts/5393/ 评论
0 条
还没有评论,先写一条吧。