KR20170058469A - 가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템 - Google Patents

가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR20170058469A
KR20170058469A KR1020177013797A KR20177013797A KR20170058469A KR 20170058469 A KR20170058469 A KR 20170058469A KR 1020177013797 A KR1020177013797 A KR 1020177013797A KR 20177013797 A KR20177013797 A KR 20177013797A KR 20170058469 A KR20170058469 A KR 20170058469A
Authority
KR
South Korea
Prior art keywords
instance
host
input
cache
software
Prior art date
Application number
KR1020177013797A
Other languages
English (en)
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 KR20170058469A publication Critical patent/KR20170058469A/ko

Links

Images

Classifications

    • 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
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/002Specific input/output arrangements not covered by G06F3/01 - G06F3/16

Abstract

본 발명의 실시예는 가상화 처리 방법, 장치 및 컴퓨팅노드를 제공한다. 컴퓨팅 노드는 하드웨어 계층, 상기 하드웨어 계층 상에서 작동하는 호스트 , 및 상기 호스트 상에서 작동하는 적어도 하나의 가상 머신(VM)을 포함하고, 상기 하드웨어 계층은 입출력(I/O) 장치를 포함하고, 대응하는 여러 가상 기능(VF) 장치는 상기 입출력 장치로부터 가상화되고, 상기 호스트는 여러 VF 소프트웨어 인스턴스를 포함하고, 상기 여러 VF 소프트웨어 인스턴스 및 상기 여러 VF 장치는 일대일 대응관계에 있고 , 상기 호스트는 상기 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치의 백엔드 인스턴스(BE)를 더 포함하고, 상기 가상 머신은 상기 가상 입출력 장치의 프론트엔드 인스턴스(FE)를 포함하고, 상기 호스트 내에 있는 상기 백엔드 인스턴스는 아이들(idle) VF 소프트웨어 인스턴스와 결합된다. 본 발명의 실시예의 해결책은 가상화 시스템의 성능 최적화 및 호환성에 장점이 있다.

Description

