QEMU와 KVM은 호스트/게스트 아키텍처가 다릅니다.

QEMU와 KVM은 호스트/게스트 아키텍처가 다릅니다.

내 게스트 OS는 x86(.vmdk 형식)이고 QEMU 문서에 따르면 내 호스트가 ARM Raspberry Pi 3이므로 커널에서 활성화한 후에도 KVM을 활용할 수 없는 것으로 보입니다.

그렇죠?

답변1

가상 머신을 실행하는 간단한 방법은 각 명령을 해석하는 것입니다. VM 소프트웨어는 각 명령어를 디코딩하고 실행합니다.

가상 머신의 명령어 세트가 호스트의 명령어 세트와 동일한 경우, 또 다른 접근 방식은 단순히 명령어를 실행하는 것입니다. 게스트가 하드웨어를 완전히 제어할 수 없기 때문에 직접 실행할 수 없는 명령은 몇 가지뿐입니다. 까다로운 문제 중 하나는 메모리 액세스입니다. 게스트는 전체 메모리에 액세스할 수 없으므로 주소 변환을 수행해야 합니다. VT-x(Intel) 또는 AMD-V(AMD) 확장이 포함된 x86 CPU 또는 ARM Cortex-A15 이상(Pi 2 및 Pi 3 포함)과 같은 고급 CPU에는 이 주소를 수행하는 하드웨어 기능 변환이 있습니다. KVM은 이러한 지침을 사용하여 기본 프로세서가 가상 머신에서 코드를 직접 실행할 수 있도록 하는 Linux 커널의 구성 요소입니다.

ARM CPU에서 ARM 코드를 실행하거나 x86 CPU에서 x86 코드를 실행하려고 하지 않기 때문에 이는 도움이 되지 않습니다. ARM CPU에서 x86 코드를 실행하려고 합니다. 이를 위해서는 명령을 해독하고 해석하는 소프트웨어가 필요합니다. KVM은 여기서 도움이 되지 않습니다.

답변2

커널에서 kvm을 활성화할 수 있지만 올바른 CPU 확장이 없으면 모듈이 로드되지 않습니다.

답변3

네, 맞습니다. KVM은 CPU 가상화 지원(Intel VT 또는 AMD-V)에 의존하며, Raspberry PI 3 ARM CPU는 이러한 명령어를 지원하지 않으므로 KVM을 사용할 수 없습니다.

답변4

시뮬레이션을 가속화하려면(즉, 커널을 전체 가상화로 변환) KVM 모듈과 기본적으로 CPU에 대한 추가 기능인 가상 머신 코드를 실행할 적절한 CPU가 필요합니다. 명령 실행 ~$ lscpu, 시스템 기능 확인 ~$ virsh capabilities, 단순히 명령 실행 등 시스템이 이를 지원하는지 여부를 다양한 방법으로 알 수 있습니다 $ cat /proc/cpuinfo. 당신이 찾고 있는 로고는 vmxIntel과 svmAMD의 로고입니다.

이제 ARM CPU의 경우 내가 아는 한 해당 CPU 추가 기능이 없습니다. 이론적으로는 그렇습니다. CPU 확장 없이 ARM CPU에서 일종의 시뮬레이션 시스템을 실행할 수 있지만 속도가 매우 느립니다. Raspberry의 경우 ARM용 KVM과 같은 장치 없이 가상 머신을 부팅하기 전에 리소스가 부족할 것 같습니다.

내 경험상 저전력 장치에서 일부 FreeBSD 코드(PFsense)를 실행해야 했지만 ARM 아치가 지원되지 않았기 때문에 Intel 컴퓨팅 스틱에서 전체 가상화를 실행했습니다.

    [root@compute ~]# 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:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 55
Model name:            Intel(R) Atom(TM) CPU  Z3735F @ 1.33GHz
Stepping:              8
CPU MHz:               666.452
CPU max MHz:           1832.6000
CPU min MHz:           499.8000
BogoMIPS:              2662.40
Virtualization:        VT-x
L1d cache:             24K
L1i cache:             32K
L2 cache:              1024K
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 dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat

관련 정보