안 쓰던 블로그
클라우드 컴퓨팅 전가상화와 반가상화 본문
Type-1 가상화
일단 전가강화와 반가상화는 Tpye-1 가상화를 전제로 한다.
Type-1: 하이퍼바이저 위에 게스트OS가 바로 탑재되는 형태. 네이티브 또는 베어메탈 하이퍼바이저를 이용하는 가상화이다. 베어메탈을 관리할 OS를 설치하지 않기 때문에 호스트형 가상화에 비해 오버헤드가 적다는 장점이 있다. 또한 하드웨어 리스소 관리가 유연하므로 Type2보다 성능이 좋다. 하지만 자체적으로 머신에 대한 관리 기능이 없기 때문에 관리에 필요한 컴퓨터나 콘솔(CLI)이 필요하다. 그래서 Type-2보다 사용성이 낮다.
(참고: https://foxtrotin.tistory.com/496 )
Type-1 가상화는 다시 전가상화와 반가상화로 분류된다.
전가상화 vs 반가상화
전가상화와 반가상화는 게스트OS가 수정되냐 아니냐로 나뉜다.
그런데 게스트OS가 수정된다는 것이 대체 무슨 의미인가?
전가상화 (full-virtualization)
게스트OS가 HW에 접근하면서 제어를 요구한다. 이 때 CPU는 가상화가 지원가능한지 아닌지를 확인하는데, 지원을 하지 않으면 게스트OS는 아예 운영할 수 없다. 지원 가능하면 HW제어를 요구하고, 이후 HW를 제어할 수 있게 된다. 하이퍼바이저를 베어메탈에 구동하면 DOM0이라는 관리용 가상머신이 구동되는데, 모든 가상머신의 하드웨어 접근이 이 DOM0으로 이루어진다.
즉, 게스트OS가 각각의 언어로 요청하는 명령들을 하이퍼바이저가 번역하여 하드웨어에게 전달한다. 또한 게스트OS에게 자원을 할당하는 운용 역할도 담당한다.
장단점: 게스트OS의 별다른 수정없이 사용할 수 있다. 하지만 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 느리다. 또한 하이퍼바이저가 중재 이외의 문제들도 다 처리해 주어야 한다.
반가상화(para-virtualization)
반가상화에서도 하이퍼바이저가 존재한다. 하지만 게스트OS와 하드웨어 사이의 번역 역할을 하지 않고, 단지 게스트OS들에게 자원을 어떻게 분배할지 같은 관리적 문제만 다룬다. 그러면 기존에 하이퍼바이저가 하던 번역 일은 게스트OS 자체에서 해서 하드웨어로 보내야 하는 일이 된다.
그래서 게스트OS의 커널을 수정하여(=코드를 까서 수정을 하여) 이러한 역할이 가능하도록 만들어야 한다. 리눅스는 오픈소스라서 소스를 수정할 수 있다. 윈도우는 원래는 불가능했지만 Xen에서 제공하는 툴로 전부 다 가능해졌다.
그렇기 때문에 반가상화는 게스트OS를 수정해야 하며, 이것이 반가상화와 전가상화의 차이를 낳는다.
장단점: 전가상화의 단점인 성능 저하를 해소하고자 모든 명령을 DOM0을 통해 하이퍼바이저에게 요청하지 않고, 하이퍼콜이라는 인터페이스로 직접 하이퍼바이저에 요청을 날린다. 따라서 전가상화에 비해 성능이 빠르다. 하지만 하이퍼콜을 이용하면 하이퍼바이저에게 요청을 보내는 동작을 기존의 OS는 할 수 없으므로 커널 수정 작업이 들어가야 한다.
'Network' 카테고리의 다른 글
클라우드 서비스에서의 Time Sharing 및 Resource Pooling (0) | 2021.07.16 |
---|---|
클라우드 서비스 및 운영 모델 (0) | 2021.07.16 |
클라우드 컴퓨팅 Type-1, Type-2 가상화 (0) | 2021.06.11 |
클라우드 서비스에서의 과대자원, 과소자원 문제 (0) | 2021.06.11 |
vagrant 기반 multi server 환경 구성하기 (2웹서버, 1DB서버) (0) | 2021.05.09 |