가상화

KVM이란 무엇일까요?

KVM(Kernel-based Virtual Machine: 커널 기반 가상 머신)은 Linux®에 구축되는 오픈소스 가상화 기술입니다. 구체적으로 설명하자면 KVM을 통해 Linux를 하이퍼바이저로 전환하여 호스트 머신이 게스트 또는 VM(가상 머신) 등 독립된 가상 환경 여러 개를 실행할 수 있습니다.

KVM은 Linux의 일부로서 Linux 2.6.20 이상을 사용한다면 KVM이 이미 제공되어 있는 것입니다. KVM은 2006년에 처음으로 발표되었으며 1년 후에 메인라인 Linux 커널 버전에 통합되었습니다. KVM은 기존 Linux 코드의 일부이므로 추가 엔지니어링 없이도 새로운 Linux 기능, 수정 및 확장된 기능을 바로 사용할 수 있습니다.


KVM 작동 원리

KVM은 Linux를 타입 1(베어메탈) 하이퍼바이저로 전환합니다. 모든 하이퍼바이저에서 VM을 실행하려면 메모리 관리 프로그램, 프로세스 스케줄러, I/O(입력/출력) 스택, 기기 드라이버, 보안 관리 프로그램, 네트워크 스택과 같은 운영 체제 수준의 구성 요소가 필요합니다. KVM은 Linux 커널의 일부이므로 이러한 구성 요소를 모두 포함하고 있습니다. 모든 VM은 표준 Linux 스케줄러를 통해 일정이 예약되며 네트워크 카드, 그래픽 어댑터, CPU, 메모리, 디스크와 같은 전용 가상 하드웨어를 사용해 일반적인 Linux 프로세스로 구현됩니다.


KVM 구현

간단히 말하면, 2007년 이후에 출시된 Linux 버전을 가상화 기능을 지원하는 X86 하드웨어에 설치하여 실행해야 합니다. 이 두 요건을 충족했다면 기존 모듈 2개(호스트 커널 모듈과 프로세스 관련 모듈), 에뮬레이터, 드라이버를 로드하여 추가 시스템을 실행할 수 있습니다.


KVM 기반 가상 인프라로 마이그레이션

계약에 의해 구속되는 플랫폼에 가상 인프라를 구축하는 경우 소스 코드에 대한 액세스가 제한될 수 있습니다. 이는 IT 개발이 혁신보다는 대안이 될 수 있으며, 다음번 계약에서 클라우드, 컨테이너, 자동화에 대한 투자도 제한할 수 있음을 의미합니다. KVM 기반의 가상화 플랫폼으로 마이그레이션하면 하이퍼바이저 이면에서 소스 코드를 검사, 수정 및 개선할 수 있습니다. 또한 보호할 소스 코드가 없기 때문에 엔터프라이즈 라이선스 계약도 존재하지 않으므로 자유롭게 사용할 수 있습니다.


KVM 기능

KVM은 Linux의 일부이며 Linux 또한 KVM의 일부입니다. Linux에 제공되는 것은 모두 KVM에도 제공됩니다. 그러나 KVM은 다음과 같은 기능적인 장점으로 인해 엔터프라이즈에서 선호하는 하이퍼바이저가 되었습니다.

KVM은 VM 보안 강화와 격리를 위해 SELinux(Security-Enhanced Linux)sVirt(Secure Virtualization)를 조합하여 사용합니다. SELinux는 VM 주위에 보안 경계를 구축하며 sVirt는 SELinux의 기능을 확장하여 게스트 VM에 MAC(필수 액세스 제어) 보안 메커니즘을 적용함으로써 수동 레이블링 오류를 방지합니다.

KVM은 일부 로컬 디스크와 NAS(네트워크 연결 스토리지) 등 Linux가 지원하는 스토리지를 사용할 수 있으며 다중 경로 I/O를 통해 스토리지를 개선하고 이중화를 제공합니다. 또한 KVM은 공유 파일 시스템을 지원하므로 여러 호스트에서 VM 이미지를 공유할 수 있습니다. 디스크 이미지를 통해서는 씬 프로비저닝이 지원되어 스토리지가 미리 할당되는 것이 아니라 수요에 따라 할당됩니다.

KVM은 다양한 인증된 Linux 지원 하드웨어 플랫폼을 사용할 수 있으며 하드웨어 벤더가 정기적으로 커널 개발에 기여하므로 최신 하드웨어 기능이 Linux 커널에 신속하게 도입됩니다.

