시스템 가상 시스템

System virtual machine

컴퓨팅에서 시스템 가상 머신은 완전한 시스템 플랫폼을 제공하고 완전한 운영 체제(OS)의 실행을 지원하는 가상 머신을 말한다.[1]이러한 것들은 대개 기존 아키텍처를 모방하며, 실제 하드웨어를 사용할 수 없는 곳에서 프로그램을 실행할 수 있는 플랫폼을 제공하거나(예: 그렇지 않으면 구식 플랫폼에서 실행), 또는 가상 머신의 여러 인스턴스를 보유하여 컴퓨팅 자원의 보다 효율적인 사용을 유도할 목적으로 구축된다.에너지 소비 및 비용 효율성의 rms(하드웨어 가상화, 클라우드 컴퓨팅 환경의 핵심) 또는 둘 다.VM은 원래 Popek과 Goldberg에 의해 "실제 머신의 효율적이고 격리된 복제품"으로 정의되었다.

시스템 가상 시스템

시스템 가상 시스템의 이점:

  • "호스트" 운영 체제 또는 "게스트" 가상 환경에서 생성된 파일을 공유할 수 있는 가상 파티션이 있는 동일한 주 하드 드라이브에 여러 OS 환경이 공존할 수 있다.추가 소프트웨어 설치, 무선 연결 및 인쇄 및 팩스와 같은 원격 복제는 게스트 또는 호스트 운영 체제에서 생성될 수 있다.시스템에 관계없이 모든 파일은 호스트 OS의 하드 드라이브에 저장된다.
  • 애플리케이션 프로비저닝, 유지 보수, 고가용성 및 재해 복구는 선택한 가상 시스템 소프트웨어에 내재되어 있다.
  • 에뮬레이션 또는 적시 컴파일을 통해 호스트의 명령 집합 아키텍처(ISA)와는 다른 에뮬레이트된 하드웨어 환경을 제공할 수 있다.

VM의 주요 단점은 다음과 같다.

  • 가상 시스템은 호스트 하드 드라이브에 간접적으로 액세스할 때 실제 시스템보다 효율성이 떨어진다.
  • 실제 호스트의 하드 드라이브에서 여러 VM이 동시에 실행되는 경우, 부가적인 가상 머신은 가변적이고/또는 불안정한 성능(실행 속도 및 멀웨어 방지)을 나타낼 수 있다.이는 선택한 VM 소프트웨어가 가상 시스템 간에 일시적 분리를 제공하지 않는 한 다른 VM이 시스템에 부과하는 데이터 로드에 따라 달라진다.
  • VM에 대한 멀웨어 보호는 "호스트"와 반드시 호환되는 것은 아니며 별도의 소프트웨어가 필요할 수 있다.

동일한 실제 시스템 플랫폼에서 개별 VM의 간섭을 피하기 위해 자체 게스트 운영 체제를 실행하는 여러 VM이 서버 통합에 자주 참여한다.

여러 운영 체제를 실행하고자 하는 욕구는 가상 머신의 초기 동기가 되어 여러 개의 단일 태스크 운영 체제 간에 시간 공유를 허용하였다.어떤 면에서 시스템 가상 머신은 역사적으로 앞서 있었던 가상 메모리 개념의 일반화로 간주될 수 있다.완전한 가상화를 가능하게 한 최초의 시스템인 IBM의 CP/CMS는 각 사용자에게 단일 사용자 운영 체제인 CMS를 제공함으로써 시간 공유를 구현했다. 가상 메모리와 달리 시스템 가상 머신은 사용자에게 코드에 특권 지침을 작성할 수 있는 권한을 부여했다.이 접근방식은 표준 시스템에서 허용되지 않는 입출력 장치를 추가하는 것과 같은 특정한 장점을 가지고 있었다.[2]