가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템{VIRTUALIZATION PROCESSING METHOD AND APPARATUSES, AND COMPUTER SYSTEM}
본 발명은 컴퓨터 기술 분야에 관한 것으로서, 구체적으로, 가상화 처리 방법, 장치 및 컴퓨터 시스템에 관한 것이다.
가상화 기술은 상위 운영체재(upper operating system)로부터 하위 하드웨어 장치를 분리하는 디커플링(decoupling) 기술로서, 도 1을 참조하면, 가상 머신 모니터(VMM: Virtual Machine Monitor) 계층은, 하위 하드웨어 리소스를 직접 관리하고, 하위 하드웨어와는 무관하며 상위 운영 체재 및 어플리케이션 프로그램에 의해 사용되고 있는 가상 머신(VM: Virtual Machine)을 생성하기 위해 도입되었다.
가상화 기술은, 최근 인기 있는 클라우드 컴퓨팅(Cloud Computing) 플랫폼을 지원하는 중요한 지원 기술 중 하나로서, 물리적 장치의 리소스 활용 효율성을 크게 향상시킬 수 있다. 종래의 물리적 서버와 비교하면, 가상 머신은 고립화(isolation) 및 캡슐화(encapsulation)가 뛰어나고, 전체 가상 머신의 정보가 가상 디스크 이미지(VDI: Virtal Disk Image)에 저장될 수 있기 때문에, 스냅샷(snapshot), 백업(backup), 클로닝(cloning) 및 전달(delivering) 등의 작업을 편리하게 수행한다.
x86 프로세서의 발전과 더불어, CPU(Central Processing Unit) 및 메모리의 가상화 기술은 점점 더 완벽해졌고, 오버헤드는 현저하게 감소하였다. 가장 최근의 프로세서를 기반으로, 대부분의 어플리케이션에 대한 CPU 및 메모리의 가상화 오버헤드는 10% 이상 감소하였다. I/O(Input/Output) 기술 분야에서는, 여전히 고성능 및 저지연(low delay)의 입출력(I/O) 가상화 솔루션이 가상화 분야의 주요 기술 과제이다. 종래의 입출력 가상화 솔루션은 두 종류의 솔루션, 즉, 소프트웨어 솔루션과 하드웨어 솔루션을 포함한다. 그러나, 종래의 소프트웨어 솔루션 및 하드웨어 솔루션은 모두 중요한 장단점을 가진다. 예를 들어, 종래의 소프트웨어 솔루션은 호환성의 면에서는 장점이 있으나 성능의 손실이 크다는 단점이 있고, 하드웨어 솔루션은 뛰어난 성능을 기대할 수 있으나, 호환성 구조 및 게스트 OS 호환성 등에 관해서는 문제가 있다.
본 발명의 실시예는 가상화 시스템의 성능 및 호환성을 최적화하기 위한 가상화 처리 방법, 장치 및 컴퓨터 시스템을 제공한다.
상술한 기술적 문제점을 해결하기 위해, 본 발명의 실시예는 이하의 기술적 해결책을 제공한다.
일면에서, 본 발명의 일 실시예는 컴퓨팅 노드에 적용할 수 있는 가상화 처리 방법을 제공하며, 상기 컴퓨팅 노드는, 하드웨어 계층, 상기 하드웨어 계층 상에서 작동하는 호스트, 및 상기 호스트 상에서 작동하는 적어도 하나의 가상 머신(VM: Virtual Machine)을 포함하고, 상기 하드웨어 계층은 입출력(I/O) 장치를 포함하고, 대응하는 여러 가상 기능(VF: Virtual Function) 장치는 상기 입출력 장치로부터 가상화되고, 상기 호스트는 여러 VF 소프트웨어 인스턴스를 포함하고, 상기 여러 VF 소프트웨어 인스턴스 및 상기 여러 VF 장치는 일대일 대응관계에 있고, 상기 호스트는 상기 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치의 백엔드 인스턴스(BE)를 더 포함하고, 상기 가상 머신은 상기 가상 입출력 장치의 프론트엔드 인스턴스(FE)를 포함하고, 상기 호스트 내에 있는 상기 백엔드 인스턴스는 아이들(idle) VF 소프트웨어 인스턴스와 결합되고, 상기 가상화 처리 방법은, 상기 프론트엔드 인스턴스에 의해, DMA(Direct Memory Access: 직접 메모리 접근)를 위한 캐시를 미리 할당하는 단계; 상기 백엔드 인스턴스와 결합된 상기 VF 소프트웨어 인스턴스에 의해, 상기 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스(exporting application programming interface)를 통하여 상기 DMA를 위한 캐시에 대응하는 주소를 획득하고, 상기 획득된, 상기 DMA를 위한 캐시에 대응하는 상기 주소를 상기 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제1 저장 유닛에 기록하는 단계; 수신될 데이터가 있을 경우, 상기 VF 장치가, 상기 제1 저장 유닛으로부터 상기 DMA를 위한 캐시에 대응하는 상기 주소를 선택하고, 상기 선택된 주소를 타겟 주소로 이용하여 DMA 기록 요청을 개시하는 단계; 및 VF 장치가, 상기 DMA 기록 요청이 실행된 후에, 상기 호스트 내에 있는, 상기 VF 장치에 대응하는 상기 VF 소프트웨어 인스턴스를 통지하고, 이에 따라 상기 주소에 대응하는 상기 캐시에 기록된 데이터를 수신하도록 상기 VF 소프트웨어 인스턴스가 상기 프론트엔드 인스턴스를 트리거하는 단계를 포함한다.
다른 일면에서, 본 발명의 일 실시예는, 입출력(I/O) 장치의 가상 입출력 기능(VF: virtual function)이 이네이블(enable)된 후에, 호스트에 여러 VF(Virtual Function) 소프트웨어 인스턴스를 생성하는 단계로서, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 상기 입출력 장치로부터 가상화되고, 상기 여러 VF 소프트웨어 인스턴스 및 상기 여러 VF 장치는 일대일 대응관계에 있고 VF 장치에 대응하는, 상기 VF 소프트웨어 인스턴스를 생성하는 단계; 호스트가, 상기 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하는 단계로서, 상기 호스트에는 상기 가상 입출력 장치의 백엔드 인스턴스(BE: Back-End instance)가 생성되고, 작동된 가상 머신에는 상기 가상 입출력 장치의 프론트엔드 인스턴스(FE: Front-End instance)가 생성되는, 상기 가상 입출력 장치를 생성하는 단계; 및 상기 백엔드 인스턴스를 아이들(idle) 소프트웨어 인스턴스와 결합하는 단계를 포함하는 가상화 처리 방법을 제공한다.
또 다른 일면에서, 본 발명의 일 실시예는 하드웨어 계층, 상기 하드웨어 계층 상에서 작동하는 호스트 및 상기 호스트 상에서 작동하는 적어도 하나의 가상 머신을 포함하는 컴퓨팅 노드로서, 상기 하드웨어 계층은 입출력 장치를 포함하고, 대응하는 여러 VF 장치가 상기 입출력 장치로부터 가상화되고, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 상기 호스트는 상기 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 더 포함하고, 상기 가상 머신은 상기 가상 입출력 장치의 프론트엔드 인스턴스를 포함하고, 상기 호스트의 백엔드 인스턴스는 아이들(idle) VF 소프트웨어 인스턴스와 결합되며, 상기 프론트엔드 인스턴스는, DMA를 위한 캐시를 미리 할당하도록 구성되고, 상기 백엔드 인스턴스와 결합된 상기 VF 소프트웨어 인스턴스는, 상기 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 상기 DMA를 위한 캐시에 대응하는 주소를 획득하고, 상기 획득된, 상기 DMA를 위한 캐시에 대응하는 주소를, 상기 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제1 저장 유닛에 기록하도록 구성되고, 수신될 데이터가 있을 경우, 상기 VF 장치는, 상기 제1 저장 유닛으로부터 상기 DMA를 위한 캐시에 대응하는 상기 주소를 선택하고, 상기 선택된, 상기 DMA를 위한 캐시에 대응하는 주소를 타겟 주소로 이용하여 DMA 기록 요청을 개시하고, 상기 DMA 기록 요청이 실행된 후에, 상기 호스트 내에 있는, 상기 VF 장치에 대응하는 상기 VF 소프트웨어 인스턴스를 통지하도록 구성되고, 이에 따라 상기 주소에 대응하는 상기 캐시에 기록된 데이터를 수신하도록 상기 VF 소프트웨어 인스턴스가 상기 프론트엔드 인스턴스를 트리거하는, 컴퓨팅 노드를 더 제공한다.
또 다른 일면에서, 본 발명의 일 실시예는, 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 호스트에 여러 VF 소프트웨어 인스턴스를 생성하도록 구성된 제1 생성 유닛으로서, 상기 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 상기 입출력 장치로부터 가상화되고, 상기 여러 VF 소프트웨어 인스턴스 및 상기 여러 VF 장치는 일대일 대응관계에 있고 VF 장치 하나에 대응하는, 상기 제1 생성 유닛; 상기 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하도록 구성된 제2 생성 모듈로서, 상기 호스트에는 상기 가상 입출력장치의 백엔드 인스턴스가 생성되고, 작동된 가상 머신에는 상기 가상 입출력 장치의 프론트엔드 인스턴스가 생성되는, 상기 제2 생성 모듈; 및 상기 제2 생성 모듈에 의해 생성된 상기 백엔드 인스턴스를 상기 제1 생성 모듈에 의해 생성된 아이들(idle) VF 소프트웨어 인스턴스와 결합하도록 구성된 결합 모듈을 포함하는 호스트를 더 제공한다.
본 발명의 실시예의 컴퓨팅 노드는, 하드웨어 계층, 하드웨어 계층 상에서 작동하는 호스트, 및 호스트 상에서 작동하는 적어도 하나의 VM을 포함하고, 하드웨어 계층은 입출력 장치를 포함하며 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치의 백엔드 인스턴스를 더 포함하고, VM은 가상 입출력 장치의 프론트엔드 인스턴스를 포함하며, 호스트의 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합되는 것을 알 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
본 발명의 실시예의 기술적 해결책 또는 종래 기술을 보다 명확하게 하기 위하여, 이하에서는 실시예 또는 종래 기술의 설명에 사용되는 첨부 도면들을 간략하게 설명한다. 명확하게는, 첨부 도면은 일부 예시로서의 본 발명의 실시예를 설명하는 것이며 당업자는 창조적 노력 없이 이 도면들로부터 다른 도면을 도출할 수 있다.
도 1은 종래의 가상화 기술을 나타낸 모식적 구조도이다.
도 2a는 본 발명의 일 실시예에서 제공되는 가상화 소프트웨어 및 하드웨어 시스템의 모식적 구조도이다.
도 2b는 본 발명의 일 실시예에서 제공되는 다른 가상화 소프트웨어 및 하드웨어 시스템의 모식적 구조도이다.
도 3은 본 발명의 일 실시예에서 제공되는 가상화 처리 방법의 모식적 흐름도이다.
도 4는 본 발명의 일 실시예에서 제공되는 다른 가상화 처리 방법의 모식적 흐름도이다.
도 5는 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법의 모식적 흐름도이다.
도 6a는 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법의 모식적 흐름도이다.
도 6b는 본 발명의 일 실시예에서 제공되는 GPA 및 HPA 주소 변환을 나타낸 모식도이다.
도 7a는 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법의 모식적 흐름도이다.
도 7b는 본 발명의 일 실시예에서 제공되는 다른 GPA 및 HPA 주소 변환을 나타낸 모식도이다.
도 8a는 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법의 모식적 흐름도이다.
도 8b는 본 발명의 일 실시예에서 제공되는 또 다른 GPA 및 HPA 주소 변환을 나타낸 모식도이다.
도 9a는 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법의 모식적 흐름도이다.
도 9b는 본 발명의 일 실시예에서 제공되는 또 다른 GPA 및 HPA 주소 변환을 나타낸 모식도이다.
도 10은 본 발명의 일 실시예에서 제공되는 호스트의 모듈 구조의 모식도이다.
도 11a는 본 발명의 일 실시예에서 제공되는 컴퓨팅 노드의 모식도이다.
도 11b는 본 발명의 일 실시예에서 제공되는 다른 컴퓨팅 노드의 모식도이다.
도 11c는 본 발명의 일 실시예에서 제공되는 또 다른 컴퓨팅 노드의 모식도이다.
도 12는 본 발명의 일 실시예에서 제공되는 컴퓨터 시스템의 모식도이다.
본 발명의 실시예는 가상화 시스템의 성능 및 호환성을 최적화하기 위한 가상화 처리 방법, 장치 및 컴퓨터 시스템을 제공한다.
당업자가 본 발명의 해결책을 보다 잘 이해하게 하기 위하여, 본 발명의 실시예의 기술적 해결책은 이하에서 본 발명의 실시예의 첨부 도면을 참조로 하여 명백하고 완전하게 설명된다. 설명되는 실시예는 본 발명의 실시예의 전부라기 보다 단지 일부임은 명백하다. 본 발명의 실시예에 기초하여 당업자가 창조적 노력 없이 도출할 수 있는 모든 다른 실시예는 본 발명의 보호 범위 내에 속한다.
본 발명의 실시예를 보다 용이하게 이해하기 위해, 본 발명의 실시예의 설명에서 소개될 일부 구성요소들을 이하에서 먼저 설명한다.
가상 머신 ( VM : Virtual Machine):
하나 또는 2 이상의 컴퓨터가 가상 머신 소프트웨어를 통해 물리적 컴퓨터 상에서 시뮬레이팅될 수 있고, 이러한 가상 머신이 실제 컴퓨터처럼 작동하기 위해서, 가상 머신은 운영 체재 및 설치된 어플리케이션 프로그램을 가질 수 있으므로, 가상 머신은 계속 하여 네트워크 리소스에 접근할 수 있다. 어플리케이션 프로그램이 가상 머신에서 실행됨으로써, 가상 머신은 실제 컴퓨터에서와 같이 작동한다.
하드웨어 계층(Hardware layer):
하드웨어 플랫폼은 가상화 환경에서 작동한다. 하드웨어 계층은 여러 종류의 하드웨어를 포함할 수 있는데, 예를 들면, 컴퓨팅 노드의 하드웨어 레이어는 CPU 및 메모리를 포함할 수 있고, 네트워크 카드 및 스토리지 등의, 고속/저속 입출력 장치, 및 가상 머신의 물리적 주소 및 호스트의 물리적 주소를 변환하도록 구성된 IOMMU(I/O Memory Management Unit: 입출력 메모리 관리 유닛) 등의, 상세한 처리 기능을 가진 다른 장치를 포함할 수 있다.
가상 입출력 기능(I/O Virtual Function):
대응 PF(Physical Function: 물리적 기능) 장치 및 일부 VF(Virtual Function: 가상 기능) 장치는 가상 입출력 기능이 이네이블된 후에 가상 입출력 기능을 가진 입출력 장치로부터 가상화될 수 있으며, 입출력 장치로부터 가상화된 PF 장치는 주로 관리 기능을 담당하고, VF 장치는 주로 처리 기능을 담당한다.
호스트(Host):
관리 계층으로서의 호스트는, 하드웨어 리소스의 관리 및 할당을 완료하고, 가상 머신을 위한 가상 하드웨어 플랫폼을 제공하고, 가상 머신의 스케쥴링과 고립화를 수행한다. 호스트는 가상 머신 모니터(VMM)이 될 수 있고, 또한, 경우에 따라, VMM은 하나의 특정 가상 머신과 결합하여 호스트를 생성할 수 있다. 가상 하드웨어 플랫폼은 플랫폼 상에서 작동하는 가상 머신을 위해 다양한 하드웨어 리소스를 제공하는데, 예를 들면, 가상 CPU, 메모리, 가상 디스크, 가상 네트워크 카드 등을 제공한다. 가상 디스크는 호스트 내에 있는 한 파일 또는 한 로직 블록 장치에 대응할 수 있다. 가상 머신은 호스트에 의해 구비된 가상 하드웨어 플랫폼 상에서 작동하고, 호스트는 호스트 상에서 작동하는 하나 또는 2 이상의 가상 머신을 포함할 수 있다.
도 2a 및 도 2b를 참조하면, 도 2a 및 도 2b는 본 발명의 실시예에서 제공되는 두 가지 가상화 솔루션의 소프트웨어 및 하드웨어 시스템의 모식적 구조도이다. 시스템 구조는 주로, 하드웨어 계층, 호스트 및 가상 머신(VM)의 세 개의 계층을 포함한다. 도 2a 및 도 2b에 도시된 하드웨어 계층은 입출력 장치를 포함하고, 도 2a에 도시된 하드웨어 계층은 IOMMU를 더 포함한다. 호스트는 하드웨어 계층 상에서 작동하고, 적어도 하나의 가상 머신은 호스트 상에서 작동하며 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트는 여러 VF 소프트웨어 인스턴스를 포함하는데, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치 백엔드 인스턴스(BE: Back-End instance)를 더 포함하며, VM은 가상 입출력 장치의 프론트엔드 인스턴스(FE: Front-End instance) 를 포함하고, 호스트의 백엔드 인스턴스는 아이들(idle) VF 소프트웨어 인스턴스와 결합된다. 본 발명의 일 실시예의 기술적 해결책에서는, VM의 백엔드 인스턴스는, 가상 입출력 장치의 프론트엔드 드라이버로 간주되고, 호스트의 프론트엔드 인스턴스는 가상 입출력 장치의 백엔드 드라이버로 간주될 수 있으며, 가상 입출력 장치는 백엔드 인스턴스 및 프론트엔드 인스턴스로 이루어진다.
본 발명의 일 실시예에 따른 가상화 처리 방법은 컴퓨팅 노드에 적용될 수 있으며, 컴퓨팅 노드는, 하드웨어 계층, 하드웨어 계층 상에서 작동하는 호스트 및 호스트 상에서 작동하는 적어도 하나의 VM을 포함하며, 하드웨어 계층은 입출력 장치를 포함하고, 가상화 방법은, 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 호스트에 여러 VF 소프트웨어 인스턴스를 생성하고, 가상 입출력 기능이 이네이블 되면서 대응하는 여러 VF 장치가 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트가, 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스가 아이들 VF 소프트웨어 인스턴스와 결합되는 것을 포함할 수 있다.
도 3을 참조하면, 본 발명의 일 실시예에서 제공되는 가상화 처리 방법은 이하의 단계를 포함할 수 있다.
단계 301: 입출력 장치의 가상 입출력 기능이 이네이블 된 후에, 호스트에 여러 VF 소프트웨어 인스턴스(VF 인스턴스)를 생성한다.
이 경우, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치들은 입출력 장치로부터 가상화되고, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있다. 예를 들어, 입출력 장치의 가상 입출력 기능을 이네이블하기 위해, 호스트는 입출력 장치가 작동된 때 또는 작동된 직후의 특정 시점에 입출력 장치의 가상 입출력 기능을 이네이블할 수 있다. 그렇지 않으면, 입출력 장치는 장치의 전원이 켜진 후에 자동적으로 그것의 가상 입출력 기능을 이네이블할 수 있으며, 이 경우, 호스트는 입출력 장치의 가상 입출력 기능을 이네이블할 필요가 없다.
본 발명의 실시예에서 언급된 입출력 장치는, 예를 들어, PCI 익스프레스(Peripheral Component Interconnect Express) 장치, 또는 네트워크 카드와 같은 다른 종류의 장치일 수 있다는 점에 특히 주목해야 한다.
단계 302: 호스트가, 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하고, 호스트에는 가상 입출력 장치(vDEV)의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성된다.
단계 303: 호스트는, 백엔드 인스턴스와 아이들 VF 소프트웨어 인스턴스를 결합한다.
호스트가 입출력 장치와 동일한 타입을 갖는 여러 가상 입출력 장치를 생성할 경우, 각각의 가상 입출력 장치의 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합하며, 결합 관계에 있는 백엔드 인스턴스와 VF 소프트웨어 인스턴스 사이에는 내부 액세스(inter-access) 인터페이스가 존재하는데, 예를 들면, 백엔드 인스턴스는 백엔드 인스턴스와 결합된 VF 소프트웨어에 의해 제공되는 액세스 인터페이스를 통하여 VF 소프트웨어 인스턴스에 대응하는 VF 장치에 액세스할 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 갖는다. 호스트에 의해 구성된 어플리케이션 구조에 기초하여, VM은 데이터를 전송하거나, 데이터를 수신할 수 있고, 다른 형태로 데이터 처리를 수행할 수 있다.
예를 들어, 도 2a 및 도 2b에서는, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치(PCIe 장치 등)로부터 가상화되고, 가상 입출력 기능이 이네이블되면서 대응 PF 장치는 입출력 장치로부터 더 가상화될 수 있으며, 입출력 장치와 동일한 타입으로서 호스트에 의해 생성된 여러 가상 입출력 장치의 백엔드 인스턴스는 호스트에 위치하고, 각각의 가상 입출력 장치의 프론트엔드 인스턴스는 다른 VM에 위치한다. 공유 메모리(shared memory)는 호스트와 VM 사이에 더 구성될 수 있고, 가상 입출력 장치의 백엔드 인스턴스 및 프론트엔드 인스턴스는, 예를 들어, 공유 메모리를 통하여 데이터를 전송할 수 있다.
본 실시예에서는, 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 여러 VF 소프트웨어 인스턴스가 호스트에 생성되고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치가 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트가 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스가 아이들 VF 소프트웨어 인스턴스와 결합된다는 것을 알 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
도 4를 참조하면, 본 발명의 일 실시예에서 제공되는 다른 가상화 처리 방법이 컴퓨팅 노드에 적용되며, 컴퓨팅 노드는, 하드웨어 계층, 하드웨어 계층 상에서 작동하는 호스트 및 호스트 상에서 작동하는 적어도 하나의 VM을 포함하며, 하드웨어 계층은 입출력 장치를 포함하고, 상기 방법은 이하의 단계를 포함할 수 있다.
단계 401: 호스트가, 입출력 장치의 가상 입출력 기능을 이네이블한다.
예를 들어, 입출력 장치의 가상 입출력 기능을 이네이블하기 위해, 호스트는 입출력 장치가 작동된 때 또는 작동된 직후의 특정 시점에 입출력 장치의 가상 입출력 기능을 이네이블할 수 있다. 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화된다. 그렇지 않으면, 입출력 장치는 장치의 전원이 켜진 후에 자동적으로 그것의 가상 입출력 기능을 이네이블할 수 있으며, 이 경우, 호스트는 입출력 장치의 가상 입출력 기능을 이네이블할 필요가 없다.
단계 402: 호스트에 여러 VF 소프트웨어 인스턴스를 생성하고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있다.
단계 403: 호스트가, 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하고, 호스트에는 가상 입출력 장치(vDEV)의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성된다.
단계 404: 호스트는, 백엔드 인스턴스를 아이들 VF 소프트웨어 인스턴스와 결합한다.
호스트가 입출력 장치와 동일한 타입을 갖는 여러 가상 입출력 장치를 생성할 경우, 각각의 가상 입출력 장치의 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합하며, 결합 관계에 있는 백엔드 인스턴스와 VF 소프트웨어 인스턴스 사이에는 내부 액세스 인터페이스가 존재하는데, 예를 들면, 백엔드 인스턴스는 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스에 의해 제공되는 액세스 인터페이스를 통하여 VF 소프트웨어 인스턴스에 대응하는 VF 장치에 액세스할 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 갖는다. 호스트에 의해 구성된 어플리케이션 구조에 기초하여, VM은 데이터를 전송하거나, 데이터를 수신할 수 있고, 다른 형태로 데이터 처리를 수행할 수 있다.
예를 들어, 도 2a 및 도 2b에서는, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치(PCIe 장치 등)로부터 가상화되고, 가상 입출력 기능이 이네이블되면서 대응 PF 장치는 입출력 장치로부터 더 가상화될 수 있으며(호스트는 PF 장치에 대응하는 PF 소프트웨어 인스턴스를 더 생성할 수 있음), 입출력 장치와 동일한 타입으로서 호스트에 의해 생성된 여러 가상 입출력 장치의 백엔드 인스턴스는 호스트에 위치하고, 각각의 가상 입출력 장치의 프론트엔드 인스턴스는 다른 VM에 위치한다. 공유 메모리는 호스트와 VM 사이에 더 구성될 수 있고, 가상 입출력 장치의 백엔드 인스턴스 및 프론트엔드 인스턴스는, 예를 들어, 공유 메모리를 통하여 데이터를 전송할 수 있다.
이해를 돕기 위해, 이하에서는 데이터 수신 방법을 예로서 상술한 메커니즘을 기초로 하여 구성된 어플리케이션 구조의 선택적인 상호작용 방식을 설명한다.
어플리케이션 시나리오에서, 호스트가 벡엔드 인스턴스 및 아이들 VF 소프트웨어 인스턴스를 결합한 후에, 프론트엔드 인스턴스는 DMA(Direct Memory Access: 직접 메모리 접근)를 위한 캐시를 미리 할당할 수 있고, 프론트엔드 인스턴스는 호스트와 VM 사이의 공유 메모리에 미리 할당된 DMA를 위한 캐시에 대응하는 GPA(Guest Physical Address: 게스트 물리적 주소)를 기록할 수 있고, 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스(exporting application programming interface)를 통하여, 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스는 DMA를 위한 캐시에 대응하는 GPA를 획득할 수 있고, VF 소프트웨어 인스턴스는 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 수신 큐(queue)에 DMA를 위한 캐시에 대응하는 상기 획득한 GPA를 기록할 수 있고, 수신될 데이터가 있을 경우, VF 장치는 VF 장치의 수신 큐로부터 DMA를 위한 캐시에 대응하는 GPA를 선택할 수 있고, 선택된 GPA를 타겟 주소로 이용하여 DMA 기록 요청(DMA 기록 요청은 캐시에 데이터를 기록하는데 사용됨)을 개시할 수 있고, IOMMU는 DMA 기록 요청의 타겟 주소 GPA를 대응 HPA(Host Physical Address: 호스트 물리적 주소)로 변경하고(이 경우, 예를 들어, IOMMU에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하며, DMA 기록 요청이 통과하면, IOMMU는 주소 변환 페이지 테이블을 검색하여 DMA 기록 요청의 타겟 주소 GPA의 대응 HPA를 획득할 수 있고, DMA 기록 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경), 타겟 주소가 HPA로 변경되는 DMA 기록 요청이 실행된 후에, VF 장치는, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 통지할 수 있고, 이에 따라 HPA에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스가 대응 프론트엔드 인스턴스를 트리거한다.
다른 어플리케이션 시나리오에서는, 호스트가 백엔드 인스턴스와 아이들 VF 소프트웨어 인스턴스를 결합한 후에, 프론트엔드 인스턴스는 DMA를 위한 캐시를 미리 할당할 수 있고, 프론트엔드 인스턴스는 호스트와 VM 사이의 공유 메모리에 미리 할당된 DMA를 위한 캐시에 대응하는 GPA를 기록할 수 있고, 호스트로 변경할 수 있고(예를 들어, 백엔드 인스턴스 또는 호스트 내에 있는 다른 모듈) DMA를 위한 캐시에 대응하는 GPA를 대응 HPA(예를 들어, 호스트에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하고, 주소 변환 페이지 테이블을 검색함으로써, 호스트(예를 들어, 백엔드 인스턴스 도는 호스트 내에 있는 다른 모듈)는 DMA를 위한 캐시에 대응하는 GPA의 대응 HPA를 획득할 수 있고, DMA를 위한 캐시에 대응하는 GPA를 획득된 상기 HPA로 변경), 호스트 내에 있는 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스가, 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여, DMA를 위한 캐시에 대응하는 HPA를 획득하고, DMA를 위한 캐시에 대응하는 상기 획득된 HPA는 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 수신 큐에 기록되고, 수신될 데이터가 있을 경우, VF 장치는 VF 장치의 수신 큐로부터 DMA를 위한 캐시에 대응하는 HPA를 선택하고, 선택된 HPA를 타겟 주소로 이용하여 DMA 기록 요청(DMA 기록 요청은 캐시에 데이터를 기록하는데 사용됨)을 개시하고, DMA 기록 요청이 실행된 후에, VF 장치는, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 더 통지할 수 있고, 이에 따라 HPA에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스는 대응 프론트엔드 인스턴스를 트리거한다.
이해를 돕기 위해, 이하에서는 데이터 수신 방법을 예로서 상술한 메커니즘을 기초로 하여 구성된 어플리케이션 구조의 선택적인 상호작용 방식을 설명한다.
어플리케이션 시나리오에서, 호스트가 벡엔드 인스턴스 및 아이들 VF 소프트웨어 인스턴스를 결합한 후에, 프론트엔드 인스턴스는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트와 VM 사이의 공유 메모리에 기록할 수 있고 대응 백엔드 인스턴스는 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스의 프로그램 전송 인터페이스를 작동시킬 수 있고, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 전송 큐에 기록하고, 전송될 데이터 있음을 확인한 후에, VF 장치는 VF 장치의 전송 큐에 기록된 GPA를 타겟 주소로 이용하여 DMA 판독 요청(DMA 판독 요청은 캐시로부터 데이터를 판독하는데 사용됨)을 개시하고, IOMMU는 DMA 판독 요청의 타겟 주소 GPA를 대응 HPA로 변경한다(이 경우, 예를 들어, IOMMU에 주소 변환 페이지 테이블이 세팅되고, 주소 전환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하고, DMA 판독 요청을 통과하면, IOMMU는 주소 변환 페이지 테이블을 탐색하여 DMA 판독 요청의 타겟 주소 GPA에 대응하는 HPA를 획득할 수 있고, DMA 판독 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경). 더욱이, DMA 판독 요청이 실행된 후에, VF 장치는, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 통지할 수 있으며, 이에 따라 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스는 대응 프론트엔드 인스턴스를 트리거한다.
다른 어플리케이션 시나리오에서는, 호스트가 백엔드 인스턴스와 아이들 VF 소프트웨어 인스턴스를 결합한 후에, 프론트엔드 인스턴스에 의해 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트와 VM 사이의 공유 메모리에 기록할 수 있고, 호스트(예를 들어, 벡앤드 인스턴스 또는 호스트 내에 있는 다른 모듈)는 캐시에 대응하는 GPA를 대응 HPA로 변경할 수 있고(예를 들어, 호스트에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블이 HPA와 GPA 간의 맵핑을 기록하고, 주소 변환 페이지 테이블을 검색함으로써, 호스트(예를 들어, 벡앤드 인스턴스 또는 호스트 내에 있는 다른 모듈)가 캐시에 대응하는 GPA의 대응 HPA를 획득할 수 있고, 캐시에 대응하는 GPA를 상기 획득된 HPA로 변경) 대응 백엔드 인스턴스는 벡앤드 인스턴스와 결합된 VF 소프트웨어 인스턴스의 프로그램 전송 인터페이스를 작동시킬 수 있고, 전송될 데이터가 위치한 캐시에 대응하는 HPA를 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 전송 큐에 기록하고, 전송될 데이터가 있음을 확인하면, VF 장치는 VF 장치의 전송 큐에 기록된 HPA를 타겟 주소로 이용하여 DMA 판독 요청을 개시한이다. 더욱이, DMA 판독 요청이 실행된 후에, VF 장치는, VF 장치에 대응하는 호스트 내에 있는 VF 소프트웨어 인스턴스를 통지할 수 있으며, 이에 따라 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스는 대응 프론트엔드 인스턴스를 트리거한다.
이하에서는 데이터 송수신 방법을 예로서 상술한 메커니즘을 기초로 하여 구성된 어플리케이션 구조의 선택적인 상호작용 방식을 설명하며, 다른 어플리케이션 시나리오에서의 상호작용 방식은 아날로그를 통하여 유도될 수 있다.
본 실시예에서는, 입출력 장치의 가상 입출력 기능이 이메이블된 후에, 여러 VF 소프트웨어 인스턴스는 호스트에 생성되고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합된다는 것을 알 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
본 발명의 일 실시예는 컴퓨팅 노드에 적용되는 가상화 처리 방법을 더 제공하며, 컴퓨팅 노드는, 하드웨어 계층, 하드웨어 상에서 작동하는 호스트 및 호스트 상에서 작동하는 적어도 하나의 VM을 포함할 수 있고, 하드웨어 계층은 입출력 장치를 포함하고 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트는 여러 VF 소프트웨어 인스턴스를 포함하며, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입인 입출력 가상 장치의 백엔드 인스턴스를 더 포함하며, VM은 가상 입출력 장치의 프론트엔드 인스턴스를 포함하고, 호스트의 백엔드 인스턴스는 아이들 소프트웨어 인스턴스와 결합되고, 상기 방법은, 프론트엔드 인스턴스에 의해, DMA를 위한 캐시를 미리 할당하고, 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스에 의해, 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 주소를 획득하고, VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제1 저장 유닛에 DMA를 위한 캐시에 대응하는 상기 획득된 주소를 기록하고, VF 장치가, 수신될 데이터가 있을 경우 제1 저장 유닛으로부터 DMA를 위한 캐시에 대응하는 상기 주소를 선택하고, DMA를 위한 캐시에 대응하는 상기 선택된 주소를 타겟 주소로 이용하여 DMA 기록 요청을 개시하고, VF 장치가, DMA 기록 요청이 실행되면, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 통지하고, 이에 따라 상기 주소에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스는 프론트엔드 인스턴스를 트리거한다.
도 5를 참조하면, 본 발명의 일 실시예의 또 다른 가상화 처리 방법은 이하의 단계를 포함한다.
단계 501: 프론트엔드 인스턴스에 의해, DMA를 위한 캐시를 미리 할당한다.
단계 502: 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스에 의해, 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 주소(주소는, 예를 들어, HPA 또는 GPA)를 획득하고, 상기 획득된, DMA를 위한 캐시에 대응하는 주소를 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제1 저장 유닛에 기록한다(제1 저장 유닛은, 예를 들어, VF 장치 또는 주소를 기록할 수 있는 또 다른 구조의 데이터 스토리지의 수신 큐 또는 수신 리스트).
단계 503: 수신될 데이터가 있을 경우, VF 장치가 제1 저장 유닛으로부터 DMA를 위한 캐시에 대응하는 주소를 선택하고, 상기 선택된, DMA를 위한 캐시에 대응하는 주소를 타겟 주소로 이용하여 DMA 기록 요청을 개시한이다.
단계 504: VF 장치가, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 DMA 기록 요청이 실행된 후에 통지하고, 이에 따라 상기 주소에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스가 프론트엔드 인스턴스를 트리거한다.
본 실시예에서, 컴퓨팅 노드는, 하드웨어 계층, 하드웨어 계층 상에서 작동하는 호스트 및 호스트 상에서 작동하는 적어도 하나의 VM을 포함할 수 있고, 하드웨어 계층은 입출력 장치를 포함하고 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되며, 호스트는 여러 VF 소프트웨어 인스턴스를 포함하고, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치의 백엔드 인스턴스를 더 포함하고, VM은 가상 입출력 장치의 프론트엔드 인스턴스를 포함하며, 호스트 내에 있는 백엔드 인스턴스는 아이들 소프트웨어 인스턴스와 결합된다는 것을 알 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
본 발명의 일 실시예에서, 프론트엔드 인스턴스가 DMA를 위한 캐시를 미리 할당한 후에, 프론트엔드 인스턴스가 미리 할당된 상기 DMA를 위한 캐시에 대응하는 GPA를 호스트와 VM 사이의 공유 메모리에 기록할 수 있고, 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스는 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 공유 메모리로부터 DMA를 위한 캐시에 대응하는 GPA를 획득할 수 있고(명확하게는, 프론트엔드 인스턴스는 또한 미리 할당된 DMA를 위한 캐시에 대응하는 GPA에 대응하는 백엔드 인스턴스에 통지할 수 있고, 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스는 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 GPA를 획득할 수 있음), DMA를 위한 캐시에 대응하는 상기 획득된 GPA를 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제1 저장 유닛에 기록하고, 수신될 데이터가 있을 경우, VF 장치는 제1 저장 유닛으로부터 DMA를 위한 캐시에 대응하는 GPA를 선택할 수 있고, DMA를 위한 캐시에 대응하는 GPA를 타겟 주소로 이용하여 DMA 기록 요청을 개시하고, IOMMU는 DMA 기록 요청의 타겟 주소 GPA를 대응 HPA로 변경할 수 있고(예를 들어, 주소 변환 페이지 테이블이, 예로서, IOMMU에 세팅되고, 주소 변환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하고, IOMMU는 주소 변환 페이지 테이블을 검색하여 DMA 기록 요청의 타겟 주소 GPA에 대응하는 HPA를 획득하고, DMA 기록 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경), 타겟 주소 GPA가 HPA로 변경되는 DMA 기록 요청이 실행된 후에, VF 장치는, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 통지함으로써, HPA에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스가 프론트엔드 인스턴스를 트리거한다.
다른 어플리케이션 시나리오에서는, 프론트엔드 인스턴스가 DMA를 위한 캐시를 미리 할당한 후에, 프론트엔드 인스턴스가 미리 할당된 DMA를 위한 캐시에 대응하는 GPA를 호스트와 VM 사이의 공유 메모리에 기록할 수 있고, 호스트는 DMA를 위한 캐시에 대응하는, 공유 메모리의 GPA를 대응 HPA로 변경할 수 있고(예를 들어, 호스트에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하고, 주소 변환 페이지 테이블을 검색함으로써, 호스트는, DMA를 위한 캐시에 대응하는, 공유 메모리의 GPA의 대응 HPA를 획득할 수 있고, DMA를 위한 캐시에 대응하는, 공유 메모리의 GPA를 상기 획득된 HPA로 변경함. 명확하게는, 프론트엔드 인스턴스는 또한 미리 할당된, DMA를 위한 캐시에 대응하는 GPA를 대응 백엔드 인스턴스에 통지할 수 있고, 호스트는 DMA를 위한 캐시에 대응하는 GPA를 대응 HPA로 변경할 수 있음); 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스는, 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여, DMA를 위한 캐시에 대응하는 HPA를 획득하고, DMA를 위한 캐시에 대응하는 상기 획득된 HPA는 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제1 저장 유닛에 기록되고, 수신될 데이터가 있을 경우, VF 장치는 제1 저장 유닛으로부터 DMA를 위한 캐시에 대응하는 HPA를 선택하고, 상기 선택된 HPA를 타겟 주소로 사용하요 DMA 기록 요청을 개시한이다.
본 발명의 일 실시예에서, 프론트엔드 인스턴스가 전송될 데이터를 포함할 경우, 프론트엔드 인스턴스는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트와 VM 사이의 공유 메모리에 기록할 수 있고, 백엔드 인스턴스는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 공유 메모리로부터 획득할 수 있고(명확하게는, 프론트엔드 인스턴스가 또한 전송될 데이터가 위치한 캐시에 대응하는 GPA를 대응 백엔드 인스턴스에 통지할 수 있고, 백엔드 인스턴스는, 통지함에 따라, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 획득), 백엔드 인스턴스는 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스의 프로그램 전송 인터페이스를 작동시키고, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제2 저장 유닛에 기록하고(제2 저장 유닛은, 예를 들면, VF 장치 또는 주소를 기록할 수 있는 또 다른 구조의 데이터 스토리지의 전송 큐 또는 전송 리스트), 전송될 데이터가 있음을 확인하면, VF 장치는 제2 저장 유닛에 저장된 GPA를 타겟 주소로 이용하여 DMA 판독 요청을 개시하고, IOMMU는 DMA 판독 요청의 타겟 주소 GPA를 대응 HPA로 변경할 수 있다(예를 들어, IOMMU에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하며, IOMMU는 주소 변환 페이지 테이블을 검색하여 DMA 판독 요청의 타겟 주소 GPA에 대응하는 HPA를 획득하고, DMA 판독 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경). 더욱이, DMA 판독 요청이 실행된 후에, VF 장치는, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 통지할 수 있으며, 이에 따라 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스가 프론트엔드 인스턴스를 트리거한다.
본 발명의 다른 실시예에서, 프론트엔드 인스턴스가 전송될 데이터를 포함할 경우, 프론트엔드 인스턴스는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트와 VM 사이의 공유 메모리에 기록할 수 있고, 호스트는 전송될 데이터가 위치한 캐시에 대응하는 공유 메모리 내의 GPA를 대응 HPA로 변경하고(예를 들어, 호스트에 주소 변환 페이지 테이블은 세팅되고, 주소 변환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하고, 주소 변환 페이지 테이블을 검색함으로써, 호스트는 전송될 데이터가 위치한 캐시에 대응하는 공유 메모리 내의 GPA에 대응하는 HPA를 획득하고, 전송될 데이터가 위치한 캐시에 대응하는 공유 메모리 내의 GPA를 대응 HPA로 변경함. 명확하게는, 프론트엔드 인스턴스가 또한 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트에 통지할 수 있고, 호스트는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 대응 HPA로 변경), 백엔드 인스턴스는 전송될 데이터가 위치한 캐시에 대응하는 HPA를 획득하고, 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스의 프로그램 전송 인터페이스를 작동시키고, 전송될 데이터가 위치한 캐시에 대응하는 HPA를 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제2 저장 유닛에 기록하고(제2 저장 유닛은, 예를 들면, VF 장치 또는 주소를 기록할 수 있는 또 다른 구조의 데이터 스토리지의 전송 큐 또는 전송 리스트), 전송될 데이터가 있음을 확인하면, VF 장치는 제2 저장 유닛에 기록된 HPA를 타겟 주소로 이용하여 DMA 판독 요청을 개시한이다. 더욱이, DMA 판독 요청이 실행된 후에, VF 장치는, 호스트 내에 있는, VF 장치에 대응하는 VF 소프트웨어 인스턴스를 통지할 수 있으며, 이에 따라 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스가 프론트엔드 인스턴스를 트리거한다.
상술한 본 발명의 실시예의 해결책을 보다 잘 이해하고 수행하기 위해, 여러 구체적인 데이터 송수신의 어플리케이션 시나리오를 예시로서 더 설명한다.
도 6a를 참조하면, 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법은 이하의 단계를 포함할 수 있다.
단계 601: 호스트가, IOMMU를 이네이블한다.
이 경우, 호스트는 작동된 때 또는 작동된 직후의 특정 시점에 IOMMU를 이네이블할 수 있으며, 명확하게는, 장치의 전원이 켜지면 IOMMU는 또한 자동적으로 해당 기능을 이네이블할 수 있고, 이 경우, 호스트는 IOMMU를 이네이블할 필요가 없으며, 명확하게는, 또한 다른 모듈이 IOMMU를 이네이블하는데 사용될 수 있다.
단계 602: 호스트에 PF 장치 및 VF 장치의 드라이버를 설치하며, PF 장치 및 VF 장치는 입출력 장치에 대응한다(예로서, E-1 참조).
단계 603: 호스트가, 입출력 장치의 E-1의 가상 입출력 기능을 이네이블한다.
예를 들어, 호스트는 작동된 때 또는 작동된 직후의 특정 시점에 입출력 장치 E-1의 가상 입출력 기능을 이네이블할 수 있다. 가상 입출력 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-1으로부터 가상화될 수 있고, 명확하게는, 다른 모듈이 입출력 장치 E-1을 이네이블하는데 사용될 수 있고, 명확하게는, 장치의 전원이 켜질 경우, 입출력 장치 E-1은 또한 자동적으로 그것의 가상 입출력 기능을 이네이블할 수 있으며, 이 경우, 호스트 또는 다른 모듈은 입출력 장치 E-1의 가상 입출력 기능을 이네이블할 필요가 없다. 입출력 장치 E-1으로부터 가상화된 PF 장치는 주로 관리 기능을 담당하고, VF 장치는 주로 처리 기능을 담당한다.
단계 604: 호스트에 PF 소프트웨어 인스턴스 및 여러 VF 소프트웨어 인스턴스를 생성하는데, 가상 입출력 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-1으로부터 가상화될 수 있고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트에 생성된 PF 소프트웨어 인스턴스는 입출력 장치 E-1으로부터 가상화된 PF 장치에 대응한다.
단계 605: 호스트가, 입출력 장치 E-1과 동일한 타입을 갖는 가상 입출력 장치(예로서, vE-1 참조)를 생성한다.
이 때, 호스트에는 가상 입출력 장치 vE-1의 백엔드 인스턴스(예로서, BE-1 참조)가 생성되고, 작동된 VM(예로서, VM-1 참조)에는 가상 입출력 장치 vE-1의 프론트엔드 인스턴스(예로서, FE-1)가 생성된다. 예를 들어, 호스트는 작동된 VM-1의 가상 입출력 장치 vE-1에 대응하는 프론트엔드 인스턴스 FE-1의 생성을 트리거할 수 있고, VM-1에 생성된 FE-1 및 호스트에 생성된 BE-1은 일반적으로 가상 입출력 장치 vE-1의 드라이버를 구성한다.
단계 606: 호스트는, 생성된 BE-1을 하나의 아이들 VF 소프트웨어 인스턴스(예로서, Vfe-1 참조)와 결합한다.
이 때, VF 소프트웨어 인스턴스 Vfe-1은, 예를 들면, 입출력 장치 E-1으로부터 가상화된 VF 장치(예로서, VF-1 참조)에 대응한다. 이른바 아이들 VF 소프트웨어 인스턴스란 또 다른 백엔드 인스턴스와 결합되지 않은 VF 소프트웨어 인스턴스를 말한다.
상술한 바와 같이, 입출력 장치 E-1으로부터 가상화된 VF 장치 VF-1과 VM-1의 프론트엔드 인스턴스 FE-1 사이의 채널이 통과되면, 이와 같은 방식으로, FE-1은 호스트 내에 있는 BE-1을 통하여 VF 장치 VF-1에 액세스할 수 있다. VF 장치 VF-1은 사용을 위해 VM-1에 각각 할당되고, VF 장치 VF-1은 입출력 장치 E-1으로부터 가상화되어, 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM-1은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, FE-1)가 VM-1에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, BE-1)를 통하여 전송되고, VM-1은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
단계 607: FE-1이, DMA를 위한 캐시를 미리 할당한다.
예를 들어, DMA에 사용되고 FE-1에 의해 미리 할당된 캐시는 [GPA1, Len1], …, [GPAn, LenN]일 수 있는데, 이는, DMA를 위한 캐시의 복수의 섹션이 미리 할당되는 것을 의미하는 것으로서, GPA1은 캐시에 대한 GPA의 시작 주소를 나타내고, Len1은 캐시의 길이를 나타낸다.
단계 608: FE-1이, 미리 할당된 DMA를 위한 캐시에 대응하는 GPA를 호스트와 VM-1 사이의 공유 메모리에 기록하고, BE-1을 통지한다(명확하게는, 자가 감지를 수행한 후에, BE-1이 DMA를 위한 캐시에 대응하는 GPA가 공유 메모리에 기록된 것을 확인하는 것 또한 가능함).
단계 609: VF 소프트웨어 인스턴스 Vfe-1이, BE-1의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 GPA를 획득하고, 상기 획득된, DMA를 위한 캐시에 대응하는 GPA를 VF 소프트웨어 인스턴스 Vfe-1에 대응하는 VF 장치 VF-1의 수신 큐에 기록한다.
단계 610: 수신될 데이터가 있을 경우, VF 장치 VF-1이 VF 장치의 수신 큐로부터 DMA를 위한 캐시에 대응하는 GPA를 선택하고, 상기 선택된 GPA를 타겟 주소로 이용하여 DMA 기록 요청을 개시한이다.
이 때, VF 장치 VF-1에 의해 작동된 DMA 기록 요청은 IOMMU를 통과할 것이다.
단계 611: IOMMU가, DMA 기록 요청의 타겟 주소 GPA를 대응 HPA로 변경한다.
이 때, 예를 들면, IOMMU에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 GPA와 HPA 간의 맵핑을 기록한다(예로서, 도 6b의 도시 등). DMA 기록 요청이 통과하면, 주소 변환 페이지 테이블을 검색함으로써 IOMMU는 DMA 기록 요청의 타겟 주소 GPA에 대응하는 HPA를 획득할 수 있고, DMA 기록 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경한다.
단계 612: VF 장치 VF-1이, 타겟 주소가 HPA로 변경되는 DMA 기록 요청이 실행된 후에 호스트 내에 있는 대응 VF 소프트웨어 인스턴스 Vfe-1을 통지하고, 이에 따라 HPA에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스 Vfe-1이 프론트엔드 인스턴스 FE-1을 트리거한다.
VF 소프트웨어 Vfe-1에 의해 트리거되면, VM-1 내의 프론트엔드 인스턴스 FE-1은 HPA에 대응하는 캐시가 기록된 데이터를 판독할 수 있다.
본 실시예에서는, 호스트에 의해 이네이블된 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 호스트에는 여러 VF 소프트웨어 인스턴스가 생성되고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합되며, 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다는 것을 알 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
또한, DMA 기록 요청의 실행 절차 중에, IOMMU는 GPA와 HPA 간의 변환을 수행함으로써, CPU 오버헤드가 감소하고 나아가 성능은 향상된다.
도 7a를 참조하면, 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법은 이하의 단계를 포함할 수 있다.
단계 701: 호스트에 PF 장치 및 VF 장치의 드라이버를 설치하며, PF 장치 및 VF 장치는 입출력 장치(E-2 참조)에 대응한다.
단계 702: 호스트가, 입출력 장치 E-2의 가상 입출력 기능을 이네이블한다.
예를 들면, 작동된 때 또는 작동된 직후의 특정 시점에 호스트는 입출력 장치 E-2의 가상 입출력 기능을 이네이블할 수 있다. 호스트에 의해 가상 입출력 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-2로부터 가상화될 수 있으며, 명확하게는, 다른 모듈이 입출력 장치 E-2를 이네이블하는데 사용될 수 있고, 명확하게는, 장치의 전원이 켜지면 입출력 장치 E-2는 또한 그것의 가상 입출력 기능을 자동적으로 이네이블할 수 있으며, 이 경우, 호스트 또는 다른 모듈은 입출력 장치 E-2의 가상 입출력 기능을 이네이블할 필요가 없다. 입출력 장치 E-2로부터 가상화된 PF 장치는 주로 관리 기능을 담당하며, VF 장치는 주로 처리 기능을 담당한다.
단계 703: 호스트에 PF 소프트웨어 인스턴스 및 여러 VF 소프트웨어 인스턴스를 생성하며, 입출력 가상 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-2로부터 가상화될 수 있고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트에 생성된 PF 소프트웨어 인스턴스는 입출력 장치 E-2로부터 가상화된 PF 장치에 대응한다.
단계 704: 호스트가, 입출력 장치 E-2와 동일한 타입을 갖는 가상 입출력 장치(예로서, vE-2)를 생성한다.
이 때, 호스트에는 가상 입출력 장치 vE-2의 백엔드 인스턴스(예로서, BE-2 참조)가 생성되고, 작동된 VM(예로서, VM-2 참조)에는 가상 입출력 장치 vE-2의 프론트엔드 인스턴스(예로서, FE-2 참조)가 생성된다. 예를 들어, 호스트는 작동된 VM-2 내의 가상 입출력 장치 vE-2에 대응하는 프론트엔드 인스턴스 FE-2의 생성을 트리거할 수 있다. VM-2에 생성된 FE-2 및 호스트에 생성된 BE-2는 일반적으로 가상 입출력 장치 vE-2의 드라이버를 구성하는 것으로 간주될 수 있다.
단계 705: 호스트는, 생성된 BE-2를 하나의 아이들 VF 소프트웨어 인스턴스(예로서, Vfe-2 참조)와 결합한다.
이 때, VF 소프트웨어 인스턴스 Vfe-2는, 예를 들어, 입출력 장치 E-2로부터 가상화된 VF 장치(예로서, VF-2 참조)에 대응한다. 이른바 아이들 VF 소프트웨어 인스턴스란 다른 백엔드 인스턴스와 결합되지 않은 VF 소프트웨어 인스턴스를 의미한다.
상술한 바와 같이, 입출력 장치 E-2로부터 가상화된 VF 장치 VF-2와 VM-2의 프론트엔드 인스턴스 FE-2 사이의 채널이 통과되면, 이와 같은 방식으로, FE-2는 호스트 내에 있는 BE-2를 통하여 VF 장치 VF-2에 액세스할 수 있다. VF 장치 VF-2는 사용을 위해 VM-2에 각각 할당되고, VF 장치 VF-2는 입출력 장치 E-2로부터 가상화되어, 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM-2는 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, FE-2)가 VM-2에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, BE-2)를 통하여 전송되고, VM-2는 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
단계 706: FE-2가, DMA를 위한 캐시를 미리 할당한다.
예를 들어, DMA에 사용되고 FE-2에 의해 미리 할당된 캐시는 [GPA1, Len1], …, [GPAn, LenN]일 수 있는데, 이는, DMA를 위한 캐시의 복수의 섹션이 미리 할당되는 것을 의미하는 것으로서, GPA1은 캐시에 대한 GPA의 시작 주소를 나타내고, Len1은 캐시의 길이를 나타낸다.
단계 707: FE-2가, 미리 할당된 DMA를 위한 캐시에 대응하는 GPA를 호스트와 VM-2 사이의 공유 메모리에 기록하고, BE-2를 통지한다(명확하게는, 자가 감지를 수행한 후에, BE-2가 DMA를 위한 캐시에 대응하는 GPA가 공유 메모리에 기록된 것을 확인하는 것 또한 가능함).
단계 708: 호스트가, DMA를 위한 캐시에 대응하는, 공유 메모리 내의 GPA를 대응 HPA로 변경한다.
이 때, 예를 들면, 호스트에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 GPA와 HPA 간의 맵핑을 기록한다(예로서, 도 7b의 도시 등). 주소 변환 페이지 테이블을 검색함으로써, 호스트는 DMA를 위한 캐시에 대응하는 GPA에 대응하는 HPA를 획득할 수 있고, DMA를 위한 캐시에 대응하는 GPA를 상기 획득된 HPA로 변경한다.
단계 709: VF 장치 VF-2가, 주소가 HPA로 변경되는 DMA 기록 요청이 실행된 후에 BE-2의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 HPA를 획득하고, DMA를 위한 캐시에 대응하는 상기 획득된 HPA를 VF 소프트웨어 인스턴스 Vfe-2에 대응하는 VF 장치 VF-2의 수신 큐에 기록한다.
단계 710: VF 장치 VF-2는, 수신할 데이터가 있을 경우 VF 장치의 수신 큐로부터 DMA를 위한 캐시에 대응하는 HPA를 선택하고, 선택된 HPA를 타겟 주소로 이용하여 DMA 기록 요청을 개시한이다.
단계 711: VF 장치 VF-2가, DMA 기록 요청이 실행된 후에 호스트 내에 있는 대응 VF 소프트웨어 인스턴스 Vfe-2를 통지하면, 이에 따라, HPA에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스 Vfe-2가 VM-2의 프론트엔드 인스턴스 FE-2를 트리거한다.
VF 소프트웨어 인스턴스 Vfe-2에 의해 트리거되면, VM-2의 프론트엔드 인스턴스 FE-2는 HPA에 대응하는 캐시에 기록된 데이터륵 판독할 수 있다.
본 실시예에서는, 호스트에 의해 이네이블된 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 호스트에는 여러 VF 소프트웨어 인스턴스가 생성되고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합되며, 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다는 것을 알 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
또한, DMA 기록 요청의 실행 절차 중에, 호스트는 GPA와 HPA 간의 변환을 수행함으로써, 하드웨어 리소스 구성을 줄이고, 프로세스의 흐름을 간소화한다.
도 8a를 참조하면, 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법은 이하의 단계를 포함할 수 있다.
단계 801: 호스트가, IOMMU를 이네이블한다.
이 경우, 호스트는 작동된 때 또는 작동된 직후의 특정 시점에 IOMMU를 이네이블할 수 있으며, 명확하게는, 장치의 전원이 켜지면 IOMMU는 또한 자동적으로 해당 기능을 이네이블할 수 있고, 이 경우, 호스트는 IOMMU를 이네이블할 필요가 없으며, 명확하게는, 또한 다른 모듈이 IOMMU를 이네이블하는데 사용될 수 있다.
단계 802: 호스트에 PF 장치 및 VF 장치의 드라이버를 설치하며, PF 장치 및 VF 장치는 입출력 장치에 대응한다(예로서, E-3 참조).
단계 803: 호스트가, 입출력 장치 E-3의 가상 입출력 기능을 이네이블한다.
예를 들어, 호스트는 작동된 때 또는 작동된 직후의 특정 시점에 입출력 장치 E-3의 가상 입출력 기능을 이네이블할 수 있다. 가상 입출력 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-3으로부터 가상화될 수 있고, 명확하게는, 다른 모듈이 입출력 장치 E-3을 이네이블하는데 사용될 수 있고, 명확하게는, 장치의 전원이 켜질 경우, 입출력 장치 E-3은 또한 자동적으로 그것의 가상 입출력 기능을 이네이블할 수 있으며, 이 경우, 호스트 또는 다른 모듈은 입출력 장치 E-3의 가상 입출력 기능을 이네이블할 필요가 없다. 입출력 장치 E-3으로부터 가상화된 PF 장치는 주로 관리 기능을 담당하고, VF 장치는 주로 처리 기능을 담당한다.
단계 804: 호스트에 PF 소프트웨어 인스턴스 및 여러 VF 소프트웨어 인스턴스를 생성하는데, 가상 입출력 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-3으로부터 가상화될 수 있고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트에 생성된 PF 소프트웨어 인스턴스는 입출력 장치 E-3로부터 가상화된 PF 장치에 대응한다.
단계 805: 호스트가, 입출력 장치 E-3과 동일한 타입을 갖는 가상 입출력 장치(예로서, vE-3 참조)를 생성한다.
이 때, 호스트에는 가상 입출력 장치 vE-3의 백엔드 인스턴스(예로서, BE-3 참조)가 생성되고, 작동된 VM(예로서, VM-3 참조)에는 가상 입출력 장치 vE-3의 프론트엔드 인스턴스(예로서, FE-3)가 생성된다. 예를 들어, 호스트는 작동된 VM-3의 가상 입출력 장치 vE-3에 대응하는 프론트엔드 인스턴스 FE-3의 생성을 트리거할 수 있고, VM-3에 생성된 FE-3 및 호스트에 생성된 BE-3은 일반적으로 가상 입출력 장치 vE-3의 드라이버를 구성한다.
단계 806: 호스트는, 생성된 BE-3을 하나의 아이들 VF 소프트웨어 인스턴스(예로서, Vfe-3 참조)와 결합한다.
이 때, VF 소프트웨어 인스턴스 Vfe-3은, 예를 들면, 입출력 장치 E-3으로부터 가상화된 VF 장치(예로서, VF-3 참조)에 대응한다. 이른바 아이들 VF 소프트웨어 인스턴스란 또 다른 백엔드 인스턴스와 결합되지 않은 VF 소프트웨어 인스턴스를 말한다.
상술한 바와 같이, 입출력 장치 E-3으로부터 가상화된 VF 장치 VF-3과 VM-3의 프론트엔드 인스턴스 FE-3 사이의 채널이 통과되면, 이와 같은 방식으로, FE-3은 호스트 내에 있는 BE-3을 통하여 VF 장치 VF-3에 액세스할 수 있다. VF 장치 VF-3은 사용을 위해 VM-3에 각각 할당되고, VF 장치 VF-3은 입출력 장치 E-3으로부터 가상화되어, 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM-3은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, FE-3)가 VM-3에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, BE-3)를 통하여 전송되고, VM-3은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
단계 807: FE-3이, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트와 VM-3 사이의 공유 메모리에 기록하고, BE-3을 통지한다(명확하게는, 자가 감지를 수행한 후에, BE-3이 전송될 데이터가 위치한 캐시에 대응하는 GPA가 공유 메모리에 기록된 것을 확인하는 것 또한 가능함).
예를 들어, 전송될 데이터가 위치한 캐시에 대응하는 GPA는 [GPA1, Len1], …, [GPAn, LenN]일 수 있는데, 이는, DMA를 위한 캐시의 복수의 섹션이 미리 할당되는 것을 의미하는 것으로서, GPA1은 캐시에 대한 GPA의 시작 주소를 나타내고, Len1은 캐시의 길이를 나타낸다.
단계 808: BE-3은, BE-3와 결합된 VF 소프트웨어 인스턴스 Vfe-3의 프로그램 전송 인터페이스를 작동시키고, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 VF 소프트웨어 인스턴스 Vfe-3에 대응하는 VF 장치 VF-3의 전송 큐에 기록한다.
단계 809: 전송될 데이터가 있음을 확인하면, VF 장치 VF-3은, VF 장치의 전송 큐에 기록된 GPA를 타겟 주소로 이용하여 DMA 판독 요청을 개시한이다.
이 때, VF 장치 VF-3은, 예를 들어, VF 장치의 전송 큐를 주기적 또는 비주기적으로 검출할 수 있고, GPA가 전송 큐에 새롭게 기록된 것을 발견하면,전송될 데이터가 있는 것으로 간주하거나, GPA가 전송 큐에 새롭게 기록된 후에 VF 소프트웨어 인스턴스 Vfe-3가 VF 장치 VF-3을 통지할 수 있다.
이 경우, VF 장치 VF-3에 의해 작동된 DMA 판독 요청은 IOMMU를 통과할 것이다.
단계 810: IOMMU는, DMA 판독 요청의 타겟 주소 GPA를 대응 HPA로 변경한다.
이 때, 예를 들면, IOMMU에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 GPA와 HPA 간의 맵핑을 기록한다(예로서, 도 8b의 도시 등). 주소 변환 페이지 테이블을 검색함으로써, IOMMU는 DMA 판독 요청의 타겟 주소 GPA에 대응하는 HPA를 획득할 수 있고, DMA 판독 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경한다.
단계 811: VF 장치 VF-3가, 타겟 주소가 HPA로 변경되는 DMA 판독 요청이 실행된 후에, 호스트 내에 있는 대응 VF 소프트웨어 인스턴스 Vfe-3을 통지하면, 이에 따라, HPA에 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스 Vfe-3이 VM-3의 프론트엔드 인스턴스 FE-3을 트리거한다. VF 소프트웨어 인스턴스 Vfe-3에 의해 트리거되면, 새로운 데이터를 캐싱하기 위해, VM-3의 프론트엔드 인스턴스 FE-3은 HPA에 대응하는 캐시를 해제시킬 수 있다.
본 실시예에서는, 호스트에 의해 이네이블된 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 호스트에는 여러 VF 소프트웨어 인스턴스가 생성되고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합되며, 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다는 것을 알 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
또한, DMA 기록 요청의 실행 절차 중에, IOMMU는 GPA와 HPA 간의 변환을 수행함으로써, CPU 오버헤드가 감소하고 나아가 성능은 향상된다.
도 9a를 참조하면, 본 발명의 일 실시예에서 제공되는 또 다른 가상화 처리 방법은 이하의 단계를 포함할 수 있다.
단계 901: 호스트에 PF 장치 및 VF 장치의 드라이버를 설치하며, PF 장치 및 VF 장치는 입출력 장치(E-4 참조)에 대응한다.
단계 902: 호스트가, 입출력 장치 E-4의 가상 입출력 기능을 이네이블한다.
예를 들면, 작동된 때 또는 작동된 직후의 특정 시점에 호스트는 입출력 장치 E-4의 가상 입출력 기능을 이네이블할 수 있다. 호스트에 의해 가상 입출력 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-4로부터 가상화될 수 있으며, 명확하게는, 다른 모듈이 입출력 장치 E-4를 이네이블하는데 사용될 수 있고, 명확하게는, 장치의 전원이 켜지면 입출력 장치 E-4는 또한 그것의 가상 입출력 기능을 자동적으로 이네이블할 수 있으며, 이 경우, 호스트 또는 다른 모듈은 입출력 장치 E-4의 가상 입출력 기능을 이네이블할 필요가 없다. 입출력 장치 E-4로부터 가상화된 PF 장치는 주로 관리 기능을 담당하며, VF 장치는 주로 처리 기능을 담당한다.
단계 903: 호스트에 PF 소프트웨어 인스턴스 및 여러 VF 소프트웨어 인스턴스를 생성하며, 입출력 가상 기능이 이네이블되면서 대응 PF 장치 및 여러 VF 장치는 입출력 장치 E-4로부터 가상화될 수 있고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트에 생성된 PF 소프트웨어 인스턴스는 입출력 장치 E-4로부터 가상화된 PF 장치에 대응한다.
단계 904: 호스트가, 입출력 장치 E-4와 동일한 타입을 갖는 가상 입출력 장치(예로서, vE-4)를 생성한다.
이 때, 호스트에는 가상 입출력 장치 vE-4의 백엔드 인스턴스(예로서, BE-4 참조)가 생성되고, 작동된 VM(예로서, VM-4 참조)에는 가상 입출력 장치 vE-4의 프론트엔드 인스턴스(예로서, FE-4 참조)가 생성된다. 예를 들어, 호스트는 작동된 VM-4 내의 가상 입출력 장치 vE-4에 대응하는 프론트엔드 인스턴스 FE-4의 생성을 트리거할 수 있다. VM-4에 생성된 FE-4 및 호스트에 생성된 BE-4는 일반적으로 가상 입출력 장치 vE-4의 드라이버를 구성하는 것으로 간주될 수 있다.
단계 905: 호스트는, 생성된 BE-4를 하나의 아이들 VF 소프트웨어 인스턴스(예로서, Vfe-4 참조)와 결합한다.
이 때, VF 소프트웨어 인스턴스 Vfe-4는, 예를 들어, 입출력 장치 E-4로부터 가상화된 VF 장치(예로서, VF-4 참조)에 대응한다. 이른바 아이들 VF 소프트웨어 인스턴스란 다른 백엔드 인스턴스와 결합되지 않은 VF 소프트웨어 인스턴스를 의미한다.
상술한 바와 같이, 입출력 장치 E-4로부터 가상화된 VF 장치 VF-4와 VM-4의 프론트엔드 인스턴스 FE-4 사이의 채널이 통과되면, 이와 같은 방식으로, FE-4는 호스트 내에 있는 BE-4를 통하여 VF 장치 VF-4에 액세스할 수 있다. VF 장치 VF-4는 사용을 위해 VM-4에 각각 할당되고, VF 장치 VF-4는 입출력 장치 E-4로부터 가상화되어, 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM-4는 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, FE-4)가 VM-4에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, BE-4)를 통하여 전송되고, VM-4는 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
단계 906: FE-4가, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트와 VM-4 사이의 공유 메모리에 기록하고, BE-4를 통지한다(명확하게는, 자가 감지를 수행한 후에, BE-4가 DMA를 위한 캐시에 대응하는 전송될 데이터가 위치한 캐시에 대응하는 GPA가 공유 메모리에 기록된 것을 확인하는 것 또한 가능함).
단계 907: 호스트가, 전송될 데이터가 위치한 캐시에 대응하는, 공유 메모리 내의 GPA를 대응 HPA로 변경한다.
이 때, 예를 들면, 호스트에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 GPA와 HPA 간의 맵핑을 기록한다(예로서, 도 9b의 도시 등). 주소 변환 페이지 테이블을 검색함으로써, 호스트는, 예를 들어, 전송될 데이터가 위치한 캐시에 대응하는 HPA를 획득할 수 있고, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 상기 획득된 HPA로 변경한다.
단계 908: BE-4는, BE-4와 결합된 VF 소프트웨어 인스턴스 Vfe-4의 프로그램 전송 인터페이스를 작동시키고, 전송될 데이터/전송 예정 데이터가 위치한 캐시에 대응하는 HPA를 VF 소프트웨어 인스턴스 Vfe-4에 대응하는 VF 장치 VF-4의 전송 큐에 기록한다.
단계 909: 전송될 데이터가 있음을 확인하면, VF 장치 VF-4는, VF 장치의 전송 큐에 기록된 HPA를 타겟 주소로 이용하여 DMA 판독 요청을 개시한이다.
이 때, VF 장치 VF-4는, 예를 들어, VF 장치의 전송 큐를 주기적 또는 비주기적으로 검출할 수 있고, HPA가 전송 큐에 새롭게 기록된 것을 발견하면, 전송될 데이터가 있는 것으로 간주하거나, HPA가 전송 큐에 새롭게 기록된 후에 VF 소프트웨어 인스턴스 Vfe-4가 VF 장치 VF-4를 통지할 수 있다.
단계 910: VF 장치 VF-4가, DMA 판독 요청이 실행된 후에, 호스트 내에 있는 대응 VF 소프트웨어 인스턴스 Vfe-4를 통지하고, 이에 따라 HPA에 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스 Vfe-4는 VM-4 내의 프론트엔드 인스턴스 FE-4를 트리거한다.
VF 소프트웨어 인스턴스 Vfe-4에 의해 트리거되면, 새로운 데이터를 캐싱하기 위해 VM-4 내의 프론트엔드 인스턴스 FE-4는 HPA에 대응하는 캐시를 해제시킬 수 있다.
본 실시예에서는, 호스트에 의해 이네이블된 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 호스트에는 여러 VF 소프트웨어 인스턴스가 생성되고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합되며, 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다는 것을 알 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
또한, DMA 기록 요청의 실행 절차 중에, 호스트는 GPA와 HPA 간의 변환을 수행함으로써, 하드웨어 리소스 구성을 줄이고, 프로세스의 흐름을 간소화한다.
본 발명의 실시예의 상술한 방법을 보다 잘 이해하고 수행하기 위해, 상술한 방법을 수행하도록 구성된 장치 및 컴퓨터 시스템이 더 제공된다.
도 10을 참조하면, 본 발명의 일 실시예에서 제공되는 호스트(1000)는 제1 생성 모듈(1010), 제2 생성 모듈(1020) 및 결합 모듈(1030)을 포함할 수 있다.
제1 생성 모듈(1010)은, 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 호스트(1000)에 여러 VF 소프트웨어 인스턴스를 생성하고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 호스트에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고; 제2 생성 모듈은 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하도록 구성되며, 호스트(1000)에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 결합 모듈(1030)은 제2 생성 모듈(1020)에 의해 생성된 백엔드 인스턴스를 제1 생성 모듈(1010)에 의해 생성된 아이들 VF 소프트웨어 인스턴스와 결합한다.
본 실시예의 호스트(1000)는 상술한 각각의 방법 실시예의 호스트일 수 있고, 각각의 기능 모듈의 기능은 상술한 각각의 방법 실시예에서의 방법에 따라 구체적으로 수행될 수 있음을 알 수 있다. 구체적인 수행 절차에 관해서는, 상술한 방법 실시예의 관련 단락을 참조할 수 있으므로, 구체적인 내용은 여기서 반복하여 설명하지 않는다.
본 실시예에서는, 입출력 장치의 가상 입출력 기능이 이네이블된 후에, 여러 VF 소프트웨어 인스턴스가 호스트(1000)에 생성되고, 가상 입출력 기능이 이네이블되면서 대응하는 여러 VF 장치가 입출력 장치로부터 가상화되고, 호스트(1000)에 생성된 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트가 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치를 생성하며, 호스트(1000)에는 가상 입출력 장치의 백엔드 인스턴스가 생성되고, 작동된 VM에는 가상 입출력 장치의 프론트엔드 인스턴스가 생성되고, 백엔드 인스턴스가 아이들 VF 소프트웨어 인스턴스와 결합된다는 것을 알 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트(1000) 내의 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트(1000)의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
도 11a를 참조하면, 본 발명의 일 실시예에서 제공되는 컴퓨팅 노드(1100)는, 하드웨어 계층(1110), 하드웨어 계층(1110)에서 작동하는 호스트(1120), 및 호스트(1120) 상에서 작동하는 적어도 하나의 가상 머신(VM)(1130)을 포함할 수 있다.
하드웨어 계층(1110)은 입출력 장치(1111)를 포함하고 대응하는 여러 VF 장치(11111)은 입출력 장치(1111)로부터 가상화되며, 여러 VF 소프트웨어 인스턴스(1121) 및 여러 VF 장치(11111)는 일대일 대응관계에 있고, 호스트(1120)는 입출력 장치(1111)와 동일한 타입을 갖는 가상 입출력 장치의 백엔드 인스턴스(1122)를 더 포함하고, VM(1130)은 가상 입출력 장치의 프론트엔드 인스턴스(1131)를 포함하며, 호스트(1120)의 백엔드 인스턴스(1122)는 아이들 VF 소프트웨어 인스턴스(1121)와 결합된다.
어플리케이션 시나리오에서, 프론트엔드 인스턴스(1131)는 DMA를 위한 캐시를 미리 할당하도록 구성된다.
백엔드 인스턴스(1122)와 결합된 VF 소프트웨어 인스턴스(1121)는, 백엔드 인스턴스(1122)의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 주소를 획득하고, DMA를 위한 캐시에 대응하는 상기 획득된 주소를 VF 소프트웨어 인스턴스(1121)에 대응하는 VF 장치(11111)의 제1 저장 유닛에 기록하도록 구성된다.
VF 장치(11111)는, 수신할 데이터가 있을 경우 제1 저장 유닛으로부터 DMA를 위한 캐시에 대응하는 주소를 선택하고, DMA를 위한 캐시에 대응하는 주소를 타겟 주소로 이용하여 DMA 기록 요청을 개시하고, DMA 기록 요청이 실행된 후에 호스트(1120)에 있는 대응 VF 소프트웨어 인스턴스(1121)를 통지하도록 구성되고, 이에 따라 주소에 대응하는 캐시에 기록된 데이터를 수신하기 위해 VF 소프트웨어 인스턴스(1121)가 프론트엔드 인스턴스(1131)를 트리거한다.
도 11b를 참조하면, 어플리케이션 시나리오에서, 프론트엔드 인스턴스(1131)는 미리 할당된 DMA를 위한 캐시에 대응하는 GPA를 호스트(1120)와 VM(1130) 사이의 공유 메모리(1140)에 기록하도록 더 구성될 수 있다.
백엔드 인스턴스(1122)와 결합된 VF 소프트웨어 인스턴스(1121)는 구체적으로 백엔드 인스턴스(1122)의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 공유 메모리(1140)로부터 DMA를 위한 캐시에 대응하는 GPA를 획득하고, DMA를 위한 캐시에 대응하는 상기 획득된 GPA를 VF 소프트웨어 인스턴스(1121)에 대응하는 VF 장치(11111)의 제1 저장 유닛에 기록하도록 구성될 수 있다.
더욱이, 프론트엔드 인스턴스(1131)는 또한 백엔드 인스턴스(1122)에 대응하는, 미리 할당된 DMA를 위한 캐시에 대응하는 GPA를 통지할 수 있고, 백엔드 인스턴스(1122)와 결합된 VF 소프트웨어 인스턴스(1121)는 백엔드 인스턴스(1122)의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 GPA를 획득할 수 있다.
VF 장치(11111)는 구체적으로, 수신될 데이터가 있을 경우 제1 저장 유닛으로부터 DMA를 위한 캐시에 대응하는 GPA를 선택하고, DMA를 위한 캐시에 대응하는 상기 선택된 GPA를 타겟 주소로 이용하여 DMA 기록 요청을 개시하고, 타겟 주소 GPA가 대응 HPA로 변경되는 DMA 기록 요청이 실행된 후에 호스트(1120) 측의 대응 VF 소프트웨어 인스턴스(1121)를 통지하도록 구성될 수 있고, 이에 따라 HPA 에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스(1121)가 프론트엔드 인스턴스(1131)를 트리거한다.
컴퓨팅 노드(1100)의 하드웨어 계층(1110)은, VF 장치(11111)에 의해 작동된 DMA 기록 요청의 타겟 주소 GPA를 대응 HPA로 변경하도록 구성된 IOMMU(1112)를 더 포함할 수 있다.
예를 들어, IOMMU(1112)에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블이 HPA와 GPA 간의 맵핑을 기록하고, IOMMU(1112)는 주소 변환 페이지 테이블을 검색하여 DMA 기록 요청의 타겟 주소 GPA에 대응하는 HPA를 획득할 수 있고, DMA 기록 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경할 수 있다.
도 11c를 참조하면, 다른 시나리오에서, 프론트엔드 인스턴스(1131)는 호스트(1120)와 VM(1131) 사이의 공유 메모리(1140)에 미리 할당된 캐시에 대응하는 GPA를 기록하도록 더 구성될 수 있다.
호스트(1120)는 공유 메모리(1140)의 DMA를 위한 캐시에 대응하는 GPA를 대응 HPA로 변경하도록 구성될 수 있다.
예를 들어, 호스트(1120)에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 HPA와 GPA 간의 맵핑을 기록하고, 주소 변환 페이지 테이블을 검색함으로써, 호스트(1120)는 공유 메모리 내 DMA를 위한 캐시에 대응하는 GPA에 대응하는 HPA를 획득할 수 있고, 공유 메모리 내 DMA를 위한 캐시에 대응하는 GPA를 상기 획득된 HPA로 변경한다. 명확하게는, 프론트엔드 인스턴스(1131)는 또한 백엔드 인스턴스(1122)에 대응하는 미리 할당된 DMA를 위한 캐시에 대응하는 GPA를 통지할 수 있고, 호스트(1120)는 DMA를 위한 캐시에 대응하는 GPA를 대응 HPA로 변경할 수 있다.
백엔드 인스턴스(1122)와 결합된 VF 소프트웨어 인스턴스(1121)는 구체적으로 백엔드 인스턴스(1122)의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통하여 DMA를 위한 캐시에 대응하는 HPA를 획득하고, DMA를 위한 캐시에 대응하는 상기 획득된 HPA를 VF 소프트웨어 인스턴스(1121)에 대응하는 VF 장치(11111)의 제1 저장 유닛에 기록하도록 구성될 수 있다.
VF 장치(11111)는 구체적으로 수신될 데이터가 있을 경우 제1 저장 유닛으로부터 DMA를 위한 캐시에 대응하는 HPA를 선택하고, 선택된 HPA를 타겟 주소로 이용하여 DMA 기록 요청을 개시하고, DMA 기록 요청이 실행된 후에 호스트(1120)에 있는 대응 VF 소프트웨어 인스턴스(1121)를 통지하도록 구성될 수 있으며, 이에 따라 HPA에 대응하는 캐시에 기록된 데이터를 수신하도록 VF 소프트웨어 인스턴스(1121)가 프론트엔드 인스턴스(1131)를 트리거한다.
또한, 어플리케이션 시나리오에서, 프론트엔드 인스턴스(1131)는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트(1120)와 VM(1130) 사이의 공유 메모리(1140)에 기록하도록 더 구성된다.
백엔드 인스턴스(1122)는 공유 메모리(1140)로부터 전송될 데이터가 위치한 캐시에 대응하는 GPA를 획득하고, 백엔드 인스턴스(1122)와 결합된 VF 소프트웨어 인스턴스(1121)의 프로그램 전송 인터페이스를 작동시키고, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 VF 소프트웨어 인스턴스(1121)에 대응하는 VF 장치의 제2 저장 유닛에 기록하도록 더 구성될 수 있다.
나아가, 프론트엔드 인스턴스(1131)는 또한 전송될 데이터가 위치한 캐시에 대응하는 GPA를 대응 백엔드 인스턴스(1122)에 통지할 수 있고, 백엔드 인스턴스(1122)는, 상기 통지함에 따라, 전송될 데이터가 위치한 캐시에 대응하는 GPA를 획득한다.
VF 장치(11111)는, 전송될 데이터가 있음을 확인하면, 제2 저장 유닛에 기록된 GPA를 타겟 주소로 이용하여 DMA 판독 요청을 개시하도록 더 구성되고, VF 장치(11111)는, DMA 판독 요청이 실행된 후에, 호스트(1120)에 있는 대응 VF 소프트웨어 인스턴스(1121)를 통지하도록 더 구성될 수 있으며, 이에 따라 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스(1121)가 프론트엔드 인스턴스(1131)를 트리거한다.
컴퓨팅 노드(1100)의 하드웨어 계층(1110)은, VF 장치(11111)에 의해 작동된 DMA 판독 요청의 타겟 주소 GPA를 대응 HPA로 변경하도록 구성된 IOMMU(1121)를 더 포함할 수 있다.
예를 들어, IOMMU(1112)에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 GPA와 HPA 간의 맵핑을 기록하며, IOMMU(1112)는 주소 변환 페이지 테이블을 검색하여 DMA 판독 요청의 타겟 주소 GPA에 대응하는 HPA를 획독하고, DMA 판독 요청의 타겟 주소 GPA를 상기 획득된 HPA로 변경할 수 있다.
다른 어플리케이션 시나리오에서, 프론트엔드 인스턴스(1131)는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트(1120)와 VM(1130) 사이의 공유 메모리(1140)에 기록하도록 더 구성될 수 있다.
호스트(1120)는, 전송될 데이터가 위치한 캐시에 대응하는, 공유 메모리(1140)의 GPA를 대응 HPA로 변경하도록 구성될 수 있다.
예를 들어, 호스트(1120)에 주소 변환 페이지 테이블이 세팅되고, 주소 변환 페이지 테이블은 GPA와 HPA 간의 맵핑을 기록하고, 주소 변환 페이지 테이블을 검색함으로써, 호스트(1120)는 전송될 데이터가 위치한 캐시에 대응하는, 공유 메모리의 GPA에 대응하는 HPA를 획득할 수 있으며, 전송될 데이터가 위치한 캐시에 대응하는, 공유 메모리의 GPA를 대응 HPA로 변경한다. 명확하게는, 프론트엔드 인스턴스(1131)는 또한 전송될 데이터가 위치한 캐시에 대응하는 GPA를 호스트(1120)에 통지할 수 있고, 호스트(1120)는 전송될 데이터가 위치한 캐시에 대응하는 GPA를 대응 HPA로 변경할 수 있다.
백엔드 인스턴스(1122)는 전송될 데이터가 위치한 캐시에 대응하는 HPA를 획득하고, 백엔드 인스턴스(1122)와 결합된 VF 소프트웨어 인스턴스(1121)의 프로그램 전송 인터페이스를 작동시키고, 전송될 데이터가 위치한 캐시에 대응하는 HPA를 VF 소프트웨어 인스턴스(1121)에 대응하는 VF 장치(11111)의 제2 저장 유닛에 기록하도록 더 구성된다.
VF 장치(11111)는, 전송될 데이터가 있음을 발견할 경우, 제2 저장 유닛에 기록된 HPA를 타겟 주소로 이용하여 DMA 판독 요청을 개시하도록 더 구성될 수 있다. 또한, VF 장치(11111)는, DMA 판독 요청이 실행된 후에, 호스트(1120)에 있는 대응 VF 소프트웨어 인스턴스(1121)를 통지하도록 더 구성될 수 있으며, 이에 따라 대응하는 캐시를 해제시키도록 VF 소프트웨어 인스턴스(1121)가 프론트엔드 인스턴스(1131)를 트리거한다.
제1 저장 유닛은, 예를 들면, VF 장치 또는 주소를 기록할 수 있는 또 다른 구조의 데이터 스토리지의 수신 큐 또는 수신 리스트이다. 제2 저장 유닛은, 예를 들면, VF 장치 또는 주소를 기록할 수 있는 또 다른 구조의 데이터 스토리지의 수신 큐 또는 수신 리스트이다.
본 실시예의 호스트(1120)는 상술한 각각의 방법 실시예의 호스트일 수 있고, 컴퓨팅 노드(1100)가 본 실시예에서 작동하는 가상화 시스템의 작동 메커니즘은 상술한 방법 실시예에서 설명된 메커니즘일 수 있으며, 각각의 기능 모듈의 기능은 상술한 각각의 방법 실시예에서의 방법에 따라 구체적으로 수행될 수 있음을 알 수 있다. 구체적인 수행 절차에 관해서는, 상술한 방법 실시예의 관련 단락을 참조할 수 있으므로, 구체적인 내용은 여기서 반복하여 설명하지 않는다.
본 발명의 실시예의 컴퓨팅 노드(1100)는, 하드웨어 계층, 하드웨어 계층 상에서 작동하는 호스트, 및 호스트 상에서 작동하는 적어도 하나의 VM을 포함하고, 하드웨어 계층은 입출력 장치를 포함하며 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치의 백엔드 인스턴스를 더 포함하고, VM은 가상 입출력 장치의 프론트엔드 인스턴스를 포함하며, 호스트의 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합되는 것을 알 수 있다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다.
도 12를 참조하면, 본 발명의 일 실시예는 컴퓨터 시스템을 더 제공하며, 컴퓨터 시스템은 이하의 구성을 포함할 수 있다.
적어도 하나의 컴퓨팅 노드(1100): 상술한 각각의 방법 실시예에 관하여, 간단히 설명하자면, 방법은 일련의 동작들의 조합으로서 설명되었으나, 본 발명에 따르면, 일부 단계는 다른 순서대로 실행되거나 동시에 실행될 수 있기 때문에, 당업자는 본 발명은 본 명세서에 설명된 동작의 순서에 제한되지 않음을 학습해야 한다는 점에 유의할 필요가 있다. 나아가, 당업자는 본 명세서에 설명된 모든 실시예는 예시적 실시예이며, 관련 동작 및 모듈은 본 발명에 있어서 필수불가결한 것이 아닐 수 있음을 학습해야 한다.
상술한 실시예에서, 각각의 실시예의 설명에는 강조점이 있고, 일 실시예에서 설명되지 않은 부분에 대해서는, 다른 실시예의 관련 설명을 참조할 수 있다.
상술한 관점에 따라, 본 발명의 실시에의 컴퓨팅 노드는, 하드웨어 계층, 하드웨어 상에서 작동하는 호스트, 및 호스트 상에서 작동하는 적어도 하나의 VM을 포함할 수 있고, 하드웨어 계층은 입출력 장치를 포함하며 대응하는 여러 VF 장치는 입출력 장치로부터 가상화되고, 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있고, 호스트는 입출력 장치와 동일한 타입을 갖는 가상 입출력 장치의 백엔드 인스턴스를 더 포함하고, VM은 가상 입출력 장치의 프론트엔드 인스턴스를 포함하며, 호스트의 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합된다. 이와 같은 방식으로, 각각의 VM이 독립적으로 하나의 VF 장치를 사용할 수 있는 어플리케이션 구조가 확립되고, 입출력 장치로부터 가상화된 하나의 VF 장치와 하나의 VM 내의 프론트엔드 인스턴스 사이의 채널이 통과되며, 이에 따라 프론트엔드는 호스트 내에 있는 백엔드 인스턴스를 통하여 VF 장치에 액세스할 수 있다. 입출력 장치로부터 가상화된 VF 장치가 사용을 위해 VM에 각각 할당됨으로써, VM 장치는 고효율 장치 인터페이스를 제공할 수 있고, 이에 따라 VM은 물리적 머신의 성능과 유사한 성능을 얻을 수 있다는 장점을 가지며, 지연은 낮고 부가적인 CPU 오버헤드도 거의 발생하지 않는다. 또한, 가상 장치의 프론트엔드 드라이브(즉, 프론트엔드 인스턴스)가 VM에 있기 때문에, 데이터는 호스트 내에 있는 백엔드 드라이브(즉, 백엔드 인스턴스)를 통하여 전송되고, VM은 호스트의 실제 물리적 장치를 감지하지 않으며, 이로써 장치 공유의 변환 및 수행이 편리해지므로, 가상화 시스템의 호환성이 최적화된다. 또한, VM의 OS는 가장 최근의 하드웨어 기술 지원을 갖출 필요는 없으며, 하드웨어 제공자(IHV)에 의해 제공되는 VM 드라이브에 의존하지 않고, 컴퓨팅 노드가 다양한 메인 스트림 OS에 적용될 수 있으며, 가상 머신과 물리적 플랫폼 간의 고립 및 디커플링이 완벽하게 절감되므로, 가상 머신은 전송되기 쉽고, 호스트는 VM 내 데이터의 송수신을 계속하여 모니터링할 수 있으며, 데이터 필터링 및 메모리 멀티플렉싱 등의 고급 기능까지 계속하여 수행될 수 있고, PV의 프론트엔드/백엔드의 프론트엔드 부분은 멀티플랙싱될 수 있으며, 업그레이드가 편리하게 수행된다.
또한, DMA 판독/기록 요청의 실행이 진행되는 중에, 하드웨어 모듈 IOMMU는 GPA와 HPA 간의 변환을 수행함으로써, 하드웨어 리소스 구성을 줄이고, 절차 흐름을 간소화한다. 그렇지 않으면, DMA 판독 요청의 실행이 진행되는 중에, 호스트가 GPA와 HPA 간의 변환을 수행함으로써, 하드웨어 리소스 구성을 줄이고, 절차 흐름을 간소화한다.
당업자는 본 발명의 실시예에 따른 방법의 단계 중 전부 또는 일부가 관련 하드웨어를 지시하는 프로그램에 의해 수행될 수 있음을 이해해야 한다. 프로그램은, ROM, RAM, 자기 디스크 또는 광 디스크 등과 같이, 컴퓨터로 판독 가능한 저장 매체에 저장될 수 있다.
본 발명의 실시예에서 제공되는 가상화 처리 방법, 장치 및 컴퓨터 시스템이 구체적으로 설명되었다. 본 발명의 본질 및 구현은 구체적인 예를 통하여 본 명세서에서 설명되었다. 본 발명의 실시예에 관한 설명은 본 발명의 방법 및 핵심 아이디어를 쉽게 이해하기 위한 것일 뿐이다. 당업자는 본 발명의 아이디어에 따라 구체적인 구현 및 적용 범위에 관하여 본 발명에 변경 및 수정을 가할 수 있다. 따라서, 본 명세서는 본 발명을 한정하는 것으로 해석되어서는 안된다.

