Network 공부

Virtualization (VM, Hypervisor and KVM)

id1112 2025. 2. 14. 11:01

https://www.redhat.com/en/topics/virtualization/what-is-KVM

 

What is KVM?

Kernel-based virtual machines (KVM) are an open source virtualization technology that turns Linux into a hypervisor.

www.redhat.com

Virtualization

하나의 물리 머신에서 시뮬레이션된 가상환경을 생성할 수 있는 기술로 물리적인 하드웨어의 리소스를 여러 환경에 분산하여 물리적인 머신의 전체 용량을 효율적으로 활용할 수 있다.

 

가상화는 IT 인프라 내에서 효율성을 높이고, 유연성을 유지하며 확장성을 개선하는 데 사용하는 기술 중 하나로 가상화를 통해 하나의 물리적인 하드웨어에서 여러 운영 체제를 사용할 수 있기 때문에 

하나의 하드웨어에서 여러 운영 체제를 사용할 수 있기 때문에 리소스 사용이 개선되고, 물리적인 유지 보수 비용 감소 그리고 격리된 시스템을 통한 보안 강화 등의 장점이 있다.

 

- Types of Virtualization

1) Application Virtualization
2) Network Virtualization
3) Desktop Virtualization
4) Storage Virtualization
5) Server Virtualization
6) Data virtualization

https://www.geeksforgeeks.org/virtualization-cloud-computing-types/

 

Virtualization in Cloud Computing and Types - GeeksforGeeks

Virtualization enables multiple operating systems and applications to run simultaneously on a single machine, enhancing resource utilization, flexibility, and cost-effectiveness in cloud computing.

www.geeksforgeeks.org

 

* Virtulization 은 VM 과 Hypervisor 이라는 두 가지 중요한 개념을 바탕으로 한다.

 

VM (Virtual Machine)

하드웨어 리소스 풀에서 만들어졌으며 자체적으로 CPU, 메모리, 네트워크 인터페이스, 스토리지가 있는 격리된 시스템으로 작동하는 컴퓨팅 환경이다. 하이퍼바이저라고 불리는 소프트웨어가 필수 컴퓨팅 리소스를 격리하고 VM 생성과 관리를 지원한다.

VM 을 실행하는 물리적인 머신을 호스트라고 부르며 해당 리소스를 사용하는 여러 VM 을 게스트라고 부른다. 하이퍼바이저는 CPU, 메모리, 스토리지 등의 컴퓨팅 리소스를 처리하는 리소스 풀로 기존 게스트 간 혹은 새로운 가상 머신을 쉽게 재배치할 수 있다.

가상화를 사용할 때 VM 을 통해 하나의 물리적 장치에서 여러 OS 를 실행할 수 있다. (Linux 에서 MacOS 랑 Window 동시에 사용) 

각 운영 체제는 호스트 하드웨어에서 OS 와 Application 을 실행하는 것과 동일한 방식으로 실행된다.

 

VM과 클라우드와의 관계

가상화는 클라우드 컴퓨팅을 가능하게 하는 기본적인 기술 중 하나로 Public Cloud 와 Private Cloud 는 리소스를 "Shared Pool"로 가상화하고 관리 제어 계층을 추가하고 자동화된 Self Service 기능을 통해 해당 리소스를 제공한다.

클라우드를 구성하는 가상화, 관리 그리고 자동화 소프트웨어는 모두 물리적 리소스, Virtual Data Pool, 관리 소프트웨어, 자동화 스크립트 및 고객을 서로 연결하는 운영 체제를 기반으로 한다.

- 자원의 효율적 활용

가상화 기술을 통해 물리적 서버 위에 여러 개의 게스트를 생성할 수 있게 되면서 이를 통해 서버 자원을 필요에 따라 유연하게 할당하고 물리 서버 자원의 활용도를 극대화할 수 있었다. 그래서 하나의 물리 서버에 여러 애플리케이션을 동시에 운영할 수 있게 되면서 클라우드 서비스의 기본이 되었다.

- 격리(Isolation)와 보안

VM 간의 기본적으로 격리된 환경이라는 특징은 앞서 살펴보았듯이 서로 다른 애플리케이션이 같은 물리 서버 위에 있다고 해도 서로 다른 OS, 네트워크 그리고 스토리지를 바탕으로 동작하기 때문에 장애나 보안 문제가 발생해도 다른 VM에 영향을 미치지 않는다.

- 유연한 확장성 (Scalability)

서버의 생성, 삭제, 복제 등이 간단하며, 이를 통해 애플리케이션의 필요성에 따라 서비스 확장 및 축소가 용이하다.

 

Shared Pool

Shared Pool 이란 Public 혹은 Priavte 클라우드 환경에서는 보유 중인 물리 서버, 스토리지 그리고 네트워크를 Shared Pool 형태로 묶어 놓게 된다.

