Hyper-V Storage I/O パフォーマンス

このセクションでは、仮想マシンでストレージ I/O パフォーマンスをチューニングするためのさまざまなオプションと考慮事項について説明します。 ストレージ I/O パスは、ゲスト ストレージ スタックからホスト仮想化レイヤー、ホスト ストレージ スタック、物理ディスクまで拡張されます。 これらの各段階で最適化を行う方法については、次の説明を参照してください。

仮想コントローラー

Hyper-V には、IDE、SCSI、仮想ホスト バス アダプター (HBA) の 3 種類の仮想コントローラーが用意されています。

IDE

IDE コントローラーは、IDE ディスクを仮想マシンに公開します。 IDE コントローラーはエミュレートされ、Virtual Machine Integration Services なしで古いバージョンの Windows を実行しているゲスト VM で使用できる唯一のコントローラーです。 仮想マシン Integration Services に用意されている IDE フィルター ドライバーを使用して実行されるディスク I/O は、エミュレートされた IDE コントローラーで提供されるディスク I/O パフォーマンスよりも大幅に優れたパフォーマンスです。 これらのデバイスに発行できる最大 I/O サイズが原因でパフォーマンスに制限が生じ、IDE ディスクはオペレーティング システム ディスクにのみ使用することをお勧めします。

SCSI (SAS コントローラー)

SCSI コントローラーは仮想マシンに SCSI ディスクを公開し、各仮想 SCSI コントローラーは最大 64 のデバイスをサポートできます。 最適なパフォーマンスを得る場合は、仮想マシンに接続されているディスクの数をスケーリングするために必要な場合にのみ、複数のディスクを 1 つの仮想 SCSI コントローラーに接続し、追加のコントローラーを作成することをお勧めします。 SCSI パスはエミュレートされません。これにより、オペレーティング システム ディスク以外のディスクに対して優先コントローラーが使用されます。 実際、第 2 世代 VM では、それが可能な唯一の種類のコントローラーです。 このコントローラーは、Windows Server 2012 R2 で導入され、共有 VHDX をサポートするために SAS として報告されます。

仮想ファイバー チャネルHba

仮想ファイバー チャネルHBA を構成して、仮想マシンがイーサネット (FCoE) ファイバー チャネル経由ファイバー チャネルアクセスを許可するように構成できます。 仮想ファイバー チャネルでは、ルート パーティション内の NTFS ファイル システムがバイパスされ、ストレージ I/O の CPU 使用率が削減されます。

複数の仮想マシン間で共有される大規模なデータ ドライブとドライブ (ゲスト クラスタリング シナリオの場合) は、仮想マシンとディスクのファイバー チャネルです。

仮想ファイバー チャネルでは、ホスト に 1 つファイバー チャネルホスト バス アダプター (HBA) をインストールする必要があります。 各ホスト HBA は、アプリケーション/NPIV 機能をサポートする HBA ドライバー Windows Server 2016 仮想ファイバー チャネル必要です。 SAN ファブリックは NPIV をサポートする必要があります。また、仮想 ファイバー チャネル に使用される HBA ポートは、NPIV をサポートする ファイバー チャネル トポロジで設定する必要があります。

複数の HBA でインストールされているホストのスループットを最大化するには、Hyper-V 仮想マシン内に複数の仮想 HBA を構成することをお勧めします (各仮想マシンに対して最大 4 つの HBA を構成できます)。 Hyper-V は、同じ仮想 SAN にアクセスする HBA をホストするために、仮想 HBA のバランスを自動的に取る最善の努力をします。

仮想ディスク

ディスクは、仮想コントローラーを介して仮想マシンに公開できます。 これらのディスクは、ホスト上のディスクまたはパススルー ディスクのファイル抽象化である仮想ハード ディスクである可能性があります。

バーチャル ハード ディスク

VHD と VHDX の 2 つの仮想ハード ディスク形式があります。 これらの各形式では、3 種類の仮想ハード ディスク ファイルがサポートされています。

VHD 形式

