1.
概述与目标
目标说明:评估台湾 VPS(KVM)在 IO 密集型任务(数据库、日志、缓存写入、大文件读写)下的吞吐与稳定性。
小分段:测试要点 - 吞吐(MB/s)、IOPS、延迟(ms)、稳定性(运行期间抖动与错误)。
2.
准备环境与前提
步骤:选择台湾机房、确认磁盘类型(本地盘/云盘/NVMe/共享存储)、记录套餐 IOPS 限制。
小分段:准备一台干净的 KVM VPS,留至少 2G 空间用于测试文件,确保 root 权限和 sudo。
3.
安装必要工具
命令举例(以 Debian/Ubuntu 为例):sudo apt update && sudo apt install -y fio ioping sysstat bonnie++ smartmontools。
小分段:启用监控工具 iostat(sysstat)、vmstat,准备远程日志收集(scp 或 rsync)以便长期运行后取回结果。
4.
选择测试对象与文件/设备
方案:直接测试块设备(如 /dev/vdb)或文件(如 /mnt/testfile)。优先直接设备以避开文件系统缓存干扰。
小分段:如使用文件测试,请使用 oflag=direct 或 fio 的 direct=1 来绕过页缓存。
5.
fio 基本测试用例(命令与解释)
命令样例(随机读4K):
fio --name=randread --filename=/dev/vdb --direct=1 --rw=randread --bs=4k --ioengine=libaio --iodepth=32 --numjobs=4 --runtime=300 --group_reporting --time_based --output=randread.txt。
小分段:顺序读写样例(1M):
fio --name=seqwrite --filename=/dev/vdb --direct=1 --rw=write --bs=1M --ioengine=libaio --iodepth=16 --runtime=180 --group_reporting。
6.
fio 参数说明与组合建议
解释:--direct=1 关闭页缓存,--iodepth 控制并发深度,--numjobs 控制线程数,--time_based 指定持续时间,--group_reporting 汇总输出。
小分段:建议覆盖场景:随机小 IO(4K/8K)、混合(70/30)、大顺序(512K/1M)、多并发深度(1/8/32/64)。
7.
稳定性与长期压力测试
做法:使用 fio 长时间运行(例如 6 小时或 24 小时)并定期记录 iostat -x 1 和 vmstat 1 的输出。命令示例:
iostat -x 1 > iostat.log & vmstat 1 > vmstat.log &。
小分段:观察指标波动、长尾延迟(95/99% 延迟)与错误(I/O 错误、文件系统 remount 等)。
8.
快速工具与辅助测试
ioping 测延迟:ioping -c 100 -D /mnt。dd 测连续吞吐:dd if=/dev/zero of=/mnt/testfile bs=1M count=1024 oflag=direct。
小分段:使用 bonnie++ 做更全面的文件系统测试:bonnie++ -d /mnt -s 4G -r 2G -u root。
9.
宿主与虚拟机层调优建议
KVM/Guest 配置:使用 virtio-blk 或 virtio-scsi,磁盘 driver cache=none(例如 qemu 中设置 cache=none),启用多队列(blk-mq)。
小分段:内核调优:sysctl -w vm.dirty_ratio=10 vm.dirty_background_ratio=5;设置 noop 或 mq-deadline 视存储类型而定。
10.
结果记录与判读方法
步骤:每次测试保存 fio 输出、iostat、vmstat 与系统日志,使用 awk/gnuplot 或 Excel 绘制吞吐/延迟随时间变化图。
小分段:判读要点:稳定性好 => 吞吐与延迟曲线平滑;抖动大 => 延迟突然升高或 IOPS 崩溃,检查限流与共享存储竞争。
11.
常见问题定位流程
排查思路:是否为云商 IOPS 限制?查看控制台规格;是否为网络存储延迟?用 fio 直接测本地块设备对比远端挂载。
小分段:若发现写入延迟大,检查虚拟化缓存设置与 guest fsync 行为,尝试 cache=none 与 O_DIRECT。
12.
实战示例:完整测试流程(一步步)
1) 在管理面板确认磁盘设备名称;2) 登录 VPS,安装工具;3) 备份数据并静态卸载无关服务;4) 运行顺序与随机 fio 测试(按上面样例);5) 长时间稳定性测试并采集 iostat/vmstat;6) 汇总并分析。
小分段:记录每次测试参数,便于复现与对比。
13.
问:怎样判断 VPS 的瓶颈是磁盘还是主机层限速?
答:先直接在 guest 上对本地块设备(/dev/vdX)做 fio 测试,再挂载相同镜像到另一个不同节点做对比。若两处结果接近说明磁盘或主机 IO 性能受限;若本地快远端慢则可能为网络或共享存储限速;同时查看云商控制面板的 IOPS 限制。
14.
问:fio 的哪个指标最能代表稳定性?
答:除了平均吞吐(MB/s)与 IOPS,建议关注延迟分位数(latency 95%、99%)和延迟随时间的波动。99% 延迟异常升高或在长期运行中延迟跳变,说明稳定性不足。
15.
问:实测中发现抖动如何缓解?
答:优先确认是否为云商限速或 noisy neighbor;若非,尝试:启用 virtio-scsi + cache=none、增加 iodepth/numjobs 做多队列测试、调整 vm.dirty_ratio,必要时联系机房更换磁盘类别或升级套餐。
来源:评测台湾vps kvm 在IO密集型任务中的吞吐与稳定性