
이 글에서 다룰 내용
이 글에서는 VM 리소스가 어떤 구조 위에서 정의되는지 정리함.
VM은 물리 서버를 그대로 복제한 환경이 아니라 Hypervisor를 통해
CPU·Memory·Storage가 서로 다른 방식으로 매핑되는 구조임.CPU는 스케줄링 기반으로 실행되고,
Memory는 이중 주소 변환을 거치며,
Storage는 다층 경로를 통해 처리됨.또한 Run Queue, Ready 상태, Queue, NUMA 구조 등 실제 자원 경합이 발생하는 지점을 구조적으로 설명함.
이 글은 리소스 설정 값을 해석하기 전,
VM 리소스 모델 자체를 이해하기 위한 단계임
학습 목표
이 글을 통해 다음을 이해하는 것을 목표로 함.
- VM과 물리 서버의 구조적 차이를 설명할 수 있음
- Hypervisor의
CPU·Memory·Storage매핑 방식을 구분할 수 있음- Ready 상태와 경합이 왜 발생하는지 설명할 수 있음
- 격리와 물리적 독점의 차이를 구분할 수 있음
VM 리소스를 정확히 해석하기 위해 먼저 가상화 환경의 기본 구조를 이해해야 함.
공유 자원 기반 가상화 모델
VM은 물리 자원을 직접 소유하는 것이 아니라 Hypervisor가 물리 자원을 관리하고,
각 VM은 그 위에서 가상 하드웨어를 통해 실행됨.
따라서 라는 표현은 물리 자원을 분리하여 떼어주었다는 의미가 아니라 물리 자원을 사용할 수 있는 논리적 범위를 정의했다 는 의미에 가까움.
이 구조는 자원 활용 효율을 높이지만 동시에 자원 경합 가능성을 내포함.
물리 서버에서는 자원 접근 경로가 단일 계층으로 운영체제가 CPU, Memory, Storage를 직접 제어함.
Guest OS는 CPU와 RAM을 직접 사용하는 것처럼 보이지만 실제 자원 접근은 항상 Hypervisor를 통해 중개됨.
이 차이로 인해 VM 리소스는
로 동작함.
Hypervisor는 CPU, Memory, Storage를 각각 다른 방식으로 중재함.
vCPU는 실행 단위이며 물리 코어는 실제 실행 자원임.
Hypervisor 스케줄러는 다음 요소를 고려함.
- vCPU는 물리 코어에 고정되지 않음
- 실행은 시간 단위(Time Slice)로 분할됨
- 동시에 실행 가능한 최대 수는 물리 코어 수
즉,
각 물리 코어에는 Run Queue가 존재함.
상태 전이:
Running→Ready→Running
Ready 상태는 실행 가능하지만 코어를 배정받지 못한 상태를 의미함.
Ready 시간이 길어질수록 CPU 경합이 심함.
특히 Oversubscription 환경에서는 Ready 비율이 중요한 성능 지표가 됨.
멀티 소켓 서버에서는 NUMA (Non-Uniform Memory Access) 구조가 존재함.
이 구조에서는
따라서 CPU 스케줄링이 잘못 이루어질 경우 메모리 접근 지연이 증가할 수 있음.
즉 CPU 매핑은 단순히 코어 개수 문제만이 아니라 메모리 위치와도 연결된 문제임.
Guest OS 내부에서도 이미 가상 메모리 체계를 사용함.
Hypervisor는 그 위에 한 단계 더 개입하여 Host Physical Address를 매핑함.
이 구조 덕분에 다음이 가능해짐.
즉 VM의 메모리는 단순히 물리 RAM을 나눠 쓰는 것이 아니라 주소 변환을 통해 동적으로 매핑되는 구조임.
가상 디스크는 일반적으로
VMDKVHDX같은 파일 또는 논리 볼륨 형태로 존재함.
Guest OS는 이를 물리 디스크처럼 인식하지만 실제 는 여러 계층을 거쳐 처리됨.

