본문 바로가기
IT용어/서버

서버 가상화란? (작동방식, 구성요소, 종류, 목적)

by 아이럽스토리지 2023. 9. 15.
반응형

서버 가상화란 무엇입니까?

가상화시스템이 도입되기 전에는 1개의 하드웨어 서버에 1개의 운영체제를 설치합니다.
일반적으로 베어메탈 서버들은 운영 중에 리소스의 15%만 사용한다고 합니다.
베어메탈 서버에서 서비스가 돌아가면, 가상화시스템에 비해  대부분의 리소스를 낭비하게 됩니다.

이에 대한 해결책으로 서버 가상화가 존재하는데요.
가상화 소프트웨어를 사용하면 여러 대의 물리적 하드웨어 서버를 여러대의 가상 서버로 생성할 수 있습니다. 
하드웨어 서버를 추가적으로 구매할 필요 없이, 1대의 하드웨어에서 리소스를 최대한 활용할 수 있습니다.

 


서버 가상화 작동방식

가상화 시스템을 도입하려면, 먼저 가상화 소프트웨어를 정해야 합니다. 
가상화 시스템을 위해 도입되는, 가상화 소프트웨어를 일명 하이퍼바이저 (hypervizor)라고 합니다. 
주요 역할은 CPU, 메모리, 기타 물리적 리소스들을 가상 인스턴스와 분리하는 가상화 계층을 생성하는 것입니다.
쉽게 말해 가상 머신을 생성하고 구동하는 소프트웨어입니다.
하이퍼 바이저는 가상 머신을 생성, 물리서버가 가진 리소스를 각각의 가상 머신에 할당합니다.
생성된 가상 머신에 운영체제를 설치하고, 소프트웨어가 설치되어 작동하는 방식이라고 보면 될 것 같습니다.

 


서버 가상화 구성 요소

 

호스트시스템 (물리적 장비)

가상화 시스템이 돌아가는 실제 물리 장비를 말합니다.
서버 또는 컴퓨터 장치가 될 수 있습니다.
호스트 OS방식 가상화는 CPU가 가상화를 지원하는 모델이어야 합니다.

 

 

가상 머신

어떤 방식이든, 가상으로 생성된 머신을 말합니다. VM이라고 지칭합니다.
VM에 설치된 OS를 게스트 OS(guest OS)라고 지칭합니다.

 

 

하이퍼바이저 

하이퍼바이저는 서버 가상화에서 가상화에 관련된 모든 일을 한다고 봐도 무방합니다.
CPU, 메모리, 네트워크 인터페이스 등을 하드웨어 물리적 리소스를 가상화하고, 하드웨어와 VM사이에서 모든 요청을 변환합니다.
하이퍼바이저는 각각의 VM이 격리된 방식으로 하드웨어 리소스에 접근할 수 있게 합니다.

 

 

컨테이너

컨테이너는 OS에서 실행되는 프로세스를 격리하여 별도의 실행 환경을 제공해 줍니다.
마치 해당 프로세스가 OS상에서 실행되는 유일한 프로세스인 것처럼 작동하게 해주는 기술입니다.
여러 개의 프로세스가 컨테이너라는 의미로 격리되어 각각의 운영환경을 제공해 준다고 보면 됩니다.

대표적으로 Docker가 있습니다.


서버 가상화 종류


호스트 OS방식

호스트 운영체제 위에 가상화 소프트웨어를 설치하고, 그 위에 가상머신을 설치하는 방식입니다.
VMware, Virtual Box 같은 가상화 소프트웨어를 설치하고, 여러 대의 가상 머신을 생성해서 각각 OS를 설치하는 방식입니다.

 

 

전가상화 방식

호스트 시스템에 OS 없이 바로 하이퍼바이저 소프트웨어를 설치해서, 하이퍼바이저 위에 각각의 가상 머신을 생성 후 OS를 설치하는 방식입니다.
하이퍼바이저의 역할로 가상머신끼리는 독립적인 호스트 시스템처럼 동작하게 하고, 가상 머신끼리 서로 간섭이 일어나지 않습니다. 
게스트 OS가 각각의 언어로 요청하는 모든 명령들을 하이퍼바이저가 중간에서 번역해서 하드웨어에게 전달합니다

(DOM0이 개입)
단점은 하이퍼바이저가 가상머신들에게 자원을 관리하는 이외에, 게스트 OS와 하드웨어 사이에서 모든 명령을 중재하기 때문에 성능이 상대적으로 느립니다.
VMware ESX Server, MS Hyper-v 등이 있습니다.

 

 

반가상화 

반 가상화란 하드웨어를 완전히 가상화하지 않는 기술입니다.
전가상화의 단점인 성능 문제를 위해, 하이퍼콜(Hyper Call)이라는 인터페이스를 도입, 하이퍼콜을 통해 하이퍼바이저에게 직접 요청을 날립니다.
전가상화 방식은 각기 다른 OS 커널에서의 명령을 하이퍼바이저가 번역 후 하드웨어에게 전달을 했다면,
반가상화 방식은 각기 다른 OS에서 직접 번역을 해서 하이퍼바이저에게 전달해서, 하이퍼바이저는 단순히 하드웨어에게 전달만 해주면 됩니다. 

다만 하이퍼콜을 사용하가 위해 OS의 커널을 수정해야 하는데, 리눅스 같은 오픈소스 OS가 아니면 반가상화를 사용하기 어렵습니다.
윈도우는 오픈소스가 사용하기 어려웠지만, Xen의 등장으로 사용이 가능해졌습니다.
Citrix XenServer 가 있습니다.



 

컨테이너 가상화

하이퍼바이저 없이, 호스트 OS위에 컨테이너 관리 소프트웨어를 설치하는 방식입니다.
컨테이너는 호스트OS와 동일한 커널을 공유하고, 필요한 라이브러리와 애플리케이션만 가상화하여 독립적으로 환경을 구성합니다.
하드웨어를 가상화시키는 방식이 아니고, 소프트웨어를 가상화한다고 보면 됩니다.
또한 프로세스를 개별적으로 격리해서 가볍고 빠르고, 하드웨어 자원도 필요로 하는 만큼만 사용해서 성능적으로도 거의 손실이 없습니다.
대표적으로 도커(Docker)가 있습니다.


서버 가상화의 목적

예전에는 기업에서 각 서버마다 1개의 서비스 또는 단일 워크로드 전용으로 사용했습니다.
서비스가 100개라면, 서버도 100개가 필요했었습니다.
이에 더 많은 서버가 필요하고, 지속적인 유지 관리 비용이 부담되어야 했습니다.
또한 실제 서비스에 비해 사용되는 서버의 리소스는 현저히 낮아서 활용도가 낮았습니다.

가상화는 물리적 서버를 여러 개의 가상서버로 나눠집니다.
이는 1개의 물리적 서버에서 여러개의 워크로드를 실행할 수 있다는 말입니다.
이는 필요한 서버수를 최대한 간소화시키고, 서버의 리소스를 좀 더 효율적으로 사용할 수 있습니다.  

반응형