配置具有 NVDIMM-N 回写式缓存的存储空间

适用范围:SQL Server

Windows Server 2016 支持允许以极快地速度进行输入/输出 (I/O) 操作的 NVDIMM-N 设备。 使用这种设备的一种新颖方式是作为回写式缓存来实现低写入延迟。 本文讨论如何将具有镜像 NVDIMM-N 回写式缓存的镜像存储空间设置为虚拟驱动器,以存储 SQL Server 事务日志。 如果你也打算利用其来存储数据表或其他数据,则你可能需在存储池中包含更多磁盘,或创建多个池(如果隔离很重要)。

确定正确的磁盘

在 Windows Server 2016 中安装存储空间,尤其是安装具有高级功能(例如回写式缓存)的存储空间可非常轻易地通过 PowerShell 实现。 第一步是确定该存储空间池(将从此池创建虚拟磁盘)要包括的磁盘。 NVDIMM-N 具有 SCM(存储级内存)的介质类型和总线类型,可通过 Get-PhysicalDisk PowerShell cmdlet 查询。

Get-PhysicalDisk | Select FriendlyName, MediaType, BusType  

Windows Powershell 窗口的屏幕截图,其中显示了 Get-PhysicalDisk cmdlet 的输出。

注意

使用 NVDIMM-N 设备,你不再需要具体选择可作为回写式缓存目标的设备。

若要生成带镜像回写式缓存的镜像虚拟磁盘,至少需要两个 NVDIMM-N 和其他两个磁盘。 生成池前,将所需物理磁盘分配到一个变量可使此过程更简单。

$pd =  Get-PhysicalDisk | Select FriendlyName, MediaType, BusType | WHere-Object {$_.FriendlyName -like 'MK0*' -or $_.FriendlyName -like '2c80*'}  

屏幕截图显示 $pd 变量,还显示它使用以下 PowerShell cmdlet 分配返回的两个 SSD 和两个 NVDIMM-N:

$pd | Select FriendlyName, MediaType, BusType  

Windows Powershell 窗口的屏幕截图,其中显示了 $pd cmdlet 的输出。

创建存储池

借助包含 PhysicalDisks 的 $pd 变量,可通过 New-StoragePool PowerShell cmdlet 轻松创建存储池。

New-StoragePool -StorageSubSystemFriendlyName "Windows Storage*" -FriendlyName NVDIMM_Pool -PhysicalDisks $pd  

Windows Powershell 窗口的屏幕截图,其中显示了 New-StoragePool cmdlet 的输出。

创建虚拟磁盘和卷

现已创建一个池,下一步是分出一个虚拟磁盘并对其进行格式化。 在这种情况下,将只创建一个虚拟磁盘,并且可使用 New-Volume PowerShell cmdlet 来简化该过程:

New-Volume -StoragePool (Get-StoragePool -FriendlyName NVDIMM_Pool) -FriendlyName Log_Space -Size 300GB -FileSystem NTFS -AccessPath S: -ResiliencySettingName Mirror  

Windows Powershell 窗口的屏幕截图,其中显示了 New-Volume cmdlet 的输出。

该虚拟磁盘已通过 NTFS 创建、初始化并格式化。 下面的屏幕截图显示其大小为 300GB,回写式缓存大小为 1GB(将托管于 NVDIMM-N 上)。

Windows Powershell 窗口的屏幕截图,其中显示了 Get-VirtualDisk cmdlet 的输出。

现在你可查看服务器中可见的这一新卷。 现在你可对 SQL Server 事务日志使用此驱动器。

文件资源管理器窗口中“本电脑”页面的屏幕截图,其中显示了 Log_Space 驱动器。

后续步骤