# 在 Windows Server 下，测试硬盘 I/O 性能的常用命令和工具

在 **Windows Server** 下，测试硬盘 I/O 性能的常用命令和工具主要有以下几类：**内置命令、PowerShell、微软官方工具、第三方工具**。下面给你整理最常用、最专业的测试方式。

---

# ✅ **一、Windows Server 自带的命令**

## **1. winsat（最简单）**

Windows 自带的性能测试工具（WinSAT）。

### ▶ 测试磁盘顺序读写：

```cmd
winsat disk -seq -read -drive c
winsat disk -seq -write -drive c

```

### ▶ 测试磁盘随机读写：

```cmd
winsat disk -ran -read -drive c
winsat disk -ran -write -drive c

```

📌 优点：简单、无需安装  
📌 缺点：偏基础、没有 IOPS 和队列深度细节

---

# ✅ **二、PowerShell 测试命令（适合快速测 IOPS）**

## **2. DiskSpd（微软官方权威工具）—命令行测试神器**

> 微软官方的企业级标准磁盘测试工具，是 SQL Server 团队开发的，被微软工程师广泛使用。

下载地址：微软官方  
（不需要网络，我可以提供命令示例即可）

### ▶ 示例：测试 C 盘 4K 随机写 30 秒

```cmd
diskspd -c1G -d30 -r -w100 -b4K c:\testfile.dat

```

### ▶ 示例：测试 4K 随机读（8 并发）

```cmd
diskspd -c1G -d30 -r -b4K -o8 c:\testfile.dat

```

### ▶ 示例：测试 1MB 顺序读写

```cmd
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 取代）**

旧版本的微软磁盘测试工具。

示例命令：

```cmd
sqlio -kW -t4 -s30 -o8 -b8 -frandom testfile.dat

```

📌 DiskSpd 出来后已经官方推荐不要再用 SQLIO。

---

# ✅ **五、第三方命令行工具（扩展）**

## **5. CrystalDiskMark（GUI 但可命令启动）**

虽然是图形界面，但可命令行执行自动测试。

命令示例：

```cmd
CrystalDiskMark8.exe /s

```

输出写入日志。

---

# 🔥 **最快上手推荐方案（专业又准确）**

我给你一套最常用测试脚本，Windows Server 运维工程师标准：

---

# 📌 **① 顺序读写测试（大文件吞吐量）**

```cmd
diskspd -c8G -d30 -b1M -o2 -si c:\disk-test.dat

```

- 8GB 测试文件
- 1MB 块大小
- 顺序 I/O
- 测试 30 秒

---

# 📌 **② 随机 4K 测试（最能反映 IOPS）**

### 4K 随机读

```cmd
diskspd -c4G -d30 -r -b4K -o32 -t4 c:\disk-test.dat

```

### 4K 随机写

```cmd
diskspd -c4G -d30 -r -w100 -b4K -o32 -t4 c:\disk-test.dat

```

参数说明：

- `-r` 随机
- `-w100` 100%写
- `-t4` 4线程
- `-o32` 队列深度 32
- `-b4K` 块大小

---

# 🎯 **总结：最常用测试命令清单**

<table id="bkmrk-%E5%B7%A5%E5%85%B7-%E5%91%BD%E4%BB%A4%E7%A4%BA%E4%BE%8B-%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF-winsat-"><thead><tr><th>工具</th><th>命令示例</th><th>适用场景</th></tr></thead><tbody><tr><td>**winsat**</td><td>`winsat disk -seq -read -drive c`</td><td>快速测基础速度</td></tr><tr><td>**DiskSpd（推荐）**</td><td>`diskspd -c1G -d30 -r -b4K`</td><td>企业级 IOPS/吞吐测试</td></tr><tr><td>**perfmon**</td><td>`perfmon.msc`</td><td>查看实时磁盘延迟/队列</td></tr><tr><td>**CrystalDiskMark**</td><td>GUI 或 `/s`</td><td>综合报告</td></tr></tbody></table>

---

如果你告诉我：

- 是 SATA 机械盘 / SAS 机械盘 / SSD
- 是否是 RAID1、RAID5、RAID10
- RAID 卡型号
- Windows Server 版本

我可以给你一套 **精准的磁盘测试命令 + 基准性能值 + 是否达标的判定**，帮助你判断 RAID 是否正常工作。

下面根据你提供的 **D: 固态盘 RAID1** 与 **E: 机械盘 RAID1** 的 DiskSpd 测试结果，对两者进行**专业级性能对比分析**。

---

# ✅ **一、核心测试数据对比（你提供的结果）**

<table id="bkmrk-%E6%B5%8B%E8%AF%95%E9%A1%B9-e%3A-%E6%9C%BA%E6%A2%B0%E7%9B%98-raid1-d%3A-"><thead><tr><th>测试项</th><th>E: 机械盘 RAID1</th><th>D: 固态盘 RAID1（结果未全部贴出）</th></tr></thead><tbody><tr><td>测试类型</td><td>随机写（4K）</td><td>随机写（4K）</td></tr><tr><td>IOPS</td><td>**118,439 IOPS**</td><td>（未贴完整，但一定更高）</td></tr><tr><td>吞吐量</td><td>**462.65 MB/s**</td><td>（预期 ≥ 1000 MB/s）</td></tr><tr><td>CPU 占用（写入线程）</td><td>~6.3% 内核开销</td><td>SSD 会较低（预计 &lt; 5%）</td></tr><tr><td>响应延迟</td><td>约 30~35 微秒（估算）</td><td>SSD 会更低（通常 &lt; 10 微秒）</td></tr></tbody></table>

从机械盘 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）性能应该是怎样？**

以下为**不含缓存**的真实性能：

<table id="bkmrk-%E7%B1%BB%E5%9E%8B-4k-%E9%9A%8F%E6%9C%BA%E5%86%99-iops-%E5%90%9E%E5%90%90%E9%87%8F-%E5%BB%B6"><thead><tr><th>类型</th><th>4K 随机写 IOPS</th><th>吞吐量</th><th>延迟</th></tr></thead><tbody><tr><td>**HDD RAID1（2机械盘）**</td><td>150~300 IOPS</td><td>5~10 MB/s</td><td>10~15 ms</td></tr><tr><td>**SSD RAID1（2固态盘）**</td><td>50,000~100,000 IOPS</td><td>300~600 MB/s（SATA） / 3GB/s（NVMe）</td><td>0.05~0.2 ms</td></tr></tbody></table>

现实差距：

### 🚀 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 那部分）**