1.
概述:为何会出现“磁盘空间可用但无法写入”的误判
(1)云厂商底层存储薄供给(thin provisioning)导致宿主上实际可用空间不足。
(2)LVM、快照或备份占用隐性空间,df -h 显示正常但逻辑卷已满。
(3)inode 耗尽:文件数量极多时 df -i 提示已满但数据块还有空间。
(4)文件被删除但仍被进程占用,可用空间未释放,lsof +L1 可查。
(5)配额或用户 quota 限制导致写入被拒绝,需查看 /etc/fstab 与 quota 设置。
(6)示例命令参考:df -h;df -i;lsblk;lvs;lsof -nP | grep deleted。
2.
IO 瓶颈产生的常见原因与表现
(1)高 iowait 与 %util 接近 100%:iostat -x 显示 await、svctm 升高。
(2)随机小 IO(4K)负载大时 IOPS 限制显著,尤其在虚拟化环境。
(3)磁盘队列饱和(queue depth 达上限),导致延迟突增与吞吐下降。
(4)同步写(fsync)频繁、数据库事务未优化会放大 IO 压力。
(5)不当文件系统参数(如 noatime/commit=)或老旧驱动影响性能。
(6)排查工具示例:iostat -x 1 3;iotop;sar -d;vmstat 1 5;fio 小文件随机读写测试。
3.
实测数据示例:fio 与 iostat 对比表
(1)测试环境:台湾某云 VPS,配置举例见下一段。
(2)fio 命令示例:fio --name=randrw --rw=randrw --bs=4k --iodepth=16 --size=2G --numjobs=4 --runtime=60 --time_based。
(3)iostat 片段示例:Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util。
(4)下面表格给出典型测试结果(居中显示,边框1,文字居中):
| 测试项 | 结果 |
| 4K 随机读写 IOPS | 读 2,100 IOPS / 写 1,800 IOPS |
| 平均延迟 await | 读 12.4 ms / 写 18.7 ms |
| %util | 主磁盘 96% |
| 吞吐量 | 约 40 MB/s 总体 |
4.
真实案例:台湾站点高 IO 导致服务不可用的排查过程
(1)背景:某电商在台湾节点业务高峰,页面频繁写入日志与会话数据,用户投诉延迟。
(2)服务器配置:4 vCPU / 8 GB RAM / 200 GB 镜像盘(thin provision)/ 虚拟化:KVM + VirtIO。
(3)初步检查:top 显示 iowait 45%,iostat %util=99%,fio 测试确认 4K 写 IOPS 低于云承诺。
(4)进一步发现:/var/log/app/ 下大量小日志文件与未轮转的 access.log 导致 inode 突出消耗。
(5)处理措施:启用日志轮转、把静态资源交由 CDN、数据库改为延迟写入合并,并向云厂商申请提升 IOPS 配额。
(6)结果:处理后 iowait 降至 8%,页面响应时间恢复,%util 降到 30% 左右。
5.
排查要点清单与命令速查
(1)检查磁盘空间:df -h;检查 inode:df -i。
(2)查看被删除文件仍占空间:lsof -nP | grep deleted。
(3)IO 性能监控:iostat -x 1 5;iotop -o;vmstat 1 5。
(4)测试真实 IO:fio(上文示例命令),并对比云厂商承诺的 IOPS/带宽。
(5)检查云端限额与挂载选项:查看 /etc/fstab、cloud-init 配置与云控制台配额。
(6)针对性优化:文件系统换用 XFS、调整 mount 参数(noatime、barrier),或启用本地缓存/缓存层(memcached、redis)与 CDN 减少写入压力。
6.
与 CDN、DDoS、域名等外部因素的关系与防护建议
(1)CDN 可显著降低源站带宽与读 IO,适合静态资源与缓存页面。
(2)DDoS 攻击可能造成大量日志写入和连接导致磁盘与 IO 突增,应结合云端抗D服务。
(3)域名解析(DNS)配置错误导致流量回源集中,也可放大 IO 压力,建议智能 DNS 与流量分发。
(4)使用 WAF 与流量清洗、限制写操作速率、对大流量进行边缘缓存可减轻源站 IO。
(5)建议建立监控告警(磁盘利用率、iowait、IOPS、inode)与自动扩容/告警机制以应对突发流量。
(6)长期策略包括冷热分离存储、异地备份与定期演练恢复流程。
7.
结论与运维建议
(1)遇到“磁盘能看到空间但无法写入”先排查 inode、被删除文件、LVM 快照与 quota。
(2)IO 瓶颈需结合 iostat、fio、iotop 定位是 IOPS、带宽、延迟或队列深度问题。
(3)针对云环境,理解厂商的 IOPS/吞吐承诺与薄供策略非常关键。
(4)通过减少写入(CDN、缓存、日志轮转)与增加 IO 配额或使用本地高性能盘来缓解。
(5)建立监控、优化应用写模型(批量写、延迟写)与定期容量评估是避免复发的根本手段。
(6)如需,我可以根据你的台湾云实例提供一份具体的排查脚本和优化方案。
来源:运维基础台湾云服务器为什么不能用磁盘空间与IO瓶颈排查要点