Skip to main content

在 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 随机

  • -w100 100%写

  • -t4 4线程

  • -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: 机械盘 RAID1D: 固态盘 RAID1(结果未全部贴出)
测试类型随机写(4K)随机写(4K)
IOPS118,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 IOPS5~10 MB/s10~15 ms
SSD RAID1(2固态盘)50,000~100,000 IOPS300~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 那部分)