KR20110084211A - 가상화된 저장소 할당 방법 - Google Patents

가상화된 저장소 할당 방법 Download PDF

Info

Publication number
KR20110084211A
KR20110084211A KR1020117010044A KR20117010044A KR20110084211A KR 20110084211 A KR20110084211 A KR 20110084211A KR 1020117010044 A KR1020117010044 A KR 1020117010044A KR 20117010044 A KR20117010044 A KR 20117010044A KR 20110084211 A KR20110084211 A KR 20110084211A
Authority
KR
South Korea
Prior art keywords
stack
driver
storage
interface
alternative
Prior art date
Application number
KR1020117010044A
Other languages
English (en)
Other versions
KR101602519B1 (ko
Inventor
야콥 오신즈
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20110084211A publication Critical patent/KR20110084211A/ko
Application granted granted Critical
Publication of KR101602519B1 publication Critical patent/KR101602519B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

장치 드라이버 스택에 의해 표현되는 장치를 물리적으로 제어하지 않는 가상 컴퓨터 파티션에 장치 드라이버 스택을 구성하는 다양한 측면이 개시되어 있다. 일 실시예에서, I/O 장치에 대한 보조 인터페이스 및 드라이버가 인스턴스화될 수 있다. 관련 드라이버가 제어할 수 있는 장치를 기술하는 I/O 가상화 계층으로부터의 정보가 요청될 수 있다. 다중-경로 리디렉션 계층은 I/O 장치에 대한 드라이버를 포함하는 기존의 스택에 대한 핸들을 제공할 수 있다. 이어서, 장치와 통신하고 장치를 표현하는 개체 및 장치에 대한 새 드라이버를 포함하는 새 스택의 생성을 가능하게 해주는 데 이 기존의 스택이 사용될 수 있다. 다중-경로 리디렉션 계층은 이어서 새 스택에 대한 핸들을 열고 장치 가상화 계층에 알려줄 수 있으며, 장치 가상화 계층은 이어서 장치의 제어를 새로 생성된 인터페이스로 넘기라고 기존의 장치 인터페이스에 요청할 수 있다.

Description

가상화된 저장소 할당 방법{VIRTUALIZED STORAGE ASSIGNMENT METHOD}
여기 개시된 발명 대상은 컴퓨팅 분야에 관한 것으로서, 보다 상세하게는, 컴퓨터 가상화(computer virtualization)에 관한 것이지만, 가상화는 제한하는 것이 아니라 단지 예시적인 분야이다.
완전히 가상화된 시스템에서, 모든 입/출력(I/O) 동작이 통상적으로 하이퍼바이저, 호스트 운영 체제 또는 머신 상에서 실행되는 별도의 가상 머신에 의해 간접적으로 처리되며 따라서 I/O 기능의 실행 비용을 증가시키기 때문에, 가상 머신 시스템은 I/O 기능과 관련하여 성능 열화를 겪을 수 있다. 이러한 성능 문제를 완화시키는 한가지 방법은 가상 머신이 시스템 내의 물리적 하드웨어 리소스 중 일부를 직접 제어할 수 있게 해주는 것이다. 그렇지만, 이러한 직접 제어(direct control)를 제공하는 것은 가상 머신을 불완전하게 가상화되도록 만드는 효과를 가질 수 있으며, 가상화와 연관된 기능들(저장, 마이그레이션, 스냅샷 만들기 등) 중 다수가 달성하기 어렵게 될 수 있다.
이러한 I/O 성능 문제를 해결하는 다른 방법은 I/O 장치로의 다수의 경로를 생성하는 것이며, 여기서 하나의 경로는 하드웨어로 직접 갈 수 있고 다른 경로는 다른 가상 머신을 통해 하드웨어로 간접적으로 갈 수 있다. 가상 머신의 상태가 저장되거나 마이그레이션될 수 있도록 가상 머신의 상태를 완전히 캡슐화하는 것이 요망될 때, 직접 경로(direct path)가 차단되고 간접 경로(indirect path)가 사용될 수 있다. 다수의 경로를 생성하는 데 있어서의 한가지 문제점은 통상적으로 설정 프로세스의 일부로서 장치의 제어를 제2 경로에게 넘겨주지 않고서 제2 경로를 설정하는 것이 어렵다는 것이다. I/O 장치가 코드 또는 데이터를 페이징하는 데 사용되고 페이징 장치(paging device)가 완전히 동작하기 전에 페이징 장치의 제어가 제2 경로로 넘어가는 경우, 페이징이 중단되고 시스템의 작동이 중지될 수 있다.
그에 따라, 본 기술 분야에서 상기한 문제점을 해결하는 다른 기법이 필요하다.
장치 드라이버 스택(device driver stack)에 의해 표현되는 장치를 물리적으로 제어하지 않는 가상 머신 파티션에 장치 드라이버 스택을 구성하는 다양한 방법 및 시스템이 본 명세서에 개시되어 있다. 일 실시예에서, I/O 장치에 대한 보조 인터페이스 및 관련 드라이버가 인스턴스화될 수 있다. I/O 가상화 계층으로부터의 정보가 요청될 수 있고, 이 정보는 관련 드라이버가 제어할 수 있는 장치를 기술하고 있다. 다중-경로 리디렉션 계층은 I/O 장치에 대한 드라이버를 포함하는 기존의 스택에 대한 핸들(handle)을 제공할 수 있다. 이어서, 장치와 통신하고 장치를 표현하는 개체 및 장치에 대한 새 드라이버를 포함하는 새 스택의 생성을 가능하게 해주는 데 이 기존의 스택이 사용될 수 있다. 다중-경로 리디렉션 계층은 이어서 새 스택에 대한 핸들을 열고 장치 가상화 계층에 알려줄 수 있으며, 장치 가상화 계층은 이어서 장치의 제어를 새로 생성된 인터페이스로 넘기라는 요청을 기존의 장치 인터페이스에게 전송할 수 있다. 장치는 이제 새 인터페이스에 의해 제어될 수 있고, I/O는 새 드라이버 및 인터페이스를 통해 장치로 리디렉션될 수 있다.
전술한 내용에 부가하여, 다른 측면이 본 발명의 일부를 구성하는 특허청구범위, 첨부 도면 및 본문에 기술되어 있다. 당업자라면 본 발명의 하나 이상의 다양한 측면이 본 명세서에서 언급되는 본 발명의 측면을 실시하는 회로 및/또는 프로그래밍을 포함할 수 있지만, 이들로 제한되지 않고, 이 회로 및/또는 프로그래밍이 시스템 설계자의 설계 선택에 따라 본 명세서에 언급된 측면을 실시하도록 구성된 하드웨어, 소프트웨어 및/또는 펌웨어의 거의 모든 조합일 수 있다는 것을 잘 알 수 있다.
이 요약이 이하에서 상세한 설명에 더 기술되는 일련의 개념을 간략화된 형태로 소개하기 위해 제공된 것이라는 것에 주목해야 한다. 이 요약은 청구된 발명 대상의 주요 특징 또는 필수적인 특징을 확인하기 위한 것이 아니며, 청구된 발명 대상의 범위를 정하는 데 보조 수단으로 사용되기 위한 것도 아니다.
이상의 요약은 물론 이하의 상세한 설명이 첨부 도면과 관련하여 읽어보면 더 잘 이해된다. 본 발명을 설명하기 위해, 본 발명의 다양한 측면이 예시되어 있다. 그렇지만, 본 발명이 도시된 특정의 측면으로 제한되지 않는다. 이하의 도면이 포함되어 있다:
도 1a는 복수의 가상 프로세서(virtual processor)를 포함하는 복수의 가상 머신(virtual machine) 및 대응하는 게스트 운영 체제(guest operating system)를 가지는 가상 머신 환경을 나타낸 도면으로서, 가상 머신은 스케줄러(scheduler) 및 기타 구성요소를 포함할 수 있는 가상화 계층(virtualizing layer)에 의해 유지되고 가상화 계층은 복수의 가상 머신에 대한 하드웨어를 가상화함.
도 1b는 컴퓨터 시스템에서 가상화된 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화(logical layering)를 나타낸 도면.
도 1c는 본 발명의 측면이 구현될 수 있는 예시적인 컴퓨터 시스템을 나타낸 도면.
도 2는 예시적인 가상화된 컴퓨팅 시스템을 나타낸 도면.
도 3은 대안의 가상화된 컴퓨팅 시스템을 나타낸 도면.
도 4는 본 발명을 구현하는 프로세스를 나타낸 예시적인 시스템도.
도 5는 본 발명을 구현하는 프로세스를 나타낸 예시적인 시스템도.
도 6은 본 발명을 구현하는 프로세스를 나타낸 예시적인 시스템도.
도 7은 본 발명을 구현하는 프로세스를 나타낸 예시적인 시스템도.
도 8은 본 발명을 구현하는 프로세스를 나타낸 예시적인 시스템도.
도 9는 본 발명을 구현하는 프로세스를 나타낸 예시적인 시스템도.
도 10은 본 발명을 구현하는 프로세스를 나타낸 예시적인 시스템도.
도 11은 스택과 연관된 장치를 제어하지 않는 가상 머신에서 장치 드라이버 스택(device driver stack)을 구성하는 동작 절차의 일례를 나타낸 도면.
도 12는 스택과 연관된 장치를 제어하지 않는 가상 머신에서 장치 드라이버 스택을 구성하는 동작 절차의 일례를 나타낸 도면.
도 13은 가상 머신 환경에서 코드 또는 데이터를 페이징하는 데 사용되는 I/O 장치로의 다수의 경로를 생성하는 동작 절차를 나타낸 도면.
도 14는 가상 머신 환경에서 코드 또는 데이터를 페이징하는 데 사용되는 I/O 장치로의 다수의 경로를 생성하는 동작 절차를 나타낸 도면.
도 15는 상기 도 1 내지 도 10과 관련하여 논의된 컴퓨터 실행가능 명령어를 담고 있는 컴퓨터 판독가능 매체를 나타낸 도면.
일반적인 측면에서의 가상 머신
본 발명의 다양한 실시예에 대한 완전한 이해를 제공하기 위해 이하의 설명 및 도면에 특정의 구체적인 상세 내용이 기술되어 있다. 종종 컴퓨팅 및 소프트웨어 기술과 연관된 특정의 공지된 상세 내용은, 본 발명의 다양한 실시예를 불필요하게 모호하게 하지 않기 위해, 이하의 개시 내용에 기재되어 있지 않다. 게다가, 당업자라면 이하에 기술된 상세 내용 중 하나 이상을 사용하지 않고 본 발명의 다른 실시예를 실시할 수 있다는 것을 잘 알 것이다. 마지막으로, 이하의 개시 내용에서 다양한 방법이 단계 및 시퀀스를 참조하여 기술되어 있지만, 이 설명은 그 자체로서 본 발명의 실시예의 명확한 구현을 제공하기 위한 것이며, 그 단계 및 단계의 시퀀스가 본 발명을 실시하는 데 꼭 요구되는 것으로 보아서는 안된다.
본 명세서에 기술된 다양한 기법이 하드웨어 또는 소프트웨어, 또는 적절한 경우, 이 둘의 조합과 관련하여 구현될 수 있다는 것을 잘 알 것이다. 따라서, 본 발명의 방법 및 장치, 또는 그의 어떤 측면 또는 일부분은 플로피 디스켓, CD-ROM, 하드 드라이브 또는 임의의 다른 머신-판독가능 저장 매체 등의 유형의 매체(tangible media) 상에 구현되는 프로그램 코드(즉, 명령어)의 형태를 가질 수 있으며, 프로그램 코드가 컴퓨터 등의 머신에 로드되어 실행될 때, 그 머신은 본 발명을 실시하는 장치가 된다. 프로그램가능 컴퓨터 상에서의 프로그램 코드 실행의 경우에, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함한다. 하나 이상의 프로그램이, 예를 들어, API 재사용가능 컨트롤 등을 사용함으로써, 본 발명과 관련하여 기술된 프로세스를 구현하거나 이용할 수 있다. 이러한 프로그램은 바람직하게는 컴퓨터 시스템과 통신하기 위해 고수준의 절차적 또는 개체 지향 프로그래밍 언어로 구현된다. 그렇지만, 프로그램(들)은, 원하는 경우, 어셈블리어 또는 기계어로 구현될 수 있다. 어느 경우든지, 이 언어는 컴파일되거나 인터프리트되는 언어일 수 있고, 하드웨어 구현과 결합될 수 있다.
가상 머신에서, 하나의 물리적 머신은 다수의 게스트 운영 체제를 지원할 수 있고, 각각의 게스트 운영 체제는 기본 물리적 머신(underlying physical machine)의 그 자신의 완전한 가상 인스턴스(virtual instance) 상에서 실행된다. 게스트 운영 체제(OS)는 하나의 OS의 단일 버전, 동일한 OS의 상이한 릴리스(release), 또는 완전히 상이한 OS의 인스턴스일 수 있다. VMM(virtual machine monitor) 또는 하이퍼바이저(hypervisor)라고 하는 씬 소프트웨어 계층(thin software layer)은 가상 머신 및 기타 가상 서브시스템(virtual subsystem)을 생성하고 제어할 수 있다. VMM은 또한 물리적 머신을 완전히 제어하고 각각의 게스트 OS에게 CPU, 메모리, 저장 공간, 및 I/O 대역폭에 대한 리소스 보장을 제공할 수 있다.
도 1a는 복수의 가상 프로세서(110, 112, 114, 116)를 포함하는 복수의 가상 머신(120, 121) 및 대응하는 게스트 운영 체제(130, 132)를 가지는 가상 머신 환경(100)을 나타낸 것이다. 가상 머신(120, 121)는 스케줄러(142) 및 기타 구성요소(도시 생략)를 포함할 수 있는 가상화 계층(140)에 의해 유지되며, 가상화 계층(140)은 복수의 가상 머신(120, 121)에 대한 하드웨어(150)를 가상화한다. 복수의 가상 프로세서(110, 112, 114, 116)는 기본 하드웨어 물리적 프로세서(160, 162)의 가상 상대물(virtual counterpart)일 수 있다.
도 1b는 컴퓨터 시스템에서 가상화된 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 나타낸 도면이다. 도 1b에서, 가상화 프로그램(180)은 물리적 하드웨어 아키텍처(182) 상에서 직접 또는 간접적으로 실행된다. 가상화 프로그램(180)은 (a) 호스트 운영 체제(host operating system)와 함께 실행되는 가상 머신 모니터(virtual machine monitor), (b) 하이퍼바이저 구성요소를 가지는 호스트 운영 체제 - 하이퍼바이저 구성요소는 가상화를 수행함 -, (c) 하드웨어, 또는 (d) 마이크로코드일 수 있다. 가상화 프로그램은 또한 임의의 운영 체제와 별도로 실행되는 하이퍼바이저일 수 있다. 환언하면, 하이퍼바이저 가상화 프로그램은 임의의 운영 체제의 일부로서 실행될 필요가 없고, 임의의 운영 체제와 함께 실행될 필요가 없다. 하이퍼바이저 가상화 프로그램은 그 대신에 "루트 파티션(root partition)"을 포함하는 모든 운영 체제 "하에서" 실행될 수 있다. 가상화 프로그램(180)은 게스트 하드웨어 아키텍처(178)(이 구성요소가 "파티션" 또는 "가상 머신"라는 사실을 나타내기 위해 파선으로 도시됨)를 가상화한다, 즉 하드웨어가 실제로 존재하지 않고 그 대신에 가상화 프로그램(180)에 의해 가상화된다. 게스트 운영 체제(176)는 게스트 하드웨어 아키텍처(178) 상에서 실행되고, 소프트웨어 응용 프로그램(174)은 게스트 운영 체제(176) 상에서 실행될 수 있다. 도 1b의 가상화된 운영 환경에서, 소프트웨어 응용 프로그램(174)이 일반적으로 호스트 운영 체제 및 하드웨어 아키텍처(182)와 호환되지 않는 운영 체제 상에서 실행되도록 설계되어 있더라도, 소프트웨어 응용 프로그램(174)은 컴퓨터 시스템에서 실행될 수 있다.
가상 머신은 통상적으로 전체 운영 체제 및 일련의 응용 프로그램을 포함하며, 이들 모두는 많은 프로세스를 구성하고 있고, 이들 프로세스 전체를 가상 머신과 관련하여 "작업 부하" 또는 "프로세스"라고 할 수 있다. 본 개시 내용에서, "프로세스" 및 "작업 부하"라는 용어는 가상 머신과 관련하여 서로 바꾸어 사용될 수 있으며, 당업자라면 "프로세스"가 가상 머신에서 인스턴스화될 수 있는 모든 시스템 및 응용 프로그램을 포함하는 다수의 프로세스를 말할 수 있다는 것을 잘 알 것이다.
그 다음에, 도 2는 물리적 컴퓨터 하드웨어(202) 바로 위에서 실행되는 호스트 운영 체제(호스트 OS) 소프트웨어 계층(204)을 포함하는 가상화된 컴퓨팅 시스템을 나타낸 것이며, 여기서 호스트 OS(204)는 운영 체제 A(212) 및 운영 체제 B(214)에서 각각 사용하기 위해 파티션 A(208) 및 파티션 B(210)에게 인터페이스를 노출시킴으로써 물리적 컴퓨터 하드웨어(202)의 리소스에 대한 액세스를 제공한다. 이것에 의해 호스트 OS(204) 상에서 실행되는 운영 체제 계층(212, 214)이 호스트 OS(204)를 알지 못한 채로 있을 수 있다. 다시 말하지만, 가상화를 수행하기 위해, 호스트 OS(204)는 네이티브 가상화 기능을 가지는 특별히 설계된 운영 체제일 수 있거나, 다른 대안으로서, 가상화를 수행하는 하이퍼바이저 구성요소(도시 생략)를 포함하고 있는 표준 운영 체제일 수 있다.
다시 도 2를 참조하면, 호스트 OS(204) 상에 2개의 파티션, 즉, 예를 들어, 가상화된 인텔 386 프로세서일 수 있는 파티션 A(208), 및, 예를 들어, Motorola 680X0 계열의 프로세서 중 하나의 가상화된 버전일 수 있는 파티션 B(210)가 있다. 각각의 파티션(208, 210) 내에 각각 게스트 운영 체제(게스트 OS) A(212) 및 B(214)가 있다. 게스트 OS A(212) 상에서 2개의 응용 프로그램, 즉 응용 프로그램 A1(216) 및 응용 프로그램 A2(218)가 실행되고 있고, 게스트 OS B(214) 상에서 응용 프로그램 B1(220)이 실행되고 있다.
도 2와 관련하여, 파티션 A(208) 및 파티션 B(214)(파선으로 도시되어 있음)가 소프트웨어 구성으로서만 존재할지도 모르는 가상화된 컴퓨터 하드웨어 표현이라는 것에 유의하는 것이 중요하다. 이는 파티션 A(208) 및 파티션 B(210)를 게스트 OS A(212) 및 게스트 OS B(214)에게 각각 제시할 뿐만 아니라 게스트 OS A(212) 및 게스트 OS B(214)가 물리적 컴퓨터 하드웨어(202)와 간접적으로 상호작용하는 데 필요한 모든 소프트웨어 단계도 수행하는 특수한 가상화 소프트웨어(들)의 실행으로 인해 가능하게 된다.
도 3은 호스트 운영 체제(204")와 함께 실행되는 가상 컴퓨터 모니터(VMM)(204')에 의해 가상화가 수행되는 대안의 가상화된 컴퓨팅 시스템을 나타낸 것이다. 어떤 경우에, VMM(204')은 호스트 운영 체제(204") 상에서 실행되고 호스트 운영 체제(204")를 통해서만 컴퓨터 하드웨어(202)와 상호작용하는 응용 프로그램일 수 있다. 다른 경우에, 도 3에 도시된 바와 같이, VMM(204')은 그 대신에, 어떤 레벨에서는 호스트 운영 체제(204")를 통해 컴퓨터 하드웨어(202)와 간접적으로 상호작용하는 부분 독립적인 소프트웨어 시스템(partially independent software system)을 포함할 수 있지만, 다른 레벨에서 VMM(204')은 컴퓨터 하드웨어(202)와 직접 상호작용한다(호스트 운영 체제가 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함). 또 다른 경우에, VMM(204')은 모든 레벨에서 호스트 운영 체제(204")를 이용하지 않고 컴퓨터 하드웨어(202)와 직접 상호작용하는 완전 독립적인 소프트웨어 시스템(fully independent software system)을 포함할 수 있다(호스트 운영 체제가 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함)[그렇지만, 컴퓨터 하드웨어(202)의 사용을 조정하고 충돌을 피하는 등을 위해 호스트 운영 체제(204")와 여전히 상호작용함].
상기한 파티션을 구현하는 이들 변형 모두는 단지 예시적인 구현이며, 본 명세서에서의 어느 것도 본 발명을 임의의 특정의 가상화 측면으로 제한하는 것으로 해석되어서는 안된다.
가상화된 저장소 할당
I/O 가상화(IOV)는 하나의 물리적 I/O 장치가 2개 이상의 가상 머신에 의해 또는 하이퍼바이저(또는 VMM 등)와 가상 머신 간에 공유될 수 있는 것을 말한다. 가상 머신 시스템은 I/O 가상화와 관련하여 성능 열화를 겪을 수 있다. 이러한 이유는 가상화를 유용하게 만들어주는 가상화의 특성(예를 들어, 물리적 하드웨어로부터의 격리)이 가상 머신에서 작업 부하를 실행할 때 역효과를 가질 수 있기 때문이다. 완전히 가상화된 시스템에서, 모든 I/O 동작은 통상적으로 간접적으로, 즉 하이퍼바이저에 의해, 호스트 운영 체제에 의해, 또는 머신 상에서 실행되는 별도의 가상 머신에 의해 처리된다. I/O 성능 열화를 완화시키는 한가지 방법은 가상 머신이 시스템 내의 물리적 하드웨어 중 일부를 직접 제어할 수 있게 해주는 것일 수 있다. 그렇지만, 직접 제어를 가능하게 해주는 것은 가상 머신을 불완전하게 가상화되도록 만드는 효과를 가질 수 있으며, 이 경우에 가상화와 연관된 기능들(예를 들어, 저장, 마이그레이션, 스냅샷 만들기 등) 중 다수가 달성하기 어렵게 될 수 있다.
공동 양도된 미국 특허 출원 제__________호[대리인 사건 번호: MSFT-5556 / 316010.01]는 상기한 문제점을 해결하는 기법을 기술하고 있다. 예를 들어, I/O 장치로의 다수의 경로가 생성될 수 있다. 하나의 경로는 하드웨어로 직접 갈 수 있고, 다른 경로는 다른 가상 머신을 통해 하드웨어로 간접적으로 갈 수 있다. 가상 머신의 상태가 저장되거나 마이그레이션될 수 있도록 가상 머신의 상태를 완전히 캡슐화하는 것이 요망될 때, 직접 경로가 차단되고 간접 경로가 사용될 수 있다. 간접 경로는 본질적으로 가상화가능하다.
그렇지만, 2개의 경로를 구성할 때 문제가 생길 수 있으며, I/O 장치가 코드 또는 데이터를 페이징하는 데 사용되는 경우에 특히 그렇다. 통상적으로 설정 프로세스의 일부로서 장치의 제어를 제2 경로에게 넘겨주지 않고서 제2 경로를 설정하는 것은 어렵다. 페이징 장치가 완전히 동작하기 전에 페이징 장치의 제어가 제2 경로로 넘어가는 경우, 오류가 발생할 수 있고 페이징이 중단될 수 있다. 많은 상황에서, 페이징이 중단되는 경우, 시스템 작동이 중지될 수 있다.
도 4를 참조하면, 순수 "가상" 저장 서브시스템("synthetic" storage subsystem)의 도면이 나타내어져 있다. 가상 스택(synthetic stack)은 통상적으로 가상 머신 내에서 사용되도록 설계되어 있는 드라이버로 이루어져 있는 I/O 스택이다. 특정의 시스템에 따라 가상 스택을 말하는 데 다른 용어가 사용될 수 있다. 예를 들어, 대안의 시스템에서 유사한 I/O 스택에 대해 사용되는 용어는 "준가상화(paravirtualized)"이다. 도 4를 참조하면, 도면은 2개의 파티션을 나타내고 있다. 하나의 파티션은 디스크(460)에 직접 물리적으로 액세스하는 권한있는 파티션(privileged partition)(410)이다. 다른 파티션은 디스크(460)에의 액세스를 요청할 수 있는 권한없는 파티션(non-privileged partition)(470)이다. 예를 들어, 파일 시스템(475)은 가상 SCSI 버스 드라이버(synthetic SCSI bus driver)(480)가 디스크 드라이버(485)와 통신하는 것을 필요로 하는 파일에의 액세스를 요청할 수 있으며, 그러면 디스크 드라이버(485)는 VM 버스(465)를 통해 통신을 한다. 저장소 가상화 서비스 공급자(storage virtualization service provider)(420)는 가상화된 저장소 서비스를 제공할 수 있다. 저장소 가상화 서비스 공급자(420)는 물리적 SCSI 버스 장치 드라이버(440)에 액세스하기 위해 디스크 드라이버(430)와 통신할 수 있다. SCSI 버스 장치 드라이버(440)는 SCSI 제어기(450), 궁극적으로는 디스크(460) 상에 존재하는 파일에 대한 액세스를 제공할 수 있다(통상적으로 블록 계층에서 일어남). 따라서, 권한있는 파티션(410)으로 나타낸 하나의 가상 머신은 SCSI 제어기(450)인 물리적 저장 장치를 제어한다. 권한없는 파티션(470)으로 나타낸 다른 가상 머신은 SCSI 제어기(450)에 액세스하려고 할 수 있다.
이제 도 5를 참조하면, 디스크(460)로의 제2 경로를 구성한 후의 예시적인 종료 상태(end state)가 나타내어져 있다. 권한없는 파티션(470)은 보조 SCSI 제어기(520)를 통해 디스크(460)를 물리적으로 제어한다. 이 액세스는 물리적 SCSI 버스 장치 드라이버(510) 및 디스크 드라이버(505)를 포함하는 보조 스택에 의해 제공된다. 제1 경로를 제공하는 가상 스택은 디스크 드라이버(485) 및 가상 SCSI 버스 드라이버(480)를 포함하며, 이어서 이들은 VM 버스(465)를 통해 통신을 한다. 저장소 가상화 서비스 공급자(420)는 가상화된 저장소 서비스를 제공할 수 있다. 저장소 가상화 서비스 공급자(420)는 물리적 SCSI 버스 장치 드라이버(440)에 액세스하기 위해 디스크 드라이버(430)와 통신할 수 있다. SCSI 버스 장치 드라이버(440)는 디스크(460)에 대한 주요 인터페이스(primary interface)를 제공하는 SCSI 제어기(450)에 대한 액세스를 제공할 수 있다. 다중-경로 리디렉션 계층(500)이 권한없는 파티션(470)에 제공되고, 2개의 스택에 대한 액세스를 관리 및 제어한다.
생길 수 있는 한가지 문제점은, 권한없는 파티션에서 운영 체제 인스턴스 내의 경로들 중 어느 하나에 디스크 드라이버 계층을 구성하기 위해, 저장 디스크(460)의 제어가 필요할 수 있다는 것이다. 2개의 장치 드라이버 스택을 구성하는 데 필요한 프로세스는 통상적으로 부팅 장치인 디스크로부터 판독하는 것 및 코드 및 데이터를 페이징함으로써 디스크 활동을 수행하는 것을 필요로 할 것이다. 이것이 가능할 수 있지만, 대부분의 구성에서, SCSI 제어기는 그의 주요 인터페이스 및 보조 인터페이스 둘다로부터 동시에 디스크를 제어할 수 없다. 당업자라면 본 발명을 SCSI 장치에 적용하는 것이 예시적인 것이며 개시된 방법 및 시스템이 다른 I/O 장치[SAS(Serial Attached SCSI), iSCSI(internet SCSI), 및 FibreChannel(이들로 제한되지 않음) 등]에 적용될 수 있다는 것을 잘 알 것이다.
다양한 실시예에서, 제2 I/O 경로 또는 스택을 구성하는 프로세스가 본 명세서에 개시되어 있다. 이하에서는 가상 I/O 스택(synthetic I/O stack)으로 시작하여 물리적 스택(physical stack)을 구성하는 프로세스를 기술할 것이지만, 당업자라면 가상 I/O 스택으로 시작하여 물리적 스택을 구성하는 데 유사한 프로세스가 사용될 수 있다는 것을 잘 알 것이다.
일부 실시예에서, SCSI 제어기는 그 자신으로의 보조 인터페이스를 생성하라고 요청을 받을 수 있다. 일부 장치는 이러한 동작을 수행할 수 있으며, PCI(Peripheral Component Interconnect) SIG(Special Interest Group)의 SR(Single-Root) IO V(I/O Virtualization) 규격과 호환되는 장치가 특히 그렇다. 도 6을 참조하면, 가상 머신에 대한 리소스의 할당을 관리하고 가상 머신에 할당된 리소스를 다른 가상 머신에 의한 액세스로부터 격리시킬 수 있는 가상 저장소 관리자(virtual storage manager)(600)가 제공된다. 가상 저장소 관리자(600)는 그의 물리적 SCSI 버스 장치 드라이버(440)를 통해 SCSI 제어기(450)로 메시지를 전송할 수 있다. SCSI 제어기(450)는 이어서 보조 SCSI 제어기 인터페이스(520)를 생성할 수 있다. 앞서 언급한 바와 같이, 본 발명은 개시된 방법을 SCSI 제어기 이외의 다양한 저장소 제어기에 적용하는 것을 생각하고 있다. 일부 제어기는, 단일 SR-IOV-호환 제어기보다는 다수의 제어기가 사용될 수 있도록, 다중 방식으로, 예를 들어, SAN(Storage Area Network)에서 저장 매체에 연결될 수 있다.
도 7을 참조하면, 제2 I/O 스택을 설정하는 추가의 예시적인 프로세스가 예시되어 있다. 보조 제어기 인터페이스(520)에 대해 저장 장치 드라이버(700)가 설정될 수 있다. 가상 저장소 스택(710)을 사용하여, 장치 드라이버에 관계된 파일을 찾기 위해 부팅 장치가 검색될 수 있다.
권한없는 파티션(470)에 있는 SCSI 버스 장치 드라이버(700)는 이제 디스크를 나타내는 자식 장치를 생성할 수 있다. 그렇지만, 권한없는 파티션(470)은 현재 권한있는 파티션(410)의 제어 하에 있는 디스크(460)를 소유하지 않는다. 그 결과, 스택의 이 부분을 생성하는 보통의 방법이 작동하지 않을 수 있는데, 그 이유는 장치가 그의 속성을 찾기 위해 I/O를 디스크로 전송할 수 없기 때문이다.
도 8을 참조하면, SCSI 버스 장치 드라이버(700)는 SCSI 버스 장치 드라이버(700)가 궁극적으로 소유할 수 있는 디스크(들)에 관한 정보에 대한 요청을 다중-경로 리디렉션 계층(500)으로 전송할 수 있다. 다중-경로 리디렉션 계층(500)은 이어서 기존의 디스크 드라이버(485)에 대한 핸들로 응답할 수 있다.
운영 체제 I/O 관리자는 장치 드라이버에 의해 제공되는 인터페이스와 응용 프로그램 간의 통신을 관리할 수 있다. I/O 관리자는 또한, I/O 기능을 관리하고 장치가 시스템에 추가될 때를 인식하는 플러그 앤 플레이 관리자(Plug and Play manager)를 포함할 수 있다. 도 9를 참조하면, 권한없는 파티션(470)에 있는 SCSI 버스 드라이버(700)은 디스크(460)를 나타내는 개체를 생성하고 개체를 플러그 앤 플레이 관리자에게 보고할 수 있고, 플러그 앤 플레이 관리자는 이어서 디스크(460)에 대한 드라이버(900)를 설정할 수 있다. 보통, SCSI 제어기 인터페이스(520)가 I/O를 디스크(460)로 전송하지 않으면 드라이버(900)가 설정될 수 없을 것이다. 이 경우에, 드라이버(900)가 설정될 수 있는 이유는 다중-경로 리디렉션 계층(500)이 SCSI 제어기 인터페이스(520)에 제공한 디스크 드라이버(485)에 대한 핸들을 사용하여 필요한 I/O가 가상 저장소 스택(910)으로 리디렉션되기 때문이다. 다중-경로 리디렉션 계층(500)은 이어서 새 디스크 개체(900) 및 그의 관련 드라이버에 대한 핸들을 열 수 있다.
도 10을 참조하면, 다중-경로 리디렉션 계층(500)은 메시지를 가상 저장소 관리자(600)로 전송할 수 있다. 가상 저장소 관리자(600)는 SCSI 제어기의 주요 인터페이스(450)에 대한 SCSI 버스 장치 드라이버(440)로 메시지를 전송할 수 있다. SCSI 제어기의 주요 인터페이스(450)는 이어서, 도시된 바와 같이, 디스크(460)의 제어를 SCSI 제어기의 보조 인터페이스(520)로 넘길 수 있다. 이 시점에서, 다중-경로 리디렉션 계층(500)은 I/O를 파일 시스템(475)으로부터 권한없는 파티션(470) 내의 물리적 스택(1000)을 통해 아래로 보낼 수 있다.
여기 개시된 측면은 시스템, 방법, 컴퓨터 판독가능 매체에 존재하는 컴퓨터 실행가능 명령어 등으로서 구현될 수 있다. 따라서, 임의의 특정의 시스템, 방법, 또는 컴퓨터 판독가능 매체에 대한 개시 내용이 그것으로 제한되지 않으며, 오히려 개시된 발명 대상을 구현하는 다른 방식으로 확장된다.
도 11 및 도 12는 스택과 연관된 장치를 제어하지 않는 가상 머신에서 장치 드라이버 스택을 구성하는 동작 절차의 일례를 나타낸 것이다. 이 절차는 동작(1100, 1110, 1120, 1130, 1140, 1150, 1160, 1170, 1180)을 포함할 수 있다. 도 11을 참조하면, 동작(1100)은 동작 절차를 시작하고, 동작(1110)에서, 장치에 대한 보조 인터페이스를 인스턴스화하라는 요청이 전송될 수 있다. 보조 인터페이스에 대한 물리적 드라이버가 구성될 수 있다(1120). 동작(1130)은 상기 장치의 표현을 생성함으로써 상기 장치 드라이버 스택을 구성하는 것을 나타낸다. 동작(1140)은 상기 장치에 대한 새 드라이버를 구성하는 것을 나타내고, 동작(1150)은 상기 장치 드라이버 스택에 제2 표시를 제공하는 것을 나타낸다. 동작(1160)은 상기 장치 드라이버 스택을 구성하기 위한 정보가 상기 대안의 스택을 통해 상기 장치와 통신함으로서 획득된다는 것을 나타낸다. 동작(1170)은 상기 장치 드라이버 스택 및 보조 인터페이스를 통해 상기 장치로 I/O를 보내는 것을 나타낸다. 동작(1180)은 상기 장치의 제어를 상기 보조 인터페이스로 넘기라는 메시지를 상기 장치에 대한 주요 인터페이스로 전송하는 것을 나타낸다.
계속하여 도 12에서, 동작(1200)은 장치가 선택적으로 다수의 제어 인터페이스를 포함할 수 있다는 것을 나타낸다. 동작(1205)은 다수의 제어 인터페이스가 선택적으로 PCI SR-IOV 규격을 준수할 수 있다는 것을 나타낸다. 일 실시예에서, I/O를 페이징하는 데 장치 드라이버 스택이 사용될 수 있고(1210), 동작(1215)에서 I/O를 페이징하는 것이 장치 드라이버 스택을 생성하는 데 필요할 수 있다.
동작(1220)은, 일 실시예에서, 장치가 디스크 장치이라는 것을 나타낸다. 다른 실시예(1225)에서, 장치는 네트워크 인터페이스 어댑터이다. 다양한 실시예에서, I/O 요청을 대안의 스택으로 리디렉션함으로써 장치의 설명 및 속성이 발견된다(1230).
동작(1235)에서, 장치의 드라이버에 관계된 파일을 찾기 위해 가상 저장소 스택을 통해 부팅 장치가 검색될 수 있다. 동작(1240)은 물리적 드라이버가 소유할 수 있는 장치에 관한 정보에 대한 요청을 다중-경로 리디렉션 계층으로 전송하는 것을 나타낸다. 일 실시예에서, 표시는 핸들일 수 있다(1245). 다른 실시예에서, 가상 저장소 관리자로의 메시지가 전송될 수 있으며(1250), 이 메시지는 표시에 대해 기술한다.
도 13 및 도 14는 가상 머신 환경에서 코드 또는 데이터를 페이징하는 데 사용되는 I/O 장치로의 다수의 경로를 생성하는 예시적인 동작 절차를 나타낸 것이다. 이 절차는 동작(1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314)을 포함할 수 있다. 도 13을 참조하면, 동작(1300)은 동작 절차를 시작하고, 동작(1302)은 보조 인터페이스의 인스턴스화를 요청하고 I/O 장치에 대한 물리적 드라이버를 구성하며, 여기서 I/O 장치는 다수의 제어 인터페이스를 지원할 수 있다. 동작(1304)은 상기 I/O 장치에 대한 기존의 드라이버를 포함하는 기존의 스택에 대한 포인터를 I/O 가상화 계층으로부터 수신하는 것을 나타내고, 동작(1306)에서, 장치를 나타내는 개체가 인스턴스화될 수 있다.
동작(1308)은 상기 기존의 스택을 통해 I/O 장치와 통신하는 것 및 I/O 장치에 대한 새 드라이버를 구성하는 것을 나타낸다. 개체 및 새 드라이버에 대한 포인터가 제공될 수 있다(1310). 동작(1312)은 상기 I/O 장치의 제어를 상기 보조 인터페이스로 넘기라는 메시지를 상기 I/O 장치에 대한 주요 인터페이스로 전송하는 것을 나타낸다. 동작(1314)은 상기 포인터를 사용하여 새 드라이버 및 보조 인터페이스를 통해 I/O를 상기 I/O 장치로 리디렉션하는 것을 나타낸다.
계속하여 도 14에서, 동작(1402)은 I/O 장치의 속성을 수신하는 것과 코드 및 데이터를 페이징하는 것을 나타낸다. 동작(1404)은, 일 실시예에서, 기존의 스택이 물리적 스택이라는 것을 나타낸다. 다른 실시예에서, 기존의 스택은 가상 스택일 수 있다(1406).
상기한 측면들 중 임의의 측면이 방법, 시스템, 컴퓨터 판독가능 매체, 또는 임의의 유형의 제품으로 구현될 수 있다. 예를 들어, 도 15에 따르면, 컴퓨터 판독가능 매체는 가상화된 I/O 환경에서 저장 장치에 대한 대안의 I/O 스택을 생성하는 컴퓨터 실행가능 명령어를 저장할 수 있으며, 여기서 저장 장치는 코드 및 데이터를 페이징하는 데 사용되고, 저장 장치에서의 페이징이 기존의 스택을 통해 계속되는 동안 대안의 I/O 스택이 생성된다. 이러한 매체는 보조 인터페이스의 인스턴스화를 요청하고 저장 장치에 대한 보조 물리적 드라이버를 구성하는 제1 명령어 부분집합(1510), 기존의 스택에 대한 핸들을 수신하는 제2 명령어 부분집합(1512), 상기 핸들을 사용하여 기존의 스택을 식별하고 기존의 스택을 통해 저장 장치와 통신하는 제3 명령어 부분집합(1514), 저장 장치에 대한 상기 대안의 I/O 스택을 인스턴스화하는 제4 명령어 부분집합 - 대안의 I/O 스택은 상기 저장 장치를 나타내는 개체 및 저장 장치에 대한 드라이버를 포함함 -(1516), 상기 대안의 I/O 스택에 핸들을 보고하는 제5 명령어 부분집합(1518), 및 상기 저장 장치의 제어를 상기 보조 인터페이스로 넘기라는 메시지를 상기 저장 장치에 대한 주요 인터페이스로 전송하는 제6 명령어 부분집합(1520)을 포함할 수 있다. 당업자라면 본 명세서에 개시된 다양한 다른 측면을 포착하는 데 부가의 명령어 집합이 사용될 수 있다는 것과 여기 개시된 3개의 명령어 부분집합의 상세 내용이 본 발명에 따라 달라질 수 있다는 것을 잘 알 것이다.
예를 들어, 명령어는 대안의 I/O 스택을 통해 I/O를 저장 장치로 리디렉션하는 명령어(1524)를 추가로 포함할 수 있다. 명령어는 저장 장치가 PCI SR-IOV 호환인 실시예를 지원하는 명령어(1526), 및 저장 장치에 대한 드라이버에 관계된 파일을 찾기 위해 기존의 스택을 통해 부팅 장치를 검색하는 명령어(1528)를 추가로 포함할 수 있다.
이상에서 기술한 바와 같이, 본 발명의 측면이 프로그램된 컴퓨터 상에서 실행될 수 있다. 도 1c 및 이하의 설명은 본 발명의 측면이 구현될 수 있는 적당한 컴퓨팅 환경에 대한 간략한 설명을 제공하기 위한 것이다. 당업자라면 도 1c의 컴퓨터 시스템이, 일부 실시예에서, 도 1a 및 도 1b의 다양한 측면을 실시할 수 있다는 것을 잘 알 것이다. 이들 예시적인 실시예에서, 서버와 클라이언트는 도 1c에 설명된 구성요소들의 일부 또는 전부를 포함할 수 있으며, 일부 실시예에서는, 서버와 클라이언트 각각이 본 발명의 특정 측면을 인스턴스화하도록 구성된 회로를 포함할 수 있다.
본 개시 내용을 통해 사용되는 회로라는 용어는 특수 하드웨어 구성요소를 포함할 수 있다. 동일한 또는 다른 실시예에서, 회로는 펌웨어 또는 스위치에 의해 기능(들)을 수행하도록 구성된 마이크로프로세서를 포함할 수 있다. 동일한 또는 다른 예시적인 실시예에서, 회로는 기능(들)을 수행하는 동작을 하는 논리를 구현하는 소프트웨어 명령어가 메모리(예를 들어, RAM 및/또는 가상 메모리)에 로드될 때 구성될 수 있는 하나 이상의 범용 처리 장치 및/또는 다중-코어 처리 장치 등을 포함할 수 있다. 회로가 하드웨어와 소프트웨어의 조합을 포함하는 예시적인 실시예에서, 구현자는 논리를 구현하는 소스 코드를 작성할 수 있으며, 소스 코드는 범용 처리 장치(들)에 의해 처리될 수 있는 머신-판독가능 코드로 컴파일될 수 있다.
도 1c를 참조하면, 컴퓨팅 시스템은 처리 장치(21), 시스템 메모리(22), 및 시스템 메모리를 비롯한 다양한 시스템 구성요소를 처리 장치(21)에 결합시키는 시스템 버스(23)를 포함하는 컴퓨터(20) 등을 포함할 수 있다. 시스템 버스(23)는 메모리 버스 또는 메모리 제어기, 주변 장치 버스, 및 각종의 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 어느 것이라도 될 수 있다. 시스템 메모리는 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25)를 포함한다. 시동 중과 같은 때에 컴퓨터(20) 내의 구성요소들 간의 정보 전송을 돕는 기본 루틴이 들어 있는 기본 입/출력 시스템(26)(BIOS)은 ROM(24)에 저장되어 있다. 컴퓨터(20)는 하드 디스크(도시 생략)로부터 판독을 하고 그에 기록을 하는 하드 디스크 드라이브(27), 이동식 자기 디스크(29)로부터 판독을 하거나 그에 기록을 하는 자기 디스크 드라이브(28), 그리고 CD-ROM 또는 기타 광 매체 등의 이동식 광 디스크(31)로부터 판독을 하거나 그에 기록을 하는 광 디스크 드라이브(30)를 추가로 포함할 수 있다. 어떤 예시적인 실시예에서, 본 발명의 측면을 구현하는 컴퓨터 실행가능 명령어는 ROM(24), 하드 디스크(도시 생략), RAM(25), 이동식 자기 디스크(29), 광 디스크(31), 및/또는 처리 장치(21)의 캐시에 저장될 수 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는 각각 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 및 광 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 연결되어 있다. 이들 드라이브 및 그와 연관된 컴퓨터 판독가능 매체는 컴퓨터(20)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기술된 환경이 하드 디스크, 이동식 자기 디스크(29), 및 이동식 광학 디스크(31)를 이용하고 있지만, 당업자라면 자기 카세트, 플래시 메모리 카드, DVD(digital video disk), 베르누이 카트리지, RAM(random access memory), ROM(read only memory), 기타 등등과 같은 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터-판독가능 매체도 역시 운영 환경에서 사용될 수 있다는 것을 잘 알 것이다.
운영 체제(35), 하나 이상의 응용 프로그램(36), 기타 프로그램 모듈(37) 및 프로그램 데이터(38)를 비롯한 다수의 프로그램 모듈이 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42) 등의 입력 장치를 통해 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 기타 등등이 있을 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 연결된 직렬 포트 인터페이스(46)를 통해 처리 장치(21)에 연결되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스에 의해 연결될 수도 있다. 디스플레이(47) 또는 기타 유형의 디스플레이 장치도 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 연결될 수 있다. 디스플레이(47)에 부가하여, 컴퓨터는 통상적으로 스피커 및 프린터 등의 다른 주변 출력 장치(도시 생략)를 포함하고 있다. 도 1c의 시스템은 또한 호스트 어댑터(55), SCSI(Small Computer System Interface) 버스(56), 및 SCSI 버스(56)에 연결된 외부 저장 장치(62)도 포함하고 있다.
컴퓨터(20)는 원격 컴퓨터(49) 등의 하나 이상의 원격 컴퓨터와의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 다른 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(20)와 관련하여 상기한 구성요소들 중 다수 또는 그 전부를 포함할 수 있지만, 도 1c에는 메모리 저장 장치(50)만이 도시되어 있다. 도 1c에 도시된 논리적 연결은 근거리 통신망(LAN)(51) 및 원거리 통신망(WAN)(52)을 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 연결될 수 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는 통상적으로 인터넷 등의 WAN(52)을 통해 통신을 설정하는 모뎀(54) 또는 기타 수단을 포함할 수 있다. 내장형이거나 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 연결될 수 있다. 네트워크화된 환경에서, 컴퓨터(20) 또는 그의 일부와 관련하여 도시된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결이 일례이고 컴퓨터들 간에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 잘 알 것이다. 또한, 본 발명의 수많은 실시예들이 컴퓨터 시스템에 특히 적합할 것이라고 기대되는 반면에, 본 문서 내의 어떤 내용도 본 발명을 이러한 실시예들로 제한하기 위한 것이 아니다.
전술한 상세한 설명은 여러 일례 및/또는 동작 흐름도를 통하여 시스템 및/또는 프로세스의 다양한 실시예를 기술하였다. 이러한 블록도 및/또는 일례가 하나 이상의 기능 및/또는 동작을 포함하는 한, 당업자라면 이러한 블록도 또는 일례 내에서의 각각의 기능 및/또는 동작이 광범위한 하드웨어, 소프트웨어, 펌웨어 또는 거의 모든 이들의 조합에 의해, 개별적으로 및/또는 공동으로, 구현될 수 있다는 것을 잘 알 것이다.
마지막으로, 본 발명이 다양한 도면에 예시된 바람직한 측면과 관련하여 기술되어 있지만, 본 발명을 벗어나지 않고 본 발명의 동일한 기능을 수행하기 위해, 다른 유사한 측면이 사용될 수 있거나 기술된 측면에 대해 수정 및 추가가 행해질 수 있다는 것을 잘 알 것이다. 예를 들어, 본 발명의 다양한 측면에서, 장치 드라이버 스택에 의해 표현되는 장치를 물리적으로 제어하지 않는 가상 머신 파티션에 장치 드라이버 스택을 구성하는 다양한 메커니즘이 개시되어 있다. 그렇지만, 이들 기술된 측면에 대한 다른 등가의 메커니즘도 본 개시 내용에서 생각되고 있다. 따라서, 본 발명이 임의의 하나의 측면으로 제한되어서는 안되고, 오히려 첨부된 특허청구범위에 따라 그의 범위 및 폭이 해석되어야 한다.