KVM는 NUMA(Non-Uniform Memory Access)와 KSM(Kernel Same-page Merging)을 포함한 Linux의 메모리 관리 기능을 그대로 제공합니다. VM 메모리는 스왑 기능과 대용량 지원으로 성능이 향상되어 디스크 파일에서 이를 공유하거나 지원할 수 있습니다.

KVM은 실행 중인 VM을 물리적 호스트 사이에서 서비스 중단 없이 이동할 수 있는 라이브 마이그레이션을 지원합니다. VM이 가동 상태를 유지하고 있고 네트워크 연결이 활성화된 상태에서 애플리케이션이 계속 실행되며 VM이 재배치됩니다. 또한 KVM은 VM의 현재 상태를 저장하므로 나중에 이 상태에서 다시 시작할 수 있습니다.

KVM은 게스트 머신과 요청이 증가할 경우 수요 로드에 맞춰 확장하는 등 Linux의 성능을 그대로 제공합니다. KVM은 매우 까다로운 애플리케이션 워크로드를 가상화할 수 있으며, OpenStack®을 통해 데이터센터와 프라이빗 클라우드 등의 여러 엔터프라이즈 가상화 설정의 기반이 됩니다.

KVM 모델에서 VM은 커널에 의해 예약되고 관리되는 Linux 프로세스입니다. Linux 스케줄러를 사용하면 Linux 프로세스에 할당된 리소스를 정교하게 제어할 수 있으므로 특정 프로세스에서 고수준 서비스를 보장할 수 있습니다. KVM의 경우 여기에 공정한 스케줄러, 제어 그룹, 네트워크 네임스페이스, 실시간 확장 등이 포함됩니다.

Linux 커널은 실시간 확장 기능을 제공하므로 베어메탈에 비해 더 짧은 대기 시간과 높은 우선 순위로 VM 기반 애플리케이션을 실행할 수 있습니다. 또한 커널은 컴퓨팅에 시간이 오래 걸리는 프로세스를 작은 구성 요소로 나눈 다음, 적절히 일정을 예약하여 처리합니다.


KVM 관리

단일 워크스테이션에서 실행되는 여러개의 VM을 관리 툴 없이 수동으로 관리할 수 있습니다. 대기업은 가상 환경과 그 기반이 되는 물리 하드웨어와 연결되어 리소스 관리 단순화, 데이터 분석 강화, 운영 간소화하는 가상화 관리 소프트웨어를 사용합니다. Red Hat은 바로 이러한 목적을 위해 Red Hat Virtualization을 만들었습니다.


KVM과 Red Hat

Red Hat은 모든 가상화 제품의 유일한 하이퍼바이저로 KVM을 사용하고 있으며, 커널 코드를 지속적으로 개선하여 KVM 커뮤니티에 기여하고 있습니다. 그러나 KVM은 Linux의 일부이므로 Red Hat Enterprise Linux에 이미 포함되어 있습니다. 그런데도 Red Hat Virtualization을 사용해야 하는 이유는 무엇일까요?

Red Hat은 2가지 버전의 KVM을 제공합니다. Red Hat Enterprise Linux에 포함된 KVM은 기본 관리 기능과 함께 모든 하이퍼바이저 기능을 갖추고 있으므로 단일 호스트에서 최대 4개의 독립적인 가상 머신을 실행할 수 있습니다. Red Hat Virtualization에는 무제한으로 게스트 머신을 관리할 수 있는 고급 버전의 KVM이 포함되어 있습니다. 이러한 KVM은 데이터센터 가상화, 기술 워크스테이션, 프라이빗 클라우드, 개발 또는 프로덕션에 사용하기 적합합니다.

Do you have a legacy app that requires an older operating system? Perhaps you’d like pilot a new app in a low-risk environment? You can configure Red Hat Enterprise Linux as a basic hypervisor for running up to 4 isolated VM on a single host.

This is all you need. Really. Install it on anything—from bare-metal hardware to open source or proprietary systems—and start deploying virtual machines by the dozens or hundreds with an advanced hypervisor that can handle it and a management platform that makes it easy.

가상화의 더 큰 가능성을 살펴보세요

OpenStack 워드 마크 및 Square O Design은 미국 및 기타 국가에서 함께 또는 따로 쓰이는 OpenStack Foundation의 상표 또는 등록 상표이며, OpenStack Foundation의 허가하에 사용됩니다. Red Hat은 OpenStack Foundation 또는 OpenStack 커뮤니티와 아무런 제휴, 보증, 후원 관계에 있지 않습니다.