4.3. インスタンスの CPU 機能フラグの設定
ホストコンピュートノードの設定を変更してコンピュートノードをリブートすることなく、インスタンスの CPU 機能フラグを有効または無効にすることができます。インスタンスに適用される CPU 機能フラグの標準的なセットを設定することで、コンピュートノード間でライブマイグレーションの互換性を実現するのに役立ちます。また、特定の CPU モデルにおいてインスタンスのセキュリティーやパフォーマンスに悪影響を与えるフラグを無効にしたり、セキュリティーやパフォーマンスの問題を軽減するフラグを有効したりして、インスタンスのパフォーマンスおよびセキュリティーを管理するのにも役立ちます。
4.3.1. インスタンスの CPU 機能フラグの設定
Compute サービスを設定し、特定の仮想 CPU モデルのインスタンスに CPU 機能フラグを適用します。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 stackrc
ファイルを取得します。source ~/stackrc
[stack@director ~]$ source ~/stackrc
Copy to Clipboard Copied! - Compute 環境ファイルを開きます。
インスタンスの CPU モードを設定します。
parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: <cpu_mode>
parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: <cpu_mode>
Copy to Clipboard Copied! <cpu_mode>
をコンピュートノード上の各インスタンスの CPU モードに置き換えます。以下の有効な値のいずれかに設定します。-
host-model
:(デフォルト) ホストコンピュートノードの CPU モデルを使用します。この CPU モードを使用して、重要な CPU フラグをインスタンスに自動的に追加し、セキュリティー上の欠陥の軽減策を提供します。 custom
: 各インスタンスが使用する特定の CPU モデルを設定するのに使用します。注記CPU モードを
host-passthrough
に設定すると、コンピュートノードでホストされるインスタンスにそのコンピュートノードと同じ CPU モデルおよび機能フラグを使用することができます。
-
(オプション)
NovaLibvirtCPUMode
をcustom
に設定した場合は、カスタマイズするインスタンス CPU モデルを設定します。parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: 'custom' NovaLibvirtCPUModels: <cpu_model>
parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: 'custom' NovaLibvirtCPUModels: <cpu_model>
Copy to Clipboard Copied! <
;cpu_model>
; を、ホストがサポートする CPU モデルのリストに置き換えます。CPU モデルを順に一覧表示します。この際、より一般的で高度ではない CPU モデルは最初にリストに配置され、より機能が充実した CPU モデルが最後になります。以下に例を示します。NovaLibvirtCPUModels: - SandyBridge - IvyBridge - Haswell-noTSX-IBRS
NovaLibvirtCPUModels: - SandyBridge - IvyBridge - Haswell-noTSX-IBRS
Copy to Clipboard Copied! モデル名の一覧は、
/usr/share/libvirt/cpu_map.xml
ファイルを参照するか、ホストコンピュートノードで以下のコマンドのいずれかを使用します。RHEL バージョン 8.4 コンピュートノードの場合:
sudo podman exec -it nova_libvirt virsh cpu-models <arch>
$ sudo podman exec -it nova_libvirt virsh cpu-models <arch>
Copy to Clipboard Copied! RHEL バージョン 9.2 コンピュートノードの場合:
sudo podman exec -it nova_virtqemud virsh cpu-models <arch>
$ sudo podman exec -it nova_virtqemud virsh cpu-models <arch>
Copy to Clipboard Copied! -
<arch>
をコンピュートノードのアーキテクチャー名に置き換えてください (例:x86_64
)。
指定の CPU モデルのインスタンスの CPU 機能フラグを設定します。
parameter_defaults: ComputeParameters: ... NovaLibvirtCPUModelExtraFlags: <cpu_feature_flags>
parameter_defaults: ComputeParameters: ... NovaLibvirtCPUModelExtraFlags: <cpu_feature_flags>
Copy to Clipboard Copied! <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'
parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: 'custom' NovaLibvirtCPUModels: - IvyBridge - Cascadelake-Server NovaLibvirtCPUModelExtraFlags: 'pcid,+ssbd,-mtrr'
Copy to Clipboard Copied! その他の環境ファイルと共に Compute 環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml
Copy to Clipboard Copied!