기술이 가상화 목적을 위해 가상 메모리를 진화함에 따라 하나의 실제 컴퓨터 운영 체제에서 여러 가상 머신 간의 메모리 공유를 관리하기 위해 새로운 메모리 오버커밋 시스템을 적용할 수 있다.동일한 물리적 시스템에서 실행되는 여러 가상 시스템 간에 동일한 내용을 가진 "메모리 페이지"를 공유할 수 있으며, 이로 인해 커널 SamePage Merging이라는 기술로 동일한 물리적 페이지에 매핑될 수 있다.이는 코드 세그먼트가 포함된 페이지와 같이 읽기 전용 페이지에 특히 유용하며, 특히 동일하거나 유사한 소프트웨어, 소프트웨어 라이브러리, 웹 서버, 미들웨어 구성 요소 등을 실행하는 여러 가상 머신의 경우에 유용하다.게스트 운영 체제는 호스트 하드웨어를 준수할 필요가 없으므로, 향후 소프트웨어를 지원하기 위해 동일한 컴퓨터(: 마이크로소프트 윈도우즈, 리눅스 또는 이전 버전의 운영 체제)에서 서로 다른 운영 체제를 실행할 수 있다.

임베디드 시스템과 관련하여 별도의 게스트 운영 체제를 지원하기 위해 가상 시스템을 사용하는 것이 일반적이다.일반적인 용도는 Linux나 Windows와 같이 선호되는 복잡한 운영 체제와 동시에 실시간 운영 체제를 실행하는 것이다.또 다른 용도는 아직 개발 단계에 있는 새롭고 검증되지 않은 소프트웨어에 사용될 것이기 때문에 샌드박스 안에서 작동된다.가상 머신은 운영 체제 개발에 다른 이점이 있으며 디버깅 액세스 개선과 빠른 재부팅이 포함될 수 있다.[3]

기술

원하는 용도에 따라 다른 가상화 기법이 사용된다.네이티브 실행은 기본 원시 하드웨어의 직접 가상화를 기반으로 하므로 실제 시스템이 기반으로 하는 동일한 아키텍처의 여러 "인스턴스"를 제공하여 완전한 운영 체제를 실행할 수 있다.또한 일부 가상 머신은 서로 다른 아키텍처를 모방할 수 있으며 다른 CPU나 아키텍처를 위해 작성된 소프트웨어 애플리케이션과 운영 체제의 실행을 허용할 수 있다.운영 체제 수준 가상화는 여러 분리된 사용자 공간 인스턴스에 대한 커널의 지원을 통해 컴퓨터의 리소스를 분할할 수 있도록 허용하는데, 이를 보통 컨테이너라고 하며 최종 사용자에게 실제 기계처럼 보이고 느껴질 수 있다.일부 컴퓨터 아키텍처는 하드웨어 지원 가상화를 수행할 수 있으며, 이는 주로 호스트 CPU에서 가상화 관련 하드웨어 기능을 사용하여 효율적인 전체 가상화를 가능하게 한다.

기본 원시 하드웨어 가상화(기본 실행)

이 접근방식은 하드웨어의 완전한 가상화로 설명되며 유형 1 또는 유형 2 하이퍼바이저를 사용하여 구현할 수 있다. 유형 1 하이퍼바이저는 하드웨어에서 직접 실행되며 유형 2 하이퍼바이저는 Linux 또는 윈도우즈와 같은 다른 운영 체제에서 실행된다.각 가상 시스템은 기본 하드웨어에서 지원되는 모든 운영 체제를 실행할 수 있다.따라서 사용자는 두 개 이상의 서로 다른 "게스트" 운영 체제를 별도의 "프라이빗" 가상 컴퓨터에서 동시에 실행할 수 있다.