Claims (15)

  1. 장치 드라이버 스택(1000)과 연관된 장치를 제어하지 않는 가상 컴퓨터(470)에 상기 장치 드라이버 스택을 구성하는 방법으로서,
    상기 장치에 대한 보조 인터페이스(520)의 인스턴스화를 요청하고 상기 보조 인터페이스에 대한 물리적 드라이버(700)를 구성하는 단계,
    상기 장치에 대한 대안의 스택(910)의 제1 표시를 수신하는 단계,
    상기 장치의 표현을 생성하고 상기 장치에 대한 새 드라이버(900)를 구성하며 상기 장치 드라이버 스택에 제2 표시를 제공함으로써 상기 장치 드라이버 스택을 구성하는 단계 - 상기 장치 드라이버 스택을 구성하기 위한 정보는 상기 대안의 스택을 통해 상기 장치와 통신함으로써 획득됨 -, 및
    상기 장치 드라이버 스택 및 보조 인터페이스를 통해 상기 장치로 I/O를 디렉팅하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 장치의 제어를 상기 보조 인터페이스로 넘기라는 메시지를 상기 장치에 대한 주요 인터페이스로 전송하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 장치는 다수의 제어 인터페이스를 포함하는 방법.
  4. 제1항에 있어서, 상기 장치 드라이버 스택은 I/O를 페이징하는 데 사용되는 방법.
  5. 제1항에 있어서, 상기 장치는 저장 장치인 방법.
  6. 제1항에 있어서, 상기 장치는 네트워크 인터페이스 어댑터인 방법.
  7. 제1항에 있어서, 상기 장치의 설명 및 속성은 I/O 요청을 상기 대안의 스택으로 리디렉션함으로써 획득되는 방법.
  8. 제1항에 있어서, 상기 물리적 드라이버를 구성하는 단계는 상기 물리적 드라이버에 관계된 파일을 찾기 위해 가상 저장소 스택(synthetic storage stack)을 통해 부팅 장치를 검색하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서, 상기 물리적 드라이버가 소유할 수 있는 장치에 관한 정보에 대한 요청을 다중-경로 리디렉션 계층(multi-path redirection layer)으로 전송하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서, 상기 제1 및 제2 표시는 핸들(handle)인 방법.
  11. 제1항에 있어서, 상기 제2 표시를 기술하는 메시지를 가상 저장소 관리자(virtual storage manager)로 전송하는 단계를 더 포함하는 방법.
  12. 가상 머신 환경에서 코드 또는 데이터를 페이징하는 데 사용되는 I/O 장치로의 다수의 경로를 생성하도록 구성된 시스템으로서,
    적어도 하나의 프로세서, 및
    상기 적어도 하나의 프로세서에 통신 가능하게 연결된 적어도 하나의 메모리
    를 포함하며,
    상기 메모리는
    보조 인터페이스(520)의 인스턴스화를 요청하고 상기 I/O 장치에 대한 물리적 드라이버(700)를 구성하고 - 상기 I/O 장치는 다수의 제어 인터페이스를 지원할 수 있음 -,
    상기 I/O 장치에 대한 기존의 드라이버를 포함하는 기존의 스택(910)에 대한 포인터를 I/O 가상화 계층으로부터 수신하며,
    상기 장치를 표현하는 개체를 인스턴스화하고,
    상기 기존의 스택을 통해 상기 I/O 장치와 통신하고 상기 I/O 장치에 대한 새 드라이버를 구성하며,
    상기 개체 및 새 드라이버에 대한 포인터를 제공하고,
    상기 I/O 장치의 제어를 상기 보조 인터페이스로 넘기라는 메시지를 상기 I/O 장치에 대한 주요 인터페이스(450)로 전송하며,
    상기 포인터를 사용하여 상기 새 드라이버 및 보조 인터페이스를 통해 I/O를 상기 I/O 장치로 리디렉션할 수 있는 컴퓨터 실행가능 명령어를 저장하고 있는 시스템.
  13. 제13항에 있어서, 상기 I/O 장치와 통신하는 것은 상기 I/O 장치의 속성을 수신하고 코드 및 데이터를 페이징하는 것을 더 포함하는 시스템.
  14. 가상화된 I/O 환경에서 저장 장치에 대한 대안의 I/O 스택을 생성하는 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 저장 매체(1500)로서,
    상기 저장 장치는 코드 및 데이터를 페이징하는 데 사용되고, 상기 대안의 I/O 스택은 상기 저장 장치에서의 페이징이 기존의 스택을 통해 계속되는 동안 생성되며,
    상기 컴퓨터 실행가능 명령어는,
    보조 인터페이스의 인스턴스화를 요청하고 상기 저장 장치에 대한 보조 물리적 드라이버를 구성하는 명령어(1510),
    상기 기존의 스택에 대한 핸들을 수신하는 명령어(1512),
    상기 핸들을 사용하여 상기 기존의 스택을 식별하고 상기 기존의 스택을 통해 상기 저장 장치와 통신하는 명령어(1514),
    상기 저장 장치에 대한 상기 대안의 I/O 스택을 인스턴스화하는 명령어(1516) - 상기 대안의 I/O 스택은 상기 저장 장치를 표현하는 개체 및 상기 저장 장치에 대한 드라이버를 포함함 -,
    상기 대안의 I/O 스택에 대한 핸들을 보고하는 명령어(1518), 및
    상기 저장 장치의 제어를 상기 보조 인터페이스로 넘기라는 메시지를 상기 저장 장치에 대한 주요 인터페이스로 전송하는 명령어(1520)를 포함하는 컴퓨터 판독가능 저장 매체.
  15. 제17항에 있어서, 상기 컴퓨터 실행가능 명령어는 상기 대안의 I/O 스택을 통해 I/O를 상기 저장 장치로 리디렉션하는 명령어를 더 포함하는 컴퓨터 판독가능 저장 매체.