VHD 形式は、過去のリリースで Hyper-V でサポートされた唯一の仮想ハード ディスク形式でした。 このページWindows Server 2012、VHD 形式が変更され、より優れたアラインメントが可能になります。その結果、新しい大容量セクター ディスクのパフォーマンスが大幅に向上します。

1 つ以上のバージョンで作成された新しい VHD Windows Server 2012 4 KB の配置が最適です。 このアラインされた形式は、以前のバージョンのサーバー オペレーティング Windows完全に互換性があります。 ただし、アラインメントに対応していないパーサー (以前のバージョンの Windows Server または Microsoft 以外のパーサーからの VHD パーサーなど) からの新しい割り当てでは、アラインメント プロパティは破損します。

以前のリリースから移動された VHD は、この新しい改善された VHD 形式に自動的に変換されません。

新しい VHD 形式に変換するには、次のコマンドをWindows PowerShellします。

Convert-VHD –Path E:\vms\testvhd\test.vhd –DestinationPath E:\vms\testvhd\test-converted.vhd

システム上のすべての VHD の配置プロパティを確認できます。最適な 4 KB アラインメントに変換する必要があります。 [ソースから作成] オプションを使用して、元の VHD のデータ を含む新 しい VHD を作成します。

PowerShell を使用して配置をWindows、次に示すように配置行を確認します。

Get-VHD –Path E:\vms\testvhd\test.vhd

Path                    : E:\vms\testvhd\test.vhd
VhdFormat               : VHD
VhdType                 : Dynamic
FileSize                : 69245440
Size                    : 10737418240
MinimumSize             : 10735321088
LogicalSectorSize       : 512
PhysicalSectorSize      : 512
BlockSize               : 2097152
ParentPath              :
FragmentationPercentage : 10
Alignment               : 0
Attached                : False
DiskNumber              :
IsDeleted               : False
Number                  :

次に示すように、Windows PowerShellを使用して配置を確認するには、配置行を調べてください。

Get-VHD –Path E:\vms\testvhd\test-converted.vhd

Path                    : E:\vms\testvhd\test-converted.vhd
VhdFormat               : VHD
VhdType                 : Dynamic
FileSize                : 69369856
Size                    : 10737418240
MinimumSize             : 10735321088
LogicalSectorSize       : 512
PhysicalSectorSize      : 512
BlockSize               : 2097152
ParentPath              :
FragmentationPercentage : 0
Alignment               : 1
Attached                : False
DiskNumber              :
IsDeleted               : False
Number                  :

VHDX 形式

VHDX は、Windows Server 2012 で導入された新しい仮想ハード ディスク形式です。これにより、最大 64 テラバイトの回復力のある高パフォーマンス仮想ディスクを作成できます。 この形式の利点は次のとおりです。

  • 最大 64 テラバイトの仮想ハード ディスク ストレージ容量のサポート。

  • VHDX メタデータ構造体に更新情報を記録することで、電源障害が発生した場合にデータを破損から保護します。

  • オペレーティング システムのバージョンや適用されたパッチなど、ユーザーが記録する可能性があるファイルに関するカスタム メタデータを格納する機能。

VHDX 形式には、次のパフォーマンス上の利点があります。

  • 仮想ハード ディスク フォーマットの配置の改善により、大容量セクター ディスクで適切に動作します。

  • ダイナミック ディスクと差分ディスクのブロック サイズが大きいほど、これらのディスクはワークロードのニーズに合わせて調整できます。

  • 4 KB の論理セクター仮想ディスク。4 KB セクター向けに設計されたアプリケーションやワークロードで使用すると、パフォーマンスが向上します。

  • データを表す効率。これにより、ファイル サイズが小さめ、基になる物理ストレージ デバイスが未使用領域を再利用できます。 (Trim には、パススルー ディスクまたは SCSI ディスクとトリム互換ハードウェアが必要です)。

アプリケーションにアップグレードWindows Server 2016、これらの利点のために、すべての VHD ファイルを VHDX 形式に変換することをお勧めします。 VHD 形式でファイルを保持する唯一のシナリオは、仮想マシンが VHDX 形式をサポートしていない Hyper-V の以前のリリースに移動される可能性がある場合です。

