VMware Cloud Director 配置エンジンは、vApp の仮想マシン (VM) が配置されるリソース(リソース プール、データストア、ネットワークまたはネットワーク プールを含む)を決定します。エンジンは各仮想マシンの要件に基づいて、vApp 内の各仮想マシンの配置を個別に決定します。

配置エンジンは次のシナリオで実行されます。
注: VMware Cloud Director は、各仮想マシンの要件に基づいて、vApp 内に個別に仮想マシンを配置します。
  • 仮想マシンを作成すると、配置エンジンは、仮想マシンの配置先となるリソース プール、データストア、およびネットワーク プールを決定します。
  • 仮想マシンを起動する際に仮想マシンがパワーオンに失敗した場合、VMware Cloud Director は、仮想マシンを別のリソース プール、データストア、またはネットワーク プールに選択的に移動することができます。
  • 仮想マシンを編集して、そのデータストア、リソース、またはネットワーク構成を変更すると、VMware Cloud Director は、新しい仮想マシン設定をサポートする別のデータストアおよびリソース プールに仮想マシンを移動することがあります。VMware Cloud Director は、現在のリソースが新しい要件をサポートできない場合にのみ仮想マシンを移動します。
  • 仮想マシンを別のリソース プールに移行する場合。
  • 組織仮想データセンター (VDC) が、VDC をバッキングする vCenter リソース プールで作成された仮想マシンを検出すると、検出した各仮想マシンを格納するために簡素化された vApp が構築されます。
配置エンジンは、次の基準を使用して仮想マシンのリソース プール候補を選択します。
  • CPU の容量
  • メモリ容量
  • 仮想 CPU の数
  • ホストでサポートされ、プロバイダ VDC で許可されているハードウェア バージョン
  • アフィニティ ルール

配置エンジンは、無効になっているリソース プールを候補リストから除外します。可能であれば、VMware Cloud Director は、組織 VDC 内の他の仮想マシンと同じホスト クラスタに仮想マシンを配置します。

重要: 仮想マシンとホスト間のアフィニティ ルールは、そのルールがグループ内のホストで必ず実行される ( must run) 状態である必要があります。仮想マシンとホスト間の非アフィニティ ルールは、そのルールがグループ内のホストで実行を禁止された ( must not run) 状態である必要があります。
配置エンジンは、次の基準を使用して仮想マシンのデータストア候補を選択します。
  • ストレージ容量としきい値
  • ストレージ ポリシー
  • 仮想マシン間のアフィニティ要件
  • IOPS が有効になっている場合、IOPS キャパシティと仮想マシン ディスクの IOPS
VMware Cloud Director には 2 つのデータストアしきい値があります。
  • 赤色のしきい値 - データストアの空き容量。この値を下回ると、VMware Cloud Director は仮想マシン、テンプレート、ディスクなどのエンティティの配置時に、そのデータストアを除外します。

    データストアが赤色のしきい値に達すると、ワークロード配置エンジンは、vCenter からの仮想マシンのインポート中を除き、そのデータストアへの新しい仮想マシンの配置を停止します。仮想マシンのインポート時は、赤色のしきい値に達しているデータストアに vCenter 仮想マシンがすでに存在している場合、配置エンジンがその既存のデータストアを優先します。

    ワークロード配置エンジンは、すべてのワークフローに赤色のしきい値を使用します。新しい配置の要求時に、配置エンジンはまず赤色のしきい値に達しているデータストアまたはストレージ ポッドを除外します。既存のエンティティの配置要求時に、ディスクが赤色のしきい値に達しているデータストア上にある場合、VMware Cloud Director はディスクを他の使用可能なデータストアに再配置します。その後、エンジンは VMware Cloud Director のセレクタ ロジックを使用するか、vSphere Storage DRS の推奨事項に基づき、残りのデータストアまたはストレージ ポッドからデータストアを選択します。

  • 黄色のしきい値 - データストアの空き容量。この値を下回ると、VMware Cloud Director は、VMware Cloud Director が高速プロビジョニングされた仮想マシンの作成元とするシャドウ仮想マシンの配置時に、そのデータストアを除外します。シャドウ仮想マシンの詳細については、仮想マシンの高速プロビジョニングを参照してください。

    黄色のしきい値は、VMware Cloud Director が仮想マシンの高速プロビジョニングに使用するリンク クローンには適用されません。配置エンジンがリンク クローンのデータストアを選択したとき、選択したデータストアにシャドウ仮想マシンがない場合、VMware Cloud Director はそのデータストアにシャドウ仮想マシンを作成します。この場合、そのシャドウ仮想マシンにしきい値は適用されません。

    黄色のしきい値は、シャドウ仮想マシンを作成する定期的なバックグラウンド ジョブにのみ適用されます。有効にしたジョブは 24 時間ごとに実行され、指定したハブとストレージ ポリシーのペアの各データストアで、Eager Zeroed による仮想マシン作成が使用されます。シャドウ仮想マシンの Eager Zeroed プロビジョニングのジョブを有効にするには、次のプロパティを true に設定する必要があります。
    valc.catalog.fastProvisioning=true
    注: 定期的なバックグラウンド ジョブにより、すべてのテンプレートのシャドウ仮想マシンがすべてのデータストアに作成されます。このジョブを有効にすると、データストアやシャドウ仮想マシンを使用していない場合でも、ストレージ使用量が増大します。