이 개념을 사용한 개척자 시스템은 IBM의 CP-40, IBM의 CP/CMS(1967–1972)의 첫 번째(1967–1972) 버전, IBM의 VM 제품군(1972–현재)의 선구자였다.VM 아키텍처를 사용하는 대부분의 사용자는 VM 제어 프로그램(VM-CP) 상단의 "게스트"로서 비교적 단순한 대화형 컴퓨팅 단일 사용자 운영 체제인 CMS를 실행한다.이 접근방식은 CMS 설계를 마치 혼자 실행하는 것처럼 단순하게 유지했다; 제어 프로그램은 조용히 "막후" 멀티태스킹과 자원 관리 서비스를 제공한다.CMS 통신 및 기타 시스템 작업은 VM(RSCS, GCS, TCP/IP, UNIX)을 멀티태스킹하여 수행되며 사용자는 MVS와 같은 다른 IBM 운영 체제 중 하나라도 새로운 CP 자체 또는 현재 z/OS를 실행할 수 있다.단순한 CMS도 스레드 환경에서 실행될 수 있다(LISTERV, TRYLE). z/VM은 VM의 현재 버전이며, 주어진 메인프레임에서 수백 또는 수천 대의 가상 머신을 지원하는 데 사용된다.일부 설치는 IBM Z에서 리눅스를 사용하여 웹 서버를 실행하며, 여기서 리눅스는 많은 가상 머신 내에서 운영 체제로 실행된다.

완전한 가상화는 특히 운영 체제 개발에 유용하며, 실험적으로 새로운 코드를 각각 별도의 가상 머신에서 이전 버전, 보다 안정적인 버전과 동시에 실행할 수 있다.이 프로세스는 재귀적일 수도 있다: IBM은 이전 버전의 VM에서 실행되는 가상 시스템에서 새로운 버전의 가상 시스템 운영 체제인 VM을 디버깅하고, 심지어 이 기술을 사용하여 새로운 하드웨어를 시뮬레이션했다.[NB 1]

현대의 PC에서 사용되는 표준 x86 명령 집합 아키텍처는 실제로 Popek Goldberg 가상화 요구 사항을 충족하지 못한다.특히 중요한 모든 기계 지침이 항상 트랩되는 실행 모드는 없으며, 이를 통해 기기별 가상화가 가능하다.

이러한 제한에도 불구하고 여러 소프트웨어 패키지가 x86 아키텍처에서 가상화를 제공하기는 했지만, VMware에서 처음 구현한 권한 있는 코드의 동적 재컴파일에도 불구하고 IBM System/370 또는 Motorola MC6802와 같은 기본 가상화 가능 아키텍처에서 실행되는 VM에 비해 약간의 성능 오버헤드가 발생함0. 현재 Virtual PC, VirtualBox, Parallels WorkstationVirtual Iron과 같은 여러 소프트웨어 패키지가 x86 하드웨어에서 가상화를 구현하고 있다.

인텔AMD하드웨어에서 가상화를 가능하게 하기 위해 x86 프로세서에 기능을 도입했다.

단일 시스템의 리소스 가상화뿐만 아니라 클러스터 내의 여러 독립 노드를 결합하여 단일 가상 NUMA 시스템으로 액세스할 수 있다.[4]

비원성 시스템의 에뮬레이션

가상 머신은 에뮬레이터의 역할도 수행할 수 있어 다른 컴퓨터 프로세서 아키텍처를 위해 작성된 소프트웨어 애플리케이션과 운영 체제를 실행할 수 있다.

운영 체제 레벨 가상화

운영 체제 수준 가상화는 운영 체제(커널) 계층에서 서버를 가상화하는 서버 가상화 기술이다.하나의 물리적 서버를 여러 개의 작은 파티션(가상 환경(VE), 가상 프라이빗 서버(VPS), 게스트, 영역 등)으로 분할하는 방식으로 생각할 수 있다.; 그러한 각각의 파티션은 그 사용자의 관점에서 볼 때 실제 서버처럼 보이고 느껴진다.

예를 들어 Solaris Zones는 Solaris 10과 같은 동일한 운영 체제에서 실행되는 여러 게스트 운영 체제를 지원한다.[5]게스트 운영 체제는 동일한 운영 체제 버전에서 동일한 커널 레벨을 사용하거나 Solaris 커널 존을 사용하는 다른 커널 버전을 사용하는 별도의 운영 체제 복사본이 될 수 있다.[6]또한 Solaris 네이티브 Zones는 호스트 운영 체제가 Solaris의 버전임을 요구하고 있으며, 다른 제조업체의 다른 운영 체제는 지원되지 않는다.[citation needed]그러나 Solaris Branded Zones를 사용하여 다른 운영 체제를 존으로 사용할 필요가 있다.[citation needed]

