가상화

Hypervisor란 무엇인가요?

정의

A hypervisor is the software layer that creates and runs virtual machines, allocating physical CPU, memory and IO between them. A type-1 hypervisor runs directly on the hardware; KVM is unusual in being a type-1 hypervisor implemented as a Linux kernel module, which lets it use the whole Linux driver ecosystem.

Hypervisor가 중요한 이유

타입 1 하이퍼바이저는 하드웨어에서 직접 실행됩니다. KVM은 Linux 커널 모듈로 구현된 타입 1 하이퍼바이저로서 특이하며, 이를 통해 전체 Linux 드라이버 생태계를 사용할 수 있습니다.

Hypervisor 실제 적용

KVM 하이퍼바이저에서 서버를 운영할 때는 실제 하드웨어 할당, 즉 vCPU, RAM, 디스크 I/O를 확인해야 합니다. 패널에서 이를 조정하며, 종종 재부팅 없이 메모리를 핫 추가할 수 있습니다. 호스트를 과도하게 할당하면 이웃의 과중한 워크로드가 인스턴스의 CPU나 IO를 고갈시켜, 완벽하게 구성된 게스트도 느려지게 만듭니다. 중첩 가상화를 사용하면 하이퍼바이저 안에서 하이퍼바이저를 실행할 수 있는데, 테스트에 유용하지만 성능이 저하되고 자체 리소스 계산이 혼란스러워질 수 있습니다.

Hypervisor에 대한 사람들의 오해

Hypervisor를 컨테이너 경계로 취급하는 것이 흔한 오류입니다. 그렇지 않습니다. Hypervisor는 완전한 가상 머신, 자체 커널, 자체 /proc, 공유 네임스페이스 없음을 제공합니다. 사람들은 이웃의 프로세스가 보이지 않거나 사용자 정의 커널이 불가능하다고 가정하다가 한계에 부딪힙니다. 올바른 이해: KVM을 사용하면 진정한 격리와 제어를 얻으므로 손수 만든 이미지를 부팅하거나 중첩 가상화를 실행할 수 있으며, 이는 컨테이너로는 불가능합니다.

Hypervisor — 일반적인 질문

type-1 hypervisor는 무엇을 의미하나요?

Type-1 hypervisor는 운영 체제 위가 아닌 호스트 하드웨어에서 직접 실행됩니다. KVM은 Linux 커널 모듈로 구현된 type-1 hypervisor이므로 특별하며, 하드웨어 관리를 위해 전체 Linux 드라이버 생태계를 사용할 수 있습니다. 이로써 베어메탈 가상화의 성능과 Linux의 유연성을 얻을 수 있습니다.

KVM은 OpenVZ 같은 컨테이너와 어떻게 다른가요?

KVM은 진정한 가상화를 제공합니다: 각 게스트는 자체 커널, 자체 /proc, 공유 네임스페이스 없음을 가지므로 전체 루트 액세스와 사용자 정의 커널 실행이 가능합니다. 컨테이너는 호스트 커널과 네임스페이스를 공유하여 할 수 있는 일이 제한됩니다. KVM을 사용하면 중첩 가상화 실행이나 사용자 정의 ISO 부팅을 포함한 격리와 제어를 얻을 수 있습니다.

Hypervisor가 등장하는 곳

가상화에서 더 보기

KVM
KVM은 Linux 커널에 내장된 완전한 하드웨어 가상화로, 각 게스트에 자체 커널과 다른 테넌트로부터 하드웨어 강제 격리를 제공합니다.
OpenVZ
OpenVZ는 모든 인스턴스가 호스트 커널을 공유하는 컨테이너 기반 가상화로, 게스트는 커널 모듈을 로드하거나 다른 운영 체제를 실행할 수 없습니다.
LXC
LXC는 커널을 공유하면서 네임스페이스와 cgroups로 프로세스를 격리하는 Linux 네이티브 컨테이너화입니다.
嵌套虚拟化
중첩 가상화는 프로세서 가상화 확장을 게스트에 노출하여 가상 머신 자체가 가상 머신을 실행할 수 있게 합니다.
vCPU
vCPU는 게스트에게 제공되는 가상 프로세서로, 물리적 코어 또는 스레드의 스케줄링 시간을 기반으로 합니다.
cloud-init
cloud-init는 플랫폼에서 제공하는 메타데이터를 사용하여 가상 머신을 첫 부팅 시 구성하는 표준 메커니즘입니다.