KR1020117010044A 2008-10-09 2009-09-30 가상화된 저장소 할당 방법 KR101602519B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/248,299 2008-10-09
US12/248,299 US8321878B2 (en) 2008-10-09 2008-10-09 Virtualized storage assignment method

Publications (2)

Publication Number Publication Date
KR20110084211A true KR20110084211A (ko) 2011-07-21
KR101602519B1 KR101602519B1 (ko) 2016-03-10

Family

ID=42100071

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117010044A KR101602519B1 (ko) 2008-10-09 2009-09-30 가상화된 저장소 할당 방법

Country Status (7)

Country Link
US (2) US8321878B2 (ko)
EP (1) EP2335156B1 (ko)
JP (1) JP5599804B2 (ko)
KR (1) KR101602519B1 (ko)
CN (1) CN102177509B (ko)
HK (1) HK1158332A1 (ko)
WO (1) WO2010042374A2 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321878B2 (en) * 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
KR101343595B1 (ko) * 2008-12-19 2013-12-20 한국전자통신연구원 라우터에 대한 포워딩 가상화 방법
US8255596B2 (en) * 2009-06-10 2012-08-28 International Business Machines Corporation Multipath-based migration of data across storage controllers
US8413164B1 (en) * 2009-06-30 2013-04-02 Emc Corporation Presenting an interface to a computer system for use in conducting diagnostic tests
US8417849B2 (en) * 2009-10-07 2013-04-09 International Business Machines Corporation Apparatus and method to adjust a multi-path device reservation
US9336032B2 (en) 2010-10-28 2016-05-10 Hewlett Packard Enterprise Development Lp Zoning data to a virtual machine
US8561065B2 (en) 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions
US8301806B2 (en) 2010-11-24 2012-10-30 International Business Machines Corporation Configuring an input/output adapter
US9218219B2 (en) 2010-11-24 2015-12-22 International Business Machines Corporation Managing virtual functions of an input/output adapter
US8839240B2 (en) 2010-11-29 2014-09-16 International Business Machines Corporation Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device
US9146863B2 (en) 2010-12-08 2015-09-29 International Business Machines Corporation Address translation table to enable access to virtualized functions
US8495274B2 (en) 2010-12-08 2013-07-23 International Business Machines Corporation Address translation table to enable access to virtual functions
US8561066B2 (en) 2010-12-08 2013-10-15 International Business Machines Corporation Simplified DMA mappings for self-virtualizing input/output device virtual functions
US8645755B2 (en) 2010-12-15 2014-02-04 International Business Machines Corporation Enhanced error handling for self-virtualizing input/output device in logically-partitioned data processing system
US8683478B2 (en) 2010-12-21 2014-03-25 International Business Machines Corporation Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions
US8447891B2 (en) 2011-01-11 2013-05-21 International Business Machines Corporation Dynamically assigning virtual functions to client applications
US8862739B2 (en) 2011-01-11 2014-10-14 International Business Machines Corporation Allocating resources to virtual functions
US8677356B2 (en) 2011-01-11 2014-03-18 International Business Machines Corporation Adjunct partition work scheduling with quality of service attributes
US8537706B2 (en) 2011-01-11 2013-09-17 International Business Machines Corporation Preserving traffic class priority QoS with self-virtualizing input/output device
US8418166B2 (en) 2011-01-11 2013-04-09 International Business Machines Corporation Transparent update of adapter firmware for self-virtualizing input/output device
US8364871B2 (en) 2011-01-25 2013-01-29 International Business Machines Corporation Providing virtual functions after an input/output adapter is moved from a first location to a second location
US8825981B2 (en) 2011-01-25 2014-09-02 International Business Machines Corporation Allocating addressable memory regions to an adapter
US8832401B2 (en) 2011-01-26 2014-09-09 International Business Machines Corporation Iteratively de-allocating active objects associated with virtual functions of an adapter
US8726276B2 (en) 2011-01-26 2014-05-13 International Business Machines Corporation Resetting a virtual function that is hosted by an input/output adapter
US8527666B2 (en) 2011-02-21 2013-09-03 International Business Machines Corporation Accessing a configuration space of a virtual function
US9218195B2 (en) 2011-05-17 2015-12-22 International Business Machines Corporation Vendor-independent resource configuration interface for self-virtualizing input/output device
US8838837B2 (en) 2011-06-23 2014-09-16 Microsoft Corporation Failover mechanism
US8959223B2 (en) 2011-09-29 2015-02-17 International Business Machines Corporation Automated high resiliency system pool
US8996700B2 (en) 2011-09-29 2015-03-31 International Business Machines Corporation Automated workload performance and availability optimization based on hardware affinity
CN103577149B (zh) * 2013-11-20 2017-02-08 华为技术有限公司 Hba兼容处理方法、装置及系统
WO2016003415A1 (en) * 2014-06-30 2016-01-07 Hewlett-Packard Development Company, L.P. Securely sending a complete initialization package
EP3161652B1 (en) * 2014-06-30 2020-06-03 Hewlett-Packard Development Company, L.P. Full virtual machine functionality
CN109286792B (zh) * 2014-07-28 2020-12-25 华为数字技术(成都)有限公司 一种监控视频存储方法及装置
EP3182282A1 (en) * 2015-12-15 2017-06-21 OpenSynergy GmbH Method for operating a system in a control unit and system
CN106919341B (zh) * 2015-12-28 2020-04-21 成都华为技术有限公司 一种下发i/o的方法及装置
US10509729B2 (en) 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US10228981B2 (en) 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
CN107688484A (zh) * 2017-09-06 2018-02-13 郑州云海信息技术有限公司 一种虚拟机迁移的方法及系统
US11216701B1 (en) * 2018-02-09 2022-01-04 Amazon Technologies, Inc. Unsupervised representation learning for structured records

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008068132A1 (en) * 2006-12-07 2008-06-12 International Business Machines Corporation System and method for migrating domains from one physical data processing system to another
US20090307377A1 (en) * 2008-06-09 2009-12-10 Anderson Gary D Arrangements for I/O Control in a Virtualized System

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
DE69738810D1 (de) * 1996-01-24 2008-08-14 Sun Microsystems Inc Befehlsfalten in einem stapelspeicherprozessor
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6959440B1 (en) * 2000-08-02 2005-10-25 Intel Corporation Dynamic removal of a driver stack when a parent driver uses a child driver
US6647454B1 (en) * 2000-09-25 2003-11-11 Intel Corporation Data transfer through a bridge
US7792923B2 (en) * 2000-10-13 2010-09-07 Zhe Khi Pak Disk system adapted to be directly attached to network
US6904477B2 (en) 2001-04-13 2005-06-07 Sun Microsystems, Inc. Virtual host controller interface with multipath input/output
US7185078B2 (en) * 2001-06-28 2007-02-27 Microsoft Corporation Event manager for a control management system
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US7210068B1 (en) 2002-03-06 2007-04-24 Network Appliance, Inc. System and method for multipath I/O support for fibre channel devices
US7222348B1 (en) 2002-12-16 2007-05-22 Unisys Corporation Universal multi-path driver for storage systems
US7194662B2 (en) 2003-02-28 2007-03-20 International Business Machines Corporation Method, apparatus and program storage device for providing data path optimization
US7080172B1 (en) 2003-05-27 2006-07-18 Marvell Luternational Ltd. Management of memory, hardware and associated device drivers using stacks
US7421710B2 (en) 2003-10-08 2008-09-02 Lsi Corporation System and method of creating virtual data paths using a multiple-path driver
US7689987B2 (en) 2004-06-30 2010-03-30 Microsoft Corporation Systems and methods for stack-jumping between a virtual machine and a host environment
US20060047850A1 (en) 2004-08-31 2006-03-02 Singh Bhasin Harinder P Multi-chassis, multi-path storage solutions in storage area networks
US20060212870A1 (en) 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
GB0505926D0 (en) * 2005-03-23 2005-04-27 Ibm Data processing system and method
TWI307034B (en) 2005-11-23 2009-03-01 Infortrend Technology Inc Storage virtualization subsystem and system with host-side redundancy via sas connectivity
JP4800059B2 (ja) 2006-02-13 2011-10-26 株式会社日立製作所 仮想ストレージシステム及びその制御方法
US7788665B2 (en) * 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device
US7783788B1 (en) * 2006-04-28 2010-08-24 Huawei Technologies Co., Ltd. Virtual input/output server
US7620784B2 (en) * 2006-06-09 2009-11-17 Microsoft Corporation High speed nonvolatile memory device using parallel writing among a plurality of interfaces
US7877760B2 (en) * 2006-09-29 2011-01-25 Microsoft Corporation Distributed hardware state management in virtual machines
US7657663B2 (en) 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
US7941812B2 (en) 2007-01-30 2011-05-10 Hewlett-Packard Development Company, L.P. Input/output virtualization through offload techniques
US8645974B2 (en) * 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US7782869B1 (en) * 2007-11-29 2010-08-24 Huawei Technologies Co., Ltd. Network traffic control for virtual device interfaces
US8041849B2 (en) * 2008-07-02 2011-10-18 Lsi Corporation Method for handling small computer system interface (SCSI) commands via a redundant array of inexpensive disks (RAID) device driver
US8321878B2 (en) * 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008068132A1 (en) * 2006-12-07 2008-06-12 International Business Machines Corporation System and method for migrating domains from one physical data processing system to another
US20090307377A1 (en) * 2008-06-09 2009-12-10 Anderson Gary D Arrangements for I/O Control in a Virtualized System