仮想ハード ディスク ファイルの種類

VHD ファイルには 3 種類があります。 次のセクションでは、型間のパフォーマンス特性とトレードオフについて説明します。

VHD ファイルの種類の選択に関して、次の推奨事項を考慮する必要があります。

  • VHD 形式を使用する場合は、他の VHD ファイルの種類と比較して回復性とパフォーマンス特性が優れた固定型を使用することをお勧めします。

  • VHDX 形式を使用する場合は、動的な型を使用することをお勧めします。これは、必要な場合にのみ領域の割り当てに関連する領域の節約に加えて、回復性の保証が提供されます。

  • ホスト ボリューム上のストレージがアクティブに監視されていない場合は、実行時に VHD ファイルを展開するときに十分なディスク領域が存在する場合は、形式に関係なく、固定の種類も推奨されます。

  • 仮想マシンのスナップショットでは、ディスクへの書き込みを格納する差分 VHD が作成されます。 少数のスナップショットを使用すると、ストレージ I/O の CPU 使用率を向上させることができますが、I/O 集中型のサーバー ワークロードを除き、パフォーマンスに大きな影響を与える可能性があります。 ただし、スナップショットのチェーンが大きいとパフォーマンスに大きな影響を与える可能性があります。VHD からの読み取りでは、多くの差分 VHD で要求されたブロックのチェックが必要になる可能性があります。 良好なディスク I/O パフォーマンスを維持するには、スナップショット チェーンを短くすることが重要です。

固定仮想ハード ディスクの種類

VHD ファイルの作成時に、VHD の領域が最初に割り当てられる。 この種類の VHD ファイルは断片化する可能性が低く、1 つの I/O が複数の I/O に分割される場合の I/O スループットが低下します。 読み取りと書き込みをブロックのマッピングを参照する必要はないので、3 種類の VHD ファイルの CPU オーバーヘッドが最も少なくなります。

動的仮想ハード ディスクの種類

VHD の領域は、必要に応じて割り当てされます。 ディスク内のブロックは、未アロケーション ブロックとして開始され、ファイル内の実際の領域によってサポートされません。 ブロックが最初に書き込まれるときに、仮想化スタックは、VHD ファイル内の領域をブロックに割り当て、メタデータを更新する必要があります。 これにより、書き込みに必要なディスク I/Os の数が増え、CPU 使用率が増加します。 既存のブロックに対する読み取りと書き込みでは、メタデータ内のブロックのマッピングを検索するときに、ディスク アクセスと CPU オーバーヘッドが発生します。

差分仮想ハード ディスクの種類

VHD は親 VHD ファイルをポイントします。 ブロックへの書き込み時に書き込みを行った場合、VHD ファイルに領域が割り当てられるのは、動的に展開される VHD の場合と同様です。 ブロックが書き込まれた場合、読み取りは VHD ファイルから提供されます。 それ以外の場合は、親 VHD ファイルからサービスが提供されます。 どちらの場合も、メタデータが読み取り、ブロックのマッピングが決定されます。 この VHD に対する読み取りと書き込みでは、固定 VHD ファイルよりも多くの CPU が消費され、I/Os が多く発生する可能性があります。

ブロック サイズに関する考慮事項

ブロック サイズはパフォーマンスに大きく影響する可能性があります。 ブロック サイズを、ディスクを使用しているワークロードの割り当てパターンと一致するのが最適です。 たとえば、アプリケーションが 16 MB のチャンク単位で割り当てられている場合は、仮想ハード ディスク のブロック サイズを 16 MB に設定すると最適です。 2 MB の > ブロック サイズは、VHDX 形式の仮想ハード ディスクでのみ可能です。 ランダム I/O ワークロードの割り当てパターンよりも大きなブロック サイズを使用すると、ホスト上の領域の使用量が大幅に増加します。

セクター サイズへの影響