이런 Shared Pool 은 Virtual Layer 을 통해 하나의 거대한 리소스 풀처럼 작동한다

클라우드 사용자가 원하는 만큼 VM, 스토리지, 네트워크를 할당받을 수 있고, 그만큼 사용한 자원에 대해서만 비용(혹은 내부 청구)을 지불하거나 회계 처리하는 구조가 가능하다.

A virtual layer is a view of data that is computed on the fly from other layers. It can be used to reduce data duplication and create new information from a base dataset. 

 

Hypervisor

Virtual Machine Monitor (VMM)라고도 불리며, 하나의 물리적인 머신에서 여러 VM을 실행하는 데 사용하는 소프트웨어이다. 필요에 따라 CPU 및 메모리와 같은 기본적인 물리적 컴퓨팅 리소스를 개별 VM 에 할당한다. 

하드웨어로부터 물리적 리소스를 가져와서 여러 VM에 동시에 할당하여 새로운 VM 생성과 기존 VM 관리를 한다. 하이퍼바이저는 노트북 등의 운영 체제에 베포하거나 서버 등의 하드웨어에 직접 설치할 수 있다. 가상 환경이 실행 중이고 사용자 또는 프로그램이 물리적인 환경에서 추가적인 리소스를 요구하는 명령어를 입력하면 하이퍼바이저가 해당 요청을 물리적인 시스테에 전달하고 변경  사항을 캐시에 저장하게 된다.  

 

Hypervisor type

Type 1

네이티브 또는 베어 메탈 하이퍼바이저라고도 하는 Type 1 Hypervisor는 Host의 하드웨어에서 직접 실행되어 게스트 운영 체제를 관리한다. 호스트 운영 체제를 대신하며 하이퍼바이저가 하드웨어에 직접 VM 리소스를 예약한다. 

Type1 Hypervisor는 엔터프라이즈 데이터 센터 또는 기타 서버 기반 환경에서 가장 일반적이다.

Type 1 Hypervisor의 예로는 KVM, Microsoft Hyper-V, VMware vSphere가 있다.

KVM은 2007년에 Linux 커널에 통합되었으므로 최신 버전의 Linux를 사용 중이라면 KVM에 액세스할 수 있다. 

‘베어메탈(Bare Metal)’이란 원래 하드웨어 상에 어떤 소프트웨어도 설치되어 있지 않은 상태를 뜻합니다. 베어메탈 서버는 가상화를 위한 하이퍼바이저 OS 없이 물리 서버를 그대로 제공하는 것을 말한다. 따라서 하드웨어에 대한 직접 제어 및 OS 설정까지 가능하다.

 

Type 2

Type 2 Hypervisor 는 호스팅된 Hypervisor라고도 하며, 기존 운영 체제에서 소프트웨어 계층 또는 애플리케이션으로 실행된다.

Type 2은 호스트 운영 체제에서 게스트 운영 체제를 추상화하는 방식으로 작동된다. VM 리소스는 호스트 운영 체제에 대해 예약된 다음 하드웨어에 대해 실행된다. 

이 말은 이미 설치된 호스트 OS 를 통해 하드웨어의 리소스를 사용한다는 의미이다. Type Hypervisor 는 호스트 OS 에게 VM을 위해 사용할 CPU Core 개수, 메모리 그리고 디스크 용량에 대한 예약 요청을 호스트 OS 에게 보내고 호스트 OS는 할당 가능한 자원을 확인하고 Hypervisor 가 요청한 자원을 할당해준다. 그리고 Guest OS 가 하드웨어에 직접적인 명령을 보내려고 한다면 결국 명령은 호스트 OS 를 통해서 하드웨어에 전달되는 것과 동일하다.

추상화 계층이라는 것은 다음과 같다

게스트 OS는 “자신이 직접 하드웨어를 제어한다”고 생각하지만, 실제로는 하이퍼바이저(=소프트웨어)가 가상 하드웨어(가상 CPU, 가상 메모리, 가상 디스크 등)를 만들어 제공한다
하이퍼바이저는 호스트 OS에서 제공받은 물리 자원을 ‘가상 자원’으로 변환해 게스트 OS에 넘겨주고, 게스트 OS가 보내는 명령은 다시 호스트 OS의 커널 레벨에서 처리하거나, 호스트 OS 드라이버를 이용해 실제 물리 디바이스에 전달한다.

Type 2 Hypervisor 는 개인용 컴퓨터에서 여러 OS를 실행하려는 개인 사용자에게 적합하다. 

VMware Workstation과 Oracle VirtualBox는 유형 2 하이퍼바이저의 예이다. 

 

 

- Hypervisor 장점

하드웨어 독립성

