10.4. Placement サービスで PCI デバイスを予約する
PCI デバイスを Compute スケジューラーサービスから削除するには、デバイスを見つけ、openstack コマンドを使用して Placement サービスでデバイスを予約することで、Compute スケジューラーサービスから削除する必要があります。予約されている間、Compute サービス (nova) は仮想マシンにデバイスを使用できません。デバイスを削除は、デバイスの修理やメンテナンスの実行など、さまざまな理由で必要になります。メンテナンス後は、逆の操作を実行してデバイスの予約を解除できます。
前提条件
- Placement で PCI トラッキングを有効にした。詳細は、Placement サービスで PCI デバイストラッキングを有効にする を参照してください。
手順
特定のデバイス (たとえば、compute1 上の PCI アドレス 0000:09:00.0 のデバイス) を予約するには、コマンドでデバイスリソースプロバイダー (RP) を使用して、デバイスの UUID を取得する必要があります。デバイス RP は、コンピュートノードのホスト名と GPU の PCI アドレスを組み合わせたものです (例:
compute1_0000:09:00.0)。$ openstack resource provider list --name compute1_0000:09:00.0 +--------------------------------------+-----------------------+------------+--------------------------------------+--------------------------------------+ | uuid | name | generation | root_provider_uuid | parent_provider_uuid | +--------------------------------------+-----------------------+------------+--------------------------------------+--------------------------------------+ | d3d0f3d7-8376-487f-8849-e43027c31582 | compute1_0000:09:00.0 | 2 | e909b54b-4cea-49f9-bfcb-17c833db51d1 | e909b54b-4cea-49f9-bfcb-17c833db51d1 | +--------------------------------------+-----------------------+------------+--------------------------------------+--------------------------------------+デバイスの
uuidを使用して、RP の現在のインベントリーを確認します。この例の UUID はd3d0f3d7-8376-487f-8849-e43027c31582です。$ openstack resource provider inventory list d3d0f3d7-8376-487f-8849-e43027c31582 +----------------------+------------------+----------+----------+----------+-----------+-------+------+ | resource_class | allocation_ratio | min_unit | max_unit | reserved | step_size | total | used | +----------------------+------------------+----------+----------+----------+-----------+-------+------+ | CUSTOM_PCI_8086_10C9 | 1.0 | 1 | 1 | 0 | 1 | 1 | 0 | +----------------------+------------------+----------+----------+----------+-----------+-------+------+注記デバイスを予約すると、Compute スケジューラーサービスは以降のスケジュールでそのデバイスを使用できなくなります。ただし、引き続きデバイスは既存の仮想マシンによって使用される場合があります。インベントリーリスト出力の
used列の値が 0 に設定されている場合、デバイスは既存の仮想マシンによって使用されていません。デバイスを予約するには、
reservedの値を 1 に設定します。openstack resource provider inventory set d3d0f3d7-8376-487f-8849-e43027c31582 --amend --resource CUSTOM_PCI_8086_10C9:reserved=1 +----------------------+------------------+----------+----------+----------+-----------+-------+ | resource_class | allocation_ratio | min_unit | max_unit | reserved | step_size | total | +----------------------+------------------+----------+----------+----------+-----------+-------+ | CUSTOM_PCI_8086_10C9 | 1.0 | 1 | 1 | 1 | 1 | 1 | +----------------------+------------------+----------+----------+----------+-----------+-------+デバイスの予約を解除し、Compute スケジューラーサービスで再度使用できるようにするには、
reservedの値を 0 に設定します。openstack resource provider inventory set d3d0f3d7-8376-487f-8849-e43027c31582 --amend --resource CUSTOM_PCI_8086_10C9:reserved=0 +----------------------+------------------+----------+----------+----------+-----------+-------+ | resource_class | allocation_ratio | min_unit | max_unit | reserved | step_size | total | +----------------------+------------------+----------+----------+----------+-----------+-------+ | CUSTOM_PCI_8086_10C9 | 1.0 | 1 | 1 | 0 | 1 | 1 | +----------------------+------------------+----------+----------+----------+-----------+-------+