ソフトウェア業界の大部分は 512 バイトのディスク セクターに依存していますが、標準は 4 KB のディスク セクターに移行しています。 セクター サイズの変化によって発生する可能性がある互換性の問題を減らすために、ハード ドライブ ベンダーは、512 エミュレーション ドライブ (512e) と呼ばれる移行サイズを導入しています。

これらのエミュレーション ドライブには、形式効率の向上やエラー修正コード (ECC) のスキームの改善など、4 KB のディスク セクター ネイティブ ドライブによって提供される利点がいくつか用意されています。 ディスク インターフェイスで 4 KB のセクター サイズを公開することで発生する互換性の問題が少なからず発生します。

512e ディスクのサポート

512e ディスクは、物理セクターに関してのみ書き込みを実行できます。つまり、発行された512e セクターを直接書き込むことはできません。 これらの書き込みを可能にするディスク内の内部プロセスは、次の手順に従います。

  • ディスクは 4 KB の物理セクターを内部キャッシュに読み取ります。これには、書き込みで参照されている512バイトの論理セクターが含まれます。

  • 4 KB のバッファーのデータは、更新された 512 バイト セクターを含むように変更されます。

  • 更新された 4 KB のバッファーが、ディスクの物理セクターに書き戻されます。

このプロセスは、読み取り/変更/書き込み (RMW) と呼ばれます。 RMW プロセスの全体的なパフォーマンスの影響は、ワークロードによって異なります。 RMW プロセスでは、次の理由により、仮想ハードディスクのパフォーマンスが低下します。

  • 動的および差分仮想ハードディスクには、データペイロードの前に512バイトのセクタービットマップがあります。 さらに、フッター、ヘッダー、および親ロケーターは、512バイトのセクターに配置されます。 仮想ハードディスクドライバーは、これらの構造を更新するために512バイトの書き込みコマンドを発行することが一般的です。その結果、前に説明した RMW プロセスになります。

  • 一般に、アプリケーションは 4 KB のサイズ (NTFS の既定のクラスターサイズ) の倍数で読み取りと書き込みを実行します。 容量可変および差分仮想ハードディスクのデータペイロードブロックの前には512バイトのセクタービットマップがあるため、4 KB ブロックは物理 4 KB 境界には揃っていません。 次の図は、物理的な 4 KB 境界と整合していない VHD 4 KB ブロック (強調表示されている) を示しています。

vhd 4 kb ブロック

ペイロードデータを更新するために現在のパーサーによって発行された 4 KB の書き込みコマンドごとに、ディスク上の2つのブロックに対して2つの読み取りが行われます。その後、更新された後、2つのディスクブロックに書き戻されます。 Windows Server 2016 の hyper-v は、vhd 形式で 4 KB の境界に配置するために前述の構造を準備することによって、vhd スタック上の512e ディスクのパフォーマンスへの影響の一部を軽減します。 これにより、仮想ハードディスクファイル内のデータにアクセスするときと、仮想ハードディスクのメタデータ構造を更新するときに、RMW 効果は回避されます。

既に説明したように、以前のバージョンの Windows Server からコピーされた vhd は、自動的に 4 KB にアラインされません。 VHD インターフェイスで使用可能な [ コピー元ディスクからコピー する] オプションを使用して、これらを最適な位置に手動で変換できます。

既定では、Vhd は、物理的なセクターサイズが512バイトで公開されます。 これは、アプリケーションと vhd を以前のバージョンの Windows サーバーから移動した場合に、物理的なセクターサイズに依存するアプリケーションが影響を受けないようにするためです。

既定では、VHDX 形式のディスクは、パフォーマンスプロファイルの標準ディスクと大きなセクターディスクを最適化するために、4 KB の物理セクターサイズで作成されます。 4 KB のセクターを最大限に活用するには、VHDX 形式を使用することをお勧めします。

ネイティブ 4 KB ディスクのサポート

