시장에는 수많은 가상 머신 소프트웨어가 있습니다. 일부는 메인라인 Linux에도 포함되어 있습니다.
그것들은 어떻게 다르며 선택할 때 어떤 기준을 고려해야 합니까?
답변1
VirtualBox(일명 xVM) 및 VMWare와 같은 보다 전문화된 도구는 다중 스냅샷과 "씬" 복제를 지원합니다.
VMWare에는 또한 일부 제한된 3D 가속, Eclipse 디버깅과의 통합(VM 외부에서 VM 내부의 애플리케이션을 디버깅할 수 있음), 가상 네트워킹 기능, 다중 모니터 지원 및 기록/재생 기능(동시성 문제 디버깅에 유용함)이 있습니다. 코어) 및 명령이 실행된 순서).
VirtualBox 및 커널 가상 머신은 커널 드라이버를 컴파일할 필요가 없기 때문에 작업하기가 더 쉽습니다. 둘 다 무료이고 VMWare의 가격은 약 190달러입니다. KVM은 완전히 오픈 소스인 반면 VirtualBox의 일부만 오픈 소스입니다.
내 경험에 따르면 다양한 가상화 도구의 성능은 어디에서나 거의 동일하며 VirtualBox와 VMWare는 KVM보다 약간 우위에 있습니다. 귀하의 마일리지는 하드웨어 및 시스템 구성에 따라 달라질 수 있습니다.
마지막으로, 서버 그룹 가상화를 고려하고 있다면 Linux 대신 VMWare의 ESXi, Microsoft의 HyperV 또는 Xen과 같은 하이퍼바이저 기반 운영 체제를 고려하십시오. 이는 일반적으로 더 적은 오버헤드로 실시간 마이그레이션, 메모리 공유 및 내결함성과 같은 기능을 제공합니다. 그러나 일반적으로 실행 중인 컴퓨터에서는 사용할 수 없으며 대신 vSphere 또는 System Center와 같은 원격 관리 도구에 의존합니다. 세 가지 관리 프로그램은 모두 무료입니다. 그러나 VMWare의 모든 훌륭한 기능에 액세스하려면 3,000달러가 필요합니다. Microsoft 및 Xen 솔루션의 모든 기능이 무료 제품에 포함되어 있습니다. (Microsoft의 솔루션은 Active Directory가 이미 배포되어 있지 않으면 제대로 작동하지 않습니다.)
답변2
평신도의 관점에서 볼 때 제가 고려하는 몇 가지 분명한 기준은 다음과 같습니다. 면책 조항: 저는 가상 머신에 대해 아무것도 모르고 그냥 사용합니다. 나는 약간의 사용 경험이 있습니다.젠,가상 상자,Linux 컨테이너,가상 기기, 그리고리눅스 가상 서버. VMware는 독점 소프트웨어이며 그 밖의 모든 것은 무료 소프트웨어입니다. 이들 모두에는 특별한 커널 지원이 필요합니다. Linux Containers
메인라인 커널에서 지원되는 유일한 것입니다.
모든Joe Brockmeier의 유용한 기사가상화에는 크게 두 가지 변형이 있습니다. 하나는 호스트 운영 체제 위에서 본격적인 게스트 운영 체제를 실행하는 것입니다. 이것은 ... 불리운다 hypervisor virtualization
. 게스트도 Unix라면 이는 게스트가 호스트와 다른 Unix 커널을 실행하고 있음을 의미합니다. 둘 다 Linux이거나 동일한 배포판인 경우에도 마찬가지입니다. 두 번째는 게스트 가상 머신이 호스트 운영 체제와 동일한 커널을 사용한다는 것입니다. 이것은 ... 불리운다 container-based virtualization
. 다음에서 나는 hypervisors
이것들을 간단하게 언급할 것이다 containers
.
위에서 언급한 것 중 Xen, VirtualBox 및 VMWare는 hypervisors
Linux Containers 및 Linux-Vserver는 입니다 containers
.
분명히 절충안이 있습니다. 가장 큰 차이점은 hypervisors
하드웨어를 지원하는 모든 운영 체제를 실행할 수 있다는 것입니다. 즉, Linux 위에서 Windows를 실행할 수 있다는 것입니다. 의 경우 containers
호스트 커널(다이어그램에서 실제로 유일한 "운영 체제")이 격리 및 리소스 관리를 수행하고 있습니다. 이 경우 가상 머신은 인공적인 구성물이며 추상화에는 구멍이 있을 수 있습니다. 즉, 가상화가 완벽하지 않을 수 있어 성가신 문제가 발생할 수 있습니다. 예를 들어. 가상 머신의 포트 x에서 서비스를 실행하면 호스트 머신의 포트 x에서 실행 중인 서비스가 방해를 받을 수 있습니다.
따라서 이 두 가지 유형을 고려하고 참조하려고 하는 몇 가지 구체적인 문제가 있습니다.
먼저(질문에 나와 있듯이 Linux에서 실행한다고 가정할 때) Linux 배포판을 원하는 클라이언트입니까, 아니면 다른 운영 체제입니까? 전자가 containers
옵션이라면 그렇지 않으면 그렇지 않습니다. 옵션이더라도 게스트 운영 체제의 다양한 배포판을 만들기 위해 가상화 소프트웨어 유지 관리 담당자가 제공하는 지원/접근 방식에 따라 실제로 구현되거나 구현되지 않을 수 있습니다. DIY에 손을 대고 싶지 않다면 말입니다. 이론적으로 이는 Linux 커널이 주변 사용자 공간과 매우 약하게 결합되어 있기 때문에 가능한 경우가 많습니다. 따라서 거의 모든 "최신" 커널은 모든 배포판에서 실행됩니다.
관련 소프트웨어에 커널 패치가 필요합니까, 아니면 커널 자체가 이를 지원합니까? 패치가 필요한 경우 패치가 끊임없이 변화하는 커널을 따라잡아야 하기 때문에 이는 큰 단점이 됩니다. 해당 기능이 이미 커널에 있으면 문제가 되지 않습니다. 물론 일부 가상 머신은 커널 지원이 필요하지 않으며 사용자 공간에서 실행됩니다. 특별한 커널 지원이 필요하고 이를 메인라인 커널에서 제공하는 가상 머신은 상대적으로 적습니다. 내가 아는 유일한 두 가지는 Linux 컨테이너( container
)와 KVM( hypervisor
)입니다.
사용자 커뮤니티의 규모. 이는 주로 커널을 패치해야 할 때 발생하는 문제입니다. 이 경우 이 프로젝트를 커널 외부에 유지하고 모든 것이 제대로 작동하는지 확인하는 인력이 존재하지 않을 수 있습니다.
가상 머신 소프트웨어는 독점 소프트웨어인가요, 아니면 무료 소프트웨어인가요? 그것이 독점적이라면 결코 Linux 커널에 포함되지 않을 것입니다. 물론, 철학에 따라 이데올로기적인 이유로 둘 중 하나가 더 나은 것을 찾을 수도 있습니다.
가상화 성능. 얼마나 빨리? 차이가 크지 않을 수도 있지만 일반적으로 containers
더 빠릅니다 .hypervisors
시스템의 다른 프로세스와 메모리 공유를 허용합니까, 아니면 전용 메모리가 필요합니까? 제 생각에는 공유 메모리를 허용하는 것은 시스템의 나머지 부분에서 해당 메모리를 제거할 필요가 없다는 의미이기 때문에 좋습니다. 메모리를 공유할 수 있으면 메모리를 공유할 수 없는 경우보다 더 많은 가상 머신을 실행할 수 있습니다. 정의에 따르면 hypervisors
공유 메모리는 별도의 운영 체제이므로 허용되지 않습니다. 일반적으로 containers
공유 메모리는 동일한 운영 체제이므로 다시 허용되지만 일반적으로 메모리 제한도 설정할 수 있습니다. 전용 메모리 블록을 할당하는 것도 가능합니다. 하지만 저는 이것을 시도해 본 적이 없습니다.
시스템의 나머지 부분과의 격리 수준입니다. 일부 가상 머신은 이와 관련하여 다릅니다. 이상적으로는 가상 머신이 어떤 방식으로든 호스트 시스템이나 다른 게스트 시스템을 알거나 상호 작용하는 것을 원하지 않습니다. 정의에 따르면 hypervisors
이들은 완전히 격리되어 있습니다. 격리 수준은 containers
구현마다 다릅니다. 이와 관련하여 구현은 매우 다양합니다.