仮想マシンごとに複数の入出力デバイスをサポートできるよう、PCIeポートの数を増やす
概要
仮想マシンに3つ以上のネットワークインターフェースが必要な場合、PCIeポートのデフォルトの割り当てがボトルネックとなる可能性があります。 この問題を解決するには、VMの設定で利用可能なPCIeポートの数を手動で増やす必要があります。
利用可能なPCIeポートが不足している問題を解決するための重要な手順
- CubeCOSが利用可能なPCIeポートのデフォルト上限を引き上げる
- PCIeルートポートデバイスを追加します。
- これらの新しく作成されたポートに、追加のネットワークインターフェースを接続します。
- 変更を反映させるには、VMを再起動するか、設定を再定義してください。
これにより、VMには複数のNICを競合することなくサポートできる十分な数のPCIeスロットが確保されます。
詳細
仮想マシンに複数のネットワークインターフェースを接続しようとした際に失敗し、かつ追加のPCIeポートを設定していない場合は、この記事を参照してください。
対象バージョン
CubeCOS 3.0.0 以上。
この記事は、CubeCOS バージョン 3.0.0 以降を実行している環境に適用されます。
決議
利用可能なPCIeポートを最大限に活用できるよう、Novaコンピューティングサービスを設定する
PCIeポートのデフォルトの割り当てでは不十分な場合があります。 この問題を解決するには、設定で利用可能なPCIeポートの最大数を、CubeCOSがサポートする最大値に手動で設定してください。
-
端末セッションを開きます。
-
SSH 経由で
rootユーザーとしてクラスター VIP にログインします。ssh root@<your-cluster-vip> -
新しい設定ファイルを作成し、利用可能なPCIeポートの最大数を、CubeCOSがサポートする最大値に手動で設定します。
touch /etc/nova/nova.d/pcie.conf -
次のコマンドを使用してNovaの設定を開きます:
vi /etc/nova/nova.d/pcie.conf -
iキーを押して挿入モードに入り、pcie.confに以下の値を入力してください。CubeCOSで有効化されるPCIeポートのデフォルト数は0で、サポートされる最大構成数は28です。
# Override number of enabled pcie ports[libvirt]num_pcie_ports = 28 -
変更を加えた後、
:wqを入力してエディタを保存して終了します。
PCIeポートの設定ファイルをすべての計算ノードに同期する
vTPMをクラスタ全体の同期タスクと同期させ、すべてのコンピュートノードが同じPCIeポートをサポートするようにします。 なお、sync コマンドは、AIO、Compute、または Compute with Storage などのコンピュート サービスを実行しているノードに限定されます。
-
設定ファイルを、コンピュートサービスを実行しているすべてのCubeCOSノードに同期します。
cubectl node -r compute rsync /etc/nova/nova.d/pcie.conf
すべてのコンピュートサービスノードでNovaコンピュートサービスを再起動する
PCIeポートの設定を適用するには、設定ファイルの同期を完了させた後、以下のコマンドを実行してサービスを再起動してください:
追加のネットワークインターフェースを接続する前に、すべてのコンピュートノードで同期処理が完了していることを確認してください。
-
コンピューティングサービスをホストするすべてのノードで Nova コンピューティングサービスを再起動します。
cubectl node -r compute exec -p "hex_config restart_nova" -
すべてのコンピューティングサービスノードでNovaサービスの健全性を確認します。
cubectl node -r compute exec -p "systemctl status openstack-nova-compute | grep Active" -
すべてのコンピュート・サービス・ノードにおいて、
openstack-nova-computeサービスのステータスがActiveである必要があります。
既存の仮想マシンにネットワークインターフェースを追加する
設定を適用すると、新しく作成されるすべての仮想マシンにおいて、デフォルトで最大数のPCIeポートがサポートされるようになります。 ただし、設定を適用する前に、既存の仮想マシンを変更する必要があります。 既存の仮想マシンを、新しいPCIeポートの最大数に対応するように設定するには、以下の手順に従ってください。
GUI を使用して、既存の仮想マシンを再設定します
PCIeポートの最大数を増やした後、既存の仮想マシンに複数のネットワークインターフェースを接続できるようにするには、仮想マシンを一時停止してから再開する必要があります。
データの損失や予期せぬサービスの中断を防ぐため、作業を進める前にゲストOSを安全にシャットダウンしてください。
仮想マシンが稼働中は、シェルビングまたはアンシェルビングの操作を行うことはできません。
- CubeCOSの管理インターフェースにログインし、
OpenStack統合の設定画面に移動します。 - 「Compute > Instances」 に移動し、変更するインスタンスを探します。
- インスタンスのゲストOSにアクセスし、インスタンスを正常にシャットダウンすることで、シェルビングおよびアンシェルビングの準備を行ってください。
- 続行する前に、インスタンスのステータスが
Shutoffであることを確認してください。 - 「More」にカーソルを合わせ、「Instance Status」をクリックし、「shelve」を選択して、インスタンスを一時停止します。
- インスタンスをシェルブから解除するには、
Moreにカーソルを合わせ、Instance Statusをクリックし、unshelveを選択します。 - 必要に応じて、ネットワークインターフェースを追加してください。
- 仮想マシンを再起動してください。
CLI を使用して、既存の仮想マシンを再設定する
- CubeCOSの管理インターフェースにログインし、
OpenStack統合の設定画面に移動します。 - 「Compute > Instances」 に移動し、変更するインスタンスを探します。
- インスタンスIDをクリックして、インスタンスIDをコピーしてください。
- インスタンスのゲストOSにアクセスし、インスタンスを正常にシャットダウンすることで、シェルビングおよびアンシェルビングの準備を行ってください。
- 続行する前に、インスタンスのステータスが
Shutoffであることを確認してください。 - 端末セッションを開きます。
- SSH を使用して
ssh root@\<your-cluster-ip>と入力し、rootユーザーとしてクラスタの VIP にログインします。 openstack server shelve --offload \<vm-id>を実行して、インスタンスをシェルブします\<vm-id>を、手順3で取得したIDに置き換えてください。
openstack server unshelve \<vm-id>を実行して、インスタンスをアンシェルブします- 必要に応じて、ネットワークインターフェースを追加してください。
- 仮想マシンを再起動してください。