美国服务器磁盘满/IO 瓶颈怎么办?6 步排查与扩容方案
发布时间:2026-10-15
问题一:磁盘空间突然满了
- 表现:
No space left on device,服务无法写入,数据库崩溃,网站 500。 - 可能原因:① 日志没切割撑满 /var/log;② 数据库 binlog 没清理;③ 备份文件残留;④ 上传目录被刷。
- 排查步骤:
1.df -h看哪个分区满;
2.du -sh /* | sort -rh | head -20找大目录;
3.du -sh /var/log/* | sort -rh | head查日志。 - 快速修复:
1. 清理旧日志:find /var/log -type f -name "*.log" -mtime +7 -delete;
2. 清理 binlog(MySQL):PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);;
3. 配置 logrotate 自动切割。
问题二:磁盘 IO 高导致服务卡
- 表现:
iostat显示%util接近 100%,await很高,数据库查询慢。 - 可能原因:① 慢查询导致大量随机 IO;② 日志频繁写入;③ 磁盘快满了(剩余 <10%);④ 云盘 IOPS 到上限。
- 排查步骤:
1.iostat -x 1 5看 IO 使用率;
2.iotop找 IO 最高的进程;
3. MySQL:SHOW PROCESSLIST找慢查询。 - 快速修复:
1. 加索引或优化慢查询;
2. 日志写独立盘,不与数据盘混用;
3. 升级 SSD/NVMe,IOPS 提升 5–20 倍;
4. 读多写少场景加 Redis 缓存。
问题三:inode 用尽(空间有但无法写入)
- 表现:
df -h显示还有空间,但No space left on device。 - 可能原因:大量小文件占满 inode(如 session 文件、缓存碎片、邮件队列)。
- 排查步骤:
df -i看 inode 使用率。 - 快速修复:
1. 清理小文件:find /tmp -type f -mtime +1 -delete;
2. 检查 session/缓存目录;
3. 长期:格式化时加大 inode 比例,或用 XFS。
问题四:云盘 IOPS 到上限
- 表现:
iostat显示 IOPS 稳定在某个值(如 3000/5000)上不去,延迟飙升。 - 可能原因:云盘有 IOPS 上限(按容量计费),容量小则上限低。
- 排查步骤:看云厂商控制台的磁盘 IOPS 配额。
- 快速修复:
1. 升级云盘类型(如 gp2 → gp3/io1/io2);
2. 或改用裸金属本地 NVMe,无 IOPS 上限。
问题五:RAID 阵列降级/磁盘故障
- 表现:裸金属服务器
mdadm或硬件 RAID 提示 degraded,磁盘 SMART 报错。 - 可能原因:物理磁盘坏块、寿命到限。
- 排查步骤:
1.cat /proc/mdstat看软件 RAID;
2.smartctl -a /dev/sda看 SMART;
3. 硬件 RAID 用megacli或厂商工具。 - 快速修复:
1. 立即申请换机或换盘(不要等全盘坏);
2. 从备份恢复或用 RAID 重建;
3. 裸金属建议 RAID 1/10,不要 RAID 0。
问题六:如何预防磁盘问题?
- 监控:磁盘使用率 >80%、inode >80%、IOPS >80% 上限 告警。
- 日志:logrotate 自动切割 + 保留 7–30 天。
- 备份:每日增量备份到异地,保留 7 天 + 月度全量。
- 预警:磁盘 SMART 实时监控,坏块预警提前 1–2 周。