본문 바로가기
Private & Public Cloud/VMware vSphere

가상화 기초

by TwoJun 2025. 1. 20.

2025-01-16(THU)

 

 

 

1. 가상화 개요

1-1. 가상화의 정의와 특징

(1) 가상화(Virtualization)는 서버, 스토리지, 네트워크와 물리적 인프라 리소스를 소프트웨어적으로 추상화하여 논리적인 인프라를 구성하는 과정을 의미하며 컴퓨팅 리소스의 추상화를 일컫는 용어이다.

 

(2) 가상화는 소프트웨어를 사용해서 프로세서, 메모리, 스토리지 등과 같은 단일 컴퓨팅 하드웨어 리소스를 일반적으로 VM이라고 하는 다수의 논리적 컴퓨터로 분할할 수 있도록 해 주는 컴퓨팅 하드웨어 상의 추상화 계층을 구축한다.

 

(3) 가상화 기술 도입 이전, 서버 전체 리소스 중 10~15% 정도만 사용했지만 가상화 기술 도입 후 서버의 리소스를 70% 이상까지 사용할 수 있게 되면서 리소스 사용 효율을 높일 수 있게 되었다.

 

 

 

 

1-2. Type I(Bare-metal), II(Hosted) Hypervisor

(1) 호스트의 하드웨어 위의 계층에서 바로 동작하는 Type I(Bare-metal) 하이퍼바이저는 하드웨어 리소스에 직접적인 접근이 가능하여 속도가 빠른 편이고 이를 기반으로 VM을 생성하고 관리할 수 있다.

 

(2) Type II(Hosted) 하이퍼바이저는 Guest OS 위에서 바로 동작하므로 실행 중인 애플리케이션과 하드웨어 리소스를 함께 사용한다. 이러한 특징으로 인해 타입 1보다 속도가 느리고 GUI가 유저 친화적이기 때문에 개발 환경이나 테스트 진행 시 사용해 볼 수 있는 하이퍼바이저다.

 

 

 

 

1-3. VMware vSphere(ESXi + vCenter Server)

(1) vSphere의 핵심 구성 요소는 타입 1 하이퍼바이저인 ESXi와  vCenter Server이다.

 

(2) 앞서 소개된 Bare-metal 하이퍼바이저가 VMware에서는 ESXi이고 vCenter Server는 다수의 ESXi 호스트와 VM들을 중앙 집중 형식으로 한 번에 관리하고 모니터링할 수 있는 vSphere의 핵심 도구이다.

 

 

 

 

 

 

 

2. vSphere CPU Virtualization

 

2-1. vSphere CPU 가상화

(1) VMware의 하이퍼바이저인 ESXi가 호스트의 물리 CPU 자원을 가상화하고 생성할 각 VM에 할당한다.

 

(2) 서버에 존재하는 복수의 논리 CPU 부하를 동적으로 로드 밸런싱 할 수 있다.

 

(3) 가상 머신이 사용하는 CPU 리소스를 동적으로 분배해서 특정 CPU에 부하가 집중되는 것을 방지한다.

 

 

 

 

2-2. 하이퍼스레딩

(1) 하이퍼스레딩은 한 개의 물리적  CPU 코어에서 두 개의 논리적 코어를 실행할 수 있도록 하는 프로세서 기술이다.

 

(2) 가상화 환경에서 하이퍼스레딩 기술을 통해 더 많은 VM을 효율적으로 실행할 수 있게 된다.

 

(3) 하이퍼스레딩을 사용하지 않을 경우 첫 번째 그림처럼 사용되지 않는 잉여 자원이 많지만 하이퍼스레딩이 지원되는 프로세서에서는 두 번째 그림처럼 스레드가 잉여 자원을 활용해서 자원을 효율적으로 사용한다. 

 

(4) 소켓 당 코어 수가 많을수록 더 많은 양의 데이터를 효율적이고 빠르게 처리할 수 있다.

 

 

 

 

 

 

 

3. vSphere Memory Virtualization 

3-1. 투명한 페이지 공유(TPS, Transparent Page Sharing)

(1) 가상화 환경에서 메모리를 효율적으로 활용하기 위해 사용되는 기술로써 다수의 가상 머신이나 프로세스들이 동일한 데이터를 공유하도록 하는 방식이다. 이를 통해 가상 머신들이 중복되는 메모리 페이지를 물리적 메모리에서 하나로 합쳐서 사용하게 된다.

 

(2) 호스트의 특정 메모리 페이지 공간을 여러 VM들이 함께 사용하고 있는 것

 

(3) 다수의 VM 사이에서 동일한 정적 페이지를 공유한다.

 

 

 

 

3-2. Memory Balloning

(1) 메모리 벌루닝은 VM들이 필요로 하는 메모리의 양을 동적으로 조정하는 기술이다. 호스트의 메모리 자원이 부족할 때 가장 먼저 동작하는 기술이다.

 

(2) 이러한 메모리 벌루닝은 가상 머신에 할당되었지만 실제로 사용되지 않는 메모리 페이지를 회수하는 기법이다.

 

(3) 가상 머신이 실행 중일 때 VM Tools 내부의 벌룬 드라이버가 실행되고 있다. 호스트의 메모리 부족 시 호스트는 가상 머신의 벌룬 드라이버를 통해 메모리를 회수하고 다른 VM이나 호스트에게 할당한다.

 

(4) 가상 머신이 메모리가 다시 필요하다면 벌룬 드라이버는 회수한 메모리를 다시 가상 머신에 재할당한다.

 

(5) VM에서 메모리 오버커밋이 발생하면 메모리 스왑 또는 압축이 발생한다

 

 

 

 

3-3. 메모리 압축(Memory Compression)

(1) 시스템의 물리적 메모리가 부족할 때 메모리 데이터를 압축해서 공간을 절약하는 메모리 관리 기술이다.

 

(2) 이러한 압축된 데이터는 물리적 메모리 공간 내부에 존재하며 필요할 때 압축을 풀어서 사용한다.

- 메모리 페이지 공간을 압축하는 것.

- 압축된 데이터는 메모리의 압축 캐시 영역에 저장된다.

 

 

 

 

3-4. Vmkernel Swap(메모리 스왑)

(1) 메모리 스왑은 물리 메모리가 부족할 때 디스크를 임시 메모리 공간으로 활용하는 기술이다. 메모리 페이지를 디스크로 옮겨서 메모리 공간을 확보한 뒤 데이터가 필요할 때 디스크에서 불러오는 방식이다.

 

(2) 디스크에 스왑 파일을 만들고 메모리에 저장될 파일을 스왑 파일에 보내는 방식이다

 

(3) 스왑보다 메모리 압축이 메모리 내부 압축 캐시 영역에 저장된 데이터를 Read  하므로 속도가 더 빠르다

 

(4) 가상 머신의 메모리 페이지를 VMKernel의 Swap 파일에 복사한다.

 

 

 

 

3-5. Memory Commit, Memory Over-Commit

(1) 메모리 커밋은 Guest OS에서 프로세스나 가상 머신이 요청한 메모리를 할당하는 과정을 의미한다. 커밋된 메모리는 실제 물리적 RAM 또는 스왑 공간에 할당된다. 프로세스가 메모리 자원을 요청하면 운영체제는 해당 요청을 커밋하고 물리적 또는 스왑 공간에 해당 메모리를 할당한다.

 

(2) 메모리 오버 커밋은 실제 물리 메모리보다 더 많은 메모리를 가상 머신이나 프로세스에 할당하는 기법을 의미한다.

댓글