技术要点
Write-Back Cache 默认仅在 Windows Server 可用,通过 PowerShell 成功绕开限制。 傲腾 NVMe SSD 作为 Journal 缓存层 提供高效的 4K 写缓存。 结合 Mirror 存储池 提供高可靠性与 I/O 加速。 Windows 专业版本身并未公开文档支持该特性,属于隐藏玩法。
亮点
- 绕过系统限制,在桌面版本启用服务器级功能。
- 高性能 NVMe 傲腾缓存 提供卓越的小文件 I/O 加速。
- Write-Back Cache 设置实战调优(1GB → 32GB)。
- 对比
CrystalDiskMark
和diskinfo
的性能变化。
概述
在 Windows 10 专业版上,默认情况下并不会像 Windows Server 那样开放完整的存储池(Storage Spaces)高级功能,例如手动设置 NVMe 设备为 Journal 以启用 Write-Back Cache。但通过合理的操作方式,我们仍然可以绕过 GUI 限制,让 Windows 10 专业版实现 Server 级别的存储优化!
本文将介绍如何在 Windows 10 专业版启用 Write-Back Cache,并分析为什么即使 Usage 仍然显示 Auto-Select,但加速仍然生效。
备注: 硬件平台: X299 R6E,7920X,64GB
平台 Microsoft Windows [版本 10.0.19045.5487]
> systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
OS 名称: Microsoft Windows 10 IoT 企业版 LTSC
OS 版本: 10.0.19045 暂缺 Build 19045
磁盘: P8118ZU22151 鹏钛U2固态,1.92TB INTEL SSDPF2KX019XZ Intel固态 1.92TB NVMe SSDPE21K375GAL 傲腾4800X,375GB
实验背景与问题分析
在 Windows Server 版本中,我们通常需要使用以下命令手动将 NVMe 设备设为 Journal 以启用 Write-Back Cache:
Set-PhysicalDisk -FriendlyName "NVMe SSDPE21K375GAL" -Usage Journal
但在 Windows 10 专业版中:
Get-PhysicalDisk 结果仍然显示 Auto-Select,即使 Set-PhysicalDisk -Usage Journal 可能可执行,但并不会显示明确的变化。
然而,通过DiskMark/IO 分析,Write-Back Cache 仍然生效!
这表明 Windows 10 可能会自动识别 NVMe 设备为 Write-Back Cache,即使 Usage 仍然显示 Auto-Select。
完整配置流程
- 创建存储池(Storage Pool)
首先,创建一个包含两块 SSD 的存储池。
$disk1 = Get-PhysicalDisk -FriendlyName "P8118ZU22151"
$disk2 = Get-PhysicalDisk -FriendlyName "INTEL SSDPF2KX019XZ"
New-StoragePool -FriendlyName "MirrorStoragePool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $disk1, $disk2
- 先创建 Volume(New-Volume) 在 Windows 10 专业版下,必须先执行 New-Volume,再执行 New-VirtualDisk,否则 Write-Back Cache 可能不会生效。(经测试多次,本文记述稳定触发的方案)
New-Volume -StoragePoolFriendlyName "MirrorStoragePool" -FriendlyName "MirrorVolume" -FileSystem "NTFS" -Size 1.7TB
- 创建虚拟磁盘(New-VirtualDisk) 然后,我们创建 New-VirtualDisk,同时手动指定 WriteCacheSize。 (如果不指定 WriteCacheSize,默认值为 1GB。) (经过测试,该场景下最大可以设置为40gb,更高的未成功<使用添加journal 和不添加 均未成功>)
New-VirtualDisk -StoragePoolFriendlyName "MirrorStoragePool" -FriendlyName "MirrorVirtualDisk" -Size 1.7TB -ResiliencySettingName "Mirror" -ProvisioningType "Thin" -WriteCacheSize 32GB
#-WriteCacheSize 32GB 可以不加 默认1G
- 加入傲腾 NVMe 设备
将 NVMe 设备添加到存储池。
$ssd = Get-PhysicalDisk -FriendlyName "NVMe SSDPE21K375GAL"
Add-PhysicalDisk -StoragePoolFriendlyName "MirrorStoragePool" -PhysicalDisks $ssd
(可选):
#Set-PhysicalDisk -FriendlyName "NVMe SSDPE21K375GAL" -Usage Journal
- 检查 Write-Back 设备
此时,可以使用以下命令查看存储池中的物理磁盘状态:
Get-StoragePool -FriendlyName "MirrorStoragePool" | Get-PhysicalDisk | Select FriendlyName, MediaType, Usage
在 Windows 10 专业版中,即使 Usage 显示 Auto-Select,Write-Back Cache 仍然可能已经启用。(可通过diskinfo等进行数据观测)
- 通过 Windows 计算机管理初始化 VirtualDisk
此时,必须手动使用 Windows 计算机管理,将 MirrorVirtualDisk 初始化为 GPT,并格式化为 D 盘,否则可能会影响 Write-Back Cache 的生效。(尝试过代码初始化方案,win10专业版中,该触发 通过GUI执行,可以稳定触发)
- 此时,可以开启
CrystalDiskMark8
软件 与任务管理器
测试4K 效果 测试文件大小可设置1G~32G 进行多次观测,并配合CrystalDiskInfo
观测缓存盘的读取和写入数据的增长量
(提供命令行操作法,供测试,实际该项目经测试,使用GUI稳定触发,使用命令行无效果)
# #不要执行
#初始化磁盘并转换为 GPT
#Get-VirtualDisk -FriendlyName "MirrorVirtualDisk" | Get-Disk | Initialize-Disk -PartitionStyle GPT
#创建主分区
#Get-VirtualDisk -FriendlyName "MirrorVirtualDisk" | Get-Disk | New-Partition -AssignDriveLetter -UseMaximumSize
#or
#Get-VirtualDisk -FriendlyName "MirrorVirtualDisk" | Get-Disk | New-Partition -DriveLetter D -UseMaximumSize
#格式化分区
#Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel "MirrorVolume" -Confirm:$false
#Get-Volume
##############
- 确认4k效果满足预期后,可以移除New-Volume
- 移除 New-Volume,保留 New-VirtualDisk 此时,存储池已经完成了 Write-Back Cache 设定,并且 MirrorVirtualDisk 仍然生效。
Remove-VirtualDisk -FriendlyName "MirrorVolume" -Confirm:$false
实验结果分析
- 观察 WriteCacheSize 可以使用以下命令确认 WriteCacheSize 是否生效:
Get-VirtualDisk -FriendlyName "MirrorVirtualDisk" | Select FriendlyName, WriteCacheSize
如果 WriteCacheSize 显示 32GB(或你设定的值),说明 Write-Back Cache 已经生效。
- Usage 仍然显示 Auto-Select,但加速生效 运行以下命令:
Get-StoragePool -FriendlyName "MirrorStoragePool" | Get-PhysicalDisk | Select FriendlyName, Usage
发现 NVMe 设备的 Usage 仍然显示 Auto-Select,但 IO 性能测试结果表明 Write-Back Cache 仍然有效。
- DiskMark 性能测试结果对比 在 DiskMark 测试中,我们发现:
启用 Write-Back Cache 后,小文件写入性能显著提升。
4K 随机写入(Queue Depth 1)性能有明显加速。
这说明 即使 Windows 10 专业版的 Usage 字段不显示 Journal,但 Write-Back 仍然在后台自动生效!
结论
Windows 10 可能不会显示 "Journal",但实际 Write-Back 可能仍然生效。
即使 Usage 仍然是 Auto-Select,也可以通过 WriteCacheSize + DiskMark 确认 Write-Back 真的工作了。
手动 Set-PhysicalDisk -Usage Journal 在 Windows 10 可能不是必须的,Windows 10 可能已经在默认策略下自动启用了 Write-Back。
实验表明:必须 New-Volume + New-VirtualDisk,否则 Write-Back Cache 可能不会彻底生效。 测试完成后,需要移除New-Volume, 之后正常使用New-VirtualDisk 格式化完成后的磁盘.
总结:如何在 Windows 10 专业版启用 Write-Back Cache?
创建存储池 → 先 New-Volume → 再 New-VirtualDisk → 加入傲腾 NVMe → Windows 计算机管理初始化,测试效果 → 移除 New-Volume,保留 New-VirtualDisk → 复测效果
你已经在 Windows 10 专业版上成功绕开 GUI 限制,启用了 Server 级别的 Write-Back Cache!🚀🎉
核心记录
本文经gpt添加描述和润色,现附完成过程代码1份,和测试思考过程代码一份
- 完整过程
$disk1 = Get-PhysicalDisk -FriendlyName "P8118ZU22151"
$disk2 = Get-PhysicalDisk -FriendlyName "INTEL SSDPF2KX019XZ"
New-StoragePool -FriendlyName "MirrorStoragePool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $disk1, $disk2
New-Volume -StoragePoolFriendlyName "MirrorStoragePool" -FriendlyName "MirrorVolume" -FileSystem "NTFS" -Size 1.7TB
New-VirtualDisk -StoragePoolFriendlyName "MirrorStoragePool" -FriendlyName "MirrorVirtualDisk" -Size 1.74TB -ResiliencySettingName "Mirror" -ProvisioningType "Thin"
$ssd = Get-PhysicalDisk -FriendlyName "NVMe SSDPE21K375GAL"
Add-PhysicalDisk -StoragePoolFriendlyName "MirrorStoragePool" -PhysicalDisks $ssd
##将MirrorVolume 设置gpt 并格式化
现在开启Windows计算机管理,并将 "MirrorVirtualDisk" 初始化为gpt并 格式化为D盘
PS C:\Windows\system32> Get-Disk
PS C:\Windows\system32> Remove-VirtualDisk -FriendlyName "MirrorVolume" -Confirm:$false
-----------------------------
- 测试相关
$disk1 = Get-PhysicalDisk -FriendlyName "P8118ZU22151"
$disk2 = Get-PhysicalDisk -FriendlyName "INTEL SSDPF2KX019XZ"
New-StoragePool -FriendlyName "MirrorStoragePool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $disk1, $disk2
# 此处 New-VirtualDisk 先后顺序不影响结果,【New-Volume】不支持WriteCacheSize。
New-Volume -StoragePoolFriendlyName "MirrorStoragePool" -FriendlyName "MirrorVolume" -FileSystem "NTFS" -Size 1.7TB
New-VirtualDisk -StoragePoolFriendlyName "MirrorStoragePool" -FriendlyName "MirrorVirtualDisk" -Size 1.7TB -ResiliencySettingName "Mirror" -ProvisioningType "Thin" -WriteCacheSize 32GB
#-WriteCacheSize 32GB 可以不加 默认1G
加入傲腾
$ssd = Get-PhysicalDisk -FriendlyName "NVMe SSDPE21K375GAL"
Add-PhysicalDisk -StoragePoolFriendlyName "MirrorStoragePool" -PhysicalDisks $ssd
#设置 Journal,经过diskmark和diskinfo观测, win10 不设置不影响测试结果
#Set-PhysicalDisk -FriendlyName "NVMe SSDPE21K375GAL" -Usage Journal
##你可以运行以下 PowerShell 命令,看看当前存储池的 Write-Back 设备:
##如果 Usage 里有 Journal,说明有 Write-Back 设备,可以支持较大的 WriteCacheSize。
##Get-StoragePool -FriendlyName "MirrorStoragePool" | Get-PhysicalDisk | Select FriendlyName, MediaType, Size, Usage
# #不要执行
#初始化磁盘并转换为 GPT
#Get-VirtualDisk -FriendlyName "MirrorVirtualDisk" | Get-Disk | Initialize-Disk -PartitionStyle GPT
#创建主分区
#Get-VirtualDisk -FriendlyName "MirrorVirtualDisk" | Get-Disk | New-Partition -AssignDriveLetter -UseMaximumSize
#or
#Get-VirtualDisk -FriendlyName "MirrorVirtualDisk" | Get-Disk | New-Partition -DriveLetter D -UseMaximumSize
#格式化分区
#Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel "MirrorVolume" -Confirm:$false
#Get-Volume
##############
现在开启Windows计算机管理,并将 "MirrorVirtualDisk" 初始化为gpt并 格式化为D盘
# 此处须先 完成格式化操作,测试验证4k满足预期,后续 再 Remove-VirtualDisk
PS C:\Windows\system32> Get-Disk
PS C:\Windows\system32> Remove-VirtualDisk -FriendlyName "MirrorVolume" -Confirm:$false
-----------------------------
Remove-VirtualDisk -FriendlyName "MirrorVolume" -Confirm:$false
Remove-VirtualDisk -FriendlyName "MirrorVirtualDisk" -Confirm:$false
Remove-StoragePool -FriendlyName "MirrorStoragePool"
#Get-StoragePool -FriendlyName "MirrorStoragePool" | Get-PhysicalDisk | Select FriendlyName, MediaType, Size, Usage
不错。不过为什么用mirror模式,而不用stripe模式呢?
这篇文章深入浅出地介绍了如何在Windows Storage Spaces中设置镜像虚拟磁盘并结合SSD作为Write-Back缓存来提升存储性能。通过详细的操作步骤和注意事项,作者帮助读者避免了常见的配置错误,并强调了测试验证的重要性。
值得注意的是,文章指出在Windows 10/11中添加SSD时无需显式设置为Journal角色,这一点简化了配置流程。此外,在使用PowerShell进行磁盘管理时,确保正确的执行顺序和初始化步骤是关键。
文中提到的性能测试步骤非常实用,建议读者通过DiskMark等工具验证4K性能提升,并利用PowerShell命令检查SSD是否被正确识别为缓存设备。这些验证措施对于确认配置成功和排查问题至关重要。
总体而言,这篇文章为用户提供了清晰的操作指南,帮助他们在Windows环境中充分利用存储资源,提高系统性能。