内容简介:Windows Server SDS 存储QoS
存储QoS简介
Windows Server 2016文件服务器和Hyper-V群集默认集成了存储QoS功能,基于群集存储空间的存储无论是SOFS SMB共享还是CSV都支持存储QoS,存储QoS通过策略应用到Hyper-V群集上的虚机。文件服务器群集里默认开启QoS策略管理器,用于集中监视存储性能,保存在SMB或者CSV的Hyper-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策略,设置最小IOPS为100,最大为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这个参数后接名为HighPerf的QoS策略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,最大400的QoS策略,那么每个VHDX的IOPS最小为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值最小和最大值分别从200和800调整到500和1000。先使用如下PowerShell命令Set-StorageQosPolicy完成QoS策略变更,然后使用Get-StorageQosPolicy查询QoS策略修改结果,结果应如下示例所示。
| PS C:\> Get-StorageQosPolicy -Name HighPerf | Set-StorageQosPolicy -MinimumI OPS 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 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 块存储、文件存储、对象存储三者之比较
- 云原生存储详解:容器存储与 K8s 存储卷
- Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)
- 存储技术之云存储
- 选存储,就选原生块存储!
- Mysql之存储过程与存储函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developer's Guide to Social Programming
Mark D. Hawker / Addison-Wesley Professional / 2010-8-25 / USD 39.99
In The Developer's Guide to Social Programming, Mark Hawker shows developers how to build applications that integrate with the major social networking sites. Unlike competitive books that focus on a s......一起来看看 《Developer's Guide to Social Programming》 这本书的介绍吧!