가상화 : KVM과 QEMU의 차이점은 무엇입니까?


최상의 답변

KVM은 QEMU의 포크입니다. KVM 코드 기반은 가능한 경우 하드웨어 가속을 지원하도록 수정되었습니다 (호스트 및 게스트 VM에 대해 동일한 아키텍처)

대부분의 경우 QEMU는 다른 아키텍처를 에뮬레이트하는 데 사용됩니다 (예 : 에뮬레이트 ARM / 전원 아키텍처. x86 프로세서 사용). . Intel 프로세서가 장착 된 랩톱의 ARM에서 실행되는 RaspberryPI 이미지를 실행하는 데이 기능을 사용했습니다.

두 이미지의 차이점 중 하나는 QEMU가 하드웨어 가상화 확장 (Intel)없이 프로세서에서 실행된다는 것입니다. KVM은 VT / VT-d, AMD-V)를 사용합니다. 하드웨어 가상화 확장을 사용하면 물리적 시스템의 하드웨어에 직접 액세스 할 수 있습니다. 단점은 KVM 코드베이스가 다른 아키텍처를 에뮬레이트 할 수 없다는 것입니다.

그러나 KVM이 HW virt ext.가없는 머신에서 실행되면 VM을 실행하기 위해 QEMU로 다시 전환됩니다.

프로세서가 하드웨어 virt를 지원하는지 확인하려면 Windows의 경우

또는 http://www.grc.com/securable.htm를 클릭하고 “vmx”또는 “svm”확장을 확인합니다. (후자가 훨씬 쉽습니다.)

Linux에서는

  • egrep “(vmx | svm)”/ proc / cpuinfo

두 코드베이스의 병합이 진행 중이며 앞으로 하나의 프로젝트로 간주 될 것입니다. 이로 인해 KVM은 쓸모 없게되고 QEMU 코드베이스에 병합 될 것입니다.

그런데에서 출시 한 거의 모든 새로운 프로세서는 Intel과 AMD는 가상화를 지원하지만 하드웨어 가상화를 지원하지 않는 Intel 프로세서가 장착 된 Acer 노트북을 보았습니다. 또한이 확장이 활성화되어 있는지 BIOS를 확인하십시오. 다른 BIOS에는 기본적으로 확장이 비활성화되어 있습니다.

답변

원래 서버 오류

KVM :

KVM은 다음 두 가지입니다. 프로세서를 새로운 “게스트”상태로 전환하는 “리눅스 커널 모듈 (현재 메인 라인에 포함됨)”게스트 상태에는 자체 링 상태 세트가 있지만 권한이있는 ring0 명령은 하이퍼 바이저 코드로 돌아갑니다. “새로운 프로세서 실행 모드이므로 코드를 어떤 식 으로든 수정할 필요가 없습니다.

프로세서 상태 전환과 별도로 커널 모듈은 또한 몇 가지 저수준 부분을 처리합니다. MMU 레지스터 (VM을 처리하는 데 사용됨) 및 PCI 에뮬레이션 된 하드웨어의 일부와 같은 에뮬레이션.

두 번째로 KVM은 Qemu 실행 파일의 포크입니다. 두 팀 모두 차이를 최소화하기 위해 적극적으로 노력하고 있으며이를 줄이는 데 진전이 있습니다. 결국 목표는 Qemu가 어디에서나 작동해야하며 KVM 커널 모듈을 사용할 수 있다면 사용할 수 있다는 것입니다. 그러나 가까운 장래에 Qemu 팀은 하드웨어 에뮬레이션 및 이식성에 초점을 맞추고 KVM 직원은 커널 모듈 (성능 향상이 입증 된 경우 에뮬레이션의 작은 부분을 이동) 및 나머지 사용자 공간 코드와 인터페이스하는 데 초점을 맞추고 있습니다. .

kvm-qemu 실행 파일은 일반적인 Qemu처럼 작동합니다. RAM을 할당하고 코드를로드 한 다음 다시 컴파일하거나 KQemu를 호출하는 대신 스레드를 생성합니다 (중요합니다). 스레드는 KVM 커널 모듈을 호출하여 게스트 모드로 전환하고 VM 코드 실행을 계속합니다. 권한 명령에서 KVM 커널 모듈로 다시 전환하며, 필요한 경우 대부분의 하드웨어 에뮬레이션을 처리하도록 Qemu 스레드에 신호를 보냅니다.

이 아키텍처의 좋은 점 중 하나는 게스트가 코드는 일반적인 Linux 도구로 관리 할 수있는 posix 스레드에서 에뮬레이션됩니다. 2 개 또는 4 개의 코어가있는 VM을 원할 경우 kvm-qemu는 2 개 또는 4 개의 스레드를 생성하고 각 스레드는 KVM 커널 모듈을 호출하여 실행을 시작합니다. 동시성 (실제 코어가 충분한 경우) 또는 스케줄링 (그렇지 않은 경우)은 일반 Linux 스케줄러에서 관리하므로 코드를 작게 유지하고 놀라움을 제한합니다.

Qemu :

QEmu는 자체적으로 완전한 독립형 소프트웨어입니다. 컴퓨터를 에뮬레이트하는 데 사용합니다. 매우 유연하고 이식성이 뛰어납니다. 주로 특정 프로세서에 대해 작성된 바이너리 코드를 다른 것으로 변환하는 특수한 “재 컴파일러”(예 : PPC Mac 또는 ARM에서 MIPS 코드를 실행)에 의해 작동합니다. x86 PC).

프로세서 이상을 에뮬레이션하기 위해 Qemu에는 디스크, 네트워크, VGA, PCI, USB, 직렬 / 병렬 포트 등 다양한 주변 장치 에뮬레이터 목록이 포함되어 있습니다.

출처 : KVM과 QEMU의 차이점

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다