このガイドでは、 KVMでネストされた仮想化を有効にする方法を説明します。 Linuxでは。 ネストされた仮想化 は、ホストシステムからのハードウェアアクセラレーションを使用しながら、別の仮想マシン内で仮想マシンを実行できるようにする機能です。つまり、ネストされた仮想化は、仮想マシン(VM)内でハイパーバイザーを実行するメカニズムであり、仮想マシン自体はハイパーバイザー上で実行されます。
LinuxのKVMでネストされた仮想化を有効にする
ネストされたVT機能を有効にする前に、実行中のすべてのVMの電源を切ります。
次に、KVMモジュールをアンロードします。
INTELでKVMモジュールをアンロードするには システム、実行:
$ sudo modprobe -r kvm_intel
AMD システム:
$ sudo modprobe -r kvm_amd
次のコマンドを使用して、INTELCPUでネストされた機能を有効にしてKVMモジュールをリロードします。
$ sudo modprobe kvm_intel nested=1
次のコマンドを使用して、AMDCPUでネストされた機能を有効にしてKVMモジュールをリロードします。
$ sudo modprobe kvm_amd nested=1
ネストされた仮想化を永続的に有効にする
ネストされたVT機能は、KVMホストシステムを再起動するまでのみ有効になることに注意してください。ネストされた機能を永続的に有効にするには、 /etc/modprobe.d/kvm.confを編集します ファイル:
$ sudo vi /etc/modprobe.d/kvm.conf
ファイルが存在しない場合は、作成するだけです。
INTELに次の行を追加します ホスト:
options kvm_intel nested=1
AMDに次の行を追加します ホスト:
options kvm_amd nested=1
ファイルを保存して閉じます。
終わり! KVMホストシステムでネストされたVTを有効にしました。
KVMホストでネストされた仮想化が有効になっているかどうかを確認します
プロセッサがINTELの場合は、 "/ sys / module / kvm_intel / parameters / nested"を確認してください。 「cat」コマンドを使用したファイル:
$ cat /sys/module/kvm_intel/parameters/nested

Linuxでネストされた仮想化がサポートされているかどうかを確認する
"Y"を返す場合 または"1" 、これは、システムがネストされた仮想化をサポートしていることを意味します。出力が"N"の場合 または"0" 、システムはネストされた仮想化をサポートしません。
プロセッサがAMDの場合は、 "/ sys / module / kvm_amd / parameters / nested"の内容を確認してください。 ファイル。
または、次のコマンドを使用して、「kvm_intel」カーネルモジュールでネストが有効になっていることを確認できます。
$ modinfo kvm_intel | grep -i nested
出力例:
parm: nested_early_check:bool parm: nested:bool
AMD CPUの場合:
$ modinfo kvm_amd | grep -i nested
私のKVMホストはネストされた仮想化をサポートしており、すでに有効になっています。
KVMゲストマシンでネストされた仮想化を有効にする
コマンドラインから、または Virt-manager などのグラフィカルKVM管理アプリケーションを使用して、KVMVMでネストされた機能を有効にできます。 。
コマンドラインからKVMゲストのネストされた機能を有効にする
virshコンソールにログインします:
$ virsh
ネストされた機能を有効にするVMを編集します:
virsh # edit centos
使用可能なすべてのVMを見つけるには、virshコンソール内で次のコマンドを実行します。
virsh # list --all
「cpumode」パラメータを見つけて、その値を「host-model」として設定します。
<cpu mode='host-model' check='partial'/>

virshコマンドを使用してKVMゲストでネストされた機能を有効にする
ファイルを保存して閉じます。
VMを起動します:
virsh # start centos8
ネストされた機能がVMで有効になっているかどうかを確認します:
virsh # dumpxml centos8
「CPUモード」ディレクティブの下に必要なすべての機能ポリシーが更新されていることを確認してください。
<cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>SandyBridge-IBRS</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='require' name='vmx'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='umip'/> <feature policy='require' name='md-clear'/> <feature policy='require' name='stibp'/> <feature policy='require' name='arch-capabilities'/> <feature policy='require' name='ssbd'/> <feature policy='require' name='xsaveopt'/> <feature policy='require' name='ibpb'/> <feature policy='require' name='amd-ssbd'/> <feature policy='require' name='skip-l1dfl-vmentry'/> <feature policy='disable' name='aes'/> </cpu>
ネストされた仮想化機能がCentOS8VMで有効になっています。
Virt-managerを使用してKVMゲストでネストされた機能を有効にする
Virt-manager GUIアプリケーションを開き、ネストされたVT機能を有効にするKVMゲストをダブルクリックします。 [仮想ハードウェアの詳細を表示]ボタンをクリックして、左側のメニューの[CPU]セクションに移動します。
「ホストCPU構成のコピー」を選択します CPU構成ウィンドウのチェックボックスをオンにして、「適用」をクリックします。

VIrt-managerでネストされた仮想化を構成する
これで、物理ホストのCPUモデルと構成がVMに適用されます。
KVMゲストが仮想化をサポートしているかどうかを確認します
ネストされた機能を有効にしたKVMゲストマシンの電源を入れてログインします。
KVMゲストのターミナルで次のコマンドを実行して、仮想化が有効になっているかどうかを確認します。
# egrep --color -i "svm|vmx" /proc/cpuinfo
出力例:

KVMゲストがLinuxの仮想化テクノロジーをサポートしているかどうかを確認する
「vmx」が表示された場合 (Intel-VTテクノロジー)または「svm」 (AMD-Vサポート)出力では、KVMゲストマシンはハイパーバイザーおよびホストVMとして機能できます。上記の出力からわかるように、私のCentOS 8KVMVMは仮想化をサポートしています。
LinuxシステムがVTをサポートしているかどうかを確認するその他の方法については、次のガイドを確認してください。
- CPUが仮想化テクノロジー(VT)をサポートしているかどうかを確認する方法
関連記事:
- VirtualBoxでネストされた仮想化を有効にする方法