이 구조에서 중요한 특징은 다음과 같음.
는 여러 계층을 통과함
각 계층마다 Queue가 존재할 수 있음
Queue Depth가 증가하면 Latency가 증가함
즉 VM 디스크 성능은 가상 디스크 크기 보다
전체 경로에서 발생하는 병목 지점에 의해 결정됨.
가상화 환경에서는 리소스를 해석할 때 반드시 구분해야하는 세 가지 개념이 있음
1️⃣ 격리 (Isolation)
2️⃣ 독점 (Exclusive Use)
3️⃣ 보장 (Guarantee)
이 세 개념은 서로 다른 의미를 가지며, 실제 VM 리소스 해석에서 매우 중요한 기준이 됨.
특히 많은 경우 격리를 독점이나 성능 보장으로 오해하는 경우가 많음.
격리는 VM 간 실행 환경이 서로 논리적으로 분리되어 있는 상태를 의미함
즉, 하나의 VM이 다른 VM의 내부 자원에 직접 접근할 수 없도록 하는 구조임
대표적인 예:
- 메모리 주고 공간 분리
- 가상 디스크 분리
- 가상 네트워크 인터페이스 분리
이처럼 격리는 안정성과 보안 측면에서 매우 중요한역할을 함
하지만 격리는 어디까지나 논리적 분리일 뿐이며, 물리 자원의 사용 자체를 완전히 분리하는 것은 아님
즉 여러 VM이 동일한 물리 CPU나 스토리지를 공윻하는 상황에서도 각 VM은 서로 독립된 환경처럼 동작할 수 있음
독점은 특정 VM이 물리 자원을 단독으로 사용하는 상태를 의미함
예를 들어 다음과 같은 경우가 이에 해당함
- 특정 CPU 코어를 한 VM에만 할당
- 특정 GPU를 하나의 VM이 독점 사용
- 특정 스토리지 디바이스를 단일 VM 전용으로 사용
이 경우 해당 자원은 다음 VM과 공유되지 않기 때문에 자원 사용이 경쟁 상태에 놓이지 않음
하지만 일반적인 가상화 환경에서는 대부분의 자원이 여러 VM 사이에서 공유됨
예를 들어 하나의 물리 서버에 여러 VM이 존재할 경우, CPU, 메모리, 스토리지는 대부분 공유 자원으로 사용됨
일반적인 VM 환경에서는 물리 자원의 완전한 독점 상태가 보장되지 않는 경우가 많음
보장은 특정 자원 또는 성능 수준이 항상 일정하게 확보되는 상태를 의미함
예를 들어 다음과 같은 상황이 보장에 해당함
- 특정 VM에 최소 CPU 사용률 보장
- 일정 수준 이상의 메모리 확보
- 특정 스토리지 IOPS 보장
이러한 보장은 일반적으로 다음과 같은 메커니즘을 통해 구현됨.
- Resource Reservation
- Resource Limit
- QoS 정책
예를 들어 CPU Reservation이 설정된 VM은 다른 VM의 부하와 관계없이 일정 수준의 CPU 자원을 확보할 수 있음
하지만 대부분의 기존 VM 설정에서는 이러한 보장이 자동으로 제공되지 않음
즉, VM 리소스 설정 값이 존재한다고 해서 그 자원이 항상 동일한 성능을 제공하는 것음 아님
가상화 환경에서 기본적으로 제공되는 것은 격리이며, 독점이나 성능 보장은 별도의 설정이 필요함
그러므로 VM의 리소스를 해석할 때는
으로 이해해야 함
이 차이를 이해하는 것이 이후의
vCPU, vRAM, Disk 설정값의 의미를 해석하는 데 중요한 기준이 됨.
VM 리소스를 이해하기 위해서는 먼저 가상화 환경의 구조적 전제를 이해해야 함.
VM은 물리 서버를 그대로 복제한 환경이 아니라 Hypervisor가 물리 자원을 관리하고 그 위에서 가상 하드웨어를 통해 실행되는 구조임.
이 구조에서는 각 리소스가 서로 다른 방식으로 매핑됨.
따라서 VM 리소스는 물리 자원을 직접 점유하는 것이 아니라 공유 자원 위에서 실행되는 논리적 실행 모델로 이해해야 함.
또한 가상화 환경에서는 다음 세 개념을 구분해야 함.
기본 VM 환경에서 Hypervisor가 제공하는 것은 격리이며, 물리 자원의 독점이나 성능 보장은 별도의 설정이 필요한 영역임.