Windows Server 2016软件定义存储之QoS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows Server 2016软件定义存储之QoS相关的知识,希望对你有一定的参考价值。


 存储QoS简介

Windows Server 2016文件服务器和Hyper-V群集默认集成了存储QoS功能,基于群集存储空间的存储无论是SOFS SMB共享还是CSV都支持存储QoS,存储QoS通过策略应用到Hyper-V群集上的虚机。文件服务器群集里默认开启QoS策略管理器,用于集中监视存储性能,保存在SMB或者CSVHyper-V虚机被策略管理器监视着。策略管理器和Hyper-V服务器形成一个存储QoS策略优化的闭环来反馈调节QoS,策略管理器保持着和Hyper-V沟通存储QoS策略、限制及保留信息,Hyper-V按照QoS策略缩放虚机VHDX的存储性能。如果存储QoS策略有更新的时候,策略管理器指挥Hyper-V对虚机虚拟硬盘QoS进行调整。存储QoS策略优化的闭环保证所有虚机的虚机硬盘遵循存储QoS策略,如图1所示。

技术分享

1 存储QoS逻辑结构图

 

设置存储QoS

Windows Server 2016 故障转移群集配置了CSV后,存储QoS功能自动启动,无需额外配置。在群集里添加可用的磁盘为CSV后,存储QoS资源便会在群集核心资源里显示。可以通过故障转移群集管理器或者PowerShell查看存储QoS资源。同样,Windows Server 2016 启用Hyper-V角色以后也会自动启动存储QoS功能,如图2所示。

技术分享 

2 Windows Server 2016群集存储QoS资源

 

检索文件流和卷的存储QoS

我们已经配置好S2D和超融合结构,在其CSV里存储着若干运行着的虚机,可使用PowerShell命令查看所有虚机文件流的IOPS和带宽情况,如下示例所示。

PS C:\>  Get-StorageQoSflow |Sort-Object InitiatorName | ft InitiatorName,MinimumIOPs,MaximumIOPs,StorageNodeIOPs,@{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf(‘\’)+1)};Label=”File”}  -AutoSize      
InitiatorName    MinimumIops    MaximumIops    StorageNodeIOPs    File    
------------     ----------     ----------     ---------------    ----    
SQL14        0         0         1           sql14.vhdx    
VMM16        0         0         3           vmm16.vhdx     
WS16-VM01      0         0         1           WS16-VM01.vhdx    
WS16-VM02      0         0         1           WS16-VM02.vhdx

除了可以查看虚机级别的QoS流的情况外,还可以查看卷(这里指的是群集共享卷)级别的QoS信息,使用PowerShell命令Get-StorageQoSVolume检索CSV QoS配置情况,如下示例所示。 

PS C:\> Get-StorageQoSVolume |fl      
Bandwidth          : 0    
BandwidthLimit       : 0    
Interval          : 300000    
IOPS            : 0    
Latency           : 0    
Limit            : 0    
Mountpoint          : C:\ClusterStorage\Volume1\    
Reservation         : 0    
Status           : Ok    
TimeStamp          : 8/5/2016 5:14:23 PM    
VolumeId          : 2406be47-4757-4b75-a193-c874b69c0e8c    
MaximumIops         : 0    
MinimumIops         : 0


创建存储QoS策略

       在规划好虚机QoS策略类型和QoS策略具体参数后,第一步先创建存储QoS策略,可以使用PowerShell命令New-StorageQoSPolicy设置专有和共享QoS策略。我们先创建一个名为HighPerf的专有QoS策略,最小IOPS设置为200,最大为800,不设置吞吐带宽。

PS C:\> New-StorageQosPolicy -Name  HighPerf -PolicyType Dedicated -MinimumIops 200 -MaximumIops 800

使用PowerShell命令Get-StorageQoSPolicy获取QoS策略,如下示例所示。

PS C:\> Get-StorageQosPolicy     
Name     MinimumIops    MaximumIops    MaximumBandwidth    Status    
----     ----------     ----------     ---------------     ------    
Default    0         0         0 MB/s         OK    
HighPerf   200        800        0 MB/s         OK

