본문으로 건너뛰기

[Linux] KVM nested virtualization

kvm-intel 모듈에 nested=1 옵션을 넣어 KVM nested virtualization을 켜고 virt-manager에서 VM의 CPU 가상화를 활성화하는 방법을 정리합니다.

요약

  • /etc/modprobe.d/에 options kvm-intel nested=1을 추가하고 재부팅하면 KVM nested virtualization이 켜져 VM 안에서 다시 가상화를 구성할 수 있습니다.
  • 적용 여부는 /sys/module/kvm_intel/parameters/nested 값이 Y인지로 확인합니다.
  • VM에는 virt-manager CPU 메뉴에서 Copy Host CPU Configuration을 선택해 가상화를 활성화합니다.

테스트 환경 커널 3.10.0-1062.4.3.el7.x86_64 (rhelversion 7.7, CentOS 커널), kvm-intel

KVM nested virtualization

KVM nested virtualization 를 구성하여 VM CPU 가상화를 활성화 할 수 있습니다.
이와 같이 구성 할 경우, 가상화 VM 내에서 한번더 가상화 구성이 가능합니다.

kvm-intel module 설정

아래와 같이 kvm-intel module parameter 를 추가합니다.

[root@kvm ~]# cat /etc/modprobe.d/kvm-nested-module.conf
options kvm-intel nested=1                  

이후 시스템을 재부팅하고 KVM nested virtualization 구성이 되었는지 확인합니다.

[root@kvm ~]# cat /sys/module/kvm_intel/parameters/nested
Y

kvm-intel module 상세 확인

[root@kvm ~]# modinfo kvm-intel
filename:       /lib/modules/3.10.0-1062.4.3.el7.x86_64/kernel/arch/x86/kvm/kvm-intel.ko.xz
license:        GPL
author:         Qumranet
retpoline:      Y
rhelversion:    7.7
srcversion:     B7943A94D7B227C40ACD718
alias:          x86cpu:vendor:*:family:*:model:*:feature:*0085*
depends:        kvm
intree:         Y
vermagic:       3.10.0-1062.4.3.el7.x86_64 SMP mod_unload modversions
signer:         CentOS Linux kernel signing key
sig_key:        3F:59:AE:15:77:D5:87:23:18:4F:6D:BA:B1:8A:D5:F5:9D:E4:1D:39
sig_hashalgo:   sha256
parm:           vpid:bool
parm:           flexpriority:bool
parm:           ept:bool
parm:           unrestricted_guest:bool
parm:           eptad:bool
parm:           emulate_invalid_guest_state:bool
parm:           vmm_exclusive:bool
parm:           fasteoi:bool
parm:           enable_apicv:bool
parm:           enable_shadow_vmcs:bool
parm:           nested:bool
parm:           pml:bool
parm:           preemption_timer:bool
parm:           ple_gap:uint
parm:           ple_window:uint
parm:           ple_window_grow:uint
parm:           ple_window_shrink:uint
parm:           ple_window_max:uint

VM 가상화 활성화

아래와 같이 virt-manager 에서 CPU 메뉴에서 Copy Host CPU Configuration 을 선택합니다.

이후 해당 VM 에서 가상화 활성화 여부를 확인합니다.

참고 문서

자주 묻는 질문

KVM nested virtualization이 켜졌는지 어떻게 확인하나요?

cat /sys/module/kvm_intel/parameters/nested 결과가 Y이면 켜진 것입니다.

kvm-intel nested 옵션은 어디에 설정하나요?

/etc/modprobe.d/kvm-nested-module.conf 같은 파일에 options kvm-intel nested=1을 넣고 시스템을 재부팅합니다.

nested 설정 후 VM 안에서 가상화를 쓰려면 무엇을 더 해야 하나요?

virt-manager에서 해당 VM의 CPU 메뉴를 열고 Copy Host CPU Configuration을 선택합니다. 이후 VM 안에서 가상화 활성화 여부를 확인합니다.