하드웨어 가상화

**하드웨어 가상화**(Hardware virtualization)는 컴퓨터를 완전한 하드웨어 플랫폼으로, 구성 요소의 특정 논리적 추상화로, 또는 다양한 운영체제를 실행하는 데 필요한 기능만을 가상화하는 것이다. 가상화는 호스트 아키텍처의 하드웨어 환경을 에뮬레이션하여 여러 운영체제가 수정되지 않고 독립적으로 실행될 수 있도록 한다. 초기에는 가상화를 제어하는 소프트웨어를 "제어 프로그램"이라고 불렀지만, 시간이 지나면서 "하이퍼바이저" 또는 "가상 머신 모니터"라는 용어가 선호되었다.

## 개념
"가상화"라는 용어는 1960년대에 가상 머신 (때로는 "유사 머신"이라고도 불림)을 지칭하기 위해 만들어졌는데, 이 용어 자체는 실험적인 IBM M44/44X 시스템에서 유래했다. 가상 머신의 생성 및 관리는 최근에는 "플랫폼 가상화" 또는 "서버 가상화"라고도 불린다.

플랫폼 가상화는 호스트 소프트웨어(제어 프로그램)에 의해 주어진 하드웨어 플랫폼에서 수행되며, 이는 게스트 소프트웨어를 위한 시뮬레이션된 컴퓨터 환경인 가상 머신 (VM)을 생성한다. 게스트 소프트웨어는 사용자 애플리케이션에만 국한되지 않는다. 많은 호스트는 완전한 운영체제의 실행을 허용한다. 게스트 소프트웨어는 몇 가지 주목할 만한 주의 사항이 있지만, 마치 물리적 하드웨어에서 직접 실행되는 것처럼 실행된다. 물리적 시스템 리소스(예: 네트워크 액세스, 디스플레이, 키보드 및 디스크 스토리지)에 대한 액세스는 일반적으로 호스트 프로세서 및 시스템 메모리보다 더 제한적인 수준에서 관리된다. 게스트는 종종 특정 주변기기에 대한 액세스가 제한되거나, 가상화 호스트가 구현하는 하드웨어 액세스 정책에 따라 장치 기본 기능의 하위 집합으로 제한될 수 있다.

가상화는 하이퍼바이저를 실행하는 데 필요한 리소스 측면과 물리적 머신에서 네이티브로 실행하는 것과 비교하여 가상 머신의 성능 저하 측면에서 모두 성능 저하를 초래하는 경우가 많다.

## 하드웨어 가상화의 이유
* 서버 통합의 경우, 많은 소규모 물리 서버를 하나의 더 큰 물리 서버로 대체하여 CPU 및 하드 드라이브와 같은 더 많은 (비용이 많이 드는) 하드웨어 리소스의 필요성을 줄일 수 있다. 가상 환경에서는 하드웨어가 통합되지만, 일반적으로 운영체제는 통합되지 않는다. 대신, 물리 서버에서 실행되는 각 운영체제는 가상 머신 내에서 실행되는 별개의 운영체제로 변환된다. 따라서 대형 서버는 이러한 많은 "게스트" 가상 머신을 "호스트"할 수 있다. 이를 Physical-to-Virtual (P2V) 변환이라고 한다. 2000년대 초반 서버의 평균 활용률은 5~15%에 불과했지만, 가상화의 도입으로 필요한 서버 수를 줄이기 위해 이 수치가 증가하기 시작했다.
* 장비 유지보수와 관련된 장비 및 인력 비용을 절감하는 것 외에도, 서버 통합은 에너지 소비 및 기술의 환경-생태학적 영역에서의 글로벌 발자국을 줄이는 추가적인 이점을 가질 수 있다. 예를 들어, 일반적인 서버는 425&nbsp;W로 작동하며, VMware는 하드웨어 절감률을 최대 15:1로 추정한다.
* 가상 머신(VM)은 물리 머신보다 원격지에서 더 쉽게 제어 및 검사할 수 있으며, VM의 구성이 더 유연하다. 이는 커널 개발 및 운영체제 과정을 가르치는 데 매우 유용하며, 최신 하드웨어를 지원하지 않는 레거시 운영체제를 실행하는 것도 포함한다.
* 새로운 가상 머신은 사전 하드웨어 구매 없이 필요에 따라 프로비저닝될 수 있다.
* 가상 머신은 필요에 따라 한 물리 머신에서 다른 물리 머신으로 쉽게 이동될 수 있다. 예를 들어, 고객에게 가는 영업사원은 물리 컴퓨터를 운반할 필요 없이 데모 소프트웨어가 있는 가상 머신을 노트북에 복사할 수 있다. 마찬가지로, 가상 머신 내의 오류는 호스트 시스템에 해를 끼치지 않으므로 노트북에서 운영체제가 충돌할 위험이 없다.
* 이러한 이동 용이성 덕분에 가상 머신은 리퍼비시된 고장난 에너지원의 영향에 대한 우려 없이 재난 복구 시나리오에서 쉽게 사용될 수 있다.