接着创建一个名为MediumPerf的共享QoS策略,设置最小IOPS100,最大为400,不设置吞吐带宽。

PS C:\> New-StorageQosPolicy -Name  MediumPerf -PolicyType Aggregated -MinimumIops 100 -MaximumIops 400

到此我们已经创建了两个不同大小的存储QoS策略,如下示例所示。

PS C:\> Get-StorageQosPolicy     
Name        MinimumIops      MaximumIops      MaximumBandwidth      Status    
----        ----------       ----------       ---------------       ------    
Default       0           0           0 MB/s            OK     
MediumPerf     100          400          0 MB/s            OK    
HighPerf      200          800          0 MB/s            OK

接下来我们将选取两台虚机分配存储QoS策略,一台虚机只有一个VHDX文件,这台虚机需要IOPS;另外一台虚机有三个VHDX文件,这台虚机只需要中等IOPS,而且三个VHDX共享一个存储QoS策略。

 

分配存储QoS策略

首先将名为HighPerf的专有策略分配给一台SQL Server虚机,使用PowerShell命令进行分配即可。在分配之前需要使用如下命令定义变量并获取存储QoS策略的ID,存储QoS策略ID将在分配QoS策略时作为QoSPolicyID要赋予的值。

PS C:\> $HighPerfQoS=Get-StorageQoSPolicy | ? Name -eq HighPerf
PS C:\> $HighPerfQoS.PolicyId
 
Guid
----
6b56f995-08d1-4bb0-9eaa-96f6de29a2ab

使用PowerShell命令将策略应用到选择的SQL Server虚机,QoSPolicyID这个参数后接名为HighPerfQoS策略ID

PS C:\> Get-VM -Name SQL14 | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID  6b56f995-08d1-4bb0-9eaa-96f6de29a2ab

  分配完毕,打开分配了QoS策略的虚机的设置窗口。大家会发现,我们以往在Hyper-V虚机设置窗口里直接对VHDX虚拟硬盘进行IOPS的最大最小值进行设置,但是应用了QoS策略的VHDX虚拟硬盘并没有显示QoS策略所定义的IOPS最大及最小值,取而代之的是QoS策略ID,如图3 所示。

技术分享 

3 查看虚机分配的QoS策略ID

       虽然在设置窗口看不到直观的IOPS值,但是要查看虚机分配QoS策略之后是否生效以及生效后虚机磁盘QoS值,可以运行Get-StorageQoSflow命令查看,示例命令和结果如下。

PS C:\> Get-StorageQoSflow |Sort-Object InitiatorName | ft InitiatorName,MinimumIOPs,MaximumIOPs,StorageNodeIOPs,@{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf(‘\’)+1)};Label=”File”}  -AutoSize      
InitiatorName    MinimumIops    MaximumIops    StorageNodeIOPs    File    
------------     ----------     ----------     ---------------    ----    
SQL14        200         800        0           sql14.vhdx    
VMM16        0         0         0           vmm16.vhdx    
WS16-VM01      0         0         1           WS16-VM01.vhdx    
WS16-VM02      0         0         1           WS16-VM02.vhdx

接着将名为MediumPerf的共享QoS策略分配给一台具有三块VHDX虚拟磁盘的虚机,同样使用PowerShell命令进行。在分配之前需要定义变量获取存储QoS策略的ID,如下示例所示,存储QoS策略ID将在分配QoS策略时作为QoSPolicyID后接参数值使用。

PS C:\> $MediumPerf=Get-StorageQoSPolicy | ? Name -eq MediumPerf
PS C:\> $MediumPerf.PolicyId
 
Guid
----
c0cea944-981e-445e-ad20-d6a33d294fb7

使用PowerShell命令将策略用应用到选择的虚机,QoSPolicyID这个参数后接名为MediumPerf QoS策略ID

PS C:\>Get-VM -Name  WS16-VM01 | Get-VMHardDiskDrive | Set-VMHardDiskDrive –QoSPolicyID  c0cea944-981e-445e-ad20-d6a33d294fb7

分配完毕,打开分配了QoS策略的虚机的设置窗口,和专有QoS策略一样,应用了QoS策略的VHDX虚拟硬盘并没有显示QoS策略所定义的IOPS最大及最小值,取而代之的是QoS策略ID,如图4所示。

 技术分享

