title: "**가상화 : Virtualization**"
description: "**가상화 : Virtualization**"
cleanUrl: /sw-engineer/virtualization
floatFirstTOC: right

가상화의 정의

컴퓨팅 자원의 물리적 특징을 숨김으로써 이들 자원을 사용하는 여러 시스템, 애플리케이션 또는 최종 사용자로 하여금 다양한 편의성을 취하도록 하는 기술. 가상화는 단일 물리 자원(예컨대 단일 서버, OS, 응용 또는 스토리지 장치)이 여러 개의 논리적 자원으로, 또는 그 역으로 보이게 하는 것도 포함된다.

가상화의 특징

공급자와 소비자가 관계된 디자인 패턴

: 가상화가 취하는 대부분의 형식. 소비자와 공급자 사이에가상화가 위치하여 이들 간 인터페이스의 역할을 한다. 소비자와 공급자 간에는 실질적으로 1:N과 N:1을 포함하는 N:N 관계가 가능하지만, 가상화는 상대방이 다수임을 인지할 필요성을 제거한다(사용 복잡성 제거).

가상화의 종류

플랫폼 가상화(platform virtualization)

모의 컴퓨팅 환경을 생성하는 virtual machine(host S/W 또는 control program)이 핵심이다. virtual machine을 운용하는 H/W 플랫폼은 단일 또는 여러 H/W가 결합된 형태가 가능하다.

  1. 하드웨어 에뮬레이션(emulation)

    Untitled

    이 virtual machine는 완전한 H/W를 흉내내어, 수정되지 않은 guest(virtual machine 위에서 동작하는 S/W) OS가 다른 CPU 위에서 동작 가능하도록 한다. 에뮬레이션의 가장 큰 문제는 극도로 느려질 수 있다는 점이다. 모든 명령어들이 기반 하드웨어에 시뮬레이트 되어야 하기 때문에, 100배 정도 느려지는 것은 다반사이다.

  2. Native virtualization 또는 full virtualization

    Untitled

    이 모델은 게스트(guest) OS들과 네이티브 하드웨어 사이를 중재(mediate)하는 Hypervisor(VMM: Virtual Machine Monitor)를 사용한다. 수정되지 않은 OS 사용이 가능하나 해당 OS는 기반 하드웨어를 지원해야 한다.

  3. Partial virtualization(address space virtualization 포함)

    기반 H/W 환경, 특히 주소 공간(address space)에 대한 여러 인스턴스를 흉내낸다. 이를 통해 자원 공유와 프로세스 고립(process isolation)이 가능하지만, 분리된 guest OS는 지원하지 않는다. 일반적으로 virtual machine에 포함되지는 않지만 중요한 가상화 중 하나이다. (예로서 가상 광학 드라이버?)

  4. Paravirtualization

    full virtualization과 약간 유사한 대중적인 기술이다. 이 방식은 기반 하드웨어로의 공유 액세스에 hypervisor를 사용하지만, guest OS를 수정함므로 가상화 인식 코드를 OS로 통합한다(guest OS와 프로세스를 공유한다). 이같은 단점에도 불구 full virtualization보다 빨라 가상화되지 않은 시스템과 거의 비슷한 성능을 보인다.

  5. Operating System-level virtualization

    Untitled

    OS 수준에서 물리적 서버를 가상화하여, 다수의 고립되고 안전한 가상 서버가 단일 물리 서버에서 동작 가능하다. guest OS 환경은 호스트 시스템과 동일한 OS를 공유하여, 동일 OS 커널이 guest 환경을 구현하는 데 사용하기도 한다. OS 커널을 수정해야 하지만 성능이 우수하다는 장점이 있다.

  6. Application Virtualization

    데스크톱 또는 서버 응용을 적당한 virtual machine 내에서 지역 자원을 사용하여 실행한다. 가상 응용은 레지스트리, 파일, 환경 변수 등으로 이루어진 몇몇 컴포넌트를 포함한 작은 가상 환경 내에서 실행된다. Java Virtual machine은 이의 대표적인 예이다.

자원 가상화(resource virtualization)

자원 집적(aggregation), 확장(spanning), 연결(concatenation)을 통해 개개의 자원이 결합하여 더 큰 자원 또는 자원 풀(pool)로 묶는 것. 다음은 예이다.

  1. Virtual Memory : 각 응용마다 가상 주소 공간을 제공하여 물리적, 비 연속적 메모리의 한계를 극복한다.