운영체제(OS)와 애플리케이션이 물리 하드웨어와 직접 연결되지 않고, Hypervisor가 추상화 계층을 제공함으로써 하드웨어 자원을 가상화하여 제공

 

  • 물리 서버 종류나 모델이 달라도 동일한 VM(가상머신) 이미지로 실행 가능
  • 특정 하드웨어 벤더나 사양에 종속적이지 않음
  • 물리 장비 교체, 업그레이드 시에도 운영체제나 애플리케이션 변경을 최소화

 

 

효율성

하나의 물리 서버 위에서 여러 운영체제나 애플리케이션을 동시에 구동할 수 있게 하여, 리소스를 보다 효율적으로 사용하게 만드는 가상화의 핵심 가치

 

  • 물리 서버의 CPU, 메모리, 스토리지 활용률 극대화
  • 서버 리소스가 유휴 상태로 남지 않고 필요한 VM이 자원을 공유·활용
  • 전력 비용 및 유지보수 비용 절감

 

 

확장성

서버 자원을 확장하거나 새로운 VM을 추가하는 작업이 단일 물리 서버를 증설하는 것보다 상대적으로 간단하고 빠르게 이루어지는 것.

 

  • 물리 서버를 추가하거나 클라우드 환경에서 자원을 늘리는 방식으로 쉽게 확장 가능
  • 테스트 환경, 개발 환경 등을 쉽게 복제하고 확장 가능
  • VM 간 격리로 인해 한 VM에서 문제 발생 시 다른 VM에 영향이 최소화

 

 

이동성

VM 이미지를 다른 물리 서버나 클라우드 환경으로 옮겨갈 수 있는 능력

 

  • VM을 다른 호스트로 마이그레이션(Live Migration 등)할 때 서비스 중단을 최소화
  • 재해복구(DR)나 백업을 위한 사이트 간 전환이 용이
  • 클라우드나 온프레미스 간 자유로운 이전(하이브리드 클라우드 활용)에 유리

 

KVM

 

KVM is an open source virtualization technology for Linux operating systemcs. With KVM Linux can function as a hypervisor athat runs multiple isolated virtual machines (VMs) .

### What are the features of KVM?

KVM treats each virtual machine (VM) as a standard Linux process, with the kernel handling scheduling and overall management. By leveraging the Linux scheduler, VMs that run under KVM can benefit from Linux’s performance optimizations and fine-rained resource control. KVM also delivers key capabilities in the areas of security, storage, hardware support, and live migration.

Security boundaries with SELinux and sVirt
For enhanced VM security and isolation, KVM combines Security-Enhanced Linux (SELinux) with sVirt. SELinux sets security boundaries around VMs, while sVirt extends those capabilities by applying Mandatory Access Control (MAC) to guest VMs. This helps protect against misconfiguration and manual labeling mistakes.

Storage flexibility
KVM can use any storage medium supported by Linux, from local disks to network-attached storage (NAS). It also supports shared file systems, allowing multiple hosts to access the same VM images.

Support for multiple hardware architectures
KVM can run on many different hardware platforms. In Red Hat Enterprise Linux 9, for example, it supports 64-bit AMD, Intel, and ARM architectures, as well as IBM z13 (and later) systems.

Live migration
KVM supports live migration, letting you move a running VM between physical hosts without noticeable downtime. The VM remains powered on, keeps its network connections active, and continues to run applications during the migration. KVM can also save a VM’s current state so you can pause and resume it later.



## How do you manage VMs with KVM?

When you have multiple VMs, you’ll likely use a management tool to organize and monitor them. These tools may be command-line utilities, graphical user interfaces (GUIs), or full-ledged enterprise management platforms. Below are some common options:

libvirt and virsh
The libvirt project provides an API for administering virtualization platforms, and virsh is its command line tool. With virsh, you can create, start, list, and stop VMs or enter a specialized virtualization shell.

Virtual Machine Manager
Often called VMM or virt-anager, this desktop application offers a GUI for managing VMs and is available on most major Linux distributions.

Web consoles
Some administrators prefer browser-ased interfaces. Cockpit, for instance, lets you manage VMs through a web interface. In Red Hat Enterprise Linux, there’s also a web console plug-in for virtualization tasks.

KubeVirt
KubeVirt is designed for managing large numbers of VMs in Kubernetes environments, enabling VMs to run alongside containerized applications. It underpins Red Hat OpenShift® Virtualization, providing a way to handle VMs at scale within a container orchestration platform.



## Why migrate to a KVM-based virtualization platform?

A primary strength of VMs is their flexibility and portability, making it feasible to move them from one virtualization system to another. Reasons for switching can include cost savings, broader feature sets, more control, or other strategic advantages.

KVM is considered a mature technology trusted by enterprises to efficiently run VMs at scale. Moving to a KVM-based platform such as one offered in Red Hat’s virtualization portfolio lets you retain your existing VM investments while benefiting from open source underpinnings. Red Hat’s solutions also streamline the management of diverse workloads, such as VMs, containers, and serverless applications, within one unified ecosystem.