多くの場合、配置エンジンは候補リストから無効になっているデータストアと、赤いしきい値に到達しているデータストアを除外します。vCenter から仮想マシンをインポートした場合は、エンジンはこれらのデータストアを除外しません。

しきい値ロジックの実装時に、VMware Cloud Director は現在の配置サブジェクトの要件を評価しません。ワークロード配置エンジンがデータストアにサブジェクトを配置するには、使用可能な容量(バイト単位)がしきい値(バイト単位)を上回っている必要があります。たとえば、使用可能な容量が 5 GB で、赤色のしきい値が 4 GB に設定されているデータストアの場合、配置エンジンは要件が 2 GB の仮想マシンを配置できます。仮想マシンの作成状態がしきい値に違反している場合、配置エンジンは、その後の配置の対象から、このデータストアを除外します。

配置エンジンは、ネットワーク名を使用して vApp およびその仮想マシンのネットワーク プール候補を選択します。

配置エンジンは、一連の候補リソースを選択した後、各仮想マシンの CPU、仮想 RAM、およびストレージ構成に基づいてリソースをランク付けし、仮想マシンに最適な場所を選択します。

リソースのランク付けの際には、配置エンジンは、現在および推定される将来のリソース使用率を調べます。想定される将来の使用率は、特定のリソース プールに現在配置されているパワーオフ状態の仮想マシンおよびパワーオン後に想定されるそれらの使用率に基づいて計算されます。CPU およびメモリに関しては、現在予約されていない容量、最大使用量、および推測される将来の未予約の容量が考慮されます。ストレージに関して、エンジンは各リソース プールが属しているクラスタによって提供される集計されたプロビジョニング済み容量を考慮します。その後配置エンジンは、各リソース プールの現在および将来の適合性の重み付けされたメトリックを検討します。

移動が必要な場合、配置エンジンは、CPU、メモリ、およびストレージで未予約の容量が最も多いリソース プールを優先します。さらに、黄状態のクラスタは優先しないため、配置条件を満たす健全なクラスタが使用できない場合にのみ黄状態のクラスタが選択されます。vCenter から仮想マシンをインポートする際は、仮想マシンの配置が適切な場合、移動を最小限にするためにエンジンはしきい値を無視します。

仮想マシンをパワーオンすると、VMware Cloud Director は現在の場所で仮想マシンをパワーオンします。vCenter がホストの CPU とメモリ容量についてエラーを報告した場合、VMware Cloud Director はリソース プールの移動を 2 回試行してから、組織 VDC 上の互換性のある他のリソース プールへの仮想マシンの移動を試行します。配置エンジンを再実行して互換性のあるリソース プールを検索すると、VMware Cloud Director は以前に試行して失敗したリソース プールを除外します。VMDK が配置されているデータストアに適切なリソース プールが接続されていない場合、仮想マシンを別のリソース プールに移動すると、仮想マシンの VMDK が別のデータストアに移行される可能性があります。仮想マシンの要件を満たすすべての場所で仮想マシンの配置が失敗すると、VMware Cloud Director は配置が不可能であるというエラー メッセージを返します。現在のデータストアに対するアフィニティがあり、データストアが使用できない場合、配置エンジンは配置が不可能であるというエラーを返します。これは、システムがほぼフル キャパシティで運用され、提案された解決策が現在の要件のすべてを満たしていない場合のシステムの正常な状態です。エラーを修正するには、リソースを追加または解放して再試行を開始します。特定のデータストアが要件でない場合、配置エンジンは、ストレージ ポリシー、ストレージ容量、IOPS キャパシティなどの他の要件を満たすデータストアを候補ホスト クラスタまたはリソース プールから選択します。

