가상화 환경을 구성하다 보면, Baremetal 환경외에도 VM에서 가상화를 지원해야 하는 경우가 많습니다. 이번 장에서는 KVM 가상화 환경에서 가상화된 VM에서 다시 가상화를 지원할 수 있는 KVM Nested Virtualization 구성 방법에 대해서 설명을 하겠습니다.
# Baremetal KVM에서 Nested Virtualization 환경 설정
kvm_intel 모듈 파라미터 설정에서 options kvm_intel nested=1 설정을 합니다. 이 설정을 통해 KVM에서 가상화된 VM에서도 VM을 생성할 수 있도록 해 줍니다. 설정이 완료가 되면 OS 재부팅을 통해서 kvm_intel 모듈이 반영 되도록 합니다.
[root@kvmhost ~]# cat /etc/modprobe.d/kvm.conf # Setting modprobe kvm_intel/kvm_amd nested = 1 # only enables Nested Virtualization until the next reboot or # module reload. Uncomment the option applicable # to your system below to enable the feature permanently. # # User changes in this file are preserved across upgrades. # # For Intel #options kvm_intel nested=1 # # For AMD #options kvm_amd nested=1 options kvm_intel nested=1 |
# Nested Virtualization 적용되었는지 확인
kvm_intel nested 모듈이 잘 적용이 되었다면 아래 command를 통해서 적용 여부를 확인 합니다. 1 or Y인 경우, 정상적으로 반영이 된것이고 0 or N 인 경우, 정상적으로 반영이 되지 않은 것입니다. 아래에서는 결과 값이 1이기 때문에 잘 반영이 된 것을 확인하실 수 있습니다.
[root@kvmhost ~]# cat /sys/module/kvm_intel/parameters/nested 1 |
# VM에서 가상화 활성화
virt-manager를 통해 VM 목록을 확인하고 가상화 활성화 하고자 하는 VM의 CPUs 메뉴에서 Model을 host-passthrough 변경 합니다.
# VM에서 가상화 지원여부 확인
VM에서 가상화를 지원하기 위해서는 CPU Flag에서 vmx가 활성화 되어야 합니다. 아래와 같이 확인이 가능합니다.
[root@worker1 ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 4 NUMA node(s): 1 Vendor ID: GenuineIntel BIOS Vendor ID: Red Hat CPU family: 6 Model: 63 Model name: Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz BIOS Model name: RHEL 7.6.0 PC (i440FX + PIIX, 1996) Stepping: 2 CPU MHz: 3298.088 BogoMIPS: 6596.17 Virtualization: VT-x Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 4096K L3 cache: 16384K NUMA node0 CPU(s): 0-3 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip md_clear arch_capabilities [root@worker1 ~]# lscpu | grep vmx Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip md_clear arch_capabilities |
# openshift 에서 kvm 가상화 지원하는 노드 찾기
kvm 값이 null 인 경우는 가상화를 지원하지 않는 노드이고 1 이상인 경우는 가상화를 지원하는 노드 입니다.
[root@bastion ~]# oc get nodes -o json|jq '.items[]|{"name": .metadata.name, "kvm": .status.allocatable["devices.kubevirt.io/kvm"]}' { "name": "master1.ov-dc.lbh.com", "kvm": "null" } { "name": "master2.ov-dc.lbh.com", "kvm": "null" } { "name": "master3.ov-dc.lbh.com", "kvm": "null" } { "name": "worker1.ov-dc.lbh.com", "kvm": "1k" } { "name": "worker2.ov-dc.lbh.com", "kvm": "1k" } { |
'[Cloud] > OpenShift' 카테고리의 다른 글
OpenShift Virtualization 활용 - Network 추가 및 VM 연동 (0) | 2023.03.16 |
---|---|
OpenShift Virtualization 활용 - VM 생성 및 Console 접근 (0) | 2023.03.14 |
OpenShift Virtualization Operator 설치 및 구성 (0) | 2023.03.14 |