가상화 정의
가상화(Virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어이다.
"물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있는데,
흔히 통용되는 가상화 기술이라는 용어는 다음 세 가지를 의미한다.
- 하나의 물리 머신 상에서 복수의 시스템을 동시에 운영하는 것
- CPU, 메모리, HDD, NIC 등을 소프트웨어를 통해 논리적으로 만드는 것
- 물리 서버 단위가 아닌 Application 단위로의 전환
x86 서버를 가상화하기 이전과 가상화한 이후의 아키텍처는 다음 그림과 같다. 가상화 이전에는 x86 서버에 1개의 운영체제만을 구동시킬 수 있었으나,
가상화 이후에는 동일한 x86 서버에서 여러 개의 운영체제를 동시에 구동시킬 수 있다.
가상화 주요 용어
가상화 환경에서 흔히 사용하는 대표적인 용어는 다음과 같다.
- 호스트 시스템(또는 물리적인 시스템 또는 서버): 호스트 시스템을 호칭하는 용어는 딱히 정해져 있지 않다.
서버 시스템, 물리적인 서버, 또는 물리적인 시스템 등으로 부르기도 하는데, 여하튼 CPU, 메모리, 하드 디스크, NIC, HBA 등 하드웨어
리소스를 장착한 물리적인 시스템 자체를 우리는 호스트 시스템이라 호칭하기도 하고, 또는 서버 시스템이라고도 한다.
가상화 운영체제 환경에서 호스트 시스템이라고 한다면 이렇게 물리적인 하드웨어 구성요소가 장착된 시스템을 총칭한다.
- 가상화 운영체제(또는 하이퍼바이저): 호스트 시스템 위에 설치되어 작동되는
가상화 운영체제를 하이퍼바이저라고 부른다. 이러한 하이퍼바이저는 물리적인 호스트 시스템 위에 설치되어 일종의 운영체제처럼 작동되며, 가상머신들이 하드웨어 리소스를
공유하여 사용할 수 있게끔 스케줄링하는 책임을 맡게 된다. 가상머신 생성과 리소스 할당 및 관리 작업들이 모두 이러한 가상화 운영체제에 의해 조정된다.
하이퍼바이저는 2가지로 구분되는데, 운영 체제가 프로그램을 제어하듯이 하이퍼바이저가 해당 하드웨어에서 직접 실행되며 게스트 운영 체제는 하드웨어 위에서 2번째 수준으로 실행되는
Type-1과 하이퍼바이저는 일반 프로그램과 같이 호스트 운영 체제에서 실행되며 VM 내부에서 동작되는 게스트 운영 체제는 하드웨어에서 3번째 수준으로 실행되는 Type-2가 있다.
- 가상머신(Virtual Machine 또는 줄여서 VM): 가상머신은 가상화 운영체제에 의해 생성된 가상의 하드웨어 집합체이다.
BIOS와 CPU, 메모리, HDD, 네트워크 인터페이스 카드 등을 가지고 있다.
가상 머신 위에 설치되는 운영체제 입장에서는 실제의 물리적인 일반 시스템과 전혀 다를 바가 없으나,
실제로 이러한 가상 하드웨어들은 전부 일종의 파일 형태로 존재하거나 또는 해당 머신에서만 독점적으로 사용하는 것이 아니다.
- 게스트 운영체제(Guest Operating System 또는 줄여서 게스트 OS): 흔히 가상 머신과 게스트 운영체제를 혼용하여 사용한다.
엄밀히 말하면, 가상 머신 위에 설치되어 작동되는 운영체제들인 Windows, Linux 등을 게스트 운영체제라고 해야 한다.
가상화 기능
가상화는 ICT 자원의 공유, 풀링, 에뮬레이션, 캡슐화를 가능하게 한다. 또 이를 적절히 활용하여
도입 목적에 따른 다양한 혜택을 제공한다. 가상화의 4가지 기능을 구체적으로 살펴보면 다음과 같다.
- 공유(sharing)는 다수의 많은 가상 자원들이 하나의 동일한 물리적 자원과 연결하는 것을 의미한다.
물리적 자원의 일부를 할당하거나 시분할(time sharing) 기법을 활용하여 다수의 가상 자원을 생성, 활용하는 것이다.
논리적 파티셔닝, 가상머신, 가상디스크, 가상랜 등이 가상화의 공유 기능을 통해 생성, 활용된다.
- 풀링(pooling; 단일화)은 여러 개의 물리적 자원으로 하나의 가상 자원을 만들고,
이를 통해 가상 자원의 전체 용량을 증가시키는 기능이다. 풀링을 통해 ICT 자원 관리를 단순화하고, 기존 투자를 보호하며,
ICT 자원의 확장성을 확보할 수 있다. 대표적인 예로 여러 개의 물리적 디스크를 하나로 단일화하는 가상디스크를 들수 있다.
- 에뮬레이션(emulation)은 가상 자원에서 물리적 자원에는 없는 어떤 기능이나 특성을 처음부터 존재했던 것처럼 구현하는 것이다.
에뮬레이션은 투자 보호, 상호운영성, 유연성, 호환성을 제공한다. 대표적인 예로 에뮬레이터, iSCSI, 가상테이프 스토리지 등이 있다.
- 캡슐화(encapsulation)은 가상 자원과 물리적 자원 사이의 상호 매핑을 통해 가상 자원 혹은 사용자에게 영향을 미치지
않으면서 물리적 자원을 교체하는 기능을 의미한다. 캡슐화 기능은 기업의 ICT 시스템에서 장애 방지(failover),
고가용성(high availability), 유연성, 투자 보호 효과를 제공한다.
가상화 효과
ICT 자원의 공유, 풀링, 에뮬레이션, 캡슐화 기능을 갖는 가상화 기술은 ICT 자원의 활용률을 높이고, 관리비용을 절감하며,
ICT 자원 활용의 유연성, 보안, 가용성 확장성을 개선한다. 또한 상호운용성을 보장하며, 기존 투자를 보호할 수 있다.
정리하면 가상화는 기업의 총소유비용(total cost of ownership; TCO)를 낮추고, 유연성을 증가시키며,
공유를 통한 ICT 자원의 효율적 활용을 가능하게 한다.
가상화와 클라우드
가상화는 각종 서비스를 위한 기능적 구조를 생성하고, SOA(service-oriented architecture)와 클라우드 구조를 지원한다.
서버를 가상화한다는 것은 컴퓨팅을 서비스로 바꾼다는 의미이며, 서비스를 클라우드에 넣는 것에 대해 논의를 하고 있다면
데이터센터 전반에 대한 가상화가 필요하다. 가상화의 대상에는 서버뿐만 아니라 스토리지, 네트워킹도 포함된다.
클라우드 컴퓨팅은 결국 사용자가 특정 서비스를 구현하기 위해 컴퓨팅 자원을 이용하는 것이다.
이때 클라우드 컴퓨팅에서 요구되는 사항들은 결국 가상화 기술을 통해 구현된다. 클라우드 컴퓨팅 이용자의 요구사항은 효율성/자동화,
민첩성, 선택의 자유 등이며, 다음과 같이 가상화 기술을 통한 풀링, 셀프 서비스, 개방성, 상호운용성 등의 기능을 통해 구현된다.