그러나 여러 VM이 동일한 물리 호스트에서 동시에 실행될 때, 각 VM은 다른 VM에 의해 시스템에 부과되는 작업 부하에 크게 의존하는 다양하고 불안정한 성능을 보일 수 있다. 이 문제는 가상 머신 간 시간적 격리를 위한 적절한 설치 기술로 해결할 수 있다.

플랫폼 가상화에는 여러 가지 접근 방식이 있다.

가상화 사용 사례의 예:
* 호스트 운영체제에서 지원되지 않는 하나 이상의 애플리케이션 실행: 필요한 게스트 운영체제를 실행하는 가상 머신은 호스트 운영체제를 변경하지 않고도 원하는 애플리케이션을 실행할 수 있다.
* 대체 운영체제 평가: 호스트 운영체제를 변경하지 않고도 VM 내에서 새 운영체제를 실행할 수 있다.
* 서버 가상화: 물리 서버의 하드웨어 리소스를 더 완벽하게 활용하기 위해 단일 물리 서버에서 여러 가상 서버를 실행할 수 있다.
* 특정 환경 복제: 사용되는 가상화 소프트웨어에 따라 가상 머신을 복제하여 여러 호스트에 설치하거나 이전에 백업된 시스템 상태로 복원할 수 있다.
* 보호된 환경 생성: 악성 소프트웨어를 연구하거나 오작동하는 소프트웨어를 설치할 때 발생할 수 있는 것처럼, VM에서 실행되는 게스트 운영체제가 복구 비용이 많이 드는 방식으로 손상된 경우, VM은 호스트 시스템에 해를 끼치지 않고 단순히 폐기될 수 있으며, 게스트를 재부팅할 때 깨끗한 사본이 사용된다.

## 완전 가상화

섬네일|완전 가상화의 논리적 다이어그램.

완전 가상화에서 가상 머신은 동일한 명령어 집합용으로 설계된 수정되지 않은 "게스트" 운영체제가 독립적으로 실행될 수 있도록 충분한 하드웨어를 시뮬레이션한다. 이 접근 방식은 1966년 IBM CP-40 및 CP-67 (VM 계열의 전신)에서 처음 시도되었다.

## 반가상화

반가상화에서 가상 머신은 반드시 하드웨어를 시뮬레이션하지는 않고, 대신 (또는 추가적으로) "게스트" 운영체제를 수정해야만 사용할 수 있는 특별한 API를 제공한다. 이를 위해서는 "게스트" 운영체제의 소스 코드가 사용 가능해야 한다. 소스 코드를 사용할 수 있다면, 민감한 명령어를 VMM API 호출(예: "cli"를 "vm_handle_cli()")로 대체한 다음, 운영체제를 재컴파일하고 새 바이너리를 사용하는 것으로 충분하다. 하이퍼바이저에 대한 이 시스템 호출은 TRANGO 및 Xen에서 "하이퍼콜"이라고 불린다. 이는 VM 하의 IBM CMS에서 DIAG("진단") 하드웨어 명령어를 통해 구현된다. (이것이 하이퍼바이저라는 용어의 기원이었다).

## 하드웨어 지원 가상화