Windows Server 2012 R2 以降の hyper-v では、4 KB のネイティブディスクがサポートされています。 ただし、VHD ディスクを 4 KB のネイティブディスクに格納することもできます。 これを行うには、512バイトのアクセスおよび更新要求を、対応する 4 KB のアクセスおよび更新に変換する software RMW アルゴリズムを仮想ストレージスタックレイヤーに実装します。

VHD ファイルは、512バイトの論理セクターサイズのディスクとしてのみ公開されるため、512バイトの i/o 要求を発行するアプリケーションが存在する可能性が非常に高くなります。 このような場合、RMW レイヤーはこれらの要求を満たし、パフォーマンスが低下します。 これは、VHDX でフォーマットされ、論理セクターサイズが512バイトのディスクにも当てはまります。

VHDX ファイルを 4 kb の論理セクターサイズのディスクとして公開するように構成することができます。これは、ディスクが 4 KB のネイティブ物理デバイスでホストされている場合のパフォーマンスを最適化するための最適な構成になります。 仮想ディスクを使用しているゲストとアプリケーションが、4 KB の論理セクターサイズでバックアップされていることを確認する必要があります。 VHDX のフォーマットは、4 KB の論理セクターサイズのデバイスで正しく動作します。

パススルーディスク

バーチャルマシンの VHD は、VHD ファイルではなく、物理ディスクまたは論理ユニット番号 (LUN) に直接マップできます。 その利点は、この構成によってルートパーティション内の NTFS ファイルシステムがバイパスされるため、記憶域 i/o の CPU 使用率が低下することです。 リスクとして、物理ディスクまたは Lun が VHD ファイルよりもコンピューター間を移動するのが困難になることがあります。

仮想マシンの移行シナリオで導入された制限により、パススルーディスクを使用しないようにする必要があります。

高度なストレージ機能

記憶域のサービスの品質 (QoS)

Windows Server 2012 R2 以降、hyper-v には、仮想マシン上の記憶域に対して特定のサービス品質 (QoS) パラメーターを設定する機能が含まれています。 ストレージ QoS では、マルチテナント環境でのストレージ パフォーマンスの分離と、仮想マシンのワークロードを効率的に実行するために定義されているしきい値をストレージの I/O パフォーマンスが満たしていないときにユーザーに通知するメカニズムが提供されます。

ストレージ QoS では、仮想ハード ディスクの 1 秒あたりの最大入力/出力操作数 (IOPS) の値を指定できます。 管理者は、ストレージの I/O を調整して、テナントが別のテナントに影響を与えるほど過剰にストレージ リソースを消費するのを防ぐことができます。

最小 IOPS 値を設定することもできます。 管理者は、指定した仮想ハード ディスクの IOPS が最適なパフォーマンスに必要なしきい値より低下すると通知を受け取ります。

仮想マシンのメトリック インフラストラクチャも更新されており、管理者は、ストレージ関連のパラメーターを使用することによって、パフォーマンスおよびチャージバックに関するパラメーターを監視できます。

最大値と最小値は正規化された IOPS に関して指定されます。この場合、8 KB のデータはすべて i/o としてカウントされます。

制限事項の一部を次に示します。

  • 仮想ディスクのみ

  • 差分ディスクの親仮想ディスクを別のボリュームにすることはできません

  • レプリカ-プライマリサイトとは別に構成されたレプリカサイトの QoS

  • 共有 VHDX はサポートされていません

Storage のサービス品質の詳細については、「 hyper-v のサービス品質の Storage」を参照してください。

NUMA I/O

Windows Server 2012 以降では大規模な仮想マシンがサポートされています。また、大規模な仮想マシン構成 (たとえば、64仮想プロセッサを使用して Microsoft SQL Server 実行されている構成) では、i/o スループットの点でスケーラビリティも必要です。

Windows Server 2012 ストレージスタックで最初に導入された次の主な機能強化は、大規模な仮想マシンの i/o スケーラビリティのニーズに対応しています。

  • ゲストデバイスとホスト記憶域スタックの間に作成される通信チャネルの数が増加します。

  • 高負荷のプロセッサ間の中断を避けるために、仮想プロセッサ間での割り込み分布を含む、より効率的な i/o 完了メカニズム。

