진짜 개발자
본문 바로가기

Cloud

Cloud - 서버 가상화(Virtualization)

728x90

원래의 서버

- 원래 하나의 물리서버에는 하나의 어플리케이션을 동작시키기 위한 전용서버로 사용했다 

    이는 문제발생 때 추적이 용이하고, 네트워크를 간소화 할 수 있기 때문이다 하지만 여러 문제점들이 있다


문제점

1. 하나의 물리서버의 자원을 충분히 활용하지 못하고 낭비된다 (CPU , Memory , 저장공간 등)

2. 하나의 물리서버에 하나의 응용만을 설치하므로 여러 응용프로그램이 설치될 경우 여러대의 서버가 필요하여 

    많은 물리적 공간이 필요하다

3. 여러대의 서버로 인해 발열이 심하다.


서버 가상화

- 하나의 물리적 서버를 여러개의 논리적인 서버로 나누어 각 서버의 논리적인 독립성을 보장한다.


  장점

1. 공간확보

2. 발열관리

3. 자원의 충분한 활용

4. 전력소모 감소


  단점

1. 실제 하나의 물리서버를 여러개의 논리 서버로 나누는 것이므로 CPU사용량이 많은 서버가 필요한 경우

   서버 가상화가 도움이 되지 않을 수 있다.

2. 서버 마이그레이션(이주) 시 같은 제조사의 CPU를 사용해야 한다는 점이 있다.

  

  종류


1. 전가상화

- 하드웨어를 완전히 가상화 하는 방식으로 하드웨어가 완전히 가상화 되기 때문에 OS의 수정이 필요없다.

조건 

     가상의 게스트OS 들이 장치를 제어를 하려면 CPU를 이용할 수 있어야 하므로 CPU의 가상화 제공이 필요하다

    


과정

1. 각각의 OS들이 장치를 제어하기위한 명령을 CPU에게 내린다 

2. CPU는 이를 알아듣고 바로 장치를 제어하는 것이 아니라 각 게스트 OS 들의 독립성을 보장하기 위해 Hypervisor에게

   장치 제어요구를 한다 (Hypervisor가 각게스트 OS들의 장치제어 스케줄링을 담당)

3. Hypervisor가 장치제어를 한다.


장점

1. 하드웨어를 완전히 가상화 하기 때문에 OS의 수정이 필요없다

2. 다양한 운영체제의 호환이 가능하다


단점

CPU가 가상화 기능을 제공해야하므로 성능저하가 일어난다.




2. 반가상화

- 하드웨어를 전부 가상화 하지 않기 때문에 하이퍼바이저에게 제어를 요구한다음 하이퍼바이저가 하드웨어를 제어하기 때문에 성능을 유지할 수 있다.


조건

서로 다른 게스트OS들의 OS레벨 명령어들을 CPU가 모두 알아들을 수 없으므로 알아들을 수 있는

명령어의 형태로 전환이 필요


장점

1. 전가상화와 거의 유사하나 각 게스트OS에서 OS 레벨의 명령이 요구되는 경우 Binary Translation이 필요 하지 않다.   

  때문에 Binary Translation에 의한 성능저하가 없다.


단점

1. 전가상화와 달리 중간에서 Binary Translation이 일어나지 않으므로 각 OS에서 CPU가 알아들을 수 있는 

명령어로 전환하기 위해 운영체제의 수정이 필요하다


2. Window 같이 오픈소스가 아닌 경우 OS수정이 어려우므로 반가상화가 어렵다



=> 요즘에는 Window도 반가상화 지원이 가능하다