Claims (13)

  1. 가상화 처리 방법에 있어서,
    입출력(I/O) 장치의 가상 입출력 기능이 이네이블(enable)된 후에, 호스트(host)에서 여러 VF(Virtual Function: 가상 기능) 소프트웨어 인스턴스(software instance)를 생성하는 단계 - 상기 가상 입출력 기능이 이네이블 된 입출력 장치로부터 복수의 대응하는 VF 장치가 가상화 되고, 상기 여러 VF 소프트웨어 인스턴스 및 여러 VF 장치는 일대일 대응관계에 있음 -;
    상기 호스트가, 상기 입출력 장치와 동일한 타입(type)을 가지는 입출력 장치를 생성하는 단계 - 상기 호스트에는 상기 가상 입출력 장치의 백엔드 인스턴스(BE: Back-End instance)가 생성되고, 작동된 가상 머신(VM: Virtual Machine)에는 상기 가상 입출력 장치의 프론트엔드 인스턴스(FE: Front-End instance)가 생성됨 - ; 및
    상기 백엔드 인스턴스를 아이들(idle) 소프트웨어 인스턴스와 결합하는 단계
    를 포함하는 가상화 처리 방법.
  2. 제1항에 있어서,
    상기 호스트는 VMM(virtual machine monitor)를 포함하는, 가상화 처리 방법.
  3. 제1항에 있어서,
    상기 프론트엔드 인스턴스가, DMA(direct memory access)를 위한 캐시를 미리 할당하는 단계를 더 포함하는 가상화 처리 방법.
  4. 제3항에 있어서,
    상기 백엔드 인스턴스와 결합된 상기 VF 소프트웨어 인스턴스가, 상기 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스(exporting application programming interface)를 통하여 상기 DMA를 위한 캐시에 대응하는 주소를 획득하는 단계; 및
    상기 DMA를 위한 캐시에 대응하는 획득된 주소를 상기 VF 소프트웨어 인스턴스에 대응하는 VF 장치의 제1 저장 유닛에 기록하는 단계
    를 더 포함하는 가상화 처리 방법.
  5. 제4항에 있어서,
    상기 VF 장치가, 수신할 데이터가 있을 경우, 상기 제1 저장 유닛으로부터 상기 DMA를 위한 캐시에 대응하는 주소를 선택하는 단계; 및
    상기 DMA를 위한 캐시에 대응하는 선택된 주소를 타겟 주소로서 이용하여 DMA 기록 요청을 개시하는 단계
    를 더 포함하는 가상화 처리 방법.
  6. 제5항에 있어서,
    상기 VF 장치가, 상기 DMA 기록 요청이 실행된 후에, 호스트 계층(Host layer) 내에 있고 상기 VF 장치에 대응하는 상기 VF 소프트웨어 인스턴스를 통지하여, 상기 VF 소프트웨어 인스턴스가, 상기 주소에 대응하는 캐시에 기록된 데이터를 수신하도록 상기 프론트엔드 인스턴스를 트리거(trigger)하는 단계
    를 더 포함하는 방법.
  7. 하드웨어 계층, 상기 하드웨어 계층 상에서 작동하는 호스트 및 상기 호스트 상에서 작동하는 적어도 하나의 가상 머신을 포함하는 컴퓨팅 노드(computing node)로서,
    상기 하드웨어 계층은 입출력 장치를 포함하고, 대응하는 여러 VF(Virtual Function: 가상 기능) 장치가 상기 입출력 장치로부터 가상화되고, 상기 호스트는 여러 VF 소프트웨어 인스턴스를 가지고, 상기 여러 VF 소프트웨어 인스턴스 및 상기 여러 VF 장치는 일대일 대응관계에 있으며,
    상기 호스트는 상기 입출력 장치와 동일한 타입을 가지는 가상 입출력 장치의 백엔드 인스턴스를 더 포함하고,
    상기 가상 머신은 상기 가상 입출력 장치의 프론트엔드 인스턴스를 포함하며,
    상기 호스트 내의 백엔드 인스턴스는 아이들 VF 소프트웨어 인스턴스와 결합된,
    컴퓨팅 노드.
  8. 제7항에 있어서,
    상기 호스트 계층은 VMM을 포함하는, 컴퓨팅 노드.
  9. 제7항에 있어서,
    상기 프론트엔드 인스턴스는 DMA를 위한 캐시를 미리 할당하도록 구성된, 컴퓨팅 노드.
  10. 제9항에 있어서,
    상기 백엔드 인스턴스와 결합된 상기 VF 소프트웨어 인스턴스는,
    상기 백엔드 인스턴스의 익스포팅 어플리케이션 프로그래밍 인터페이스를 통해 상기 DMA를 위한 캐시에 대응하는 주소를 획득하고,
    상기 DMA를 위한 캐시에 대응하는 획득된 주소를, 상기 VF 소프트웨어 인스턴스에 대응하는 VF 장치 내의 제1 저장 유닛에 기록하도록 구성된, 컴퓨팅 노드.
  11. 제10항에 있어서,
    상기 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스는 추가로,
    수신할 데이터가 있는 경우, 상기 제1 저장 유닛으로부터 상기 DMA를 위한 캐시에 대응하는 주소를 선택하고,
    상기 DMA를 위한 캐시에 대응하는 선택된 주소를 타겟 주소로서 이용하여 DMA 기록 요청을 개시하도록 구성된, 컴퓨팅 노드.
  12. 제11항에 있어서,
    상기 백엔드 인스턴스와 결합된 VF 소프트웨어 인스턴스는 추가로,
    상기 VF 장치가, 상기 DMA 기록 요청이 실행된 후에, 상기 호스트 계층 내에 있고 상기 VF 장치에 대응하는 상기 VF 소프트웨어 인스턴스를 통지하여, 상기 VF 소프트웨어 인스턴스가, 상기 주소에 대응하는 캐시에 기록된 데이터를 수신하도록 상기 프론트엔드 인스턴스를 트리거하도록 구성된, 컴퓨팅 노드.
  13. 컴퓨터 시스템으로서,
    하나 이상의 컴퓨팅 노드를 포함하고,
    상기 하나 이상의 컴퓨팅 노드 각각은 제7항 내지 제12항 중 어느 한 항에 개시된 컴퓨팅 노드에 의해 구현되는, 컴퓨터 시스템.
