[OS] 가상화 (Virtualization)

parkheeddong·2023년 3월 13일
1

Operating System

목록 보기
7/63



1. 하드웨어 가상화

= Hardware Virtualization, Platform Virtualization

1) 하드웨어 가상화, 플랫폼 가상화란 가상 머신을 생성하는 기술이다.

가상 머신이란 운영체제를 가지고 있는 실제 컴퓨터 시스템처럼 동작하는 것을 의미한다. 가상 머신은 자기만의 CPU, 메모리, OS를 가진 것처럼 보여져서 그 자체로 실제 컴퓨터시스템 인것처럼 보이지만 실제로는 컴퓨터 시스템이 아니다.

2) 하드웨어 가상화 기술은 이러한 가상 머신을 생성시켜주는 기술이다.

즉 하나의 컴퓨터 시스템 안에는 CPU와 메모리가 하나씩 있는데, 가상 머신을 여러개 만들어서 여러개의 가상머신마다 각각의 CPU와 메모리들이 있는 것처럼 보이게 하는 것이다.
가상머신에서 실행되는 소프트웨어(어플리케이션)은 실제 물리적으로 존재하는 하드웨어 자원(CPU, 메모리)와 분리되어 있다. 가상머신 내 소프트웨어는 가상머신의 CPU, 메모리를 사용하는 것처럼 보이지만 그것은 실제의 물리적 CPU, 메모리와는 분리된 것이다.

3) 하드웨어 가상화에서는 Host Machine(실제 존재하는 물리적 하드웨어로서, 가상화 기술이 실제로 사용하는 머신)와 Guest Machine(가상 머신)로 구분된다.

4) 다시 말해 하드웨어 가상화는 단일 컴퓨터 시스템의 하드웨어를 여러개의 서로 다른 실행 환경으로 추상화하는 것(실제 컴퓨터는 하나뿐이지만 여러개의 서로 다른 가상 머신으로 보이게 하는 것)이다.

서로 다른 가상환경은 자기만의 private computer을 가지는 것과 같은 환상을 보여준다.

5) Virtualization Layer (= Host OS = Hypervisor = Virtual Machine Monitor = VMM)

*Host OS와 Hypervisor/VMM은 엄밀히 말하면 다른 개념

Host OS는 실제 하드웨어들을 관리하고, Guest OS는 가상의 하드웨어들을 관리한다. 가상의 하드웨어는 실제 존재하는 것이 아니기 때문에, Guest OS가 가상의 하드웨어에 접근하기 위해서는 요청을 Virtualization Layer로 전달하고, Layer가 실제 하드웨어를 할당시켜 준다.

가상 머신들의 요청들은 전부 Virtualization Layer로 전달되므로, Virtualization Layer가 실제 하드웨어를 관리하면서 가상 머신에게 할당해 주는 역할을 수행한다.



2. 하드웨어 가상화 기술 구현 방법

1) 반 가상화 기술 (Para-Virtualization) : Modified Guest OS

가상 머신에서 어플리케이션이 커널에 시스템 콜을 통해 서비스 요청을 하면, 가상의 OS는 실제 하드웨어를 건드릴수 없기 때문에 Hypervisor의 도움을 받아야 한다.
따라서 원래 OS에서 하드웨어를 직접 건드리던 소스 코드들을, Hypervisor를 호출하는 소스 코드로 변경하는 방법이다.

2) 전 가상화 기술 (Full-Virtualization) : Unmodified (native) Guest OS

Guest OS를 수정하지 않고 원래 OS처럼 소스코드를 유지하되, Guest OS는 하드웨어를 건드릴 수 없는데 건드리려고 하니 권한을 넘어서는 시도이므로 'Exception'을 발생하게 만들고, 이 Exception을 처리하는 과정에서 명령을 Hypervisor 호출로 전환시켜주는 방법이다.
따라서 Mac OS, Linux, Windows 등 여러 운영체제들의 소스 코드를 그대로 가져다 쓰되 발생하는 Exception을 전환, redirection 시켜주는 방법이다.

성능 면에서는 반 가상화 기술이 훨씬 빠르다. 왜냐하면 전가상화는 계속 Exception Handling이 필요하기 때문이다.
그러나 전가상화 기술은 기존의 OS를 수정하지 않고 그대로 가져다 쓸 수 있기 때문에 장점이 있다.

3) 하이브리드 가상화 (Hybrid Virtualization)

최소한으로 반가상화 기술을 사용하되 전 가상화기술을 대부분 사용하는, 두 기술을 섞어 사용하는 기법



3. Hypervisor의 종류

1) Baremetal 구조 (Type 1)

Physical Hardware 위에 Hypervisor가 오고, 그 위에 각각의 가상 머신들이 있는 구조
Hypervisor가 하드웨어 관리 기능을 모두 해야 한다.

2) Hosted 구조 (Type 2)