4查看虚机分配的QoS策略ID

要查看虚机分配QoS策略之后是否生效以及生效后虚机磁盘QoS值,可以运行Get-StorageQoSflow命令查看。在查询结果中,可以看到具有三个VHDX文件的虚机应用了一个最小100,最大400QoS策略,那么每个VHDXIOPS最小为100/3取整,最大为400/3取整,如下示例所示。

PS C:\> Get-StorageQoSflow  |Sort-Object InitiatorName | ft InitiatorName,MinimumIOPs,MaximumIOPs,StorageNodeIOPs,@{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf(‘\’)+1)};Label=”File”}  -AutoSize      
InitiatorName    MinimumIops    MaximumIops    StorageNodeIOPs    File    
------------     ----------    ----------     ---------------    ----    
SQL14        200        800        0           sql14.vhdx    
VMM16        0         0         7           vmm16.vhdx    
WS16-VM01      33         133        0           WS16-VM01.vhdx    
WS16-VM01      33         133        0           DATADisk01.vhdx    
WS16-VM01      33         133        0           DATADisk02.vhdx    
WS16-VM02      0         0         0           WS16-VM02.vhdx

存储QoS策略的重设

       我们经常需要按照环境的变化对策略做对相应的调整,存储QoS也不会例外,比如某些应用应为访问量和数量增大时,对存储的读写速度提出了更高的要求。如果虚机的虚拟硬盘已经应用了存储QoS策略,那么我们不需要重新创建存储QoS策略分配给虚机的虚拟磁盘,而是在线调整已有的QoS策略,虚机虚拟硬盘的QoS策略会在线同步更新。接下来我们找一个之前应用到虚机的名为HighPerf的存储QoS策略,将IOPS值最小和最大值分别从200800调整到5001000。先使用如下PowerShell命令Set-StorageQosPolicy完成QoS策略变更,然后使用Get-StorageQosPolicy查询QoS策略修改结果,结果应如下示例所示。

PS C:\> Get-StorageQosPolicy  -Name HighPerf | Set-StorageQosPolicy -MinimumIOPS 500 -MaximumIops 1000 PS C:\> Get-StorageQosPolicy     

Name      MinimumIops    MaximumIops       MaximumBandwidth    Status    
----      ----------     ----------       ---------------     ------    
Default     0         0           0 MB/s         OK    
MediumPerf    100        400          0 MB/s         OK    
HighPerf    500        1000          0 MB/s         OK    
LowPerf     50         200          0 MB/s         OK

         调整完毕,不需要再次应用QoS策略到虚机,虚机虚拟磁盘会自动更新策略。使用PowerShell命令可查看到应用了名为HighPerf存储QoS策略的SQL Server虚机虚拟硬盘更新后的IOPS QoS信息,如下示例命令所示。

PS C:\> Get-StorageQoSflow |Sort-Object  InitiatorName | ft InitiatorName,MinimumIOPs,MaximumIOPs,StorageNodeIOPs,@{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf(‘\‘)+1)};Label="File"}  -AutoSize      

InitiatorName    MinimumIops    MaximumIops    StorageNodeIOPs    File    
------------     ----------     ----------     ---------------    ----    
SQL14        500        1000        0           sql14.vhdx    
VMM16        50         200         7           vmm16.vhdx    
WS16-VM01      33         133         0           WS16-VM01.vhdx    
WS16-VM01      33         133        0           DATADisk01.vhdx    
WS16-VM01      33         133        0           DATADisk02.vhdx    
WS16-VM02      0         0         0           WS16-VM02.vhdx

 

 


本文出自 “黄利军的博客” 博客,转载请与作者联系!

以上是关于Windows Server 2016软件定义存储之QoS的主要内容,如果未能解决你的问题,请参考以下文章

Windows Server 2016 存储空间直通 (S2D)实验

Windows Server 2016 正式版安装教程

Windows Server 软件定义存储—存储空间IO的分发

Windows Server 2016 正式版安装教程

windows server 2016 课程讲义

Windows Server 2016 Storage Replica