가상화

KVM란 무엇인가요?

다른 이름: Kernel-based Virtual Machine
정의

KVM is full hardware virtualisation built into the Linux kernel, giving each guest its own kernel and hardware-enforced isolation from other tenants. Because a KVM guest runs its own kernel, it can load kernel modules, run non-Linux operating systems, use real swap and support nested virtualisation.

KVM가 중요한 이유

KVM 게스트는 자체 커널을 실행하므로 커널 모듈을 로드하고, Linux 이외의 운영 체제를 실행하고, 실제 스왑을 사용하고, 중첩 가상화를 지원할 수 있습니다. KVM 게스트에 할당된 메모리는 실제로 예약되며, 이것이 컨테이너 기반 가상화와의 실질적인 차이입니다.

KVM 실제 적용

KVM 서버를 실행할 때 가장 먼저 확인하는 것은 게스트의 /proc/cpuinfo입니다. 호스트의 플래그와 일치하지 않으면 반가상화 단축키를 보고 있는 것이지 전체 KVM이 아닐 가능성이 높습니다. 메모리 할당은 실제 예약으로 설정해야 합니다. 오버커밋하면 호스트는 유휴 상태로 보이는 동안 게스트의 OOM 킬러가 작동합니다. 중첩 가상화를 잘못 구성하면 하드웨어 지원 페이징을 잃게 되어 게스트가 속도의 일부로 실행됩니다. 잘못 설정하면 재부팅 없이는 복구할 수 없는 성능 비용이 발생합니다.

KVM에 대한 사람들의 오해

사람들은 KVM이 OpenVZ나 LXC와 같다고 가정합니다. 둘 다 Linux 커널을 사용하기 때문입니다. 수정: KVM은 각 게스트에 자체 커널을 제공하는 반면, 컨테이너는 호스트 커널을 공유합니다. 커널 모듈을 로드하고 비Linux OS를 실행할 수 있는 것은 KVM뿐입니다. 공유 네임스페이스 격리는 하드웨어로 강제되지 않습니다.

KVM — 일반적인 질문

KVM이 성능에 어떤 의미가 있나요?

KVM의 하드웨어 가상화는 각 게스트가 자체 커널을 가지므로 CPU와 메모리 성능이 네이티브에 가깝습니다. 메모리는 실제로 예약되며 공유되지 않습니다. 컨테이너에 비해 예측 가능하고 격리된 처리량을 기대할 수 있습니다.

KVM에서 Windows를 실행할 수 있나요?

예, KVM 게스트는 자체 커널을 실행하므로 Windows와 같은 비Linux 운영 체제를 실행할 수 있습니다. ISO를 업로드하고 VNC 콘솔을 연결해야 합니다. Windows Server 라이선스는 특정 지역에서 선택 사항으로 제공됩니다.

KVM가 등장하는 곳

가상화에서 더 보기

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