在 Windows Server 2022 下测试硬盘 IOPS
在 Windows Server 2022 下测试硬盘 IOPS,最专业、最常用的是用微软官方工具 DiskSpd。下面给你一份直接可用的命令集合,适合真实服务器场景。
一、推荐工具:DiskSpd(微软官方)
下载地址(官方):
-
DiskSpd
(你可以从微软 GitHub 搜索 “DiskSpd” 下载)
解压后假设路径为:
C:\diskspd\diskspd.exe
二、新建一个测试文件(非常重要)
先准备一个测试文件,比如 10GB:
fsutil file createnew D:\iops_test.dat 10737418240
三、随机读 IOPS 测试命令(最常用)
1. 4K 随机读(典型数据库负载)
C:\diskspd\diskspd.exe ^
-b4K -r -o32 -t4 -d30 -Sh ^
-L D:\iops_test.dat
参数说明:
| 参数 | 说明 |
|---|---|
-b4K |
块大小 4KB |
-r |
随机 IO |
-o32 |
队列深度 32 |
-t4 |
4 线程 |
-d30 |
测试 30 秒 |
-Sh |
禁用系统缓存 |
-L |
显示延迟统计 |
2. 4K 随机写 IOPS
C:\diskspd\diskspd.exe ^
-b4K -r -w100 -o32 -t4 -d30 -Sh ^
-L D:\iops_test.dat
四、顺序读写吞吐测试
1. 顺序读(大文件)
C:\diskspd\diskspd.exe ^
-b1M -s -o4 -t2 -d30 -Sh ^
-L D:\iops_test.dat
2. 顺序写
C:\diskspd\diskspd.exe ^
-b1M -s -w100 -o4 -t2 -d30 -Sh ^
-L D:\iops_test.dat
五、如何看 IOPS 结果
主要看结果中的这一行:
total IO
示例结果:
total IO
IO/s: 85234
MB/s: 333.1
AvgLat: 0.45ms
其中:
-
IO/s → 就是 IOPS
-
AvgLat → 平均延迟
六、简单对照参考值
| 存储类型 | 大概 IOPS |
|---|---|
| SATA HDD | 100–200 |
| SATA SSD | 10,000–50,000 |
| NVMe SSD | 100,000–500,000+ |
| 云盘(普通) | 1,000–10,000 |
如果你是在 Hyper-V 虚拟机 里测试,我还能给你一套专门针对 VM 的压测参数。
这个报错原因非常明确,并且你这个环境很典型 👇
直接原因
核心报错是这一句:
Error opening file: E:\iops_test.dat [2]
错误码 [2] = 系统找不到指定的文件。
也就是说:
👉 DiskSpd 找不到 E:\iops_test.dat 这个测试文件,所以直接中断。
为什么会这样
DiskSpd 不会自动创建测试文件,它只会对已存在的文件做压力读写测试。
你现在只是执行了测试命令,但并没有在 E: 盘创建这个文件。
正确的做法(一步解决)
先在 E: 盘创建一个测试文件:
在 PowerShell 里运行:
fsutil file createnew E:\iops_test.dat 10737418240
这会创建一个 10GB 文件。
确认文件存在:
dir E:\iops_test.dat
再重新执行你的测试命令
.\diskspd.exe -b4K -r -o32 -t4 -d30 -Sh -L E:\iops_test.dat
这次就会正常跑出 IOPS 结果。
额外提醒你几个容易踩的坑(结合你日志)
你环境是:
-
Windows Server 2022
-
双路 CPU(2 sockets)
-
48 线程
这没问题 👍
但注意:
1. 不要在系统盘 C: 上压测
会严重影响系统响应。
2. 确保 E: 是独立数据盘
不要是 U 盘、光驱、映射盘之类。
总结一句话
你的错误不是 DiskSpd 的问题,而是:
✅ 测试文件不存在
✅ 先用 fsutil 创建文件即可
如果这个 E: 盘是在 Hyper-V 虚拟机里,我还能给你一套专门针对虚拟盘的最优参数。