하드웨어 위에 Hypervisor를 올리기 전에, Host OS를 따로 두고, 그 위에 Hypervisor를 올리는 것이다.
즉, Host OS와 Hypervisor는 엄밀히 다른 개념이다. 기존의 리눅스 체제와 같은 운영체제를 Host OS로 사용하고, 그 위 Hypervisor,그 위 가상머신이다.
기존의 운영체제가 하드웨어 관리기능을 모두 가지고 있는데 Hypervisor를 또 새로 만들어서 기능을 모두 implement할 필요가 없다고 생각해서 나온 구조.
기존 OS가 하드웨어를 관리하는 기능을 하는 것이다.

3) Hybrid 구조 (Type 3)

Type 2에서 너무 계층이 많으니, 실제 Host OS 안에다가 Hypervisor를 넣은 것(임베드시킨 것)이다. 따라서 Hypervisor의 기능을 Host OS 안에 넣은 구조로서, Type 1과 2의 구조를 섞은듯 해보여 하이브리드 구조라고 부른다.



4. 운영체제 가상화 = OS Virtualization

1) OS 가상화란 커널이 여러개의 독립된 사용자 스페이스(=컨테이너=VPS=Jail)를 만들어주는 것이다.

2) 기존의 구조처럼 하드웨어와 OS가 있는데 OS가 서로 다른 컨테이너를 만들어주고 각 컨테이너 안에서 어플리케이션이 실행될 수 있도록 만들어주어서, 각 컨테이너들이 서로 완전히 분리되도록(Isolation) 만들어준다.

3) Guest OS, Hypervisor 같은 것은 없지만, 커널로 하여금 여러개의 컨테이너(유저 스페이스)를 만들어줌으로써 하드웨어 가상화한 것과 같은 Isolation 효과가 나타난다.

4) 기존의 방식처럼 어플리케이션이 OS에 시스템 콜을 하는데 단지 OS가 분리된 컨테이너 환경을 만들어주는 것이다.



5. 운영체제 가상화 기술과 하드웨어 가상화 기술

1) 하드웨어 가상화는 isolation이 100% 확실하게 되는데, 운영체제 가상화는 하드웨어에 비해서는 엄청 단단하지는 않다.

2) 운영체제 가상화는 Hypervisor가 필요하지 않으니 하드웨어 가상화 기술에 비해서 성능이 좋다. Hypervisor로 인한 overhead(간접비용)가 없거나, 거의 존재하지 않는다.



6. 가상화 기술의 장점

1) 서버 통합 (Server Consolidation)

A, B, C 세개의 서버가 필요하면 예전에는 서로 다른 하드웨어 3대를 이용했어야 했는데, 가상화 기술을 사용하면 하드웨어 하나를 두고 그 위에 가상머신/컨테이너를 여러개 두는 구조이기 때문에, 하드웨어 하나로 A, B, C 서버를 독립된 환경에서 돌아가도록 만들 수 있다. 3개의 서버를 하나의 물리적 하드웨어에 통합시킨 것이다. 하나의 하드웨어당 하나의 서버를 할 경우 하드웨어가 낭비되는 경우도 있을 텐데, 가상화 기술을 사용하면 하드웨어의 활용도가 더 높아질 것이다.

개인적 입장에서는 개인 노트북에 가상화 엔진(Hypervisor)를 깔고 MS Windows, Linux 두개의 운영체제를 깔고 번갈아 이용할 수 있다. 이 경우 하나의 pc를 가지면서 윈도우와 리눅스 두 개의 pc를 가진 것과 같은 효과를 낼 수 있다.
데이터센터와 같은 곳에선 성능과 자원의 활용 문제로 가상화 기술을 사용할 수 있다.

2) 관리가 쉽다. (Simplified Management)

세 개의 서버에 대해 하드웨어 3개를 사용하는 것보다는, 하드웨어 한개만 관리하면 되니까 더 관리가 단순하다.

3) 가용성과 신뢰성을 높일 수 있다. (Improved Availability / reliability)

서버 A, B, C가 각각 독립적 머신에서 돌 때에는, 서버 C가 고장나면 다른 하드웨어를 찾아야 하기 때문에 시간이 소요된다. 그러나 가상머신에서 서버 A, B, C가 돌아가면 C가 고장나도 새로운 가상 머신을 만들어서 하면 되기 때문에, 가용성과 신뢰성이 더 높아진다.
가상화 기술에서의 단점은 하드웨어가 고장나면 서버 3개가 모두 돌아가지 못한다느 점인데 대부분 이런 경우 신뢰도가 높고 성능이 매우 좋은 하드웨어를 사용하기 때문에 하드웨어가 고장나는 경우는 별로 없다.

4) 소프트웨어 개발 단계에서 가상머신을 사용하는 것은 용이하다.

운영체제 커널을 개선하고 수정하는 업무를 할 때, 이것을 하나의 물리적 머신에서 하게 되면 커널이 오류가 발생하게 되면 기기 전체를 사용할 수 없게 된다. 그러나 가상머신에서 수정하면, guest os를 수정하면서 하는 것이기 때문에 guest os가 잘못되어 다운되어도 실제 머신은 잘 작동하기 때문에 문제가 없다.



7. Hypervisor(가상화 엔진)의 예시

vmware, xen, kvm, virtual box 등이 있다.

0개의 댓글