在 Windows Server 下,测试硬盘 I/O 性能的常用命令和工具
在 Windows Server 下,测试硬盘 I/O 性能的常用命令和工具主要有以下几类:内置命令、PowerShell、微软官方工具、第三方工具。下面给你整理最常用、最专业的测试方式。
✅ 一、Windows Server 自带的命令
1. winsat(最简单)
Windows 自带的性能测试工具(WinSAT)。
▶ 测试磁盘顺序读写:
winsat disk -seq -read -drive c
winsat disk -seq -write -drive c
▶ 测试磁盘随机读写:
winsat disk -ran -read -drive c
winsat disk -ran -write -drive c
📌 优点:简单、无需安装
📌 缺点:偏基础、没有 IOPS 和队列深度细节
✅ 二、PowerShell 测试命令(适合快速测 IOPS)
2. DiskSpd(微软官方权威工具)—命令行测试神器
微软官方的企业级标准磁盘测试工具,是 SQL Server 团队开发的,被微软工程师广泛使用。
下载地址:微软官方
(不需要网络,我可以提供命令示例即可)
▶ 示例:测试 C 盘 4K 随机写 30 秒
diskspd -c1G -d30 -r -w100 -b4K c:\testfile.dat
▶ 示例:测试 4K 随机读(8 并发)
diskspd -c1G -d30 -r -b4K -o8 c:\testfile.dat
▶ 示例:测试 1MB 顺序读写
diskspd -c2G -d30 -b1M -si -o1 c:\testfile.dat
📌 DiskSPD 是 Windows 测 IOPS / 吞吐量 / 时延的标准工具,比 winsat 专业数十倍。
你看到别人贴的 Windows IOPS 测试报告,几乎都是 DiskSpd 生成的。
✅ 三、Windows 自带系统性能工具
3. Performance Monitor(perfmon)
可实时查看:
-
Disk Reads/sec
-
Disk Writes/sec
-
Avg. Disk sec/Read(读延迟)
-
Avg. Disk sec/Write(写延迟)
-
Disk Queue Length(队列深度)
使用方式:
perfmon.msc
📌 适合长期监控,但不属于压力测试。
✅ 四、微软其他工具
4. SQLIO(已被 DiskSpd 取代)
旧版本的微软磁盘测试工具。
示例命令:
sqlio -kW -t4 -s30 -o8 -b8 -frandom testfile.dat
📌 DiskSpd 出来后已经官方推荐不要再用 SQLIO。
✅ 五、第三方命令行工具(扩展)
5. CrystalDiskMark(GUI 但可命令启动)
虽然是图形界面,但可命令行执行自动测试。
命令示例:
CrystalDiskMark8.exe /s
输出写入日志。
🔥 最快上手推荐方案(专业又准确)
我给你一套最常用测试脚本,Windows Server 运维工程师标准:
📌 ① 顺序读写测试(大文件吞吐量)
diskspd -c8G -d30 -b1M -o2 -si c:\disk-test.dat
-
8GB 测试文件
-
1MB 块大小
-
顺序 I/O
-
测试 30 秒
📌 ② 随机 4K 测试(最能反映 IOPS)
4K 随机读
diskspd -c4G -d30 -r -b4K -o32 -t4 c:\disk-test.dat
4K 随机写
diskspd -c4G -d30 -r -w100 -b4K -o32 -t4 c:\disk-test.dat
参数说明:
-
-r随机 -
-w100100%写 -
-t44线程 -
-o32队列深度 32 -
-b4K块大小
🎯 总结:最常用测试命令清单
| 工具 | 命令示例 | 适用场景 |
|---|---|---|
| winsat | winsat disk -seq -read -drive c |
快速测基础速度 |
| DiskSpd(推荐) | diskspd -c1G -d30 -r -b4K |
企业级 IOPS/吞吐测试 |
| perfmon | perfmon.msc |
查看实时磁盘延迟/队列 |
| CrystalDiskMark | GUI 或 /s |
综合报告 |
如果你告诉我:
-
是 SATA 机械盘 / SAS 机械盘 / SSD
-
是否是 RAID1、RAID5、RAID10
-
RAID 卡型号
-
Windows Server 版本
我可以给你一套 精准的磁盘测试命令 + 基准性能值 + 是否达标的判定,帮助你判断 RAID 是否正常工作。
下面根据你提供的 D: 固态盘 RAID1 与 E: 机械盘 RAID1 的 DiskSpd 测试结果,对两者进行专业级性能对比分析。
✅ 一、核心测试数据对比(你提供的结果)
| 测试项 | E: 机械盘 RAID1 | D: 固态盘 RAID1(结果未全部贴出) |
|---|---|---|
| 测试类型 | 随机写(4K) | 随机写(4K) |
| IOPS | 118,439 IOPS | (未贴完整,但一定更高) |
| 吞吐量 | 462.65 MB/s | (预期 ≥ 1000 MB/s) |
| CPU 占用(写入线程) | ~6.3% 内核开销 | SSD 会较低(预计 < 5%) |
| 响应延迟 | 约 30~35 微秒(估算) | SSD 会更低(通常 < 10 微秒) |
从机械盘 RAID1 的结果看,性能非常高(异常高)。一般机械盘 4K 随机写 IOPS 在:
-
单机械盘:100 IOPS
-
RAID1 两盘:约 200 IOPS
但你测得:
👉 118,439 IOPS(约 600 倍正常机械盘性能)
这意味着:
机械盘测试命中了缓存(Cache Hit)而非真实磁盘性能!
包括:
-
系统页缓存(software cache)
-
RAID 控制器缓存(BBU/FBWC)
-
写缓存(write-back)
你测试命令包含:
using software cache
using hardware write cache, writethrough off
这直接导致:
👉 机械盘 RAID1 被变成了 内存写缓存性能,不是磁盘真实性能!
⚠ 为什么机械盘 RAID1 的 IOPS 接近 12 万?
因为:
你的命令没有禁用缓存
正确的硬盘真实测试必须使用:
-d -Sh -Su -L
例如:
diskspd -c1G -d30 -r -w100 -b4k -o32 -t4 -Sh -Su -L e:\testfile.dat
✅ 二、真实情况下 RAID1(SSD vs HDD)性能应该是怎样?
以下为不含缓存的真实性能:
| 类型 | 4K 随机写 IOPS | 吞吐量 | 延迟 |
|---|---|---|---|
| HDD RAID1(2机械盘) | 150~300 IOPS | 5~10 MB/s | 10~15 ms |
| SSD RAID1(2固态盘) | 50,000~100,000 IOPS | 300~600 MB/s(SATA) / 3GB/s(NVMe) | 0.05~0.2 ms |
现实差距:
🚀 SSD RAID1 性能是机械盘 RAID1 的 100~500 倍
你测试中的“机械盘=12万 IOPS”完全不可能是真实值。
📌 三、根据你贴的 E: 机械盘 RAID1 实际分析
你的机械盘测试:
✔ 高IOPS(118,439)
✔ 高吞吐(462MB/s)
✔ CPU 内核占用高(6%)
✔ IO 完全不受磁盘物理限制
这些都说明:
👉 写入主要落在操作系统缓存或 RAID 控制器缓存,没有真正落盘。
🔍 四、如何获得真实机械盘与SSD性能?
请执行:
真实物理盘测试命令(禁止缓存)
diskspd -c2G -d30 -r -w100 -b4k -o32 -t4 -Sh -Su -L e:\hdd_test.dat
再测固态:
diskspd -c2G -d30 -r -w100 -b4k -o32 -t4 -Sh -Su -L d:\ssd_test.dat
这样得到的才是真实 IOPS。
🧠 五、总结(核心结论)
✔ 你当前的机械盘 RAID1 数据并不真实 → 命中了系统/RAID 缓存
✔ 实际真实性能中:
-
SSD RAID1 完胜机械盘 RAID1(100~500倍)
-
HDD RAID1 性能通常只有 200 IOPS 左右
-
SSD RAID1 可达到 50k~100k IOPS
📌 如果你愿意,我可以继续帮你:
✅ 解析 D 盘固态 RAID1 的完整测试结果
(你已贴了一部分,但没有贴 Total IO)
✅ 给你一份专业版 DiskSpd 测试脚本
自带所有缓存禁用参数、自动记录日志、自动生成性能对比表格。
要继续分析 D 盘,请把以下部分贴出来:
👉 D 盘(SSD)测试的 Total IO 区块(total IOPS、MB/s 那部分)