또 다른 예는 IBM AIX 운영 체제의 6.1 버전에서 도입된 WPAR(시스템 워크로드 파티션)이다.시스템 WPAR은 글로벌 AIX OS 환경의 한 인스턴스에서 실행되는 소프트웨어 파티션이다.

운영 체제 수준 아키텍처는 서버 자원의 효율적인 사용을 최대화하는 데 도움이 되는 낮은 오버헤드를 가지고 있다.가상화는 매우 적은 오버헤드만 도입하고 단일 물리적 서버에서 수백 의 가상 프라이빗 서버를 실행할 수 있다.이와는 대조적으로, 여러 커널을 실행하는 오버헤드 때문에 전체 가상화(VMware 등) 및 반가상화(Xen 또는 UML 등)와 같은 접근 방식은 이러한 수준의 밀도를 달성할 수 없다.다른 쪽에서는 다른 라이브러리, 배포 등이 가능하지만, 운영 체제 수준 가상화는 다른 운영 체제(즉, 다른 커널)를 실행하는 것을 허용하지 않는다.원하는 용도에 따라 다른 가상화 기법이 사용된다.네이티브 실행은 기본 원시 하드웨어의 직접 가상화를 기반으로 하므로 실제 시스템이 기반으로 하는 동일한 아키텍처의 여러 "인스턴스"를 제공하여 완전한 운영 체제를 실행할 수 있다.또한 일부 가상 머신은 서로 다른 아키텍처를 모방할 수 있으며 다른 CPU나 아키텍처를 위해 작성된 소프트웨어 애플리케이션과 운영 체제의 실행을 허용할 수 있다.운영 체제 수준 가상화는 여러 분리된 사용자 공간 인스턴스에 대한 커널의 지원을 통해 컴퓨터의 리소스를 분할할 수 있도록 허용하는데, 이를 보통 컨테이너라고 하며 최종 사용자에게 실제 기계처럼 보이고 느껴질 수 있다.일부 컴퓨터 아키텍처는 하드웨어 지원 가상화를 수행할 수 있으며, 이는 주로 호스트 CPU에서 가상화 관련 하드웨어 기능을 사용하여 효율적인 전체 가상화를 가능하게 한다.

가상화 지원 하드웨어

가상화 지원 하드웨어의 예는 다음과 같다.

참고 항목

메모들

  1. ^ 운영 체제 개발 및 새 하드웨어 시뮬레이션에 대한 IBM의 가상 머신 사용에 대한 CP/CMS 기록 참조

참조

  1. ^ "Virtual Machines: Virtualization vs. Emulation". Retrieved 2011-03-11.
  2. ^ 스미스와 나이, 페이지 395–396
  3. ^ Super Fast Server 재부팅 VirtualizationWayback Machine에 2006-06-14를 보관하는 또 다른 이유vmwarez.com (2006-05-09)2013-06-14년에 검색됨
  4. ^ Matthew Chapman 및 Gernot Heiser. vNUMA: 가상 공유 메모리 멀티프로세서.2009 USENIX 연례 기술 회의, 샌디에이고, CA, 미국, 2009년 6월, 2009년 6월 [1]
  5. ^ "Oracle Solaris Zones Overview". docs.oracle.com. Retrieved 2015-06-26.
  6. ^ "About Oracle Solaris Kernel Zones". docs.oracle.com. Retrieved 2015-06-26.

추가 읽기

  • 제임스 E.Smith, Ravi Nair, 가상 머신: 시스템프로세스를 위한 다용도 플랫폼, Morgan Kaufmann, 2005년 5월, ISBN 1-55860-910-5, 656페이지(프로세스 및 시스템 가상 머신 모두 포함)
  • 크레이그, Iain D.가상 시스템.Springer, 2006, ISBN 1-85233-969-1, 269페이지(동반자는 가상 머신만 처리)

외부 링크