가상화의 정의
컴퓨팅 자원의 물리적 특징을 숨김으로써 이들 자원을 사용하는 여러 시스템, 애플리케이션 또는 최종 사용자로 하여금 다양한 편의성을 취하도록 하는 기술. 가상화는 단일 물리 자원(예컨대 단일 서버, OS, 응용 또는 스토리지 장치)이 여러 개의 논리적 자원으로, 또는 그 역으로 보이게 하는 것도 포함된다.
가상화의 특징
•
투명성 : 가상화의 핵심. 가상화된 물리적 실체의 내부의 변화가 가상체의 외부 모습에 영향을 미치지 않는다(internal invisiblity).
공급자와 소비자가 관계된 디자인 패턴
: 가상화가 취하는 대부분의 형식. 소비자와 공급자 사이에가상화가 위치하여 이들 간 인터페이스의 역할을 한다. 소비자와 공급자 간에는 실질적으로 1:N과 N:1을 포함하는 N:N 관계가 가능하지만, 가상화는 상대방이 다수임을 인지할 필요성을 제거한다(사용 복잡성 제거).
가상화의 종류
•
가상화는 크게 전체 컴퓨터를 흉내내는(simulate) 플랫폼 가상화와 단순화된(simplified), 결합된(combined), 파편화된(fragmented) 자원을 흉내내는 자원 가상화으로 나뉜다.
플랫폼 가상화(platform virtualization)
모의 컴퓨팅 환경을 생성하는 virtual machine(host S/W 또는 control program)이 핵심이다. virtual machine을 운용하는 H/W 플랫폼은 단일 또는 여러 H/W가 결합된 형태가 가능하다.
1.
하드웨어 에뮬레이션(emulation)
이 virtual machine는 완전한 H/W를 흉내내어, 수정되지 않은 guest(virtual machine 위에서 동작하는 S/W) OS가 다른 CPU 위에서 동작 가능하도록 한다. 에뮬레이션의 가장 큰 문제는 극도로 느려질 수 있다는 점이다. 모든 명령어들이 기반 하드웨어에 시뮬레이트 되어야 하기 때문에, 100배 정도 느려지는 것은 다반사이다.
2.
Native virtualization 또는 full virtualization
이 모델은 게스트(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
OS 수준에서 물리적 서버를 가상화하여, 다수의 고립되고 안전한 가상 서버가 단일 물리 서버에서 동작 가능하다. guest OS 환경은 호스트 시스템과 동일한 OS를 공유하여, 동일 OS 커널이 guest 환경을 구현하는 데 사용하기도 한다. OS 커널을 수정해야 하지만 성능이 우수하다는 장점이 있다.
6.
Application Virtualization
데스크톱 또는 서버 응용을 적당한 virtual machine 내에서 지역 자원을 사용하여 실행한다. 가상 응용은 레지스트리, 파일, 환경 변수 등으로 이루어진 몇몇 컴포넌트를 포함한 작은 가상 환경 내에서 실행된다. Java Virtual machine은 이의 대표적인 예이다.
자원 가상화(resource virtualization)
자원 집적(aggregation), 확장(spanning), 연결(concatenation)을 통해 개개의 자원이 결합하여 더 큰 자원 또는 자원 풀(pool)로 묶는 것. 다음은 예이다.
1.
Virtual Memory : 각 응용마다 가상 주소 공간을 제공하여 물리적, 비 연속적 메모리의 한계를 극복한다.
2.
RAID 또는 volume Manager : 여러 디스크를 하나의 논리 디스크로 결합한다.
3.
스토리지 가상화 : 물리적 스토리지에서 논리적 스토리로 추상화하는 프로세스를 일컬으며, SAN에서 보통 많이 사용된다. 물리적 스토리지 자원이 스토리지 풀(storage pool)로 합쳐져 논리적 스토리지가 생성된다.
4.
Channel bonding과 네트워크 장비는 고대역폭 단일 링크를 결합된 여러 링크를 사용한다.
5.
VPN(Virtual Private Network), NAT(Network Address Translation), 또는 유사 네트워크 기술 :단일 서브네트워크 또는 여러 서브네트워크를 가로질러 가상 네트워크 네임스페이스를 생성한다.
6.
Computer cluster, grid computing, virtual server : 자원 가상화를 통해 여러 분산된 컴퓨터를 결합하여 하나의 거대한 메타컴퓨터를 생성해낸다.
7.
Partitioning(스토리지 네트워크의 경우 zoning이라 부른다) : (보통 매우 큰) 단일 자원을 필요에 따라 다수의 작고도 편리한 자원으로 분할한다.
8.
Encapsulation : 자원 내부의 복잡한 내용을 숨겨 동일 형식의 단순화된 인터페이스를 만들어낸다.
가상화 제품 진화 단계
•
IT 자산 절감에서 IT 운영 비용 절감을 위한 투자로 나아감
•
1세대(다이나믹한 서버 통합) -> 2세대(이동성 강조) ->2.5세대(하드웨어/DR/백업/워크로드 밸런싱) -> 3세대(자동화/서비스 지향적/정책기반)
가상화의 활용
•
서버 통합(Server Consolidation) : Physical-to-Virtual 또는 P2V 변형(transformation)이라고도 부름
•
재해 복구(Disaster recovery) : virtual machine은 물리 서버를 위한 'hot standby' 환경으로 사용된다.
•
테스트 및 훈련 용도(test and training) : H/W 가상화를 통해 root 권한 부여가 가능함으로, 커널 개발이나 OS 훈련 코스에 유용하다.
•
이동가능 응용 프로그램(portable application) : Hard Disk에만 설치 가능한 응용 프로그램을 USB 드라이브 등에 설치 가능하도록 한다.
•
이동가능 웍스페이스(Portable workspace) : USB 드라이브 등에 자신만의 (애플리케이션, 세팅 등이 모인)웍스페이스를 구성하여, 여러 물리적 PC에서 동일한 환경으로 컴퓨팅이 가능하다.