記憶域のサービスの品質 (QoS)
Windows Server 2016 の記憶域のサービスの品質 (QoS) では、Hyper-V とスケールアウト ファイル サーバーの役割を使用して仮想マシンのために記憶域のパフォーマンスを一元的に監視および管理する方法を提供します。 この機能は、同一のファイル サーバー クラスターを使用している複数の仮想マシン間で記憶域リソースの公平性を自動的に向上させ、正規化された IOPS の単位でポリシー ベースの最小と最大のパフォーマンス目標を構成できるようにします。
Windows Server 2016 の記憶域 QoS を使用して、次の作業を実行できます。
ノイズのある近隣ノードの問題を軽減します。 既定では、記憶域 QoS によって、1 つの仮想マシンがすべての記憶域リソースを消費したり、他の仮想マシンのストレージ帯域幅が枯渇したりしないようにします。
エンド ツー エンドの記憶域のパフォーマンスを監視します。 スケール アウト ファイル サーバーに格納されている仮想マシンが起動されるとすぐに、それらのパフォーマンスが監視されます。 すべての実行中の仮想マシンのパフォーマンスの詳細とスケールアウト ファイル サーバー クラスターの構成を 1 つの場所から表示できます。
ワークロードのビジネス ニーズごとに記憶域 I/O を管理します。記憶域 QoS ポリシーは、仮想マシンの最低と最高のパフォーマンスを定義し、それらが満たされることを確認します。 これにより、高密度の過剰にプロビジョニングされた環境でも、仮想マシンの一貫したパフォーマンスを提供します。 ポリシーを満たすことができない場合は、警告を使用して、VM がポリシーを守れない状況または無効なポリシーが割り当てられた状況を追跡します。
このドキュメントでは、新しい記憶域 QoS 機能から企業がメリットを得る方法について説明します。 ここでは、Windows Server、Windows Server フェールオーバー クラスタリング、スケールアウト ファイル サーバー、Hyper-V、Windows PowerShell に関する実用的な知識があることを前提としています。
概要
このセクションでは、記憶域 QoS を使用するための要件、記憶域 QoS を使用するソフトウェア定義ソリューションの概要、および記憶域 QoS 関連の用語について説明します。
記憶域 QoS の要件
記憶域 QoS は、2 つの展開シナリオをサポートしています。
スケールアウト ファイル サーバーを使用する Hyper-V このシナリオには次の両方が必要です。
スケール アウト ファイル サーバー クラスターである記憶域クラスター
HYPER-V の役割が有効になっている少なくとも 1 つのサーバーが含まれる計算クラスター
記憶域 QoS では、記憶域サーバー上にフェールオーバー クラスターが必要ですが、計算サーバーはフェールオーバー クラスターになる必要はありません。 すべてのサーバー (記憶域用と計算用の両方) で、Windows Server 2016 を実行している必要があります。
評価を目的とするスケールアウト ファイル サーバーを展開していない場合は、既存のサーバーまたは仮想マシンを使用して構築するための手順について、「Windows Server 2012 R2 Storage: Step-by-step with Storage Spaces, SMB Scale-Out and Shared VHDX (Physical)」 (Windows Server 2012 R2 記憶域: 記憶域、SMB スケールアウトおよび共有 VHDX を使用した手順 (物理)) を参照してください。
クラスター共有ボリュームを使用した Hyper-V。 このシナリオでは、次の両方のものが必要です。
HYPER-V の役割が有効になっているコンピューティング クラスター
クラスター共有ボリューム (CSV) を記憶域に使用した Hyper-V
フェールオーバー クラスターが必要です。 すべてのサーバーで、同じバージョンの Windows Server 2016 を実行している必要があります。
ソフトウェア定義記憶域ソリューションでの記憶域 QoS を使用
記憶域のサービス品質は、スケールアウト ファイル サーバーおよび Hyper-V によって提供されるマイクロソフトのソフトウェア定義記憶域ソリューションに組み込まれています。 スケールアウト ファイル サーバーは、SMB3 プロトコルを使用して Hyper-V サーバーにファイル共有を公開します。 中央でストレージのパフォーマンスを監視できる新しいポリシー マネージャーがファイル サーバー クラスターに追加されました。
図 1: スケールアウト ファイル サーバーのソフトウェア定義記憶域ソリューションでの記憶域 QoS の使用
Hyper-V サーバーが仮想マシンを起動すると、それらはポリシー マネージャーによって監視されます。 ポリシー マネージャーは、記憶域 QoS ポリシーおよびすべての制限または予約を Hyper-V サーバーに伝達し、Hyper-V サーバーが仮想マシンのパフォーマンスを適切に制御します。
記憶域 QoS ポリシーまたは仮想マシンに必要なパフォーマンスが変化した場合、ポリシー マネージャーが Hyper-V サーバーに通知してそれらの動作を調整します。 このフィードバック ループにより、定義された記憶域 QoS ポリシーに従って、すべての仮想マシンの VHD が継続的に実行されます。
用語集
相談 | 説明 |
---|---|
正規化された IOPS | すべての記憶域の使用量は、"正規化された IOPS" で計測されます。これは、1 秒あたりの記憶域での入力/出力操作の数です。 8 KB 以下の IO はすべて 1 つの正規化された IO と見なされます。 8 KB より大きいすべての IO は、複数の正規化された IO と見なされます。 たとえば、256 KB の要求は、32 の正規化された IOPS として扱われます。 Windows Server 2016 には、IO を正規化するために使用するサイズを指定する機能が含まれています。 記憶域クラスター上で、正規化されたサイズを指定し、クラスター全体の正規化の計算に適用することができます。 既定値は、8 KB のままです。 この設定は、すべての仮想マシンに影響します (ローカル ボリューム上に作成された仮想マシンも影響を受けます)。 |
Flow | VHD または VHDX ファイルに対して Hyper-V サーバーによって開かれる各ファイル ハンドルは ”フロー” と見なされます。 仮想マシンに 2 台の仮想ハードディスクが接続されている場合、ファイルごとに 1 つのファイル サーバー クラスターへのフローがあります。 VHDX が複数の仮想マシンで共有されている場合、仮想マシンごとに 1 つのフローがあります。 |
InitiatorName | 各フローに対応するスケール アウト ファイル サーバーに報告されている仮想マシンの名前です。 |
InitiatorID | 仮想マシンの ID と一致する識別子。 仮想マシンに同じ InitiatorName が指定されている場合でも、これを使用して常に個別のフローの仮想マシンを一意に識別することができます。 |
ポリシー | 記憶域 QoS ポリシーは、クラスター データベースに保存され、PolicyId、MinimumIOPS、MaximumIOPS、ParentPolicy、PolicyType というプロパティがあります。 |
PolicyId | ポリシーの一意の識別子。 既定で生成されますが、必要に応じて指定できます。 |
MinimumIOPS | ポリシーによって提供される最小の正規化された IOPS。 ”予約” とも呼ばれます。 |
MaximumIOPS | ポリシーによって提供される最大の正規化された IOPS。 ”制限” とも呼ばれます。 |
Aggregated | 指定された MinimumIOPS、MaximumIOPS、および帯域幅は、ポリシーに割り当てられたすべてのフローで共有されます。 ストレージ システムにポリシーが割り当てられたすべての VHD には、全体で共有する 1 つの I/O 帯域幅が割り当てられています。 |
専用 | 指定された Minimum および MaximumIOPS と帯域幅が個別の VHD/VHDx に対して管理されるポリシーの種類。 |
記憶域 QoS とモニターの基本的なパフォーマンスを設定する方法
このセクションでは、新しい記憶域 QoS を有効にする方法およびカスタム ポリシーを適用せずにストレージの記憶域のパフォーマンスを監視する方法について説明します。
記憶域クラスターに記憶域 QoS を設定する
このセクションでは、Windows Server 2016 を実行している新規または既存のフェールオーバー クラスターおよびスケールアウト ファイル サーバー上で記憶域 QoS を有効にする方法について説明します。
新しいインストール上で記憶域 QoS を設定する
新しいフェールオーバー クラスターが構成済みであり、Windows Server 2016 上でクラスターの共有ボリューム (CSV) を構成した場合、記憶域 QoS 機能は自動的に設定されます。
記憶域 QoS のインストールを確認する
フェールオーバー クラスターを作成し、CSV ディスクを構成すると、記憶域 QoS リソースがクラスター コア リソースとして表示され、フェールオーバー クラスター マネージャーおよび Windows PowerShell の両方に表示されます。 これは、フェールオーバー クラスター システムでこのリソースを管理することを目的としており、このリソースに対してユーザーが何か操作を実行する必要はありません。 フェールオーバー クラスター マネージャーと PowerShell の両方に表示されるのは、新しいヘルス サービスなどの他のフェールオーバー クラスター システム リソースとの一貫性を維持するためです。
図 2: フェールオーバー クラスター マネージャーにクラスター コア リソースとして表示された記憶域 QoS リソース
記憶域 QoS リソースのステータスを表示するには、以下の PowerShell コマンドレットを使用します。
PS C:\> Get-ClusterResource -Name "Storage Qos Resource"
Name State OwnerGroup ResourceType
---- ----- ---------- ------------
Storage Qos Resource Online Cluster Group Storage QoS Policy Manager
コンピューティング クラスターに記憶域 QoS を設定する
Windows Server 2016 の Hyper-V の役割には、記憶域 QoS のサポートが組み込まれており、既定で有効化されます。
リモート コンピューターから記憶域 QoS ポリシーを管理するためのリモート管理ツールをインストールする
リモート サーバー管理ツールを使用して、記憶域 QoS ポリシーを管理し、コンピューティング ホストからのフローを監視することができます。 これらは、すべての Windows Server 2016 のインストールでオプション機能として使用することができ、Microsoft ダウンロード センター Web サイトで Windows 10 用に個別にダウンロードできます。
RSAT-Clustering オプション機能には、記憶域 QoS を含むフェールオーバー クラスタリングをリモートで管理するための Windows PowerShell モジュールが含まれています。
- Windows PowerShell: Add-WindowsFeature RSAT-Clustering
RSAT-Hyper-V-Tools オプション機能には、Hyper-V をリモートで管理するための Windows PowerShell モジュールが含まれています。
- Windows PowerShell: Add-WindowsFeature RSAT-Hyper-V-Tools
テスト用ワークロードを実行するための仮想マシンを展開する
適切なワークロードと共にいくつかの仮想マシンをスケールアウト ファイル サーバー上に保存する必要があります。 負荷のシミュレーション方法やストレス テストの実行方法のヒントについては、DiskSpd、PowerShell、および記憶域のパフォーマンス: ローカル ディスクと SMB ファイル共有の両方の IOPS、スループット、および待機時間の測定に関するページの推奨するツール (DiskSpd) といくつかの使用例を参照してください。
このガイドに表示されるシナリオの例には、5 台の仮想マシンが含まれています。 BuildVM1、BuildVM2、BuildVM3、BuildVM4 は、低から中程度の記憶域の需要でデスクトップのワークロードを実行しています。 TestVm1 は、最も大きな記憶域の需要でオンライン トランザクション処理ベンチマークを実行しています。
現在のパフォーマンス メトリックを表示する
ここでは、以下の内容について説明します。
Get-StorageQosFlow
コマンドレットを使用したフローのクエリ方法。Get-StorageQosVolume
コマンドレットを使用したボリュームのパフォーマンスの表示方法。
Get-StorageQosFlow コマンドレットを使用したクエリ フロー
Get StorageQosFlow コマンドレットは、HYPER-V サーバーによって開始されたすべての現在のフローを示しています。 すべてのデータはスケールアウト ファイル サーバー クラスターによって収集されるので、スケールアウト ファイル サーバー クラスター内の任意のノードでこのコマンドレットを使用できます。または、-CimSession パラメーターを使用してリモート サーバーに対して使用することもできます。
次のサンプル コマンドは、Get-StorageQoSFlow を使用してサーバー上で Hyper-V によって開かれたすべてのファイルを表示する方法を示しています。
PS C:\> Get-StorageQosFlow
InitiatorName InitiatorNodeNam StorageNodeName FilePath Status
e
------------- ---------------- --------------- -------- ------
plang-fs3.pla... C:\ClusterSt... Ok
plang-fs2.pla... C:\ClusterSt... Ok
plang-fs1.pla... C:\ClusterSt... Ok
plang-fs3.pla... C:\ClusterSt... Ok
plang-fs2.pla... C:\ClusterSt... Ok
plang-fs1.pla... C:\ClusterSt... Ok
TR20-VMM plang-z400.pl... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM4 plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
WinOltp1 plang-c1.plan... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM3 plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM1 plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
TR20-VMM plang-z400.pl... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM2 plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
TR20-VMM plang-z400.pl... plang-fs1.pla... C:\ClusterSt... Ok
plang-fs3.pla... C:\ClusterSt... Ok
plang-fs2.pla... C:\ClusterSt... Ok
BuildVM4 plang-c2.plan... plang-fs2.pla... C:\ClusterSt... Ok
WinOltp1 plang-c1.plan... plang-fs2.pla... C:\ClusterSt... Ok
BuildVM3 plang-c2.plan... plang-fs2.pla... C:\ClusterSt... Ok
WinOltp1 plang-c1.plan... plang-fs2.pla... C:\ClusterSt... Ok
plang-fs1.pla... C:\ClusterSt... Ok
次のサンプル コマンドは、IOPS で並べ替えられた仮想マシン名、Hyper-V ホスト名、IOPS、および VHD ファイル名を表示するように書式設定されます。
PS C:\> Get-StorageQosFlow | Sort-Object StorageNodeIOPS -Descending | ft InitiatorName, @{Expression={$_.InitiatorNodeName.Substring(0,$_.InitiatorNodeName.IndexOf('.'))};Label="InitiatorNodeName"}, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize
InitiatorName InitiatorNodeName StorageNodeIOPS Status File
------------- ----------------- --------------- ------ ----
WinOltp1 plang-c1 3482 Ok IOMETER.VHDX
BuildVM2 plang-c2 544 Ok BUILDVM2.VHDX
BuildVM1 plang-c2 497 Ok BUILDVM1.VHDX
BuildVM4 plang-c2 316 Ok BUILDVM4.VHDX
BuildVM3 plang-c2 296 Ok BUILDVM3.VHDX
BuildVM4 plang-c2 195 Ok WIN8RTM_ENTERPRISE_VL_BU...
TR20-VMM plang-z400 156 Ok DATA1.VHDX
BuildVM3 plang-c2 81 Ok WIN8RTM_ENTERPRISE_VL_BU...
WinOltp1 plang-c1 65 Ok BOOT.VHDX
18 Ok DefaultFlow
12 Ok DefaultFlow
WinOltp1 plang-c1 4 Ok 9914.0.AMD64FRE.WINMAIN....
TR20-VMM plang-z400 4 Ok DATA2.VHDX
TR20-VMM plang-z400 3 Ok BOOT.VHDX
0 Ok DefaultFlow
0 Ok DefaultFlow
0 Ok DefaultFlow
0 Ok DefaultFlow
0 Ok DefaultFlow
0 Ok DefaultFlow
0 Ok DefaultFlow
次のサンプル コマンドは、InitiatorName を基にしてフローをフィルター処理し、特定の仮想マシンの記憶域のパフォーマンスと設定を簡単に見つける方法を示しています。
PS C:\> Get-StorageQosFlow -InitiatorName BuildVm1 | Format-List
FilePath : C:\ClusterStorage\Volume2\SHARES\TWO\BUILDWORKLOAD\BUILDVM1.V
HDX
FlowId : ebfecb54-e47a-5a2d-8ec0-0940994ff21c
InitiatorId : ae4e3dd0-3bde-42ef-b035-9064309e6fec
InitiatorIOPS : 464
InitiatorLatency : 26.2684
InitiatorName : BuildVM1
InitiatorNodeName : plang-c2.plang.nttest.microsoft.com
Interval : 300000
Limit : 500
PolicyId : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
Reservation : 500
Status : Ok
StorageNodeIOPS : 475
StorageNodeLatency : 7.9725
StorageNodeName : plang-fs1.plang.nttest.microsoft.com
TimeStamp : 2/12/2015 2:58:49 PM
VolumeId : 4d91fc3a-1a1e-4917-86f6-54853b2a6787
PSComputerName :
MaximumIops : 500
MinimumIops : 500
Get-StorageQosFlow
コマンドレットによって次のようなデータが返されます。
Hyper-V ホスト名 (InitiatorNodeName)。
仮想マシンの名前と ID (InitiatorName と InitiatorId)
Hyper-V ホストによって観測された最近の仮想ディスクの平均パフォーマンス (InitiatorIOPS、InitiatorLatency)
仮想ディスクの記憶域クラスターによって観測された最新の平均パフォーマンス (StorageNodeIOPS、StorageNodeLatency)
ファイルに適用されている現在のポリシー (存在する場合)、および結果の構成 (PolicyId、Reservation、Limit)
ポリシーの状態
Ok - 問題はありません。
InsufficientThroughput - ポリシーが適用されていますが、Minimum IOPS を提供できません。 この状況は、VM の最小値、またはすべての VM を合わせた最小値が、記憶域ボリュームが提供できる値を超えている場合に発生することがあります。
UnknownPolicyId - Hyper-V ホスト上の仮想マシンにポリシーが割り当てられていますが、ファイル サーバーにはありません。 このポリシーを仮想マシンの構成から削除するか、ファイル サーバー クラスター上に一致するポリシーを作成する必要があります。
Get-StorageQosVolume を使用してボリュームのパフォーマンスを表示する
記憶域のパフォーマンス メトリックは、フローごとのパフォーマンス メトリックに加えて、記憶域ボリューム レベルでも収集されます。 これにより、正規化された IOPS、待機時間、ボリュームに適用された合計制限および予約の合計平均使用率を簡単に表示できます。
PS C:\> Get-StorageQosVolume | Format-List
Interval : 300000
IOPS : 0
Latency : 0
Limit : 0
Reservation : 0
Status : Ok
TimeStamp : 2/12/2015 2:59:38 PM
VolumeId : 434f561f-88ae-46c0-a152-8c6641561504
PSComputerName :
MaximumIops : 0
MinimumIops : 0
Interval : 300000
IOPS : 1097
Latency : 3.1524
Limit : 0
Reservation : 1568
Status : Ok
TimeStamp : 2/12/2015 2:59:38 PM
VolumeId : 4d91fc3a-1a1e-4917-86f6-54853b2a6787
PSComputerName :
MaximumIops : 0
MinimumIops : 1568
Interval : 300000
IOPS : 5354
Latency : 6.5084
Limit : 0
Reservation : 781
Status : Ok
TimeStamp : 2/12/2015 2:59:38 PM
VolumeId : 0d2fd367-8d74-4146-9934-306726913dda
PSComputerName :
MaximumIops : 0
MinimumIops : 781
記憶域 QoS ポリシーの作成および監視方法
このセクションでは、記憶域 QoS ポリシーを作成し、それらのポリシーを仮想マシンに適用して、ポリシー適用後の記憶域クラスターを監視する方法について説明します。
記憶域 QoS ポリシーを作成する
記憶域 QoS ポリシーは、スケールアウト ファイル サーバー クラスターで定義および管理されます。 展開の柔軟性を高めるために必要な数 (記憶域クラスターあたり最大 10,000) のポリシーを作成できます。
仮想マシンに割り当てられる各 VHD/VHDX ファイルは、ポリシーを使用して構成することができます。 異なるファイルや仮想マシンで同じポリシーを使用することも、個別のポリシーを使用してそれぞれを構成することもできます。 複数の VHD/VHDX ファイルまたは複数の仮想マシンが、同じポリシーを使用して構成されている場合、それらは一緒に集計され、MinimumIOPS と MaximumIOPS を均等に共有します。 複数の VHD/VHDX ファイルまたは仮想マシンで個別のポリシーを使用する場合、最小値と最大値はそれぞれ個別に追跡されます。
異なる仮想マシン用に複数の類似したポリシーを作成し、仮想マシンの記憶域の需要が同等である場合、それらは同等の IOPS の共有を割り当てられます。 1 つの VM の需要が他の VM より多い場合、IOPS は、その需要に従います。
記憶域 QoS ポリシーの種類
Aggregated (以前の SingleInstance) と Dedicated (以前の MultiInstance) という 2 種類のポリシーがあります。 Aggregated ポリシーは、適用対象者 VHD/VHDX ファイルと仮想マシンを組み合わせたセットの最大値と最小値を適用します。 実際には、指定された IOPS と帯域幅のセットを共有します。 Dedicated ポリシーは、各 VHD/VHDx の最小値と最大値を個別に適用します。 これにより、類似した制限を複数の VHD/VHDx ファイルに適用する単一のポリシーを簡単に作成できます。
たとえば、最小値が 300 IOPS で最大値が 500 IOPS の Aggregated ポリシーを作成するとします。 このポリシーを 5 つの異なる VHD/VHDx ファイルに適用する場合、5 つの VHD/VHDx ファイルの合計が、300 IOPS (需要があり、記憶域システムがそのパフォーマンスを提供できる場合) 以上で 500 IOPS 未満であることが保証されるかどうかを確認します。 VHD/VHDx ファイルの IOPS 需要が同様の高さで、記憶域システムで対応できる場合、各 VHD/VHDx ファイルは約 100 IOPS になります。
ただし、類似した制限を持つ Dedicated ポリシーを作成し、それを 5 つの異なる仮想マシン上の VHD/VHDx ファイルに適用した場合、各仮想マシンは 300 IOPS 以上 500 IOPS 未満を取得します。 仮想マシンに同程度の IOPS の高い需要があり、記憶域システムがそれを提供できる場合、各仮想マシンは、約 500 IOPS を取得します。 いずれかの仮想マシンに、同じ MulitInstance ポリシーが構成された複数の VHD/VHDx ファイルがある場合、それらは、VM のそのポリシーが適用されたファイルからの合計 IO が、制限を超えないように制限を共有します。
そのため、同じパフォーマンス特性を示すようにしたい VHD/VHDx ファイルのグループがあり、複数の類似したポリシーを作成するという問題を回避したい場合、単一の Dedicated ポリシーを作成し、各仮想マシンのファイルに適用することができます。
1 つの Aggregated ポリシーに割り当てられた VHD/VHDx ファイルの数を 20 以下に維持します。 この種類のポリシーは、クラスター上のいくつかの VM で集計を行うことを目的としていました。
Dedicated ポリシーを作成して適用する
最初に次の例に示すように、New-StorageQosPolicy
コマンドレットを使用して、スケールアウト ファイル サーバー上にポリシーを作成します。
$desktopVmPolicy = New-StorageQosPolicy -Name Desktop -PolicyType Dedicated -MinimumIops 100 -MaximumIops 200
次に、Hyper-V サーバー上の適切な仮想マシンのハード ディスク ドライブにそれを適用します。 前の手順の PolicyId をメモするか、スクリプトの変数に保存します。
次の例に示すように、スケールアウト ファイル サーバー上で PowerShell を使用して、記憶域 QoS ポリシーを作成し、ポリシー ID を取得します。
PS C:\> $desktopVmPolicy = New-StorageQosPolicy -Name Desktop -PolicyType Dedicated -MinimumIops 100 -MaximumIops 200
C:\> $desktopVmPolicy.PolicyId
Guid
----
1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
次の例に示すように、Hyper-V サーバー上で PowerShell を使用し、ポリシー ID を使用して記憶域 QoS ポリシーを設定します。
Get-VM -Name Build* | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
ポリシーが適用されていることを確認します。
次の例に示すように、Get-StorageQosFlow
PowerShell コマンドレットを使用して、MinimumIOPS と MaximumIOPS が適切なフローに適用されていることを確認します。
PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName |
ft InitiatorName, Status, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize
InitiatorName Status MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ------ ----------- ----------- --------------- ------ ----
BuildVM1 Ok 100 200 250 Ok BUILDVM1.VHDX
BuildVM2 Ok 100 200 251 Ok BUILDVM2.VHDX
BuildVM3 Ok 100 200 252 Ok BUILDVM3.VHDX
BuildVM4 Ok 100 200 233 Ok BUILDVM4.VHDX
TR20-VMM Ok 33 666 1 Ok DATA2.VHDX
TR20-VMM Ok 33 666 5 Ok DATA1.VHDX
TR20-VMM Ok 33 666 4 Ok BOOT.VHDX
WinOltp1 Ok 0 0 0 Ok 9914.0.AMD6...
WinOltp1 Ok 0 0 5166 Ok IOMETER.VHDX
WinOltp1 Ok 0 0 0 Ok BOOT.VHDX
Hyper-V サーバー上で、提供されたスクリプト Get-VMHardDiskDrivePolicy.ps1 を使用して、仮想ハード ディスク ドライブにどのポリシーが適用されるか確認します。
PS C:\> Get-VM -Name BuildVM1 | Get-VMHardDiskDrive | Format-List
Path : \\plang-fs.plang.nttest.microsoft.com\two\BuildWorkload
\BuildVM1.vhdx
DiskNumber :
MaximumIOPS : 0
MinimumIOPS : 0
QoSPolicyID : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
SupportPersistentReservations : False
ControllerLocation : 0
ControllerNumber : 0
ControllerType : IDE
PoolName : Primordial
Name : Hard Drive
Id : Microsoft:AE4E3DD0-3BDE-42EF-B035-9064309E6FEC\83F8638B
-8DCA-4152-9EDA-2CA8B33039B4\0\0\D
VMId : ae4e3dd0-3bde-42ef-b035-9064309e6fec
VMName : BuildVM1
VMSnapshotId : 00000000-0000-0000-0000-000000000000
VMSnapshotName :
ComputerName : PLANG-C2
IsDeleted : False
記憶域 QoS ポリシーのクエリ
Get-StorageQosPolicy
では、スケールアウト ファイル サーバー上で構成されているすべてのポリシーとそれらのステータスを一覧表示します。
PS C:\> Get-StorageQosPolicy
Name MinimumIops MaximumIops Status
---- ----------- ----------- ------
Default 0 0 Ok
Limit500 0 500 Ok
SilverVm 500 500 Ok
Desktop 100 200 Ok
Limit500 0 0 Ok
VMM 100 2000 Ok
Vdi 1 100 Ok
システムのパフォーマンスの状況に応じて、ステータスは時間の経過と共に変化することがあります。
Ok - そのポリシーを使用しているすべてのフローが、要求された MinimumIOPS を受け取っています。
InsufficientThroughput - このポリシーを使用している 1 つ以上のフローが Minimum IOPS を受け取っていません
次のように、パイプを使用してポリシーを Get-StorageQosPolicy
に渡し、ポリシーを使用するように構成されているすべてのフローのステータスを取得することもできます。
PS C:\> Get-StorageQosPolicy -Name Desktop | Get-StorageQosFlow | ft InitiatorName, *IOPS, Status, FilePath -AutoSize
InitiatorName MaximumIops MinimumIops InitiatorIOPS StorageNodeIOPS Status FilePat
h
------------- ----------- ----------- ------------- --------------- ------ -------
BuildVM4 100 50 187 17 Ok C:\C...
BuildVM3 100 50 194 25 Ok C:\C...
BuildVM1 200 100 195 196 Ok C:\C...
BuildVM2 200 100 193 192 Ok C:\C...
BuildVM4 200 100 187 169 Ok C:\C...
BuildVM3 200 100 194 169 Ok C:\C...
Aggregated ポリシーを作成する
複数の仮想ハード ディスクで IOPS および帯域幅の 1 つのプールを共有する場合は、Aggregated ポリシーを使用する必要があります。 たとえば、同じ Aggregated ポリシーを、2 つの仮想マシンのハード ディスクに適用する場合、最小値は、需要に従ってそれらの間で分割されます。 両方のディスクが、組み合わせた最小値を保証され、それらの合計は、指定された最大 IOPS または帯域幅を超えません。
同じアプローチを使用して、サービスを構成している仮想マシンまたはマルチホスト環境内のテナントに属している仮想マシンのすべての VHD/VHDx ファイルに 1 つの割り当てを提供することもできます。
指定される PolicyType を除いて、Dedicated ポリシーと Aggregated ポリシーの作成プロセスに違いはありません。
次の例は、スケールアウト ファイル サーバー上で Aggregated 記憶域 QoS ポリシーを作成し、policyID を取得する方法を示しています。
PS C:\> $highPerf = New-StorageQosPolicy -Name SqlWorkload -MinimumIops 1000 -MaximumIops 5000 -PolicyType Aggregated
[plang-fs]: PS C:\Users\plang\Documents> $highPerf.PolicyId
Guid
----
1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
次の例は、Hyper-V サーバー上で、前の例で取得した policyID を使用して、記憶域 QoS ポリシーを適用する方法を示しています。
PS C:\> Get-VM -Name WinOltp1 | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
次の例は、ファイル サーバーから記憶域 QoS ポリシーの効果を表示する方法を示しています。
PS C:\> Get-StorageQosFlow -InitiatorName WinOltp1 | format-list InitiatorName, PolicyId, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, FilePath
InitiatorName : WinOltp1
PolicyId : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
MinimumIops : 250
MaximumIops : 1250
StorageNodeIOPS : 0
FilePath : C:\ClusterStorage\Volume2\SHARES\TWO\BASEVHD\9914.0.AMD64FRE.WIN
MAIN.141218-1718_SERVER_SERVERDATACENTER_EN-US.VHDX
InitiatorName : WinOltp1
PolicyId : 2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6
MinimumIops : 250
MaximumIops : 1250
StorageNodeIOPS : 0
FilePath : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\BOOT.VHDX
InitiatorName : WinOltp1
PolicyId : 3cccccc3-4dd4-5ee5-6ff6-7aaaaaaaaaa7
MinimumIops : 1000
MaximumIops : 5000
StorageNodeIOPS : 4550
FilePath : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX
PS C:\> Get-StorageQosFlow -InitiatorName WinOltp1 | for
mat-list InitiatorName, PolicyId, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, FilePath
InitiatorName : WinOltp1
PolicyId : 4dddddd4-5ee5-6ff6-7aa7-8bbbbbbbbbb8
MinimumIops : 250
MaximumIops : 1250
StorageNodeIOPS : 0
FilePath : C:\ClusterStorage\Volume2\SHARES\TWO\BASEVHD\9914.0.AMD64FRE.WIN
MAIN.141218-1718_SERVER_SERVERDATACENTER_EN-US.VHDX
InitiatorName : WinOltp1
PolicyId : 5eeeeee5-6ff6-7aa7-8bb8-9cccccccccc9
MinimumIops : 250
MaximumIops : 1250
StorageNodeIOPS : 0
FilePath : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\BOOT.VHDX
InitiatorName : WinOltp1
PolicyId : 6ffffff6-7aa7-8bb8-9cc9-0dddddddddd0
MinimumIops : 1000
MaximumIops : 5000
StorageNodeIOPS : 4550
FilePath : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX
各仮想ハード ディスクに、その負荷を元にして調整された MinimumIOPS、MaximumIOPS、および MaximumIobandwidth 値が適用されます。 これにより、ディスクのグループで使用される帯域幅の合計量が、ポリシーで定義された範囲内に収まることが保証されます。 上の例では、最初の 2 つのディスクはアイドル状態であり、3 番目のディスクが最大 IOPS までの使用を許可されます。 最初の 2 つのディスクが再び IO の発行を開始した場合、3 番目のディスクの最大 IOPS は自動的に小さくなります。
既存のポリシーを変更する
Name、MinimumIOPS、MaximumIOPS、および MaximumIoBandwidthcan のプロパティをポリシー作成後に変更することができます。 ただし、ポリシーの種類 (Aggregated/Dedicated) は、ポリシーを作成した後には変更できません。
次の Windows PowerShell コマンドレットは、既存のポリシーの MaximumIOPS プロパティを変更する方法を示しています。
[DBG]: PS C:\demoscripts>> Get-StorageQosPolicy -Name SqlWorkload | Set-StorageQosPolicy -MaximumIops 6000
次のコマンドレットは変更を確認します。
PS C:\> Get-StorageQosPolicy -Name SqlWorkload
Name MinimumIops MaximumIops Status
---- ----------- ----------- ------
SqlWorkload 1000 6000 Ok
[plang-fs1]: PS C:\Users\plang\Documents> Get-StorageQosPolicy -Name SqlWorkload | Get-Storag
eQosFlow | Format-Table InitiatorName, PolicyId, MaximumIops, MinimumIops, StorageNodeIops -A
utoSize
InitiatorName PolicyId MaximumIops MinimumIops StorageNodeIops
------------- -------- ----------- ----------- ---------------
WinOltp1 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5 1500 250 0
WinOltp1 2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6 1500 250 0
WinOltp1 3cccccc3-4dd4-5ee5-6ff6-7aaaaaaaaaa7 6000 1000 4507
一般的な問題を識別して対処する方法
このセクションでは、無効な記憶域 QoS ポリシーが適用されている仮想マシンを見つける方法、同じポリシーを再作成する方法、仮想マシンからポリシーを削除する方法、記憶域 QoS ポリシーの要件を満たしていない仮想マシンを識別する方法について説明します。
無効なポリシーが適用されている仮想マシンを識別する
ポリシーが仮想マシンから削除される前にファイル サーバーから削除された場合、仮想マシンはポリシーが適用されていない場合と同様に稼動し続けます。
PS C:\> Get-StorageQosPolicy -Name SqlWorkload | Remove-StorageQosPolicy
Confirm
Are you sure you want to perform this action?
Performing the operation "DeletePolicy" on target "MSFT_StorageQoSPolicy (PolicyId =
"1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5")".
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):
フローのステータスには、"UnknownPolicyId" と表示されるようになります。
PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, Status, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize
InitiatorName Status MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ------ ----------- ----------- --------------- ------ ----
Ok 0 0 0 Ok Def...
Ok 0 0 10 Ok Def...
Ok 0 0 13 Ok Def...
Ok 0 0 0 Ok Def...
Ok 0 0 0 Ok Def...
Ok 0 0 0 Ok Def...
Ok 0 0 0 Ok Def...
Ok 0 0 0 Ok Def...
Ok 0 0 0 Ok Def...
BuildVM1 Ok 100 200 193 Ok BUI...
BuildVM2 Ok 100 200 196 Ok BUI...
BuildVM3 Ok 50 64 17 Ok WIN...
BuildVM3 Ok 50 136 179 Ok BUI...
BuildVM4 Ok 50 100 23 Ok WIN...
BuildVM4 Ok 100 200 173 Ok BUI...
TR20-VMM Ok 33 666 2 Ok DAT...
TR20-VMM Ok 25 975 3 Ok DAT...
TR20-VMM Ok 75 1025 12 Ok BOO...
WinOltp1 UnknownPolicyId 0 0 0 UnknownPolicyId 991...
WinOltp1 UnknownPolicyId 0 0 4926 UnknownPolicyId IOM...
WinOltp1 UnknownPolicyId 0 0 0 UnknownPolicyId BOO...
同じ記憶域 QoS ポリシーを再作成する
ポリシーが誤って削除された場合、古い PolicyId を使用して新しいポリシーを作成することができます。 最初に、必要な PolicyId を取得します。
PS C:\> Get-StorageQosFlow -Status UnknownPolicyId | ft InitiatorName, PolicyId -AutoSize
InitiatorName PolicyId
------------- --------
WinOltp1 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
WinOltp1 2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6
WinOltp1 3cccccc3-4dd4-5ee5-6ff6-7aaaaaaaaaa7
次に、その PolicyId を使用して新しいポリシーを作成します。
PS C:\> New-StorageQosPolicy -PolicyId 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5 -PolicyType Aggregated -Name RestoredPolicy -MinimumIops 100 -MaximumIops 2000
Name MinimumIops MaximumIops Status
---- ----------- ----------- ------
RestoredPolicy 100 2000 Ok
最後に、ポリシーが適用されたことを確認します。
PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, Status, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize
InitiatorName Status MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ------ ----------- ----------- --------------- ------ ----
Ok 0 0 0 Ok DefaultFlow
Ok 0 0 8 Ok DefaultFlow
Ok 0 0 9 Ok DefaultFlow
Ok 0 0 0 Ok DefaultFlow
Ok 0 0 0 Ok DefaultFlow
Ok 0 0 0 Ok DefaultFlow
Ok 0 0 0 Ok DefaultFlow
Ok 0 0 0 Ok DefaultFlow
Ok 0 0 0 Ok DefaultFlow
BuildVM1 Ok 100 200 192 Ok BUILDVM1.VHDX
BuildVM2 Ok 100 200 193 Ok BUILDVM2.VHDX
BuildVM3 Ok 50 100 24 Ok WIN8RTM_ENTERPRISE_VL...
BuildVM3 Ok 100 200 166 Ok BUILDVM3.VHDX
BuildVM4 Ok 50 100 12 Ok WIN8RTM_ENTERPRISE_VL...
BuildVM4 Ok 100 200 178 Ok BUILDVM4.VHDX
TR20-VMM Ok 33 666 2 Ok DATA2.VHDX
TR20-VMM Ok 33 666 2 Ok DATA1.VHDX
TR20-VMM Ok 33 666 10 Ok BOOT.VHDX
WinOltp1 Ok 25 500 0 Ok 9914.0.AMD64FRE.WINMA...
記憶域 QoS ポリシーを削除する
ポリシーが意図的に削除された場合、または不要なポリシーが適用されている VM がインポートされた場合は、それを削除できます。
PS C:\> Get-VM -Name WinOltp1 | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID $null
PolicyId が仮想ハード ディスクの設定から削除されると、ステータスが "Ok" になり、最小値または最大値は適用されなくなります。
PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize
InitiatorName MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ----------- ----------- --------------- ------ ----
0 0 0 Ok DefaultFlow
0 0 16 Ok DefaultFlow
0 0 12 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
BuildVM1 100 200 197 Ok BUILDVM1.VHDX
BuildVM2 100 200 192 Ok BUILDVM2.VHDX
BuildVM3 9 9 23 Ok WIN8RTM_ENTERPRISE_VL_BUILDW...
BuildVM3 91 191 171 Ok BUILDVM3.VHDX
BuildVM4 8 8 18 Ok WIN8RTM_ENTERPRISE_VL_BUILDW...
BuildVM4 92 192 163 Ok BUILDVM4.VHDX
TR20-VMM 33 666 2 Ok DATA2.VHDX
TR20-VMM 33 666 1 Ok DATA1.VHDX
TR20-VMM 33 666 5 Ok BOOT.VHDX
WinOltp1 0 0 0 Ok 9914.0.AMD64FRE.WINMAIN.1412...
WinOltp1 0 0 1811 Ok IOMETER.VHDX
WinOltp1 0 0 0 Ok BOOT.VHDX
記憶域 QoS ポリシーを満たしていない仮想マシンを見つける
次のようなフローには InsufficientThroughput ステータスが割り当てられます。
ポリシーによって設定された最小 IOPS が定義されている
最小値を満たすかまたは超えるレートで IO が開始されている。
最小 IOP レートを達成していない。
PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize
InitiatorName MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ----------- ----------- --------------- ------ ----
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 15 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
0 0 0 Ok DefaultFlow
BuildVM3 50 100 20 Ok WIN8RTM_ENTE...
BuildVM3 100 200 174 Ok BUILDVM3.VHDX
BuildVM4 50 100 11 Ok WIN8RTM_ENTE...
BuildVM4 100 200 188 Ok BUILDVM4.VHDX
TR20-VMM 33 666 3 Ok DATA1.VHDX
TR20-VMM 78 1032 180 Ok BOOT.VHDX
TR20-VMM 22 968 4 Ok DATA2.VHDX
WinOltp1 3750 5000 0 Ok 9914.0.AMD64...
WinOltp1 15000 20000 11679 InsufficientThroughput IOMETER.VHDX
WinOltp1 3750 5000 0 Ok BOOT.VHDX
次の例に示すように、InsufficientThroughput を含む、任意のステータスのフローを特定することができます。
PS C:\> Get-StorageQosFlow -Status InsufficientThroughput | fl
FilePath : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX
FlowId : 1ca356ff-fd33-5b5d-b60a-2c8659dc803e
InitiatorId : 2ceabcef-2eba-4f1b-9e66-10f960b50bbf
InitiatorIOPS : 12168
InitiatorLatency : 22.983
InitiatorName : WinOltp1
InitiatorNodeName : plang-c1.plang.nttest.microsoft.com
Interval : 300000
Limit : 20000
PolicyId : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
Reservation : 15000
Status : InsufficientThroughput
StorageNodeIOPS : 12181
StorageNodeLatency : 22.0514
StorageNodeName : plang-fs2.plang.nttest.microsoft.com
TimeStamp : 2/13/2015 12:07:30 PM
VolumeId : 0d2fd367-8d74-4146-9934-306726913dda
PSComputerName :
MaximumIops : 20000
MinimumIops : 15000
記憶域 QoS を使用して正常性を監視する
新しいヘルス サービスは、記憶域クラスターの監視を簡素化し、任意のノードの対処可能なイベントを 1 つの場所で確認できるようにします。 このセクションでは、debug-storagesubsystem
コマンドレットを使用して記憶域クラスターの正常性を監視する方法について説明します。
Debug-StorageSubSystem を使用して記憶域のステータスを表示する
クラスター化された記憶域スペースは、1 つの場所で記憶域クラスターの正常性に関する情報も提供します。 これにより、管理者は、記憶域の展開の現在の問題を識別し、問題が発生または解消したタイミングを監視できます。
無効なポリシーが適用された VM
無効なポリシーが適用されている VM も記憶域サブシステムの正常性監視を介して報告されます。 以下に、「無効なポリシーが適用されている VM を見つける」セクションで説明されているものと同じ状態の例を示します。
C:\> Get-StorageSubSystem -FriendlyName Clustered* | Debug-StorageSubSystem
EventTime :
FaultId : 0d16d034-9f15-4920-a305-f9852abf47c3
FaultingObject :
FaultingObjectDescription : Storage QoS Policy 5d1bf221-c8f0-4368-abcf-aa139e8a7c72
FaultingObjectLocation :
FaultType : Storage QoS policy used by consumer does not exist.
PerceivedSeverity : Minor
Reason : One or more storage consumers (usually Virtual Machines) are
using a non-existent policy with id
5d1bf221-c8f0-4368-abcf-aa139e8a7c72. Consumer details:
Flow ID: 1ca356ff-fd33-5b5d-b60a-2c8659dc803e
Initiator ID: 2ceabcef-2eba-4f1b-9e66-10f960b50bbf
Initiator Name: WinOltp1
Initiator Node: plang-c1.plang.nttest.microsoft.com
File Path:
C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX
RecommendedActions : {Reconfigure the storage consumers (usually Virtual Machines)
to use a valid policy., Recreate any missing Storage QoS
policies.}
PSComputerName :
記憶域スペース仮想ディスクの冗長性が失われる
この例では、クラスター化された記憶域スペースに、3 方向ミラーとして作成された仮想ディスクがあります。 障害が発生したディスクはシステムから削除されましたが、交換用のディスクは追加されませんでした。 記憶域サブシステムは、HealthStatus Warning で、冗長性が失われたことを報告していますが、ボリュームは引き続きオンラインになっているので OperationalStatus は "OK" になっています。
PS C:\> Get-StorageSubSystem -FriendlyName Clustered*
FriendlyName HealthStatus OperationalStatus
------------ ------------ -----------------
Clustered Windows Storage o... Warning OK
[plang-fs1]: PS C:\Users\plang\Documents> Get-StorageSubSystem -FriendlyName Clustered* | Deb
ug-StorageSubSystem
EventTime :
FaultId : dfb4b672-22a6-4229-b2ed-c29d7485bede
FaultingObject :
FaultingObjectDescription : Virtual disk 'Two'
FaultingObjectLocation :
FaultType : VirtualDiskDegradedFaultType
PerceivedSeverity : Minor
Reason : Virtual disk 'Two' does not have enough redundancy remaining to
successfully repair or regenerate its data.
RecommendedActions : {Rebalance the pool, replace failed physical disks, or add new
physical disks to the storage pool, then repair the virtual
disk.}
PSComputerName :
記憶域 QoS を継続的に監視するためのサンプル スクリプト
このセクションには、WMI スクリプトを使用して一般的な障害を監視できる方法を示すサンプル スクリプトが含まれています。 このスクリプトは、開発者が正常性イベントをリアルタイムで取得するための出発点として設計されています。
スクリプトの例:
param($cimSession)
# Register and display events
Register-CimIndicationEvent -Namespace root\microsoft\windows\storage -ClassName msft_storagefaultevent -CimSession $cimSession
while ($true)
{
$e = (Wait-Event)
$e.SourceEventArgs.NewEvent
Remove-Event $e.SourceIdentifier
}
よく寄せられる質問
仮想マシンの VHD/VHDx ファイルを別の記憶域クラスターに移動する場合、その仮想マシンに適用されている記憶域 QoS ポリシーをどのようにして維持すればよいですか
ポリシーを指定する VHD/VHDx ファイルの設定は、ポリシー ID の GUID です。 ポリシーが作成されるときに、PolicyID パラメーターを使用して GUID を指定できます。 このパラメータが指定されていない場合、ランダムな GUID が作成されます。 そのため、VM が現在 VHD/VHDx ファイルを保存している記憶域クラスター上で PolicyID を取得し、移動先の記憶域クラスター上で同一のポリシーを作成して、その後で同じ GUID での作成を指定することができます。 VM ファイルが新しい記憶域クラスターに移動されたときには、同じ GUID のポリシーが有効になります。
System Center Virtual Machine Manager を使用して、複数の記憶域クラスターにポリシーを適用すると、このシナリオを簡単に実行できます。
記憶域 QoS ポリシーを変更した場合、Get-StorageQoSFlow を実行したときに直ちに有効にならないのはなぜですか
ポリシーの最大値に到達したフローがあり、ポリシーをより高い値または低い値に変更し、PowerShell コマンドレットを使用してフローの待機時間/IOPS/帯域幅を直ちに決定した場合、フローに対するポリシー変更のすべての効果が表示されるまでに最大 5 分かかります。 新しい制限は、数秒で有効になりますが、Get-StorgeQoSFlow PowerShell コマンドレットは、5 分間のスライディング ウィンドウを使用し、各カウンターの平均を使用します。 そうでないと、現在の値が表示される場合に PowerShell コマンドレットを続けて複数回実行すれば、IOPS と待機時間の値が 1 秒ごとに大幅に変動することがあるため、表示される値が大幅に異なる可能性があります。
Windows Server 2016 にはどのような新機能が追加されていますか
Windows Server 2016 では、記憶域 QoS ポリシーの種類の名前が変更されました。 Multi-instance ポリシーの種類の名前が Dedicated に変更され、Single-instance の名前が Aggregated に変更されました。 Dedicated ポリシーの管理動作も変更されました。同じ Dedicated ポリシーが適用されている同じ仮想マシン内の VHD/VHDX ファイルは I/O の割り当てを共有しません。
Windows Server 2016 には、次に示す 2 つの新しい記憶域 QoS 機能があります。
最大帯域幅
Windows Server 2016 の記憶域 QoS では、ポリシーに割り当てられたフローが消費できる最大帯域幅を指定する機能が導入されました。 StorageQosPolicy コマンドレットでそれを指定するときには、MaximumIOBandwidth パラメーターを使用し、出力は 1 秒あたりのバイト単位で表示されます。 MaximimIops と MaximumIOBandwidth の両方がポリシーで設定されている場合、それらの両方が有効になり、フローが最初に到達した方が、そのフローの I/O を制限します。
IOPS 正規化が構成可能
記憶域 QoS は、IOPS の正規化を使用します。 既定値では、正規化サイズとして 8K を使用します。 Windows Server 2016 の記憶域 QoS では、記憶域クラスターに対して異なる正規化サイズを指定する機能が導入されました。 この正規化サイズは、記憶域クラスター上のすべてのフローに反映され、変更されると直ちに (数秒で) 有効になります。 最小値は 1 KB で最大値は 4 GB です (4 MB を超える IO は通常発生しないので、4 MB を超える値に設定しないことをお勧めします)。
正規化の計算を変更したために IOPS の正規化を変更すると、記憶域 QoS の出力で、同じ IO パターン/スループットでも異なる IOPS の数値が表示されることに注意する必要があります。 記憶域クラスター間の IOPS を比較している場合は、各クラスターで使用している正規化値も確認する必要があります。この値が、報告される正規化済み IOPS に影響するためです。
例 1: 記憶域クラスター上で新しいポリシーを作成して最大帯域幅を表示する
PowerShell で、数値を表示する単位を指定できます。 次の例では、最大帯域幅の値として 10 MB を使用します。 記憶域 QoS は、これを変換して、1 秒あたりのバイト数として保存します。そのため、10 MB は 10485760 バイト/秒に変換されます。
PS C:\Windows\system32> New-StorageQosPolicy -Name HR_VMs -MaximumIops 1000 -MinimumIops 20 -MaximumIOBandwidth 10MB
Name MinimumIops MaximumIops MaximumIOBandwidth Status
---- ----------- ----------- ------------------ ------
HR_VMs 20 1000 10485760 Ok
PS C:\Windows\system32> Get-StorageQosPolicy
Name MinimumIops MaximumIops MaximumIOBandwidth Status
---- ----------- ----------- ------------------ ------
Default 0 0 0 Ok
HR_VMs 20 1000 10485760 Ok
PS C:\Windows\system32> Get-StorageQoSFlow | fL InitiatorName,FilePath,InitiatorIOPS,InitiatorLatency,InitiatorBandwidth
InitiatorName : testsQoS
FilePath : C:\ClusterStorage\Volume2\TESTSQOS\VIRTUAL HARD DISKS\TESTSQOS.VHDX
InitiatorIOPS : 5
InitiatorLatency : 1.5455
InitiatorBandwidth : 37888
例 2: IOPS 正規化の設定を取得し、新しい値を指定する
次の例では、記憶域クラスターの IOPS 正規化の設定 (既定値の 8 KB) を取得し、32 KB に設定して、もう一度表示する方法を示します。 この例で、"32 KB" を指定するのは、PowerShell では単位の指定が許可されていて、バイトに変換する必要がないためです。 出力には、1 秒あたりのバイト数で値が表示されます。 この設定は、すべての仮想マシンに影響します (ローカル ボリューム上に作成された仮想マシンも影響を受けます)。
PS C:\Windows\system32> Get-StorageQosPolicyStore
IOPSNormalizationSize
---------------------
8192
PS C:\Windows\system32> Set-StorageQosPolicyStore -IOPSNormalizationSize 32KB
PS C:\Windows\system32> Get-StorageQosPolicyStore
IOPSNormalizationSize
---------------------
32768