Menu Close
Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第6章 PCI パススルーの設定
PCI パススルーを使用して、グラフィックカードまたはネットワークデバイス等の物理 PCI デバイスをインスタンスにアタッチすることができます。デバイスに PCI パススルーを使用する場合、インスタンスはタスクを実行するためにデバイスへの排他的アクセスを確保し、ホストはデバイスを利用することができません。
ルーティング対応プロバイダーネットワークでの PCI パススルーの使用
Compute サービスは、複数のプロバイダーネットワークにまたがる単一のネットワークをサポートしません。ネットワークに複数の物理ネットワークが含まれる場合、Compute サービスは最初の物理ネットワークだけを使用します。したがって、ルーティング対応プロバイダーネットワークを使用する場合は、すべてのコンピュートノードで同じ physical_network
名を使用する必要があります。
VLAN またはフラットネットワークのルーティング対応プロバイダーネットワークを使用する場合は、すべてのセグメントで同じ physical_network
名を使用する必要があります。その後、ネットワークに複数のセグメントを作成し、そのセグメントを適切なサブネットにマッピングします。
クラウドユーザーが PCI デバイスがアタッチされたインスタンスを作成できるようにするには、以下の手順を実施する必要があります。
- PCI パススルー用のコンピュートノードを指定する。
- 必要な PCI デバイスを持つ PCI パススルー用のコンピュートノードを設定する。
- オーバークラウドをデプロイする。
- PCI デバイスがアタッチされたインスタンスを起動するためのフレーバーを作成する。
前提条件
- 必要な PCI デバイスを持つコンピュートノード
6.1. PCI パススルー用コンピュートノードの指定
物理 PCI デバイスがアタッチされたインスタンス用のコンピュートノードを指定するには、以下の操作を行う必要があります。
- PCI パススルーロールを設定するための新規ロールファイルを作成する。
- PCI パススルー用コンピュートノードをタグ付けするための、PCI パススルー用の新規オーバークラウドフレーバーを設定する。
手順
roles_data_pci_passthrough.yaml
という名前で、Controller
、Compute
、およびComputePCI
ロールが含まれる新しいロールデータファイルを生成します。(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_pci_passthrough.yaml \ Compute:ComputePCI Compute Controller
roles_data_pci_passthrough.yaml
を開き、以下のパラメーターおよびセクションを編集または追加します。セクション/パラメーター 現在の値 新しい値 ロールのコメント
Role: Compute
Role: ComputePCI
ロール名
Compute
name: ComputePCI
説明
Basic Compute Node role
PCI パススルー用コンピュートノードロール
HostnameFormatDefault
%stackname%-novacompute-%index%
%stackname%-novacomputepci-%index%
deprecated_nic_config_name
compute.yaml
compute-pci-passthrough.yaml
-
オーバークラウドの PCI パススルー用コンピュートノードをノード定義のテンプレート
node.json
またはnode.yaml
に追加して、そのノードを登録します。詳しい情報は、『director のインストールと使用方法』の「オーバークラウドノードの登録」を参照してください。 ノードのハードウェアを検査します。
(undercloud)$ openstack overcloud node introspect \ --all-manageable --provide
詳細は、『director のインストールと使用方法』の「ノードのハードウェアの検査」を参照してください。
PCI パススルー用に指定するノードをタグ付けするための
compute-pci-passthrough
ベアメタルフレーバーを作成します。(undercloud)$ openstack flavor create --id auto \ --ram <ram_size_mb> --disk <disk_size_gb> \ --vcpus <no_vcpus> compute-pci-passthrough
-
<ram_size_mb>
をベアメタルノードの RAM (MB 単位) に置き換えます。 -
<disk_size_gb>
をベアメタルノード上のディスク容量 (GB 単位) に置き換えます。 <no_vcpus>
をベアメタルノードの CPU 数に置き換えます。注記これらの属性は、インスタンスのスケジューリングには使用されません。ただし Compute スケジューラーは、ディスク容量を使用してルートパーティションのサイズを決定します。
-
PCI パススルー用に指定する各ベアメタルノードに、カスタムの PCI パススルーリソースクラスをタグ付けします。
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.PCI-PASSTHROUGH <node>
<node>
をベアメタルノードの ID に置き換えてください。compute-pci-passthrough
フレーバーをカスタムの PCI パススルーリソースクラスに関連付けます。(undercloud)$ openstack flavor set \ --property resources:CUSTOM_BAREMETAL_PCI_PASSTHROUGH=1 \ compute-pci-passthrough
Bare Metal サービスノードのリソースクラスに対応するカスタムリソースクラスの名前を指定するには、リソースクラスを大文字に変換し、すべての句読点をアンダースコアに置き換え、
CUSTOM_
のプレフィックスを追加します。注記フレーバーが要求できるのは、ベアメタルリソースクラスの 1 つのインスタンスだけです。
以下のフレーバー属性を設定して、Compute スケジューラーがインスタンスのスケジューリングにベアメタルフレーバー属性を使用するのを防ぎます。
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 compute-pci-passthrough
以下のパラメーターを
node-info.yaml
ファイルに追加して、PCI パススルー用コンピュートノードの数および PCI パススルー対応コンピュートノードに使用するフレーバーを指定します。parameter_defaults: OvercloudComputePCIFlavor: compute-pci-passthrough ComputePCICount: 3
ロールが作成されたことを確認するには、以下のコマンドを入力します。
(undercloud)$ openstack overcloud profiles list