KR1020177013797A 2011-12-31 2012-05-22 가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템 KR20170058469A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201110458345.8 2011-12-31
CN201110458345.8A CN102591702B (zh) 2011-12-31 2011-12-31 虚拟化处理方法及相关装置和计算机系统
PCT/CN2012/075846 WO2012149912A1 (zh) 2011-12-31 2012-05-22 虚拟化处理方法及相关装置和计算机系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147007779A Division KR101740521B1 (ko) 2011-12-31 2012-05-22 가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템

Publications (1)

Publication Number Publication Date
KR20170058469A true KR20170058469A (ko) 2017-05-26

Family

ID=46480412

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147007779A KR101740521B1 (ko) 2011-12-31 2012-05-22 가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템
KR1020177013797A KR20170058469A (ko) 2011-12-31 2012-05-22 가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020147007779A KR101740521B1 (ko) 2011-12-31 2012-05-22 가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템

Country Status (8)

Country Link
US (2) US8635616B2 (ko)
EP (1) EP2743829B1 (ko)
JP (1) JP5802841B2 (ko)
KR (2) KR101740521B1 (ko)
CN (1) CN102591702B (ko)
AU (1) AU2012250375B2 (ko)
RU (1) RU2573219C2 (ko)
WO (1) WO2012149912A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200140078A (ko) * 2019-06-05 2020-12-15 주식회사 티맥스티베로 데이터베이스 관리 방법

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9244743B1 (en) 2012-08-01 2016-01-26 Amazon Technologies, Inc. Remotely interacting with a virtualized machine instance
CN102946366B (zh) * 2012-11-12 2015-12-16 杭州华为数字技术有限公司 带内管理方法及系统
US9535871B2 (en) 2012-11-27 2017-01-03 Red Hat Israel, Ltd. Dynamic routing through virtual appliances
US9454392B2 (en) * 2012-11-27 2016-09-27 Red Hat Israel, Ltd. Routing data packets between virtual machines using shared memory without copying the data packet
CN103870312B (zh) * 2012-12-12 2018-01-23 华为技术有限公司 建立虚拟机共享存储缓存的方法及装置
CN103116517B (zh) * 2013-01-24 2016-09-14 华为技术有限公司 虚拟化平台下i/o通道的调整方法和调整装置
US9195483B2 (en) * 2013-01-28 2015-11-24 Dell Products L.P. Systems and methods for mirroring virtual functions in a chassis configured to receive a plurality of modular information handling systems and a plurality of modular information handling resources
GB2514107B (en) * 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
CN103389884A (zh) 2013-07-29 2013-11-13 华为技术有限公司 处理输入/输出请求的方法、宿主机、服务器和虚拟机
WO2015013920A1 (zh) * 2013-07-31 2015-02-05 华为技术有限公司 一种数据转发方法、装置及系统
CN103763173B (zh) * 2013-12-31 2017-08-25 华为技术有限公司 数据传输方法和计算节点
CN104123173B (zh) * 2014-07-22 2017-08-25 华为技术有限公司 一种实现虚拟机间通信的方法及装置
JP6380084B2 (ja) * 2014-12-19 2018-08-29 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
WO2016101282A1 (zh) * 2014-12-27 2016-06-30 华为技术有限公司 一种i/o任务处理的方法、设备和系统
KR102398213B1 (ko) 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
CN106301876B (zh) * 2015-06-26 2019-11-29 南京中兴新软件有限责任公司 物理机升级方法、业务迁移方法及装置
RU2644126C2 (ru) * 2016-05-31 2018-02-07 Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" Способ оптимального планирования использования виртуальных сетевых ресурсов центров обработки данных
CN107643897B (zh) * 2016-07-20 2021-04-16 阿里巴巴集团控股有限公司 后端驱动程序的更新方法及装置
CN111078353A (zh) * 2016-10-28 2020-04-28 华为技术有限公司 存储设备的操作方法及物理服务器
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN109426545B (zh) * 2017-08-31 2023-02-03 阿里巴巴集团控股有限公司 一种数据通信方法及装置
CN109542581B (zh) * 2017-09-22 2020-10-13 深圳市中兴微电子技术有限公司 一种设备共享方法、装置及存储介质
CN109657471B (zh) * 2017-10-11 2023-02-28 阿里巴巴集团控股有限公司 云设备管理系统和方法
CN110554977A (zh) 2018-05-30 2019-12-10 阿里巴巴集团控股有限公司 数据缓存方法、数据处理方法、计算机设备、存储介质
CN110597451B (zh) 2018-06-12 2021-02-23 华为技术有限公司 一种虚拟化缓存的实现方法及物理机
CN109525515B (zh) * 2018-10-23 2021-04-30 郑州云海信息技术有限公司 一种云平台中网卡的管理方法和装置
EP3951591A4 (en) * 2019-04-30 2022-06-01 Huawei Technologies Co., Ltd. DATA PROCESSING METHOD, APPARATUS AND DEVICE
US11044161B2 (en) * 2019-10-11 2021-06-22 Huawei Technologies Canada Co., Ltd. Method and system for latency-aware embedding of a virtual network onto a substrate optical network
CN111274176B (zh) * 2020-01-15 2022-04-22 联想(北京)有限公司 一种信息处理方法、电子设备、系统及存储介质
CN117234741B (zh) * 2023-11-14 2024-02-20 苏州元脑智能科技有限公司 资源管理与调度方法、装置、电子设备以及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195345B1 (en) * 1997-12-03 2001-02-27 Ericsson Messaging Systems, Inc. High capacity multimedia messaging exchanges
EP0944257A1 (en) 1998-03-06 1999-09-22 CANAL+ Société Anonyme Multimedia terminal adapted for multiple users
JP2006294517A (ja) 2005-04-13 2006-10-26 Kansai Electric Power Co Inc:The Ga系固体電解質材料の製造方法
US20060294517A1 (en) 2005-06-28 2006-12-28 Zimmer Vincent J Network interface sharing among multiple virtual machines
US20070271560A1 (en) 2006-05-18 2007-11-22 Microsoft Corporation Deploying virtual machine to host based on workload characterizations
JP4681505B2 (ja) * 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US20080126614A1 (en) * 2006-09-26 2008-05-29 Giap Yong Ooi Input/output (I/O) device virtualization using hardware
US7761612B2 (en) * 2006-12-07 2010-07-20 International Business Machines Corporation Migrating domains from one physical data processing system to another
CN100568181C (zh) * 2007-06-22 2009-12-09 浙江大学 基于处理器虚拟化技术的虚拟机系统及其实现方法
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
US8954957B2 (en) 2009-07-01 2015-02-10 Riverbed Technology, Inc. Network traffic processing according to network traffic rule criteria and transferring network traffic metadata in a network device that includes hosted virtual machines
RU2532708C2 (ru) * 2009-12-24 2014-11-10 Интел Корпорейшн Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
JP2011145912A (ja) 2010-01-15 2011-07-28 Fujitsu Ltd 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム
US8178754B1 (en) 2010-05-05 2012-05-15 Pioneer Hi-Bred International, Inc. Soybean variety XB29L10
CN101976200B (zh) * 2010-10-15 2013-05-08 浙江大学 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200140078A (ko) * 2019-06-05 2020-12-15 주식회사 티맥스티베로 데이터베이스 관리 방법

