Windows Server 2016软件定义存储之存储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 -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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
提高 SharePoint 页面访问速度之SQL优化
前面两篇文章我们和大家一起讨论到了SharePoint IIS的应用池回收,W3WP进程数和重置回收等方面的优化,今天来和大家讲讲后端SQL服务器的优化。 对于SQL的优化,今天主要介绍的就是两点,CPU的优化和内存的优化。 很多同学在装好SQL之后,其实并没有对内存优化进行设置,导致SQL的内存分配很不合理,针对于SharePoint,建议设置SQL的使用内存最少为 8192 MB,最多为 20480 MB 这个临界值。 如上设置,注意,这里的配置值和运行值一定要配置两次,并且要保证其一直,否则不会生效,如果不匹配,多点击几次即可。 默认情况下,这两个值的设置是不一样的,需要我们点击配置项,点击确定保存,再输入值,点击运行项目,再点击确定。多设置几次,两个地方反复点OK,多试几次。 OK,说完内存,现在我们来说下CPU,在一个SharePoint环境里面,或者私有云环境里面,正常情况下,SQL的CPU应该至少要跑在 40% ,伴随着硬盘会有频繁的读写IO。 如果CPU占用不高,磁盘IO读写也不高,那就是SQL拖了后腿,SQL一旦拖后腿了,前端web服务器再怎么优化和牛X,用户访问也...
- 下一篇
MongoDB慢日志查询
MongoDB system.profile 前言 Part1:写在最前 说到MongoDB的慢日志分析,就不得不提到profile分析器,profile分析器将记录的慢日志写到system.profile集合下,这个集合是一个固定集合。我们可以通过对这个集合的查询,来了解当前的慢日志,进而对数据库进行优化。 Part2:整体环境 MongoDB3.2.5 实战 Part1:输出示范 在查询system.profile的时候,我们能够观察到所有的操作,包括remove,update,find等等都会被记录到system.profile集合中,该集合中包含了诸多信息,如: { "op":"query", "ns":"test.c", "query":{ "find":"c", "filter":{ "a":1 } }, "keysExamined":2, "docsExamined":2, "cursorExhausted":true, "keyUpdates":0, "writeConflicts":0, "numYield":0, "locks":{ "Global":{ "acqu...
相关文章
文章评论
共有0条评论来说两句吧...