Also Published As

Publication number Publication date
EP2335156A2 (en) 2011-06-22
EP2335156A4 (en) 2012-05-16
WO2010042374A2 (en) 2010-04-15
HK1158332A1 (zh) 2012-07-13
US8321878B2 (en) 2012-11-27
US8607253B2 (en) 2013-12-10
KR101602519B1 (ko) 2016-03-10
US20100095310A1 (en) 2010-04-15
CN102177509A (zh) 2011-09-07
CN102177509B (zh) 2014-03-12
EP2335156B1 (en) 2015-08-26
WO2010042374A3 (en) 2010-07-08
JP2012505473A (ja) 2012-03-01
JP5599804B2 (ja) 2014-10-01
US20130067501A1 (en) 2013-03-14

Similar Documents

Publication Publication Date Title
KR101602519B1 (ko) 가상화된 저장소 할당 방법
US9977688B2 (en) Live migration of virtual machines across virtual switches in virtual infrastructure
JP5018252B2 (ja) デバイス割り当て変更方法
US11403086B2 (en) System and method for upgrading operating system of a container using an auxiliary host
US10579403B2 (en) Policy based provisioning of containers
US9317314B2 (en) Techniques for migrating a virtual machine using shared storage
CN106537340B (zh) 虚拟化信息操纵系统的输入/输出加速设备和方法
JP4995015B2 (ja) 仮想計算機の実行可否検査方法
US20200019429A1 (en) Hot-plugging of virtual functions in a virtualized environment
US20150205542A1 (en) Virtual machine migration in shared storage environment
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
US8719817B2 (en) Virtualization intermediary/virtual machine guest operating system collaborative SCSI path management
US20170031699A1 (en) Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US20190334765A1 (en) Apparatuses and methods for site configuration management
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
US20120084775A1 (en) Techniques for Streaming Virtual Machines from a Server to a Host
US9792136B2 (en) Hardware assisted inter hypervisor partition data transfers
US10740038B2 (en) Virtual application delivery using synthetic block devices
US10579412B2 (en) Method for operating virtual machines on a virtualization platform and corresponding virtualization platform
KR20060047772A (ko) 하나의 가상 머신내에서 다수의 가상 프로세서들을초기화하는 시스템들 및 방법들
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20160077847A1 (en) Synchronization of physical functions and virtual functions within a fabric
US11327779B2 (en) Parallelized virtual machine configuration
US11055115B1 (en) Virtual machine conversion in distributed system of remote desktops
Sweeney Virtualization: An Overview

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190218

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 5