Windows Server 2012 で導入されたいくつかのレジストリエントリは、HKLM \ System \ CurrentControlSet \ Enum \ VMBUS \ {device id} \ {instance id} storchannel にあり、これ \ により、チャネルの数を調整できます。 また、i/o の完了を処理する仮想プロセッサを、アプリケーションによって i/o プロセッサとして割り当てられた仮想 Cpu に配置します。 レジストリ設定は、デバイスのハードウェアキーでアダプターごとに構成されます。

  • Channelcount (DWORD) 使用するチャネルの合計数 (最大 16)。 既定値は、仮想プロセッサ/16 の数である天井です。

  • Channelmask (QWORD) チャネルのプロセッサ関係。 この値が設定されていない場合、または0に設定されている場合は、通常のストレージまたはネットワークチャネルに使用する既存のチャネル配布アルゴリズムが既定値になります。 これにより、ストレージチャネルがネットワークチャネルと競合しないようになります。

オフロードデータ転送統合

マージ、移動、コンパクトなど、Vhd の重要なメンテナンスタスクは、大量のデータのコピーに依存します。 現在主流のデータ コピーの方法ではデータを読み取ってから別の場所に書き込む必要があるため、処理に時間がかかります。 また、ホスト上の CPU リソースとメモリリソースも使用します。これは、バーチャルマシンのサービスに使用されている可能性があります。

記憶域ネットワーク (SAN) のベンダーは、大量のデータのコピー処理がほとんど即時に行われるように取り組んでいます。 この記憶域は、ディスク上のシステムが特定のデータセットをある場所から別の場所に移動することを許可するように設計されています。 このハードウェア機能はオフロードデータ転送として知られています。

Windows Server 2012 以降の hyper-v は、オフロードデータ転送 (ODX) 操作をサポートしているため、これらの操作をゲストオペレーティングシステムからホストハードウェアに渡すことができます。 これにより、仮想化されていない環境で実行されている場合と同様に、ワークロードが ODX 対応の記憶域を使用できるようになります。 Hyper-v ストレージスタックは、ディスクのマージや記憶域の移行メタ操作 (大量のデータが移動される場合など) でも、ODX 操作を発行します。

統合のマップ解除

仮想ハードディスクファイルは、記憶域ボリューム上のファイルとして存在し、使用可能な領域を他のファイルと共有します。 これらのファイルのサイズは大きくなる傾向があるため、使用する領域が急速に増大する可能性があります。 物理記憶域の需要が増えると、IT ハードウェアの予算に影響します。 可能な限り物理記憶域の使用を最適化することが重要です。

Windows Server 2012 する前に、アプリケーションがバーチャルハードディスク内のコンテンツを削除して、事実上コンテンツの記憶域スペースを破棄すると、ゲストオペレーティングシステムと hyper-v ホストの Windows 記憶域スタックに、この情報が仮想ハードディスクおよび物理記憶装置に伝達されないという制限がありました。 これにより、Hyper-v 記憶域スタックは、VHD ベースの仮想ディスクファイルによる領域の使用を最適化できなくなります。 また、削除されたデータが以前に占有していた領域を、基になるストレージデバイスで再利用できなくなりました。

Windows Server 2012 から、hyper-v は通知のマップ解除をサポートしています。これにより、VHDX ファイル内のデータをより効率的に表すことができます。 これにより、ファイルサイズが小さくなり、基になる物理記憶装置で未使用領域を再利用できるようになります。

hyper-v 固有の SCSI、対応 IDE、および仮想ファイバーチャネルコントローラーのみが、ゲストからのマップ解除コマンドでホスト仮想記憶域スタックに接続できます。 バーチャルハードディスク上では、VHDX としてフォーマットされたバーチャルディスクのみが、ゲストからのコマンドのマッピングをサポートしています。

このような理由から、仮想ファイバーチャネルディスクを使用しない場合は、SCSI コントローラーに接続された VHDX ファイルを使用することをお勧めします。

その他の参照情報