하드웨어 지원 가상화에서는 하드웨어가 가상 머신 모니터를 구축하고 게스트 운영체제가 독립적으로 실행될 수 있도록 하는 아키텍처 지원을 제공한다. 이는 완전 가상화 또는 반가상화를 지원하는 데 사용될 수 있다. 하드웨어 지원 가상화는 1980년 IBM 308X 프로세서에서 SIE(Start Interpretive Execution) 명령어와 함께 처음 도입되었다.

2005년과 2006년에는 인텔과 AMD가 자사 플랫폼에서 실행되는 가상화를 지원하기 위해 추가 하드웨어를 개발했다. 선 마이크로시스템즈(현재 오라클 코퍼레이션)는 2005년 UltraSPARC T-Series 프로세서에 유사한 기능을 추가했다.

2006년에는 1세대 32비트 및 64비트 x86 하드웨어 지원이 소프트웨어 가상화에 비해 성능 이점을 거의 제공하지 않는 것으로 밝혀졌다.

## 운영체제 수준 가상화

운영체제 수준 가상화에서는 물리 서버가 운영체제 수준에서 가상화되어 단일 물리 서버에서 여러 개의 격리되고 안전한 가상화된 서버를 실행할 수 있다. "게스트" 운영체제 환경은 호스트 시스템과 동일한 실행 중인 운영체제 인스턴스를 공유한다. 따라서 동일한 운영체제 커널도 "게스트" 환경을 구현하는 데 사용되며, 주어진 "게스트" 환경에서 실행되는 애플리케이션은 이를 독립형 시스템으로 간주한다.

## 하드웨어 가상화 재난 복구
재난 복구 (DR) 계획은 하드웨어 가상화 플랫폼에 대한 좋은 관행으로 자주 간주된다. 가상화 환경의 DR은 정상적인 비즈니스 운영을 방해하는 광범위한 상황에서 높은 가용성을 보장할 수 있다. 하드웨어 가상화 플랫폼의 지속적인 운영이 중요한 상황에서, 재난 복구 계획은 하드웨어 성능 및 유지보수 요구 사항을 충족할 수 있다. 하드웨어 가상화 재난 복구 계획은 아래 설명된 방법을 포함한 다양한 방법을 통해 하드웨어 및 소프트웨어 보호를 모두 포함한다.

; 소프트웨어 데이터 장기 보관을 위한 테이프 백업
: 이 일반적인 방법은 데이터를 외부 저장소에 저장하는 데 사용될 수 있지만, 데이터 복구는 어렵고 시간이 많이 걸릴 수 있다. 테이프 백업 데이터는 저장된 최신 복사본만큼만 유효하다. 테이프 백업 방법은 백업 장치와 지속적인 저장 재료를 필요로 한다.
; 전체 파일 및 애플리케이션 복제
: 이 방법의 구현은 일반적으로 동일한 사이트에서 애플리케이션 및 데이터 파일 저장소 복제를 위한 제어 소프트웨어 및 저장 용량을 필요로 한다. 데이터는 다른 디스크 파티션 또는 별도의 디스크 장치에 복제되며 대부분의 서버에 대해 예약된 활동일 수 있으며, 데이터베이스 유형 애플리케이션에 더 많이 구현된다.
; 하드웨어 및 소프트웨어 이중화
: 이 방법은 두 개의 다른 지리적 영역에서 중복 하드웨어 및 소프트웨어 복제를 제공함으로써 하드웨어 가상화 솔루션에 대한 최고 수준의 재난 복구 보호를 보장한다.

## 같이 보기

* 응용 프로그램 가상화
* 플랫폼 가상화 소프트웨어 비교
* 데스크톱 가상화
* 동적 인프라스트럭처
* 하드웨어 에뮬레이션
* 하이퍼재킹
* 명령어 집합 시뮬레이터
* 포펙과 골드버그의 가상화 요구
* 물리화
* 씬 프로비저닝
* 가상 어플라이언스
* 집계를 위한 가상화
* 워크스페이스 가상화

## 각주

## 외부 링크
* 가상화 소개 , Amit Singh
* Xen and the Art of Virtualization, ACM, 2003, 저자 그룹
* 리눅스 가상화 소프트웨어
*