본문 바로가기

Programming

가상화(Virtualization)

 

가상화(Virtualization) 란

 

가상화는 컴퓨터의 자원을 가상으로 분할하거나 모방하는 기술을 의미한다. 가상화 기술을 사용하면 하나의 물리적 서버에서 여러 운영체제와 애플리케이션을 실행할 수 있다.

 

다음과 같은 상황을 가정하자. 각각 용도가 다른 3개의 물리 서버(메일 서버, 웹 서버, 내부 레거시 서버)가 있다. 각 서버는 잠재적인 실행 용량의 일부에 불과한 30% 용량만 사용하고 있다. 그러나 내부 운영을 위해서는 레거시 애플리케이션이 계속 필요하므로 레거시 어플리케이션과 이를 호스팅하는 세 번째 서버를 유지해야 한다.

 

이런 상황에서 전통적인 서버 구성방식은 위와 같다. 한 개의 서버에 한 개의 운영체제와 한 개의 태스크 형태로 구성한다. 하지만 가상화 기술을 사용하면 서버를 아래와 같이 구성하는 것이 가능해진다.

 

위와 같은 식으로 서버를 구성하면 첫번째 서버의 사용율을 60%까지 높일 수 있고 빈 서버를 재사용해 다른 태스크를 처리하거나 사용을 중지시켜 냉각 및 유지보수 비용을 줄일 수 있다.

 


 

가상화 기술의 역사

 

가상화라는 용어는 1960년대부터 등장한 오래된 개념이지만 실질적으로 상용화가 되기 시작한 건 2000년대부터다. 이 가상화의 핵심기술로 쓰인 것이 바로 하이퍼바이저다.

하이퍼바이저는 가상 머신(Virtual Machine, VM)을 생성하고 구동하는 소프트웨어다. 가상 머신 모니터(Virtual Machine Monitor, VMM)라고도 불리는 하이퍼바이저는 하이퍼바이저 운영 체제와 가상 머신의 리소스를 분리해 VM의 생성과 관리를 지원한다.

하이퍼바이저로 사용되는 물리 하드웨어를 호스트라고 하며 리소스를 사용하는 여러 VM을 게스트라고 한다.

 

처음 가상화 개념이 도입되었을 때는 여러 사용자가 하나의 물리적 시스템을 공유할 수 있도록 만드는 가상화 시스템이 인기를 얻은 반면 실질적으로 물리적인 하드웨어를 가상화하는 VM은 빛을 보지 못했다. 하지만 시간이 지나 1990년대에는 대부분의 기업이 물리 서버와 단일 벤더 IT 스택(single vendor IT stack 이란 조직의 IT 인프라, 소프트웨어, 서비스가 단일 공급업체로부터 제공되고 관리되는 구성을 의미한다.)을 사용하고 있었기 때문에 다른 공급업체의 하드웨어에서 레거시 애플리케이션을 실행할 수 없었다. 물리 하드웨어를 추가로 증설하는 방법도 있었지만 비용이 많이 들기 때문에 가상화를 통해 이 문제를 해결할 수 있었다. 이렇듯 가상화 기술은 기업들의 구매, 셋업, 유지관리와 관련된 비용을 줄일 수 있게 만들었다.

 


 

하이퍼바이저를 통한 가상화 구현

 

위에서 설명한대로, 하이퍼바이저는 Host가 Guest를 여러 개 만들어서 하나의 물리 하드웨어에 마치 여러 개의 독립적인 하드웨어가 존재하는 것처럼 만든다. 그렇다면 어떻게 이것이 가능한가?

 

 

하이퍼바이저는 CPU, 메모리, 스토리지 등의 물리 하드웨어의 리소스를 처리하는 pool이 되어서 기존 또는 새로운 VM에 리소스를 쉽게 재배치할 수 있다. 위 그림처럼 하이퍼바이저는 할당되었던 리소스를 각 가상 머신에 제공하고, 물리 리소스에 대해 VM 리소스의 일정을 관리한다.

 


가상화 유형

 

1. 데이터 가상화

 

분산되어 있는 데이터를 단일 데이터 소스로 통합하여 관리하게 만든다. 실질적으로는 여러 개의 단일 데이터가 독립적으로 존재하지만 가상화를 통해 마치 이 데이터들이 하나인 것처럼 처리되게 한다. 데이터 가상화 기술이 적용된 대표적인 사례로는 Cisco Data Virtualization 솔루션이나 Denodo 플랫폼이 있다.

 

 

2. 데스크탑 가상화

 

데스크탑 가상화는 시뮬레이션된 데스크탑 환경이 중앙 관리자 또는 자동화된 관리 툴을 통해 수백 개의 물리 머신에 동시 배포되도록 지원하는 것을 의미한다. 데스크탑 가상화 기술이 적용된 대표적인 사례로는 Microsoft Remote Desktop Services 가 있다.

 

 

3. 서버 가상화(운영체제 가상화 포함)

 

서버 가상화는 하나의 물리적인 서버를 여러 개의 고유한 가상서버로 나누는 것을 의미한다. 각 가상의 서버는 자체 운영 체제를 독립적으로 운용할 수도 있다. 서버 가상화 유형은 다음과 같다.

  • 완전 가상화 : 하이퍼바이저를 사용하여 물리 서버의 리소스를 사용한다. 큰 제한 사항 중 하나는 하이퍼바이저의 자체적인 처리 요구사항이 있기 때문에 어플리케이션의 속도를 저하하고 서버성능에 영향을 미칠 수 있다. 대표적인 완전 가상화 서비스로는 Oracle VM VirtualBox가 있다.

  • 반 가상화 : 반 가상화에서는 하드웨어를 완전히 가상화하지 않는다. 완전 가상화의 성능저하 문제를 해결하기 위해 HyperCall이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날릴 수 있다. 대표적인 반 가상화 서비스로는 Xen(오픈소스 하이퍼바이저)이 있다.

  • OS 수준 가상화 : 하이퍼바이저를 사용하지 않고 물리 서버 OS에 포함된 가상화 기능이 하이퍼바이저를 대신하여 모든 작업을 수행한다. 대표적인 OS 수준 가상화 서비스로는 Docker가 있다.

출처 :
https://www.redhat.com/ko/topics/virtualization/what-is-virtualization
https://www.redhat.com/ko/topics/virtualization/what-is-a-hypervisor
https://www.ibm.com/kr-ko/topics/virtualization
https://www.vmware.com/topics/glossary/content/desktop-virtualization.html
https://www.vmware.com/topics/glossary/content/server-virtualization.html

 

'Programming' 카테고리의 다른 글

Forward Proxy, Reverse Proxy  (0) 2024.07.12
CSRF(Cross-Site Request Forgery)  (0) 2024.07.11
XSS(Cross-Site Scripting)  (0) 2024.07.11
CORS(Cross Origin Resource Sharing)  (0) 2024.07.10
암호화 알고리즘(MD5, SHA)  (1) 2023.10.14