4.3. インスタンスの CPU 機能フラグの設定

ホストコンピュートノードの設定を変更してコンピュートノードをリブートすることなく、インスタンスの CPU 機能フラグを有効または無効にすることができます。インスタンスに適用される CPU 機能フラグの標準的なセットを設定することで、コンピュートノード間でライブマイグレーションの互換性を実現するのに役立ちます。また、特定の CPU モデルにおいてインスタンスのセキュリティーやパフォーマンスに悪影響を与えるフラグを無効にしたり、セキュリティーやパフォーマンスの問題を軽減するフラグを有効したりして、インスタンスのパフォーマンスおよびセキュリティーを管理するのにも役立ちます。

4.3.1. 前提条件

  • CPU モデルおよび機能フラグが、ホストコンピュートノードのハードウェアおよびソフトウェアでサポートされる必要があります。

    • ホストが対応しているハードウェアを確認するには、コンピュートノードで以下のコマンドを入力します。

      $ cat /proc/cpuinfo
    • ホストが対応している CPU モデルを確認するには、コンピュートノードで以下のコマンドを入力します。

      $ sudo podman exec -it nova_libvirt virsh cpu-models <arch>

      <arch> をアーキテクチャーの名前に置き換えます (例: x86_64)。

4.3.2. インスタンスの CPU 機能フラグの設定

Compute サービスを設定し、特定の仮想 CPU モデルのインスタンスに CPU 機能フラグを適用します。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. stackrc ファイルを取得します。

    [stack@director ~]$ source ~/stackrc
  3. Compute 環境ファイルを開きます。
  4. インスタンスの CPU モードを設定します。

    parameter_defaults:
      ComputeParameters:
        NovaLibvirtCPUMode: <cpu_mode>

    <cpu_mode> をコンピュートノード上の各インスタンスの CPU モードに置き換えます。以下の有効な値のいずれかに設定します。

    • host-model:(デフォルト) ホストコンピュートノードの CPU モデルを使用します。この CPU モードを使用して、重要な CPU フラグをインスタンスに自動的に追加し、セキュリティー上の欠陥の軽減策を提供します。
    • custom: 各インスタンスが使用する特定の CPU モデルを設定するのに使用します。

      注記

      CPU モードを host-passthrough に設定すると、コンピュートノードでホストされるインスタンスにそのコンピュートノードと同じ CPU モデルおよび機能フラグを使用することができます。

  5. (オプション) NovaLibvirtCPUModecustom に設定した場合は、カスタマイズするインスタンス CPU モデルを設定します。

    parameter_defaults:
      ComputeParameters:
        NovaLibvirtCPUMode: 'custom'
        NovaLibvirtCPUModels: <cpu_model>

    <cpu_model> を、ホストがサポートする CPU モデルのコンマ区切りリストに置き換えます。CPU モデルを順にリスト表示します。この際、より一般的で高度ではない CPU モデルは最初にリストに配置され、より機能が充実した CPU モデルが最後に置かれます (例: SandyBridge,IvyBridge,Haswell,Broadwell)。モデル名のリストは、/usr/share/libvirt/cpu_map.xml を参照してください。または、ホストコンピュートノードで以下のコマンドを入力します。

    $ sudo podman exec -it nova_libvirt virsh cpu-models <arch>

    <arch> をコンピュートノードのアーキテクチャー名に置き換えてください (例: x86_64)。

  6. 指定の CPU モデルのインスタンスの CPU 機能フラグを設定します。

    parameter_defaults:
      ComputeParameters:
        ...
        NovaLibvirtCPUModelExtraFlags: <cpu_feature_flags>

    <cpu_feature_flags> を、有効または無効にする機能フラグのコンマ区切りリストに置き換えます。フラグを有効にするには各フラグの前に+を付け、無効にするには-を付けます。接頭辞が指定されていない場合、フラグが有効になります。特定の CPU モデルで利用可能な機能フラグのリストは、/usr/share/libvirt/cpu_map/*.xml を参照してください。

    以下の例では、IvyBridge および Cascadelake-Server モデルの CPU 機能フラグ pcid および ssbd を有効にし、機能フラグ mtrr を無効にします。

    parameter_defaults:
      ComputeParameters:
        NovaLibvirtCPUMode: 'custom'
        NovaLibvirtCPUModels: 'IvyBridge','Cascadelake-Server'
        NovaLibvirtCPUModelExtraFlags: 'pcid,+ssbd,-mtrr'
  7. その他の環境ファイルと共に Compute 環境ファイルをスタックに追加して、オーバークラウドをデプロイします。

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -e /home/stack/templates/<compute_environment_file>.yaml