가상화
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
가상화는 하나의 하드웨어 플랫폼에서 여러 운영 체제나 애플리케이션을 실행할 수 있게 해주는 기술이다. 1960년대 IBM 메인프레임 시스템에서 처음 등장하여, 하드웨어 자원 공유 및 효율적인 사용을 목표로 개발되었다. 가상화 기술은 x86 플랫폼으로 확장되면서 다시 주목받았으며, 서버 통합, 재해 복구, 개발 및 테스트 등 다양한 분야에 활용된다. 가상화에는 플랫폼 가상화, 리소스 가상화, 데스크톱 가상화 등 다양한 종류가 있으며, 하드웨어 가상화, 반가상화, 운영 체제 수준 가상화 등이 있다. 가상화는 하드웨어 리소스 활용도 향상, 관리 작업의 중앙 집중화 등의 장점을 제공하지만, 운영 체제 라이선스 비용이 발생할 수 있다는 단점도 있다.
더 읽어볼만한 페이지
- 가상 머신 - V8 (자바스크립트 엔진)
V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 자바스크립트 코드 실행 속도 향상을 위해 여러 컴파일러를 거쳐 크롬, 노드.js 등에서 활용된다. - 가상 머신 - X86 가상화
X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다. - 가상화 소프트웨어 - X86 가상화
X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다. - 가상화 소프트웨어 - VM웨어 v스피어
VM웨어 v스피어는 VM웨어에서 개발한 서버 가상화 플랫폼으로, 다양한 운영체제 지원, 가상 시스템 확장, vMotion 개선, 스토리지 관리 효율성 향상 등의 특징을 가지며 클라우드 환경 지원 강화 및 관리 효율성 증대에 초점을 맞추어 지속적으로 업데이트되고 있다.
가상화 |
---|
2. 역사
가상화의 개념은 1960년대 IBM 메인프레임 시스템에서 처음 등장했다. 당시에는 여러 사용자가 고가의 컴퓨터 자원을 공유하고 효율적으로 사용하기 위한 목적으로 가상 머신 기술이 개발되었다. "virtualization"이라는 용어는 하드웨어와 소프트웨어를 결합하는 가상 머신이 만들어진 때부터 사용되었다.
플랫폼 가상화는 주어진 하드웨어 플랫폼 위에서 제어 프로그램, 곧 ''호스트'' 소프트웨어를 통해 실행된다. 호스트 소프트웨어는 게스트 소프트웨어에 맞추어 ''가상 머신''이라는 시뮬레이트된 컴퓨터 환경을 만들어 낸다. 게스트 소프트웨어는 완전한 운영 체제라고 일컬으며, 독립된 하드웨어 플랫폼에 설치된 것처럼 실행된다. 일반적으로, 그러한 많은 가상 컴퓨터들은 하나의 단일 물리 컴퓨터 위에서 시뮬레이트되지만, 이들의 수는 호스트 하드웨어의 리소스에 제한을 받는다.
플랫폼 가상화에는 하드웨어 시뮬레이션이 얼마만큼 완전하게 이식이 되는가에 따라 몇 가지 접근 방식이 있다.
- 에뮬레이션 또는 시뮬레이션
- 네이티브 가상화, 완전 가상화
- 하드웨어 지원 가상화
- 부분 가상화
- 반가상화
- 운영 체제 수준의 가상화
- 응용 프로그램 가상화
가상화라는 용어는 컴퓨팅의 다양한 면에 적용되어 왔으며, 캡슐화를 통해 "기술적 세부 사항을 숨기는" 공통된 목적을 가진다. 가상화는 접근을 다중화하거나, 서로 다른 물리적 위치에 있는 리소스를 통합하거나, 제어 시스템을 단순화하는 등, 근본적인 구현을 숨긴 외부 인터페이스를 생성한다.
"가상화"라는 용어는 추상화나 객체 지향 등의 용어와 마찬가지로 다양한 맥락에서 사용된다. 본 항목에서는 이를 주로 다음 두 가지로 분류하여 설명한다.
; 플랫폼 가상화
: 컴퓨터 전체의 시뮬레이션
; 리소스 가상화
: 리소스의 집합체나 부분 또는 단순화된 것의 시뮬레이션
가상화는 컴퓨터 외에도 제어 시스템과 같은 다른 분야에서도 중요한 개념으로 활용된다. 비즈니스 구조의 관점에서, 가상화는 기존의 사무실이나 점포를 갖춘 비즈니스에서 인터넷 등에서 비즈니스를 수행하는 방향으로 전환해 가는 것을 의미하기도 한다.
2. 1. 초기 역사 (1960년대 ~ 1970년대)
IBM M44/44X 시스템에서 처음 등장한 '''가상 머신'''은 CP-40 시절 "가짜 컴퓨터"(pseudo machine)라고 불렸다.가상화는 1967년 IBM CP-40 연구 시스템에서 처음 시연되었으며, 1967년부터 1972년까지 CP/CMS에서 오픈 소스를 통해 배포되었다. 1972년부터 IBM의 VM 제품군에서 재구현되었다.[3] 각 CP/CMS 사용자에게는 시뮬레이션된 독립형 컴퓨터가 제공되었다. 각 가상 머신은 기반 머신의 모든 기능을 갖추고 있었으며, 해당 사용자에게 가상 머신은 개인 시스템과 구별할 수 없었다. 이 시뮬레이션은 하드웨어의 ''운영 원리'' 매뉴얼을 기반으로 하여 포괄적이었다. 그 결과는 많은 사용자 간에 멀티플렉싱될 수 있는 단일 머신이었다.
하드웨어 지원 가상화는 1972년 IBM System/370에서 처음 등장했으며, 최초의 가상 머신 운영 체제인 VM/370과 함께 사용되었다. IBM은 1972년 System/370 시리즈에 가상 메모리 하드웨어를 추가했다.[3]
1970년대 후반에는 CAD와 같은 고해상도 컴퓨터 그래픽에 대한 수요가 증가하면서 메인프레임의 가상화가 어느 정도 주목을 받지 못했다.[3]
초기 x86 아키텍처 구현은 "고전적인 가상화"를 달성하기 위한 Popek and Goldberg 가상화 요구 사항을 충족하지 못했다.[3]
2. 2. x86 가상화의 발전 (2000년대 ~ 현재)
2000년대 들어 서버 가상화 기술이 x86 플랫폼으로 확장되면서 가상화 기술이 다시 주목받기 시작했다. 2005년, 인텔과 AMD는 각각 x86 아키텍처에 가상화 지원 기능을 추가한 프로세서를 출시했다. (인텔 VT-x, AMD-V) 이를 통해 서버 가상화뿐만 아니라 데스크톱 가상화, 응용 프로그램 가상화, 네트워크 가상화 등 다양한 가상화 기술이 등장하며 IT 인프라 전반에 걸쳐 활용되고 있다. 특히 클라우드 컴퓨팅의 확산과 함께 가상화 기술은 더욱 중요해지고 있다.3. 플랫폼 가상화
플랫폼 가상화는 주어진 하드웨어 플랫폼 위에서 제어 프로그램(호스트 소프트웨어)을 통해 실행된다. 호스트 소프트웨어는 게스트 소프트웨어에 맞추어 가상 머신이라는 시뮬레이트된 컴퓨터 환경을 만들어 낸다. 게스트 소프트웨어는 완전한 운영 체제라고 하며, 독립된 하드웨어 플랫폼에 설치된 것처럼 실행된다. 일반적으로, 여러 가상 컴퓨터들은 하나의 단일 물리 컴퓨터 위에서 시뮬레이트되지만, 가상 머신의 수는 호스트 하드웨어의 리소스에 의해 제한된다. 게스트 운영체제는 호스트 운영체제와 같을 필요는 없으며, 주변 기기(하드 디스크 드라이브, 네트워크 인터페이스 카드 등)에 대한 접근이 필요할 경우, 해당 기기와 게스트의 인터페이스를 지원해야 한다.[2]
플랫폼 가상화에는 하드웨어 시뮬레이션의 완전성에 따라 다음과 같은 접근 방식이 있다.
- 에뮬레이션 또는 시뮬레이션
- 네이티브 가상화, 완전 가상화
- 하드웨어 지원 가상화
- 부분 가상화
- 반가상화
- 운영 체제 수준의 가상화
- 응용 프로그램 가상화
3. 1. 하드웨어 가상화 (Hardware Virtualization)
'''하드웨어 가상화'''(또는 '''플랫폼 가상화''')는 하나 이상의 가상 머신에 컴퓨팅 자원을 모아 둔다. 가상 머신은 운영 체제가 있는 (물리적) 컴퓨터의 기능을 구현한다. 호스트 하드웨어에서 가상 머신을 만드는 소프트웨어 또는 펌웨어를 '''하이퍼바이저''' 또는 '''가상 머신 모니터'''라고 한다.[2]이러한 가상 머신에서 실행되는 소프트웨어는 기본 하드웨어 리소스와 분리된다. 예를 들어, 아치 리눅스를 실행하는 컴퓨터는 마이크로소프트 윈도우 운영 체제가 있는 컴퓨터처럼 보이는 가상 머신을 호스팅할 수 있으며, 윈도우 기반 소프트웨어는 가상 머신에서 실행될 수 있다.[5][6]
하드웨어 가상화의 유형
- '''완전 가상화''' – 게스트 운영 체제와 해당 앱을 포함한 소프트웨어 환경을 수정 없이 실행할 수 있도록 실제 하드웨어의 거의 완전한 가상화.
- '''반가상화''' – 게스트 앱은 별도의 시스템에서 실행되는 것처럼 자체 격리된 도메인에서 실행되지만 하드웨어 환경은 시뮬레이션되지 않는다. 게스트 프로그램은 이 환경에서 실행되도록 특별히 수정해야 한다.
- '''하이브리드 가상화''' – 주로 완전 가상화이지만 가상 머신 성능을 향상시키기 위해 반가상화 드라이버를 사용한다.
1960년대에 탄생한 "가상화"라는 용어는 하드웨어와 소프트웨어의 조합으로 실현된 가상 머신의 등장과 함께 사용되었다. 같은 시기에 자원 가상화인 가상 기억 장치도 등장했다. 가상 머신이라는 용어는 IBM M44/44X라는 실험기에서 처음 사용되었다. 그 이전에 IBM CP-40이 가상 머신을 구현했으며, 이때는 ''pseudo machines'' (의사 머신)이라고 불렸다. "가상화"이든 "가상 머신"이든, 그 의미는 시대와 함께 변화해 갔다.
플랫폼 가상화는 하드웨어 플랫폼에서 호스트 프로그램(제어 프로그램)이 의사 컴퓨터 환경을 생성하고, 게스트 소프트웨어에 "가상 머신"을 제공하는 것이다. 게스트 소프트웨어는 그 자체가 운영 체제인 경우가 일반적이며, 마치 독립된 하드웨어 플랫폼에 설치된 것처럼 작동한다. 단일 물리 머신에서 여러 가상 머신을 시뮬레이션할 수 있는 경우가 많으며, 가상 머신의 개수는 호스트인 하드웨어 자원에 의해 제한된다. 게스트 OS와 호스트 OS는 일반적으로 동일할 필요는 없다. 게스트 시스템은 특정 주변 기기(하드 디스크 드라이브나 네트워크 카드)에 대한 접근이 필요한 경우가 많으며, 그 경우 해당 기기와 게스트의 인터페이스를 제공해야 한다.
플랫폼 가상화의 방법
- 에뮬레이터 또는 시뮬레이터: 가상 머신에 의해 하드웨어 전체를 의사적으로 재현한다. 완전히 다른 아키텍처의 하드웨어를 위한 게스트 OS를 수정하지 않고 동작시킬 수 있다. 이는 새로운 CPU 등의 하드웨어 개발이 완료되기 전에 소프트웨어를 병행하여 개발하는 방법으로 사용되어 왔다. 구체적인 예로는 Bochs, PearPC, Virtual PC의 PowerPC 버전, QEMU, Hercules emulator(IBM의 메인프레임 에뮬레이터) 등이 있다. 에뮬레이션을 위한 기법은 다양하며, 유한 오토마타를 사용한 기법부터 가상화 플랫폼에서의 동적 재컴파일 기법까지 있다.
- 네이티브 가상화: 같은 아키텍처의 플랫폼에서 게스트 OS를 격리된 상태로, 수정 없이 동작시키는 가상 머신. 이 방법은 IBM CP-40 등이 기원이라고 여겨진다. 메인프레임 이외의 영역에서는 Parallels Workstation, Parallels Desktop, VirtualBox, Virtual PC, VMware Workstation, VMware Server, QEMU, Adeos, Mac-on-Linux, VirtualLogix VLX Virtualizer for VT 등이 있다.
- 하드웨어에 의한 가상화: 게스트 OS에 하드웨어 자원을 할당하고, 격리된 상태로 동작할 수 있도록 하는 가상 머신. 2005년과 2006년, 인텔과 AMD는 가상화를 지원하는 추가 하드웨어를 제공했다. 예를 들어, VMware Fusion, VMware Workstation, Parallels Desktop, Parallels Workstation 등이 있다.
- 부분 가상화: 특히 주소 공간 등의 하드웨어 환경에 한정하여, 복수의 실체가 있는 것처럼 시뮬레이션하는 가상 머신. 이른바 가상 기억 장치이다. 프로세스가 동시 병행해서 동작할 수 있도록 하지만, 게스트 OS가 동작할 수는 없다. 일반적으로 가상 머신으로 간주되지는 않지만, 가상화의 역사상 중요하며, CTSS나 IBM M44/44X 등에서 사용되었고, MVS로 계승되었다. 그 후의 Microsoft Windows도 Linux도 기본적으로 이 방법을 채용하고 있다.
- 준 가상화: 하드웨어를 의사화한다기보다는, 게스트 OS에 수정을 가하여 이용 가능하게 되는 특수한 API를 제공하는 가상 머신. 이러한 하이퍼바이저의 시스템 콜을 TRANGO나 Xen에서는 "하이퍼콜; hypercall"이라고 부른다. Citrix XenServer, VMware ESX Server, Win4Lin 9x, 썬 마이크로시스템즈의 논리적 도메인, VirtualLogix의 VLX Virtualizer, TRANGO 등이 있다.
- OS 레벨의 가상화: 물리 서버를 OS 레벨에서 가상화하여, 복수의 가상 서버를 단일 물리 서버에서 동작시킨다. 게스트 OS와 호스트 OS는 동일하다. 어떤 게스트 환경에서 동작하는 애플리케이션에서 보면, 독립된 시스템에서 동작하는 것처럼 보인다. Linux-VServer, Virtuozzo, OpenVZ, LXC (Linux Containers), AIX 워크로드 파티션 (WPAR), Solaris Containers, FreeBSD jail 등이 있다.
- 컨테이너 가상화: 컨테이너 가상화란, 애플리케이션의 기반이 되는 동작 환경을 가상화하는 기술이다.
- 애플리케이션 가상화: 보안, 신뢰성, 이식성을 강화할 목적으로, 애플리케이션을 가상 머신으로 캡슐화된 환경에서 격리하여 실행하는 것. 가상 머신은 애플리케이션의 실행에 최소한 필요한 요소를 갖추고 있으며, OS와 애플리케이션 사이의 층으로 작동한다. 예를 들어, Java 가상 머신, Microsoft Application Virtualization, Altiris, Citrix XenApp 등이 있다. 앞서 언급한 각종 가상화와는 다른 방법이며, Smalltalk, Forth, Tcl, P 코드 머신 등의 인터프리터 지향 언어의 흐름을 잇는 것이다.
가상화 기술의 진전에 의해, 애플리케이션 가상화와 애플리케이션 스트리밍과 같은 새로운 기법이 등장했다.
3. 1. 1. 완전 가상화 (Full Virtualization)
전체 가상화(Full Virtualization)는 물리적 컴퓨터 자원을 하나 이상의 인스턴스로 풀링하는 기술이다. 각 인스턴스는 가상 환경에서 실행되며, 원시 하드웨어에서 실행 가능한 모든 소프트웨어나 운영 체제를 가상 머신에서 실행할 수 있다.[1] 일반적으로 두 가지 일반적인 전체 가상화 기술이 사용된다. (a) 바이너리 번역 및 (b) 하드웨어 지원 전체 가상화.[1]
전체 가상화는 전체 명령어 집합, 입출력 연산, 인터럽트, 메모리 액세스, 베어 머신에서 실행되고 가상 머신에서 실행되도록 설계된 소프트웨어에서 사용되는 기타 모든 요소를 포함하여 하드웨어의 모든 중요한 기능을 여러 가상 머신 중 하나에 반영해야 한다.
이 접근 방식은 1966년 IBM의 CP-40 및 CP-67에서 처음 사용되었으며, 이는 VM 제품군의 전신이다.[1]
x86 서버당 컴퓨팅 용량 증가(특히 최신 네트워크의 대역폭 증가)는 가상화 기술을 기반으로 하는 데이터 센터 기반 컴퓨팅에 대한 관심을 다시 불러일으켰다. 주요 동기는 서버 통합 가능성이었다. 가상화를 통해 단일 서버가 여러 개의 활용되지 않은 전용 서버의 컴퓨팅 성능을 비용 효율적으로 통합할 수 있었다.
초기 x86 아키텍처 구현은 "고전적인 가상화"를 달성하기 위한 Popek and Goldberg 가상화 요구 사항을 충족하지 못했다. 이로 인해 이 유형의 프로세서에 대한 가상 머신 모니터를 구현하기가 어려웠다. 이러한 아키텍처적 제한 사항을 보완하기 위해 설계자들은 '''전체 가상화''' 또는 반가상화를 통해 x86 아키텍처를 가상화했다.[4]
2005년과 2006년에 인텔과 AMD는 (각각 독립적으로) x86 아키텍처에 대한 새로운 프로세서 확장을 만들었는데, 이를 각각 인텔 VT-x 및 AMD-V라고 한다.
;바이너리 번역 (Binary Translation)
:바이너리 번역은 "가상 머신을 관통하는" 명령어를 다른 가상 머신 안전 시퀀스의 명령어 집합으로 자동 수정한다.[7] 이진 변환에서, 명령어는 에뮬레이션된 하드웨어 아키텍처에 맞게 번역된다.[1]
;하드웨어 지원 전체 가상화 (Hardware Assisted Full Virtualization)
:하드웨어 지원 가상화를 사용하면 게스트 운영 체제를 거의 수정하지 않고 격리된 상태로 실행할 수 있다. 하드웨어 지원 가상화(젠(Xen)은 하드웨어 가상 머신(HVM)이라고 부르며, 버추얼 아이언(Virtual Iron)은 네이티브 가상화라고 부른다)는 호스트 프로세서의 지원을 받아 하드웨어 가상화의 전반적인 효율성을 향상시키는 방법이다. 전체 가상화는 완전한 하드웨어 환경 또는 수정되지 않은 게스트 운영 체제가 (호스트 머신과 동일한 명령어 집합을 사용) 완벽하게 격리된 상태로 효과적으로 실행되는 가상 머신을 에뮬레이션하는 데 사용된다.
:하드웨어는 다른 하드웨어를 모방하는 반면, 하드웨어 지원 가상화에서 하이퍼바이저(소프트웨어)는 특정 컴퓨터 하드웨어 또는 전체 컴퓨터를 모방한다. 또한, 하이퍼바이저는 에뮬레이터와 다르다. 둘 다 하드웨어를 모방하는 컴퓨터 프로그램이지만, 사용되는 언어의 영역이 다르다.[8]
:하드웨어 지원 가상화는 1980년 IBM 308X 프로세서에 Start Interpretive Execution (SIE) 명령어로 처음 도입되었다.[9] 이는 2005년, 2006년, 2010년에 각각 x86 프로세서 (인텔 VT-x, AMD-V 또는 VIA VT)에 추가되었다.[10]
:IBM은 AIX, 리눅스 및 IBM i용 IBM 파워 시스템즈 하드웨어와 IBM Z 메인프레임 컴퓨터에 하드웨어 가상화를 제공한다. IBM은 특정 형태의 하드웨어 가상화를 "논리적 파티션" 또는 더 일반적으로 LPAR이라고 부른다.
:하드웨어 지원 가상화는 게스트 운영 체제에서 필요한 변경 사항을 줄여(이상적으로는 제거) 반가상화의 유지 관리 오버헤드를 줄인다. 또한 더 나은 성능을 얻는 것이 훨씬 더 쉽다.
3. 1. 2. 반가상화 (Paravirtualization)
반가상화(Paravirtualization)는 가상 머신에 기본 하드웨어-소프트웨어 인터페이스와 유사하지만 동일하지 않은 소프트웨어 인터페이스를 제공하는 가상화 기술이다. 반가상화는 게스트 운영 체제가 하이퍼바이저와 통신함으로써 완전 가상화에 비해 성능과 효율성을 향상시킨다.[13] 게스트 운영 체제가 하이퍼바이저에 의도를 나타낼 수 있도록 함으로써, 각 운영 체제는 가상 머신에서 실행될 때 더 나은 성능을 얻기 위해 협력할 수 있다.수정된 인터페이스의 의도는 가상화되지 않은 환경에 비해 가상 환경에서 실행하기가 실질적으로 더 어려운 작업을 수행하는 데 소요되는 게스트의 실행 시간을 줄이는 것이다. 반가상화는 게스트와 호스트가 이러한 작업을 요청하고 승인할 수 있도록 특별히 정의된 '훅'을 제공하며, 그렇지 않으면 가상 도메인에서 실행되어 성능이 저하될 수 있다. 성공적인 반가상화 플랫폼을 통해 가상 머신 모니터(VMM)를 더 간단하게 만들 수 있고(중요한 작업의 실행을 가상 도메인에서 호스트 도메인으로 재배치함으로써), 가상 게스트 내에서 기계 실행의 전반적인 성능 저하를 줄일 수 있다.
반가상화는 게스트 운영 체제가 파라-API에 대해 명시적으로 포팅되어야 한다. 반가상화를 인식하지 못하는 기존 OS 배포판은 반가상화 VMM 위에서 실행될 수 없다. 그러나 운영 체제를 수정할 수 없는 경우에도 반가상화의 상당한 성능 이점을 가능하게 하는 구성 요소가 있을 수 있다. 예를 들어, Xen Windows GPLPV 프로젝트는 Xen 하이퍼바이저에서 실행되는 마이크로소프트 윈도우 가상 게스트에 설치하도록 고안된 반가상화 인식 장치 드라이버 키트를 제공한다.[11] 이러한 응용 프로그램은 준가상 머신 인터페이스 환경을 통해 접근할 수 있는 경향이 있다. 이를 통해 여러 암호화 알고리즘 모델에서 런타임 모드 호환성이 보장되어 준가상화 프레임워크 내에서 원활한 통합이 가능하게 된다.[12]
"반가상화"라는 용어는 처음에는 데날리 가상 머신 관리자와 관련하여 연구 문헌에서 사용되었다.[13] 이 용어는 또한 젠, L4, TRANGO, VMware, 윈드리버, XtratuM 하이퍼바이저를 설명하는 데에도 사용된다. 이러한 모든 프로젝트는 실제 x86 명령어 집합의 가상화하기 어려운 부분을 구현하지 않는 가상 머신을 구현하여 x86 하드웨어에서 고성능 가상 머신을 지원하기 위해 반가상화 기술을 사용하거나 사용할 수 있다.[14]
2005년, VMware는 게스트 운영 체제와 하이퍼바이저 간의 통신 메커니즘으로 가상 머신 인터페이스(VMI)라는 반가상화 인터페이스를 제안했다. 이 인터페이스는 운영 체제의 단일 바이너리 버전이 네이티브 하드웨어 또는 반가상화 모드의 하이퍼바이저에서 실행될 수 있도록 하는 투명한 반가상화를 가능하게 했다.
리눅스에서 반가상화 지원이 처음 나타난 것은 2002년 ppc64 포트가 병합되면서였으며,[15] 이는 IBM pSeries(RS/6000) 및 iSeries(AS/400) 하드웨어에서 반가상화 게스트로 리눅스를 실행하는 것을 지원했다.
2006년 매사추세츠주 보스턴에서 열린 USENIX 컨퍼런스에서, 여러 리눅스 개발 업체(IBM, VMware, Xen, Red Hat 등)는 Xen 그룹에서 처음 개발한 "paravirt-ops"라는 대체 형태의 반가상화에 대해 협력했다.[16] paravirt-ops 코드(종종 pv-ops로 축약됨)는 2.6.23 버전부터 주류 리눅스 커널에 포함되었으며, 하이퍼바이저와 게스트 커널 간의 하이퍼바이저 독립적인 인터페이스를 제공한다. pv-ops 게스트 커널에 대한 배포 지원은 Ubuntu 7.04 및 RedHat 9부터 시작되었고, 2.6.24 또는 이후 커널을 기반으로 하는 Xen 하이퍼바이저는 pv-ops 게스트를 지원하며, VMware의 Workstation 제품은 버전 6부터 지원한다.[17]
3. 1. 3. 하드웨어 지원 가상화 (Hardware Assisted Virtualization)
하드웨어 지원 가상화(또는 ''가속 가상화'', 젠(Xen)은 하드웨어 가상 머신(HVM)이라고 부르며, 버추얼 아이언(Virtual Iron)은 네이티브 가상화라고 부른다'')는 호스트 프로세서의 지원을 받아 하드웨어 가상화의 전반적인 효율성을 향상시키는 방법이다. 전체 가상화는 완전한 하드웨어 환경 또는 수정되지 않은 게스트 운영 체제가 (호스트 머신과 동일한 명령어 집합을 사용) 완벽하게 격리된 상태로 효과적으로 실행되는 가상 머신을 에뮬레이션하는 데 사용된다.하드웨어 지원 가상화는 1980년 IBM 308X 프로세서에 Start Interpretive Execution (SIE) 명령어로 처음 도입되었다.[9] 이는 2005년, 2006년, 2010년에 각각 x86 프로세서 (인텔 VT-x, AMD-V 또는 VIA VT)에 추가되었다.[10]
IBM은 AIX, 리눅스 및 IBM i용 IBM 파워 시스템즈 하드웨어와 IBM Z 메인프레임 컴퓨터에 하드웨어 가상화를 제공한다. IBM은 특정 형태의 하드웨어 가상화를 "논리적 파티션" 또는 더 일반적으로 LPAR이라고 부른다.
하드웨어 지원 가상화는 게스트 운영 체제에서 필요한 변경 사항을 줄여(이상적으로는 제거) 반가상화의 유지 관리 오버헤드를 줄인다. 또한 더 나은 성능을 얻는 것이 훨씬 더 쉽다.
2005년과 2006년에 인텔과 AMD는 (각각 독립적으로) x86 아키텍처에 대한 새로운 프로세서 확장을 만들었는데, 이를 각각 인텔 VT-x 및 AMD-V라고 한다. Itanium 아키텍처에서 하드웨어 지원 가상화는 VT-i로 알려져 있다. 이러한 확장을 지원하는 최초의 x86 프로세서는 2005년 말, 2006년 초에 출시되었다.
- 2005년 11월 13일, 인텔은 VT-x를 지원하는 최초의 인텔 프로세서로 펜티엄 4(모델 662 및 672) 2종을 출시했다.
- 2006년 5월 23일, AMD는 이 기술을 지원하는 최초의 AMD 프로세서로 Athlon 64 ("Orleans"), Athlon 64 X2 ("Windsor") 및 Athlon 64 FX ("Windsor")를 출시했다.
3. 2. 운영 체제 수준 가상화 (Containerization)
운영 체제 수준 가상화는 컨테이너화라고도 하며, 커널이 여러 개의 격리된 사용자 공간 인스턴스의 존재를 허용하는 운영 체제 기능이다. 이러한 인스턴스를 컨테이너,[25] 파티션, 가상 환경(VE) 또는 감옥(FreeBSD 감옥 또는 chroot 감옥)이라고 하며, 컨테이너 내에서 실행되는 프로그램의 관점에서 볼 때 실제 컴퓨터처럼 보일 수 있다. 일반 운영 체제에서 실행되는 컴퓨터 프로그램은 해당 컴퓨터의 모든 리소스(연결된 장치, 파일 및 폴더, 네트워크 공유, CPU 성능, 정량화 가능한 하드웨어 기능)를 볼 수 있다. 그러나 컨테이너 내에서 실행되는 프로그램은 컨테이너의 내용과 컨테이너에 할당된 장치만 볼 수 있다.이는 커널이 컨테이너 간에 공유되므로 가상 머신이 표준화 및 확장성과 같은 많은 이점을 제공하는 동시에 더 적은 리소스를 사용한다.[26]
컨테이너화는 도커가 도입되면서 2014년에 두각을 나타내기 시작했다.[27][28]
4. 리소스 가상화
플랫폼 가상화의 기본 개념은 스토리지 볼륨, 네임스페이스, 네트워크 리소스와 같은 특정 시스템 리소스의 가상화로 확장되었다.
리소스 집합, 측정, 또는 연결은 각 구성요소를 더 큰 리소스나 리소스 더미로 결합한다.
- RAID와 논리 볼륨 관리는 여러 디스크 장치를 통합하여 하나의 큰 논리 디스크로 만든다.
- 채널 본딩은 여러 통신로(인터페이스)를 하나의 고처리량 링크로 사용하는 기술이다.
- 컴퓨터 클러스터나 그리드 컴퓨팅은 위에서 언급한 다양한 기술을 사용하여 여러 컴퓨터로 가상화된 큰 컴퓨터를 형성한다.
- 파티셔닝은 디스크나 네트워크 등의 단일 리소스를 분할하여 사용하기 쉬운 크기나 속도의 다수 리소스로 사용할 수 있게 한다.
- 데이터 가상화: 기본 데이터베이스 시스템, 구조 및 스토리지와 독립적인 추상 계층으로서의 데이터 표현
- 데이터베이스 가상화: 전체 애플리케이션 스택에서 스토리지와 애플리케이션 계층 사이에 있는 데이터베이스 계층 분리
4. 1. 스토리지 가상화
스토리지 가상화는 논리 스토리지를 물리적 스토리지로부터 완전히 추상화하는 과정이다.[29] 스토리지 영역 네트워크(SAN)에서 자주 사용되는 기술로, 물리적 스토리지 리소스를 하나의 풀로 모아 거기서 논리 스토리지를 생성한다. 물리적 스토리지 장치는 네트워크상에 분산 배치될 수 있지만, 사용자 입장에서 보면 단일 스토리지로 보이며, 중앙 관리가 가능하다.[29]- 분산 파일 시스템: 컴퓨터 네트워크를 통해 공유하는 여러 호스트에서 파일에 접근할 수 있도록 하는 모든 파일 시스템을 말한다.
- 가상 파일 시스템: 보다 구체적인 파일 시스템 위에 있는 추상화 계층으로, 클라이언트 애플리케이션이 다양한 유형의 구체적인 파일 시스템에 균일한 방식으로 접근할 수 있도록 한다.
- 스토리지 하이퍼바이저: 스토리지 가상화를 관리하고 물리적 스토리지 자원을 하나 이상의 유연한 논리 스토리지 풀로 결합하는 소프트웨어이다.[29]
4. 2. 네트워크 가상화
네트워크 가상화는 네트워크 서브넷 내 또는 서브넷 간의 가상화된 네트워크 주소 공간을 생성한다.[29] 가상 사설망(VPN), 네트워크 주소 변환(NAT)과 같은 네트워크 기술이 여기에 해당한다.[29]4. 3. 메모리 가상화
메모리 가상화는 네트워크 시스템의 RAM 자원을 단일 메모리 풀로 집계하는 기술이다.[29] 가상 메모리는 각 애플리케이션에 별도의 가상 공간을 제공하여, 메모리나 보조 기억 장치의 불연속적인 리소스로부터 연속적인 가상 주소 공간을 사용할 수 있게 한다.5. 응용 분야
가상화 기술은 서버 통합, 재해 복구, 개발 및 테스트 환경 구축, 애플리케이션 배포 등 다양한 분야에서 활용되고 있다.
- 포터블 애플리케이션: USB 메모리 등의 휴대용 저장 매체에 애플리케이션을 설치하고 실행 가능하게 하는 기술이다. 예를 들어, 마이크로소프트 윈도우에서는 레지스트리 등의 문제로 인해 USB 메모리상의 애플리케이션을 직접 실행할 수 없는 문제가 있었는데, 가상화를 통해 이를 해결할 수 있다.
- 포터블 워크스페이스: 아이팟이나 USB 메모리 등의 대용량 저장 장치에 휴대용 작업 공간을 생성하는 가상화 기술이다.
- 애플리케이션 레벨: Thinstal은 휴대용 저장 매체에 설치된 애플리케이션을 드라이버 없이 실행할 수 있게 한다.
- OS 레벨: MojoPac, Ceedo, Aargo, U3는 휴대용 저장 매체에 애플리케이션을 설치하고 다른 PC에서 사용할 수 있게 한다.
- 머신 레벨: moka5, LivePC는 휴대용 저장 매체에 가상 머신 형태로 OS 및 애플리케이션을 포함한 완전한 소프트웨어 환경을 설치하여 임의의 머신에서 실행 가능하게 한다.
- 하드웨어 가상화 기술:
- x86 가상화 - 인텔의 Vanderpool 및 AMD의 Pacifica
- Sun UltraSPARC T1 하이퍼바이저
- IBM PowerVM (구칭 Advanced POWER 가상화)
5. 1. 서버 통합
다수의 물리 서버를 가상 머신을 통해 하나(또는 소수의) 서버로 통합한다.[36] 이를 통해 여러 물리적 서버를 가상 머신으로 통합하여 서버 자원 활용률을 높이고 관리 비용을 절감한다.5. 2. 재해 복구
가상 머신을 통해 일종의 "핫 스탠바이" 환경을 구축한다. 백업 이미지를 가상 머신에서 시작하여 현용계 워크로드를 해당 가상 머신으로 마이그레이션한다.[36]5. 3. 개발 및 테스트
커널 개발이나 운영체제(OS) 개발 시 가상 머신을 평가 및 교육 용도로 사용한다.[36] 개발 중인 시스템이 멈추더라도 해당 가상 머신을 재시작하면 되므로 편리하다.5. 4. 데스크톱 가상화 (Desktop Virtualization)
데스크톱 가상화는 논리적 데스크톱을 물리적 머신으로부터 분리하는 것이다.데스크톱 가상화의 한 형태인 가상 데스크톱 인프라(VDI)는 하드웨어 가상화의 보다 발전된 형태로 생각할 수 있다. 사용자는 키보드, 마우스, 모니터를 통해 호스트 컴퓨터와 직접 상호 작용하는 대신, LAN, 무선 LAN 또는 심지어 인터넷과 같은 네트워크 연결을 통해 다른 데스크톱 컴퓨터나 모바일 장치를 사용하여 호스트 컴퓨터와 상호 작용한다. 이 시나리오에서 호스트 컴퓨터는 여러 사용자를 위해 동시에 여러 가상 머신을 호스팅할 수 있는 서버 컴퓨터가 된다.[20]
HP 및 IBM과 같은 회사는 분산 클라이언트 컴퓨팅의 한계를 개선하기 위해 다양한 가상화 소프트웨어 및 제공 모델을 갖춘 하이브리드 VDI 모델을 제공한다.[21] 선택된 클라이언트 환경은 PC 및 기타 장치에서 데이터 센터 서버로 워크로드를 이동하여 잘 관리되는 가상 클라이언트를 생성하며, 애플리케이션 및 클라이언트 운영 환경은 데이터 센터의 서버 및 스토리지에서 호스팅된다. 사용자에게 이것은 단일 클라이언트 장치에 얽매이지 않고 모든 위치에서 데스크톱에 액세스할 수 있음을 의미한다. 리소스가 중앙 집중화되어 있으므로 작업 위치 간에 이동하는 사용자는 애플리케이션 및 데이터와 함께 동일한 클라이언트 환경에 계속 액세스할 수 있다.[21] IT 관리자에게는 이는 유지 관리가 더 쉽고 사용자 및 비즈니스의 변화하는 요구 사항에 더 빠르게 대응할 수 있는 보다 중앙 집중화되고 효율적인 클라이언트 환경을 의미한다.[22]
또 다른 형태인 세션 가상화를 통해 여러 사용자가 네트워크를 통해 공유되지만 강력한 컴퓨터에 연결하여 동시에 사용할 수 있다. 각 사용자에게는 데스크톱과 파일을 저장하는 개인 폴더가 제공된다.[20] 다중 좌석 구성을 통해 세션 가상화는 여러 모니터, 키보드 및 마우스가 연결된 단일 PC를 사용하여 수행할 수 있다.
데스크톱 가상화에서 볼 수 있는 씬 클라이언트는 네트워크에 연결하도록 설계된 간단하고 저렴한 컴퓨터이다. 상당한 하드 디스크 저장 공간, RAM 또는 심지어 처리 능력이 부족할 수 있지만, 많은 조직에서는 소프트웨어로 가득 찬("두꺼운 클라이언트") 데스크톱을 제거하고 (소프트웨어 사용료가 필요함) 더 전략적인 투자를 하는 데 따른 비용 편익을 고려하기 시작했다.[23]
데스크톱 가상화는 소프트웨어 버전 관리 및 패치 관리를 단순화하며, 새로운 이미지가 서버에서 간단하게 업데이트되고 데스크톱은 재부팅 시 업데이트된 버전을 얻는다. 또한 사용자가 워크스테이션에서 액세스할 수 있는 애플리케이션에 대한 중앙 집중식 제어를 가능하게 한다.
가상 데스크톱을 클라우드로 이동하면 호스팅 가상 데스크톱(HVD)이 생성되며, 데스크톱 이미지는 전문 호스팅 회사에서 중앙 집중식으로 관리 및 유지 관리된다. 장점으로는 확장성 및 자본 지출 감소가 있으며, 이는 월별 운영 비용으로 대체된다.[24]
6. 설계 방식
대부분의 가상화 형식은 컴퓨팅 컴퓨터와 제공자를 연결하는 디자인 패턴을 포함한다. 가상화는 소비자(사용자)와 제공자 사이에 중재자를 두어 인터페이스 양쪽에서 활동한다. 이상적으로, 가상화가 아닌 환경에서 직접 함께 작업하는 소비자와 제공자는 가상화된 환경에서는 어떠한 수정도 거치지 않고 작업해야 한다. 예를 들어, 가상 기억 장치에서는 물리적 주소 공간과 사용자 사이에 중간층(가상 기억 관리층)이 존재한다. 그 중간층은 여러 사용자를 지원하기 위해 여러 가상 주소 공간을 제공한다. 사용자와 제공자(물리적 메모리)는 일반적으로 그 다중성을 인식할 필요가 없다.
7. 가상화의 장단점
가상화는 여러 사용자가 컴퓨터 시스템을 공유하고, 사용자를 서로 격리하며, 새로운 하드웨어를 에뮬레이션하여 안정성, 보안, 생산성을 향상시킨다. 가상화의 일반적인 목표는 확장성과 전반적인 하드웨어 리소스 활용도를 개선하면서 관리 작업을 중앙 집중화하는 것이다. 또한 여러 운영 체제를 단일 중앙 처리 장치(CPU)에서 병렬로 실행하여 간접 비용을 줄이고, 기업은 사용자를 방해하지 않고 운영 체제 및 응용 프로그램 업데이트와 빠른 변경을 관리할 수 있다. 가상화는 조직의 리소스와 응용 프로그램의 효율성과 가용성을 향상시키며, 가상 리소스는 비즈니스 요구 사항을 충족하기 위해 동적으로 적용된다.[30]
하지만 독점 운영 체제를 실행하는 가상 머신은 호스트 머신의 운영 체제와 관계없이 라이선스가 필요하다. 예를 들어 마이크로소프트 윈도우를 VM 게스트에 설치하려면 라이선스 요구 사항을 충족해야 한다.[31][32][33]
7. 1. 장점
- 여러 사용자가 컴퓨터 시스템을 공유할 수 있다.
- 사용자를 서로 격리하고 (제어 프로그램으로부터도) 격리할 수 있다.
- 새로운 하드웨어를 에뮬레이션하여 향상된 안정성, 보안 및 생산성을 달성할 수 있다.[30]
가상화의 일반적인 목표는 확장성과 전반적인 하드웨어 리소스 활용도를 개선하면서 관리 작업을 중앙 집중화하는 것이다. 가상화를 사용하면 여러 운영 체제를 단일 중앙 처리 장치(CPU)에서 병렬로 실행할 수 있다. 이러한 병렬 처리는 간접 비용을 줄이는 경향이 있으며, 동일한 OS에서 여러 프로그램을 실행하는 멀티태스킹과는 다르다. 가상화를 사용하면 기업은 사용자를 방해하지 않고 운영 체제 및 응용 프로그램에 대한 업데이트와 빠른 변경 사항을 더 잘 관리할 수 있다.[30]
궁극적으로 가상화는 조직의 리소스와 응용 프로그램의 효율성과 가용성을 극적으로 향상시킨다. 리소스 활용도가 낮은 "하나의 서버, 하나의 응용 프로그램"이라는 구식 모델에 의존하는 대신, 가상 리소스는 과도한 부담 없이 비즈니스 요구 사항을 충족하기 위해 동적으로 적용된다.[30]
7. 2. 단점
독점 운영 체제를 실행하는 가상 머신은 호스트 머신의 운영 체제와 관계없이 라이선스가 필요하다.[31][32][33] 예를 들어 마이크로소프트 윈도우를 VM 게스트에 설치하려면 라이선스 요구 사항을 충족해야 한다.[31][32][33]참조
[1]
논문
A summary of virtualization techniques
https://www.scienced[...]
2012-01-01
[2]
서적
Electronic Commerce A Managerial Perspective
http://wps.prenhall.[...]
Prentice-Hall
[3]
웹사이트
A Comparison of Software and Hardware Techniques for x86 Virtualization
http://www.vmware.co[...]
2013-01-20
[4]
뉴스
New approach to virtualizing x86s
Network World
2006-10-20
[5]
서적
Electronic Commerce A Managerial Perspective
Prentice-Hall
[6]
웹사이트
Virtualization in education
http://www-07.ibm.co[...]
IBM
2010-07-06
[7]
웹사이트
Understanding Full Virtualization, Paravirtualization, and Hardware Assist
https://www.vmware.c[...]
VMware
2021-05-20
[8]
웹사이트
The Origin of the VM/370 Time-sharing System
http://pages.cs.wisc[...]
IBM
2013-02-26
[9]
간행물
IBM System/370 Extended Architecture Interpretive Execution
http://bitsavers.org[...]
IBM
2022-10-27
[10]
뉴스
VIA Introduces New VIA Nano 3000 Series Processors
http://www.via.com.t[...]
2022-10-10
[11]
웹사이트
Installing signed GPLPV drivers in Windows Xen instances
http://wiki.univenti[...]
2013-04-10
[12]
논문
Performance issues in clouds: An evaluation of virtual image propagation and I/O paravirtualization
2011
[13]
웹사이트
Denali: Lightweight Virtual Machines for Distributed and Networked Applications
http://denali.cs.was[...]
University of Washington Technical Report
2006-12-09
[14]
서적
Virtualization for Reliable Embedded Systems
http://www.grin.com/[...]
GRIN Publishing GmbH
[15]
웹사이트
Add ppc64 support
https://git.kernel.o[...]
2024-04-24
[16]
웹사이트
XenParavirtOps – Xen
http://wiki.xenproje[...]
2017-03-03
[17]
웹사이트
VMware Introduces Support for Cross-Platform Paravirtualization – VMware
http://www.vmware.co[...]
VMware
2008-05-16
[18]
웹사이트
Hybrid-Virtualization—Enhanced Virtualization for Linux
http://ols.108.redha[...]
Proceedings of the Linux Symposium
2007-06
[19]
웹사이트
Hybrid Virtualization: The Next Generation of XenLinux
http://www.valinux.c[...]
[20]
웹사이트
Strategies for Embracing Consumerization
http://download.micr[...]
Microsoft Corporation
2011-07-22
[21]
뉴스
HP VDI Moves to Center Stage
https://www.zdnet.co[...]
ZDNet
2011-08-19
[22]
뉴스
The Rising Cloud Storage Market Opportunity Strengthens Vendors
http://it.tmcnet.com[...]
infoTECH
2011-08-24
[23]
웹사이트
Desktop Virtualization Tries to Find Its Place in the Enterprise
http://content.dell.[...]
Dell.com
2012-06-19
[24]
웹사이트
HVD: the cloud's silver lining
http://www.intrinsic[...]
Intrinsic Technology
2012-08-30
[25]
웹사이트
Software Containers: Used More Frequently than Most Realize
https://www.networkw[...]
Network World, Inc
2015-07-09
[26]
웹사이트
The Benefits of Containerization and What It Means for You
https://www.ibm.com/[...]
2024-03-15
[27]
웹사이트
What is Docker and why is it so darn popular?
https://www.zdnet.co[...]
CBS Interactive
2018-03-21
[28]
웹사이트
Docker 101: What it is and why it's important
https://www.networkw[...]
IDG
2014-06-10
[29]
웹사이트
Enterprise Systems Group White paper, Page 5
http://www.raido.be/[...]
Enterprise Strategy Group White Paper written and published on August 20, 2011 by Mark Peters
2013-07-18
[30]
웹사이트
Virtualization in education
http://www-07.ibm.co[...]
IBM
2010-07-06
[31]
웹사이트
Microsoft goes public with Windows Server 2012 versions, licensing
https://www.zdnet.co[...]
CBS Interactive
2012-07-05
[32]
웹사이트
Windows Server 2012 Licensing and Pricing FAQ
http://download.micr[...]
Microsoft
2012-07-05
[33]
웹사이트
Licensing Windows desktop operating system for use with virtual machines
https://download.mic[...]
Microsoft
2018-12-22
[34]
서적
Foundations of modern networking : SDN, NFV, QoE, IoT, and Cloud
https://www.worldcat[...]
[35]
간행물
Virtualization 101
http://www.emausa.co[...]
Enterprise Management Associates (EMA)
2007-10-29
[36]
간행물
Examining VMware
http://www.cs.columb[...]
Dr. Dobb’s Journal
2000-08
[37]
서적
Management Information Systems 12/E: Managing the Digital Firm, CHAPTER 5, 212P
Pearson Education Asia
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com