测试 VPS 磁盘 IO 性能是否达标,首选使用 fio 工具进行随机读写与延迟测试, dd 命令仅适合快速查看顺序写入速度。若测试结果显示顺序读写低于 50MB/s 或随机 IOPS 低于 1000,通常说明磁盘性能较弱,不适合承担数据库或高并发动态网站业务。
先说结论:判断 VPS 磁盘 IO 是否达标需结合业务场景,数据库类应用重点看随机 IOPS 与延迟,大文件存储类应用重点看顺序吞吐量。
- 先定位:使用 fio 测试 4K 随机读写 IOPS 和延迟,dd 测试顺序写入速度。
- 先做:测试前关闭其他进程并清空缓存,避免内存缓冲干扰真实磁盘性能。
- 再验证:对比测试结果与业务需求,SSD 随机 4K 读取 IOPS 通常应达到 5000 以上。
命令速用版
以下是 Linux 系统下最常用的磁盘 IO 测试命令,可直接复制执行。
1. 测试顺序写入速度(快速粗略评估)
dd if=/dev/zero of=test.img bs=1G count=1 oflag=direct
2. 测试随机 IO 与延迟(专业推荐)
fio `--name`=test `--size`=1G `--rw`=randrw `--bs`=4k `--iodepth`=32 `--runtime`=300
3. 测试磁盘延迟卡顿
ioping -c 10 /
为什么会这样
磁盘 IO 性能直接决定数据库响应速度和网站加载效率,不同业务对 IO 指标的敏感度不同。顺序读写速度影响大文件处理与项目加载,而随机读写 IOPS 和延迟则决定数据库性能与高并发操作流畅度。在虚拟化环境中,存储资源通常由宿主机共享,邻居用户资源抢占或宿主机的存储资源隔离策略可能导致测试结果出现剧烈波动。
分步处理
第一步:准备测试环境
测试前应关闭 VPS 上的其他进程,避免缓存干扰测试结果。使用 sync 命令清空缓存机制,确保测试数据写入真实磁盘而非内存缓冲。测试文件大小建议至少两倍于服务器内存容量,防止操作系统进行内存缓冲。
第二步:执行基准测试
使用 fio 工具模拟真实负载场景,针对 MySQL 等数据库应用,重点测试随机小文件读写性能。针对视频存储类应用,则应关注顺序大文件传输速率。测试持续时间建议不少于 5 分钟,以消除突发性能波动的影响。
第三步:检查磁盘健康状态
使用 lsblk 确认磁盘类型和挂载点,使用 smartctl 检查磁盘健康状态。对于 KVM 虚拟化的 VPS,还需要检查 virtio-blk 驱动参数和队列深度设置,排除虚拟化层对测试结果的干扰。
怎么验证是否生效
测试完成后,查看 fio 输出报告中的 IOPS、延迟和吞吐量数据。如果测试结果低于 50MB/s、IOPS 低于 1000,说明 VPS 磁盘性能较弱。使用 iostat -x 命令查看磁盘统计信息,重点关注 await 超过 10ms 的设备和%util 持续高于 80% 的分区,这通常表明磁盘已达性能极限。
常见坑
dd 命令虽然简单,但无法反映真实业务场景中的随机访问性能,仅适合快速查看写入速度。测试时若未关闭文件系统缓存,可能导致数据扭曲真实磁盘性能。某些厂商的 Windows VPS 可能默认启用写入缓存,需在磁盘策略中禁用“启用设备上的写入缓存”选项获取真实性能数据。
常见问题
如何判断测试结果是否正常?
通常 SSD 的随机 4K 读取 IOPS 应达到 5000 以上,而 HDD 则在 100-200 之间。
为什么 dd 测试结果会出现剧烈波动?
这往往与宿主机的存储资源隔离策略有关,也可能由机器超售或多个用户共享同一存储池导致。
测试时需要注意哪些关键指标?
测试报告中特别需要关注 await 平均等待时间和%util 设备利用率指标,它们直接反映磁盘的响应能力。
参考来源
- VPSIO 性能决定项目速度?磁盘读写详解与测试教程
- 国外 VPS 上 Linux 系统磁盘 IO 性能测试与调优方法
- 国外 VPS 磁盘 IO 性能测试方法
- 海外 VPS 上 Linux 磁盘 IO 性能测试与分析
- VPS 服务器购买后 Linux 系统性能基准测试与评估方法
- VPS 云服务器中的 Linux 系统磁盘 IO 性能优化与测试
- 新手购买 VPS 后如何测试性能?VPS 性能、网络、IO 等一键测评脚本
- 国外 VPS 环境下磁盘 IOPS 性能调优手册
- Linux 系统的 VPS 性能怎么测试? - 水墨韵 - 博客园