存儲QoS簡介sql
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邏輯結構圖
ide
設置存儲QoS性能
Windows Server 2016 故障轉移羣集配置了CSV後,存儲QoS功能自動啓動,無需額外配置。在羣集裏添加可用的磁盤爲CSV後,存儲QoS資源便會在羣集核心資源裏顯示。能夠經過故障轉移羣集管理器或者PowerShell查看存儲QoS資源。一樣,Windows Server 2016 啓用Hyper-V角色之後也會自動啓動存儲QoS功能,如圖2所示。優化
圖2 Windows Server 2016羣集存儲QoS資源ui
檢索文件流和卷的存儲QoSspa
咱們已經配置好S2D和超融合結構,在其CSV裏存儲着若干運行着的虛機,可以使用PowerShell命令查看全部虛機文件流的IOPS和帶寬狀況,以下示例所示。3d
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配置狀況,以下示例所示。
orm
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策略blog
在規劃好虛機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策略會在線同步更新。接下來咱們找一個以前應用到虛機的名爲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