リソース プールが容量に近い場合の同時デプロイの状況では、リソース プールに仮想マシンをサポートするリソースがない場合であっても、そのリソース プールの検証が正常に行われる場合があります。これらのケースでは、仮想マシンはパワーオンになりません。この状況で仮想マシンのパワーオンに失敗し、VDC をバッキングしているリソース プールが複数ある場合、VMware Cloud Director が仮想マシンを別のリソース プールに移行するようにパワーオン操作を再び開始します。

リソース プールが属するクラスタが容量に近いときは、個々のホストに仮想マシンをパワーオンするための容量がない場合、そのリソース プールの仮想マシンがパワーオンできないことがあります。クラスタ レベルでの容量の断片化の結果としてこのような状況が発生します。このようなケースでは、システム管理者はいくつかの仮想マシンをクラスタから移行させ、クラスタに利用可能な容量を十分に確保する必要があります。

仮想マシン配置エンジンのアルゴリズム

配置アルゴリズムは、必須のストレージ プロファイルが使用可能で、既存の仮想マシン間、仮想マシンとホスト間のアフィニティ、または非アフィニティ ルールに従うホスト クラスタのリストからホスト クラスタを選択します。 VMware Cloud Director は、さまざまなスコアを使用して配置ソリューションを計算します。エンジンの動作を変更するには、セル管理ツールを使用して、アンダースコア (_) 記号で始まる構成可能なパラメータを変更します。
  1. ワークロード配置エンジンは、各ホスト クラスタについて capacityScorefutureCapacityScore、および reservationScore を計算します。配置エンジンは、各スコアを CPU、メモリ、ストレージについて個別に計算します。
    capacityScore: (not available in some cases ) 
    
    CPU = (cpuUnreservedCapacityMHz - (cupBurstMHz * _cpuBurstRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memBurstMB * _memoryBurstRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    futureCapacityScore (not available in some cases) 
    
    CPU = (cpuUnreservedCapacityMHz - (cpuUndeployedReservationMHz * _futureDeployRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memUndeployedReservationMB * _futureDeployRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    reservationScore: (used for capacityScore and futureCapacityScore when those scores are unavailable) 
    
    CPU = cpuUnreservedCapacityMHz / cpuRequirementMHz 
    Memory = memoryUnreservedCapacityMB / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
  2. 各ホスト クラスタについて、配置エンジンは CPU、メモリ、およびストレージの weightedCapacityScore を計算します。
    weightedCapacityScore = capacityScore * _currentScoreWeight + futureCapacityScore * (1 - _currentScoreWeight)

    weightedCapacityScore は 0 ~ 1 の比率で、値が高いほどリソースが利用可能であることを表します。weightedCapacityScore 値は可用性の無名数の測定値で表されるため、CPU、メモリ、ストレージなど、異なるリソース タイプ間で比較できます。weightedCapacityScore が高いほど、ホスト クラスタ内の対応するリソースの可用性が高いことを示します。

  3. 配置エンジンは、CPU、メモリ、およびストレージに十分なリソースがあることを確認します。
    totalAvailable * _[memory|cpu|storage]headRoom < free / UnreservedCapacity
  4. 配置エンジンは、weightedCapacityScore に基づいてホスト クラスタのリストをソートし、制約の最も少ないホスト クラスタが最初に、制約の最も大きいホスト クラスタが最後になるようにします。
  5. 配置エンジンは、リスト内の各ホスト クラスタを処理します。
    • 非アフィニティ ルールなどの理由でホスト クラスタを回避する必要がある場合は、エンジンによって avoidHubList に追加されます。
    • ホスト クラスタに十分な追加リソースがない場合は、エンジンによって noHeadRoomHubList に追加されます。
    • 高いアフィニティ ルールや現在のホスト クラスタなど、ホスト クラスタが優先される場合、エンジンによって preferredHubList に追加されます。
    • 他のすべてのホスト クラスタは、acceptableHubList に移動されます。

    各リスト内で、最も優先されるホスト クラスタが最初に、最も優先度の低いホスト クラスタが最後になります。

  6. エンジンは 4 つのリストを統合します。

    preferredHubList + acceptableHubList + noHeadRoomHubList + avoidHubList

    エンジンは、結果のリストを最も優先されるホスト クラスタから最も優先度の低いホスト クラスタに順序付けします。

  7. 配置エンジンは、リストから最上位のホスト クラスタをターゲット ハブとして選択します。

調整可能なパラメータ

さまざまな選択アルゴリズムのしきい値に影響を与えるために、カスタマイズ可能なパラメータがいくつかあります。ただし、予期しない結果が生じる可能性があるため、これらのパラメータのデフォルト値からの変更は、VMware Cloud Director の操作に関する高度な知識を持つサービス プロバイダ管理者のみが実行できます。最初に、非本番環境でパラメータの変更をテストします。

セル管理ツールを使用して、次のパラメータをカスタマイズできます。

パラメータ 説明
vcloud.placement.ranking.currentScoreWeight ホスト クラスタ スコアの現在のコンポーネントの相対的な重要度。値は [0.1] にする必要があります。値を 0 にすると、エンジンは将来のスコアのみに基づいてホスト クラスタをランク付けします。値を 1 にすると、エンジンは現在のスコアのみに基づいてホスト クラスタをランク付けします。デフォルトは0.5個です。

vcloud.placement.ranking.memoryBurstRatio

vcloud.placement.ranking.cpuBurstRatio

ランク付けでクラスタの負荷の予測に使用する仮想マシンの予約を超えた割り当ての割合。値は 0 ~ 1 です。0 は、仮想マシンが予約のみを使用していることを意味します。1 は、仮想マシンが完全にビジー状態であることを意味します。デフォルトは0.67個です。
vcloud.placement.ranking.futureDeployRatio デプロイされ、メモリと CPU を使用することが想定される、このホスト クラスタ上の仮想マシンの割合。値は 0 ~ 1 です。デフォルトは0.5個です。

vcloud.placement.ranking.memoryHeadRoom

vcloud.placement.ranking.cpuHeadRoom

vcloud.placement.ranking.storageHeadRoom

これらのパラメータを使用すると、ホスト クラスタの拡張用に追加のリソースを残すための制御が可能になります。エンジンは、ヘッドルームを未予約リソースの比率として定義します。たとえば、vcloud.placement.ranking.memoryHeadRoom が 0.2 の場合、ホスト クラスタの使用可能なリソースが 20% 未満になると、エンジンは、メモリのヘッドルームが不十分なクラスタと見なし、他のホスト クラスタよりも下位にランク付けします。値は 0 ~ 1 にする必要があります。デフォルトは0.2個です。

例:
./cell-management-tool manage-config -n vcloud.placement.ranking.memoryHeadRoom -v 0.3 

データストア フィルタとストレージ配置アルゴリズム

VMware Cloud Director データストア フィルタとストレージ配置アルゴリズムは、基盤となるストレージ リソースへの仮想マシン ファイルとディスクの配置を決定します。ストレージ コンテナは、データストアかデータストア クラスタのいずれかのストレージ リソースを表します。

データストア フィルタはストレージ フィルタ チェーンの一部であり、配置サブジェクトの要件に基づいて対象となるストレージ コンテナを絞り込むのに役立ちます。フィルタは、プロバイダ VDC で使用可能なストレージ コンテナを入力リストとして使用します。フィルタは事前定義されたシーケンスで実行され、各フィルタはストレージ コンテナの調整されたリストを次のフィルタに渡します。VMware Cloud Director は、適用できないフィルタをスキップします。たとえば、IOPS 設定のない仮想マシンには、VMware Cloud Director は IOPS フィルタを実行しません。

表 1. データストア フィルタ
フィルタ 説明
AffinityDatastoreFilter データストアに定義されているアフィニティ ルールと非アフィニティ ルールに基づいてストレージ コンテナをフィルタリングします。VMware Cloud Director は、vCenter からの仮想マシンのインポート、テナント移行などの場合にデータストア アフィニティ ルールを設定します。
AlreadyOnValidDatastoreFilter 配置サブジェクトがすでに有効なデータストアに配置されている場合、このフィルタは他のすべてのストレージ コンテナを拒否し、有効なデータストアのみを保持します。
BadHostsFilter 1 つ以上の接続済み、動作中、パワーオン状態のホストがないストレージ コンテナを除外します。インベントリから削除されたストレージ コンテナを除外します。
DatastoreClusterFilter

すべてのデータストア クラスタと、データストア クラスタに属するデータストアを除外します。このフィルタは、配置サブジェクトにデータストア クラスタが不要な場合に使用します。たとえば、config: vcloud.disk.shared.allowOnSpod に基づいて、共有された名前付きディスクがデータストア クラスタで許可されていない場合です。

DatastoreFsFilter 指定したファイル システムの一部であるすべてのストレージ コンテナを除外します。たとえば、共有された名前付きディスクが NFS データストアで許可されていない場合、config: vcloud.disk.shared.allowOnNfs に基づき、配置アルゴリズムはこのフィルタをチェーンに追加します。
DisabledDatastoreFilter 無効になっているすべてのストレージ コンテナを入力リストから除外します。
IopsCapacityDatastoreFilter

仮想マシンに十分な IOPS キャパシティがないすべてのデータストアを除外します。

このフィルタは、次の前提条件を満たしている場合に実行されます。

  • 仮想マシンに IOPS 設定があります。
  • ストレージ ポッドがありません。
  • すべてのデータストアに iopsCapacities が設定されています。
  • 仮想マシンで、ストレージ ポリシーの [VCD/IOPS] 機能が有効で、ストレージ ポリシー設定の [影響のある配置] オプションが有効になっています。
LeastProvisionedFilter プロビジョニングが最も不十分なストレージ コンテナをシングルアウトします。
LinkedCloneFilter ソース仮想マシンまたは対応するシャドウ仮想マシンがないすべてのデータストアを除外します。仮想マシンの仮想ディスクで許容される最大チェーン長を超えたソース仮想マシンがあるデータストアを除外します。
MinFreeSpaceFilter 配置サブジェクトに十分な空き容量が含まれていないストレージ コンテナを除外します。ストレージ ポッドで、空き容量を子データストアの最大空き容量によって決定します。子データストアの合計空き容量やストレージ ポッドの空き容量は考慮されません。たとえば、ストレージ ポッドにそれぞれ 3 GB と 5 GB の空きデータストアが 2 つある場合です。VMware Cloud Director は、ストレージ ポッドの空き容量を 5 GB と見なします。このようなコンテナがない場合、フィルタは空き容量の最も多いコンテナを保持します。
MostFreeSpaceFilter 空き容量が最も多いストレージ コンテナをシングルアウトします。
StorageClassFilter 要件で定義されている配置サブジェクトのストレージ ポリシーと一致しないストレージ コンテナまたはストレージ ポッドを除外します。
ThresholdFilter 使用可能なキャパシティの指定されたしきい値に達したストレージ コンテナを除外します。VMware Cloud Director にはオレンジ色と赤色のしきい値があります。VMware Cloud Director におけるプロバイダ仮想データセンター ストレージ コンテナの低ディスク容量しきい値の構成を参照してください。
VirtualMachineFilter 指定した仮想マシンがアクセスできないすべてのストレージ コンテナを除外します。

VMware Cloud Director は、フィルタリングされたストレージ コンテナの最終的なリストを、選択したストレージ コンテナに配置対象を配置するストレージ配置アルゴリズムに渡します。

配置サブジェクトのセットをそれぞれについて最適なデータストアに配置するために、ストレージ配置アルゴリズムは構成可能な基準と有効なデータストアのリストを使用します。ストレージ配置アルゴリズムは、次のワークフローを使用します。
  1. 配置エンジンから、配置サブジェクトのセットと、プロバイダ VDC をバッキングするターゲット リソース プールを受け取ります。2 つの可能性があります。

    • 通常、このアルゴリズムは、メタデータと構成情報を含む仮想マシン ホーム ファイルと、通常の高速プロビジョニングされていない仮想マシン配置用のディスクのセットを受け取ります。
    • アルゴリズムが、名前付きディスクと高速プロビジョニングされた仮想マシンに対して、ディスクの集約アプローチを使用する場合があります。つまり、高速プロビジョニングされた仮想マシンごとに、アルゴリズムは仮想マシンとそのすべてのディスクに対して 1 つの要件を受け取ります。
  2. データストアとストレージ ポッドの両方を含む、そのハブに適したストレージ コンテナのセットを受け取ります。
  3. サブジェクトに適合しないストレージ コンテナを除外するために、各配置サブジェクトに対し、配置フィルタの静的チェーンを使用してアルゴリズムが実行されます。たとえば、仮想マシン ディスクがデータストアに収まらない場合、アルゴリズムはデータストアを仮想マシン ディスクの対象外としてマークします。
  4. 以下の考慮事項に連続的に従って、各サブジェクトのストレージ コンテナを優先順位に従ってランク付けします。
    1. コンテナがストレージ ポッドかデータストアか
    2. ストレージ ポッドを有効なコンテナとして含むその他の配置サブジェクトの数
    3. コンテナのサイズ
  5. いずれかのコンテナがストレージ ポッドの場合、ストレージ ポッドをデータストアに低減するために、アルゴリズムは vSphere Storage DRS の呼び出しアルゴリズムを実行します。
  6. 配置サブジェクトとその有効なデータストアのセットを入力した後、配置サブジェクトの配置場所を決定します。
  7. 各配置サブジェクトを配置するデータストアを決定する最終的な配置結果を返すか、VMware Cloud Director アルゴリズムが適切な配置を見つけることができないというエラーを返します。