Also Published As

Publication number Publication date
RU2014117656A (ru) 2015-11-10
CN102591702A (zh) 2012-07-18
US20140019973A1 (en) 2014-01-16
EP2743829A1 (en) 2014-06-18
US20130174155A1 (en) 2013-07-04
US9244715B2 (en) 2016-01-26
RU2573219C2 (ru) 2016-01-20
KR20140054349A (ko) 2014-05-08
AU2012250375B2 (en) 2015-08-13
WO2012149912A1 (zh) 2012-11-08
AU2012250375A1 (en) 2014-04-03
JP2014531093A (ja) 2014-11-20
EP2743829A4 (en) 2014-10-22
CN102591702B (zh) 2015-04-15
EP2743829B1 (en) 2018-09-12
US8635616B2 (en) 2014-01-21
KR101740521B1 (ko) 2017-06-08
JP5802841B2 (ja) 2015-11-04

Similar Documents

Publication Publication Date Title
KR101740521B1 (ko) 가상화 처리 방법, 그에 관한 장치, 및 컴퓨터 시스템
US8856194B2 (en) Efficient garbage collection in virtualization environment
US20190155548A1 (en) Computer system and storage access apparatus
US9529773B2 (en) Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller
TWI625674B (zh) 用於支援在主機上運行的多個虛擬機器的nvme控制器虛擬化的系統和方法
US20150317088A1 (en) Systems and methods for nvme controller virtualization to support multiple virtual machines running on a host
US20050198632A1 (en) Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another
US20150269187A1 (en) Apparatus and method for providing virtual machine image file
JP2013514584A5 (ko)
WO2016101282A1 (zh) 一种i/o任务处理的方法、设备和系统
US11016817B2 (en) Multi root I/O virtualization system
JP6099458B2 (ja) 特定の仮想マシンに関連するトレース・データを得るためのコンピュータ実装方法、プログラム、トレーサ・ノード
US10761859B2 (en) Information processing system, management device, and method for controlling information processing system
WO2016119322A1 (zh) 确定读写路径的方法和装置
WO2023138460A1 (zh) 分布式存储空间的管理方法、计算设备及存储介质
US20240053998A1 (en) Method and apparatus for processing inter-core communication, and computer system
CN103207805A (zh) 基于虚拟化的硬盘复用系统
JP5492731B2 (ja) 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム
US10768964B2 (en) Virtual machine messaging
KR101765723B1 (ko) 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법
AU2015203452B2 (en) Virtualization processing method and apparatuses, and computer system
CN114510436A (zh) 一种存储设备
Svärd et al. Hecatonchire: enabling multi-host virtual machines by resource aggregation and pooling
Colesa et al. Fast creation of short-living virtual machines using copy-on-write ram-disks
CN104156256A (zh) 一种高效灵活的云主机磁盘克隆方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application