KR20220059906A - 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법 - Google Patents

가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법 Download PDF

Info

Publication number
KR20220059906A
KR20220059906A KR1020210092789A KR20210092789A KR20220059906A KR 20220059906 A KR20220059906 A KR 20220059906A KR 1020210092789 A KR1020210092789 A KR 1020210092789A KR 20210092789 A KR20210092789 A KR 20210092789A KR 20220059906 A KR20220059906 A KR 20220059906A
Authority
KR
South Korea
Prior art keywords
storage
command
virtual machine
completion
virtualization
Prior art date
Application number
KR1020210092789A
Other languages
English (en)
Other versions
KR102532099B1 (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 서울대학교산학협력단
Priority to US17/504,849 priority Critical patent/US20220137998A1/en
Priority to CN202111260805.6A priority patent/CN114443209A/zh
Publication of KR20220059906A publication Critical patent/KR20220059906A/ko
Application granted granted Critical
Publication of KR102532099B1 publication Critical patent/KR102532099B1/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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/45583Memory management, e.g. access or allocation

Abstract

본 개시의 일 실시 예에 따른 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하고, 그리고 호스트 장치에 의해 실행되는 제1 가상 머신을 지원한다. 스토리지 가상화 장치의 동작 방법은, 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치하는 단계, 페치된 제1 커맨드를 제1 SQ로 분배하는 단계, 제1 SQ의 제1 커맨드를 스토리지 장치 세트로 제공하는 단계, 스토리지 장치 세트로부터 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하는 단계로서, 제1 컴플리션은 제1 CQ에 기입되는 것, 제1 CQ의 제1 컴플리션을 가상화 계층에 분배하는 단계, 및 분배된 제1 컴플리션을 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.

Description

가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법{STORAGE VIRTUALIZATION DEVICE SUPPORTING A VIRTUAL MACHINE, OPERATION METHOD THEREOF, AND OPERATION METHOD OF SYSTEM HAVING THE SAME}
본 개시는 가상화된 스토리지 장치의 관리에 관한 것으로, 좀 더 상세하게는 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법에 관한 것이다.
스토리지 가상화 기술은 가상 머신에게 가상 스토리지 장치를 제공할 수 있다. 가상 머신은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다. 가상 스토리지 장치는 물리적 스토리지 장치(예를 들어, 실제 스토리지 장치)와 매핑(mapping)될 수 있고, 물리적 스토리지 장치는 가상 머신로부터의 읽기 커맨드나 쓰기 커맨드 등과 같은 요청을 처리하기 위한 데이터를 물리적으로 저장할 수 있다.
가상 머신에게 가상 스토리지 장치를 제공하기 위해, 스토리지 가상화 기술은 가상화 계층을 지원할 수 있다. 가상화 계층은 물리적 스토리지 장치 및 가상 머신 사이의 리소스 관리 기능(예를 들어, 데이터 속도, 대역폭 등을 제어)을 제공할 수 있다. 일반적으로, 소프트웨어 기반의 가상 스토리지 기술은 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공할 수 있지만, CPU(central processing unit)의 리소스가 많이 소모되어 데이터 속도가 저하될 수 있다. 하드웨어 기반의 가상 스토리지 기술은 CPU의 리소스가 절약되고 데이터 속도가 증가할 수 있지만, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공하지 못할 수 있다.
본 개시의 일 실시 예에 따르면, 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.
본 개시의 일 실시 예에 따르면, 호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하고, 그리고 상기 호스트 장치에 의해 실행되는 제1 가상 머신을 지원하는 스토리지 가상화 장치의 동작 방법이 제공된다. 상기 방법은, 상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하는 단계, 상기 페치된 제1 커맨드를 상기 제1 SQ로 분배하는 단계, 상기 제1 SQ의 상기 제1 커맨드를 상기 스토리지 장치 세트로 제공하는 단계, 상기 스토리지 장치 세트로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하는 단계로서, 상기 제1 컴플리션은 상기 제1 CQ에 기입되는 것, 상기 제1 CQ의 상기 제1 컴플리션을 가상화 계층에 분배하는 단계, 및 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 호스트 장치 및 스토리지 장치 세트와 통신하고, 상기 호스트 장치에 의해 실행되는 제1 가상 머신을 지원하는 스토리지 가상화 장치가 제공된다. 상기 스토리지 가상화 장치는, 상기 호스트 장치와 통신하고, 상기 제1 가상 머신과의 인터페이스를 제공하도록 구성된 SR-IOV(single root input/output virtualization) 어댑터, 상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하도록 구성된 제1 스토리지 가상화 코어, 상기 제1 가상 머신 및 상기 스토리지 장치 세트 사이의 매핑 정보를 포함하는 개재(interposition) 계층, 및 상기 스토리지 장치 세트와 통신하도록 구성되고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하는 스토리지 인터페이스 회로를 포함한다. 상기 스토리지 인터페이스 회로는, 상기 제1 스토리지 가상화 코어로부터 상기 개재 계층을 통해 상기 제1 SQ로 분배된 상기 제1 커맨드를 상기 스토리지 장치 세트로 제공하고, 상기 스토리지 장치 세트로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하고, 상기 제1 컴플리션은 상기 제1 CQ에 기입되고, 그리고 상기 개재 계층을 통해 상기 제1 CQ의 제1 컴플리션을 가상화 계층에 분배하도록 더 구성된다. 그리고, 상기 제1 스토리지 가상화 코어는 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하도록 더 구성된다.
본 개시의 일 실시 예에 따르면, 가상 머신을 실행하는 호스트 장치, 상기 가상 머신을 지원하고 그리고 SQ(submission queue) 및 CQ(completion queue)를 포함하는 스토리지 가상화 장치, 및 상기 스토리지 가상화 장치와 통신하는 스토리지 장치 세트를 포함하는 스토리지 시스템의 동작 방법이 제공된다. 상기 방법은, 상기 호스트 장치에 의해, 가상 머신의 VSQ(virtual submission queue)에 커맨드가 기입된 것을 가리키는 도어벨을 생성하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 페치된 커맨드를 상기 제1 SQ로 분배하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 제1 SQ의 상기 커맨드를 상기 스토리지 장치 세트로 제공하는 단계, 상기 스토리지 장치 세트 및 상기 호스트 장치에 의해, 상기 커맨드를 처리하는 단계, 상기 스토리지 장치 세트에 의해, 상기 커맨드가 처리된 것을 가리키는 컴플리션을 상기 CQ에 기입하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 CQ의 상기 컴플리션을 가상화 계층에 분배하는 단계, 및 상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.
또한, 가상 머신을 위한 가상화 계층을 지원함으로써, CPU의 리소스가 절약되고, 데이터 속도가 향상되고, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 도면이다.
도 4는 본 개시의 일부 실시 예들에 따른 가상 머신의 블록도이다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다.
도 6a, 도 6b, 및 도 6c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들의 리소스 할당을 설명하는 도면들이다.
도 7a, 도 7b, 및 도 7c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 리소스 할당을 설명하는 도면들이다.
도 8은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다.
도 9는 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.
상세한 설명에서 사용되는 부 또는 유닛(unit), 모듈(module), 계층(layer) 등의 용어를 참조하여 설명되는 구성 요소들 및 도면에 도시된 기능 블록들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예를 들어, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(100)은 호스트 장치(110), 스토리지 가상화 장치(120), 및 스토리지 장치 세트(130)를 포함할 수 있다. 스토리지 시스템(100)은 복수의 가상 머신(VM)들을 제공할 수 있다. 가상 머신(VM)은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신(VM) 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다.
일부 실시 예들에서, 스토리지 시스템(100)은 서버 장치일 수 있다. 예를 들어, 스토리지 시스템(100)은 복수의 사용자들을 위한 복수의 가상 머신(VM)들을 포함하는 클라우드 컴퓨팅 환경을 제공하는 서버 장치일 수 있다.
복수의 가상 머신(VM)들은 물리적 스토리지 장치들(예를 들어, 스토리지 장치 세트(130)와 같은 실제 스토리지 장치들)를 공유하므로, 적은 개수의 스토리지 장치들로 여러 가상 머신(VM)들을 지원할 수 있다. 또한, 가상 머신(VM)의 위치나 동작이 물리적 스토리지 장치들(예를 들어, 스토리지 장치 세트(130))에 제한되지 않을 수 있다. 예를 들어, 제1 스토리지 장치(131)에 대응하는 가상 머신(VM)을 제2 스토리지 장치(132)에 대응하도록 변경할 수 있다.
호스트 장치(110)는 가상 머신(VM)을 실행할 수 있다. 예를 들어, 호스트 장치(110)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS; operating system) 및 애플리케이션 등을 위한 연산들을 실제로 수행할 수 있다. 호스트 장치(110)는 가상 머신(VM)의 데이터 처리를 위한 요청들(예를 들어, 읽기 커맨드, 쓰기 커맨드 등)을 관리할 수 있다.
스토리지 가상화 장치(120)는 가상 머신(VM) 관리를 지원할 수 있다. 스토리지 가상화 장치(120)는 호스트 장치(110) 및 스토리지 장치 세트(130)와 통신할 수 있다. 스토리지 가상화 장치(120)는 가상 머신(VM)으로부터의 요청(예를 들어, 호스트 장치(110)로부터 수신됨)을 스토리지 장치 세트(130)와 같은 실제 스토리지 장치들이 처리할 수 있도록 변경할 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)로부터 수신된 응답을 가상 머신(VM)에서 처리할 수 있도록 변경할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치(120)는 별도의 하드웨어 장치로 제공될 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 호스트 장치(110) 및 스토리지 장치 세트(130)와 독립적으로, 스토리지 시스템(100)에 설치되거나, 제거되거나, 교체되거나, 또는 동작할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치(120)는 FPGA(field programmable gate array)로 구현될 수 있다. 그러나, 본 개시의 범위는 이에 제한되지 않으며, 스토리지 가상화 장치(120)는 FPGA 이외에도, 호스트 장치(110) 및 스토리지 장치 세트(130)와 통신하는 다양한 종류의 하드웨어 장치로 구현될 수 있다.
스토리지 장치 세트(130)는 제1 내지 제N 스토리지 장치들(131~13N)을 포함할 수 있다. N은 임의의 자연수이다. 제1 내지 제N 스토리지 장치들(131~13N) 각각은 데이터를 저장하는 장치일 수 있다. 예를 들어, 제1 스토리지 장치(131)는 솔리드 스테이트 드라이브(SSD; solid state drive)와 같은 플래시 메모리일 수 있으나, 본 개시는 이에 제한되지 않으며, 제1 스토리지 장치(131)는 쓰기 커맨드에 따라 데이터를 저장하고, 읽기 커맨드에 따라 저장된 데이터를 제공하는 임의의 스토리지 매체일 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치(120)는 서브미션 큐(SQ; submission queue) 및 컴플리션 큐(CQ; completion queue)를 포함할 수 있다. SQ는 읽기 커맨드, 쓰기 커맨드 등과 같은 가상 머신(VM)의 데이터 처리를 위한 요청 및 요청을 위한 물리적 어드레스를 저장하는 버퍼일 수 있다. CQ는 SQ의 요청에 대응하는 응답(예를 들어, 요청에 따른 데이터가 처리된 것을 가리키는 컴플리션)을 저장하는 버퍼일 수 있다.
예를 들어, 스토리지 가상화 장치(120)는 제1 내지 제N SQ들(SQ1~SQN) 및 제1 내지 제N CQ들(CQ1~CQN)을 포함할 수 있다. 제1 SQ(SQ1) 및 제1 CQ(CQ1)는 제1 스토리지 장치(131)에 대응할 수 있다. 제2 SQ(SQ2) 및 제2 CQ(CQ2)는 제2 스토리지 장치(132)에 대응할 수 있다. 제N SQ(SQN) 및 제N CQ(CQN)는 제N 스토리지 장치(13N)에 대응할 수 있다. 도면의 간략함을 위해, 스토리지 장치는 한 쌍의 SQ 및 CQ에 대응하는 것으로 도시되나, 본 개시의 범위는 이에 제한되지 않으며, 스토리지 장치는 여러 쌍들의 SQ 및 CQ에 대응할 수 있고, 이에 대한 설명은 도 6a, 6b, 6c, 7a, 7b, 및 7c를 참조하여 후술될 것이다.
일부 실시 예들에서, 스토리지 가상화 장치(120)는 가상 머신(VM) 및 스토리지 장치의 매핑을 제공할 수 있다. 예를 들어, 가상 머신(VM)은 가상 서브미션 큐(VSQ; virtual submission queue) 및 가상 컴플리션 큐(VCQ; virtual completion queue)를 포함할 수 있다. VSQ는 가상 머신(VM)의 데이터 처리를 위한 요청 및 요청을 위한 가상 어드레스를 저장하는 버퍼일 수 있다. VCQ는 VSQ의 요청에 대응하는 응답(예를 들어, 요청에 따른 데이터가 처리된 것을 가리키는 컴플리션)을 저장하는 버퍼일 수 있다. VSQ 및 VCQ는 물리적으로 호스트 장치(110)의 메모리에 저장될 수 있다. 가상 머신(VM)이 제1 스토리지 장치(131)에 대응하는 경우, 스토리지 가상화 장치(120)는 제1 SQ(SQ1) 및 VSQ의 매핑, 그리고 제1 CQ(CQ1) 및 VCQ의 매핑을 제공할 수 있다.
상술된 바와 같이, 본 개시에 따르면, 가상 머신(VM) 관리를 지원하는 스토리지 가상화 장치(120)를 포함하는 스토리지 시스템(100)이 제공된다. 스토리지 가상화 장치(120)가 호스트 장치(110)에 의해 실행되는 소프트웨어가 아닌 별도의 하드웨어로 제공됨으로써, 호스트 장치(110)의 리소스가 절약되고, 데이터 속도가 향상될 수 있다. 스토리지 가상화 장치(120)가 가상 머신(VM) 및 스토리지 장치 세트(130) 간의 매핑을 제공함으로써, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공할 수 있다.
도 2는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다. 도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), I/O(input/output) 메모리 관리 유닛(140), 및 통신 인터페이스(150)를 포함할 수 있다. 스토리지 시스템(100)은 복수의 가상 머신(VM)들을 제공할 수 있다.
가상 머신(VM)은 VSQ 및 VCQ를 포함할 수 있다. 일부 실시 예들에서, VSQ 및 VCQ는 각각 스토리지 가상화 장치(120)의 SQ 및 CQ에 대응할 수 있다.
호스트 장치(110)는 CPU(central processing unit)(111) 및 메모리 장치(112)를 포함할 수 있다. CPU(111)는 가상 머신(VM)을 실행할 수 있다. 예를 들어, CPU(111)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS) 및 애플리케이션 등을 위한 연산들을 실제로 수행할 수 있다. CPU(111)는 가상 머신(VM)의 데이터 처리를 위한 요청들을 관리할 수 있다. CPU(111)는 가상 머신(VM)의 VSQ에 커맨드를 기입(write)할 수 있다. CPU(111)는 가상 머신(VM)의 VCQ에 기입된 컴플리션을 읽을 수 있다.
메모리 장치(112)는 가상 머신(VM)을 구현하기 위한 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(112)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS) 및 애플리케이션 등과 같은 데이터를 저장할 수 있다. 메모리 장치(112)는 가상 머신(VM)의 VSQ 및 VCQ에 대응하는 물리적인 저장 공간들을 제공할 수 있다.
스토리지 가상화 장치(120)는 SQ 및 CQ를 포함할 수 있다. 스토리지 가상화 장치(120)는 복수의 가상 머신(VM)들 및 스토리지 장치 세트(130) 간의 매핑을 제공할 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 가상 머신(VM)의 VSQ에 기입된 커맨드를 스토리지 장치 세트(130)에서 처리될 수 있도록 변경하고, 변경된 커맨드를 SQ에 저장할 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에 의해 CQ에 기입된 컴플리션을 가상 머신(VM)에 의해 처리될 수 있도록 변경하고, 변경된 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다.
스토리지 장치 세트(130)는 제1 내지 제N 스토리지 장치들(131~13N)을 포함할 수 있다. 제1 내지 제N 스토리지 장치들(131~13N) 각각은 가상 머신(VM)의 요청(예를 들어, 읽기 커맨드, 쓰기 커맨드 등)에 따른 데이터를 저장하거나, 또는 저장된 데이터를 제공할 수 있다. 도면의 간략함을 위해, 스토리지 가상화 장치(120)는 한 쌍의 SQ 및 CQ를 포함하는 것으로 도시되나, 스토리지 가상화 장치(120)는 제1 내지 제N 스토리지 장치들(131~13N) 각각에 대응하는 SQ 및 CQ의 쌍들을 제공할 수 있다.
I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 가상 어드레스 및 호스트 장치(110)의 메모리 장치(112)의 물리적 어드레스 사이의 변환을 관리할 수 있다. 예를 들어, 가상 머신(VM)은 CPU(111)에 의해 실행된 소프트웨어일 수 있고, 가상 머신(VM) 상의 데이터를 위한 가상 어드레스는 메모리 장치(112)의 실제 데이터를 위한 물리적 어드레스에 대응할 수 있다. I/O 메모리 관리 유닛(140)은 가상 어드레스를 대응하는 물리적 어드레스로 변환하거나, 또는 물리적 어드레스를 대응하는 가상 어드레스로 변환할 수 있다.
가상 머신(VM)의 VSQ에 커맨드가 기입되면, 스토리지 가상화 장치(120)는 가상 머신(VM)의 VSQ에 기입된 커맨드를 직접 읽기 어려울 수 있다. I/O 메모리 관리 유닛(140)은, 스토리지 가상화 장치(120)로부터 VSQ의 커맨드의 요청(예를 들어, VSQ의 커맨드를 페치(fetch)하기 위한 요청)이 수신되면, 가상 머신(VM)의 가상 어드레스를 메모리 장치(112)의 물리적 어드레스로 변환할 수 있다. I/O 메모리 관리 유닛(140)은 변환된 물리적 어드레스를 포함하는 요청을 호스트 장치(110)로 제공할 수 있다. 스토리지 가상화 장치(120)는 메모리 장치(112)의 실제 데이터를 수신할 수 있고, 실제 데이터는 가상 머신(VM)의 VSQ에 기입된 커맨드와 동일할 수 있다.
일부 실시 예들에서, I/O 메모리 관리 유닛(140)은 생략될 수 있다. I/O 메모리 관리 유닛(140)이 생략되는 경우, 스토리지 가상화 장치(120)는 가상 머신(VM)의 가상 어드레스 및 메모리 장치(112)의 물리적 어드레스의 매핑 정보를 관리할 수 있다.
통신 인터페이스(150)는 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140) 간의 통신을 위한 인터페이스를 제공할 수 있다. 일부 실시 예들에서, 통신 인터페이스(150)는 PCIe(peripheral component interconnect express) 인터페이스로 구현될 수 있다. 예를 들어, 통신 인터페이스(150)는 PCIe 스위치(미도시)를 포함할 수 있다. PCIe 스위치는 호스트 장치(110)의 개입 없이 스토리지 가상화 장치(120) 및 스토리지 장치 세트(130) 사이의 통신을 지원할 수 있다.
도 3은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 도면이다. 도 3을 참조하면, 스토리지 가상화 장치(120)는 가상 머신(VM), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다. 스토리지 가상화 장치(120)가 가상 머신(VM)과 통신하는 것은 가상 머신(VM)을 실행하는 호스트 장치(110)와 물리적으로 통신하는 것을 가리킬 수 있다.
스토리지 가상화 장치(120)는 SR-IOV(single root input/output virtualization) 어댑터(121), 도어벨 레지스터(122), 스토리지 가상화 코어(123), gPA-to-hPA(guest physical address to host physical address) 테이블(124), DMA(direct memory access) 엔진(125), 개재(interposition) 계층(126), 및 스토리지 인터페이스 회로(127)를 포함할 수 있다.
SR-IOV 어댑터(121)는 가상 머신(VM)을 실행하는 호스트 장치와 통신하고, 가상 머신(VM)과의 인터페이스를 제공할 수 있다. SR-IOV 어댑터(121)는 복수의 VF(Virtual Function)들을 포함할 수 있다. 복수의 VF들 각각은 복수의 VM들에 대응할 수 있다. 복수의 VF들 각각은 대응하는 가상 머신(VM)과의 인터페이스를 제공할 수 있다. VF는 대응하는 가상 머신(VM)이 소프트웨어 계층을 거치지 않고 스토리지 장치 세트(130)로의 액세스를 가능하게 할 수 있다. SR-IOV 어댑터(121) 내에서 복수의 VF들 각각은 독립적인 스토리지 장치처럼 동작할 수 있다. SR-IOV 어댑터(121)는 복수의 가상 머신(VM)들이 하나의 물리적인 장치(예를 들어, 제1 스토리지 장치(131))를 공유하는 것을 지원할 수 있다.
도어벨 레지스터(122)는 SR-IOV 어댑터(121) 및 스토리지 가상화 코어(123)와 통신할 수 있다. 도어벨 레지스터(122)는 가상 머신(VM)을 실행하는 호스트 장치(110)로부터 SR-IOV 어댑터(121)를 통해 도어벨을 수신할 수 있다. 도어벨은 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 가리키는 신호일 수 있다. 도어벨 레지스터(122)는 스토리지 가상화 코어(123)의 SQ 폴링(polling)을 통해, 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 스토리지 가상화 코어(123)에 알릴 수 있다.
스토리지 가상화 코어(123)는 도어벨 레지스터(122), gPA-to-hPA 테이블(124), DMA 엔진(125), 개재 계층(126), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치(120)는 복수의 스토리지 가상화 코어(123)들을 포함할 수 있다. 예를 들어, 복수의 스토리지 가상화 코어(123)들은 복수의 가상 머신(VM)들에 각각 대응할 수 있다. 하나의 스토리지 가상화 코어(123)는 하나의 가상 머신(VM)에 대응할 수 있다.
그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니고, 본 개시가 속한 기술 분야에서의 통상의 기술자에 의해, 하나의 스토리지 가상화 코어(123)가 복수의 가상 머신(VM)들에 대응하거나, 또는 복수의 스토리지 가상화 코어(123)들이 하나의 가상 머신(VM)에 대응하도록 변경될 수 있다.
스토리지 가상화 코어(123)는 SQ 폴링, CQ 핸들링, 어드레스 변환, 및 인터럽트 생성을 수행할 수 있다. SQ 폴링은 도어벨 레지스터(122)에 도어벨이 저장되었는지 여부를 주기적으로 확인하는 동작을 가리킬 수 있다. CQ 핸들링은 스토리지 인터페이스 회로(127)의 CQ에 기입된 컴플리션을 가상화 계층으로 분배하고 관리하는 동작을 가리킬 수 있다. 어드레스 변환은 gPA-to-hPA 테이블(124)을 참조하여 가상 머신(VM)의 가상 어드레스 및 가상 머신(VM)을 실행하는 호스트 장치(110)의 물리적 어드레스 사이의 변환을 가리킬 수 있다. 인터럽트 생성은 가상 머신(VM)을 실행하는 호스트 장치(110)로 제공될 인터럽트를 생성하는 것을 가리킬 수 있다. 인터럽트는 가상 머신(VM)의 VCQ에 기입된 컴플리션의 처리를 요청하는 신호일 수 있다.
일부 실시 예들에서, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 저장된 도어벨을 처리할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 도어벨이 저장된 것을 확인하고, I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VSQ의 커맨드를 페치하고, 그리고 페치된 커맨드를 개재 계층(126)으로 제공할 수 있다.
일부 실시 예들에서, 스토리지 가상화 코어(123)는 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 스토리지 인터페이스 회로(127)로부터 개재 계층(126)을 통해 컴플리션을 수신하고, 그리고 I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다.
gPA-to-hPA 테이블(124)은 게스트 물리적 어드레스 및 호스트 물리적 어드레스의 매핑을 관리할 수 있다. 게스트 물리적 어드레스는 가상 머신(VM)의 가상 어드레스를 의미할 수 있다. 호스트 물리적 어드레스는 가상 머신(VM)을 실행하는 호스트 장치(110)의 물리적 어드레스를 의미할 수 있다. 게스트 물리적 어드레스 및 호스트 물리적 어드레스는 모두 가상 머신(VM)의 DMA 버퍼의 어드레스에 대응할 수 있다. gPA-to-hPA 테이블(124)의 매핑 정보는 스토리지 가상화 코어(123)의 어드레스 변환을 위해 사용될 수 있다.
DMA 엔진(125)은 가상 머신(VM) 및 스토리지 장치 세트(130) 간의 DMA 동작을 지원할 수 있다. DMA 동작은 VSQ에 기입된 커맨드를 처리하는 것일 수 있다. DMA 동작은 어드레스 변환 없이 수행될 수 있다. 도면의 복잡함을 피하기 위해 도 3에서 명시적으로 표현되지는 않았으나, DMA 엔진(125)은 가상 머신(VM)의 VSQ의 커맨드를 페치하는 것 그리고 가상 머신(VM)의 VCQ에 컴플리션을 기입하는 것을 보조할 수 있다.
개재 계층(126)은 스토리지 가상화 코어(123) 및 스토리지 인터페이스 회로(127)와 통신할 수 있다. 개재 계층(126)은 장치 매핑 정보를 포함할 수 있다. 장치 매핑 정보는 복수의 가상 머신(VM)들 및 스토리지 장치 세트(130)간의 대응 관계를 포함할 수 있다.
일부 실시 예들에서, 가상 머신(VM)을 위한 VSQ 및 VCQ는 스토리지 장치를 위한 SQ 및 CQ와 대응 관계를 가질 수 있다. 예를 들어, 장치 매핑 정보는 가상 머신(VM)의 VSQ 및 VCQ는 제1 스토리지 장치(131)를 위한 SQ 및 CQ에 각각 대응한다는 정보를 포함할 수 있다.
일부 실시 예들에서, 개재 계층(126)은 VSQ 및 SQ 사이의 매핑을 관리할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 가상 머신(VM)의 VSQ의 커맨드를 페치할 수 있다. 개재 계층(126)은 스토리지 가상화 코어(123)로부터 페치된 커맨드를 수신할 수 있다. 개재 계층(126)은 수신된 커맨드를 스토리지 인터페이스 회로(127)의 SQ에 분배할 수 있다.
일부 실시 예들에서, 개재 계층(126)은 VCQ 및 CQ 사이의 매핑을 관리할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입될 수 있다. 개재 계층(126)은 스토리지 인터페이스 회로(127)의 CQ에 기입된 컴플리션을 가상화 계층에 분배할 수 있다. 개재 계층(126)은 가상화 계층에 분배된 컴플리션을 스토리지 가상화 코어(123)로 제공할 수 있다.
스토리지 인터페이스 회로(127)는 개재 계층(126) 및 스토리지 장치 세트(130)와 통신할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치(120)는 복수의 스토리지 인터페이스 회로(127)를 포함할 수 있다. 예를 들어, 복수의 스토리지 인터페이스 회로(127)들은 스토리지 장치 세트(130)에 포함된 복수의 스토리지 장치들에 각각 대응할 수 있다. 제1 스토리지 장치(131)는 스토리지 인터페이스 회로(127)에 대응할 수 있다.
그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니고, 본 개시가 속한 기술 분야에서의 통상의 기술자에 의해, 하나의 스토리지 인터페이스 회로(127)가 복수의 스토리지 장치들에 대응하거나, 또는 제1 스토리지 장치(131)가 복수의 스토리지 인터페이스 회로(127)들에 대응하도록 변경될 수 있다. 다만, 개재 계층(126)은 한 쌍의 SQ 및 CQ가 한 쌍의 VSQ 및 VCQ에 대응하도록 매핑 정보를 관리할 수 있다.
스토리지 인터페이스 회로(127)는 SQ 및 CQ를 포함할 수 있다. 스토리지 인터페이스 회로(127)는 CQ 폴링 및 SQ 핸들링을 수행할 수 있다. CQ 폴링은 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입되었는지 여부를 주기적으로 확인하는 동작을 가리킬 수 있다. SQ 핸들링은 개재 계층(126)을 통해 SQ로 분배된 커맨드를 관리하는 동작을 가리킬 수 있다.
일부 실시 예들에서, 스토리지 인터페이스 회로(127)는 스토리지 장치 세트(130)로 SQ에 저장된 커맨드를 제공할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)는 SQ에 커맨드가 기입된 것을 알리는 도어벨을 제1 스토리지 장치(131)로 출력할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터에 저장된 도어벨에 기초하여, SQ에 기입된 커맨드를 페치할 수 있다.
일부 실시 예들에서, 스토리지 인터페이스 회로(127)는 스토리지 장치 세트(130)로부터 컴플리션을 수신할 수 있다. 예를 들어, 제1 스토리지 장치(131)는 SQ의 커맨드를 페치할 수 있다. 제1 스토리지 장치(131)는 페치된 커맨드를 처리할 수 있다. 제1 스토리지 장치(131)는 커맨드가 처리된 것을 가리키는 컴플리션을 스토리지 인터페이스 회로(127)의 CQ에 기입할 수 있다.
스토리지 가상화 장치(120)는 복수의 가상 머신(VM)들과 통신할 수 있다. 가상 머신(VM)은 VSQ, VCQ, 및 DMA 버퍼를 포함할 수 있다. VSQ는 스토리지 장치 세트(130)에서 처리될 커맨드를 저장할 수 있다. 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 스토리지 가상화 장치(120)에게 알릴 수 있고, 스토리지 가상화 장치(120)는 I/O 메모리 관리 유닛(140)을 통해 VSQ의 커맨드를 페치할 수 있다.
VCQ는 VSQ의 커맨드가 처리된 것을 가리키는 컴플리션을 저장할 수 있다. 스토리지 가상화 장치(120)는 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입되면, I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 가상 머신(VM)은 VCQ에 컴플리션이 기입된 것을 확인하고, 컴플리션을 처리할 수 있다. 가상 머신(VM)은 스토리지 가상화 장치(120)에게 VCQ의 컴플리션이 처리된 것을 알릴 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에게 컴플리션이 처리된 것을 알릴 수 있다.
DMA 버퍼는 스토리지 장치 세트(130)와 통신할 수 있다. DMA 버퍼는 DMA 동작(예를 들어, DMA 읽기 동작, DMA 쓰기 동작 등)을 통해 스토리지 장치 세트(130)와 데이터를 교환할 수 있다. DMA 버퍼 및 스토리지 장치 세트(130) 사이에서 DMA 동작에 따라 데이터를 교환하는 것은 SQ에 기입된 커맨드를 처리하는 것을 의미할 수 있다. 스토리지 가상화 장치(120)의 DMA 엔진(125)은 DMA 버퍼의 DMA 동작을 보조할 수 있다. 예를 들어, DMA 엔진(125)은 DMA 버퍼를 포함하는 가상 머신(VM)이 실행되는 호스트 메모리 및 스트리지 장치 세트(130)의 제1 스토리지 장치(131) 사이의 데이터 전송을 보조하거나 또는 관리할 수 있다.
이 때, 스토리지 가상화 장치(120)는 gPA-to-hPA 테이블(124)을 참조하여 가상 머신(VM)의 가상 어드레스(예를 들어, 게스트 물리적 어드레스)를 호스트 장치(110)에서의 물리적 어드레스(예를 들어, 호스트 물리적 어드레스)로 변경하여 스토리지 장치 세트(130)로 제공하므로, 가상 머신(VM)의 DMA 버퍼 및 스토리지 장치 세트(130) 사이의 DMA 동작은 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 수행될 수 있다.
스토리지 장치 세트(130)는 복수의 스토리지 장치들을 포함할 수 있다. 복수의 스토리지 장치들 각각은 도어벨 레지스터를 포함할 수 있다. 예를 들어, 스토리지 장치 세트(130)는 제1 스토리지 장치(131)를 포함할 수 있다. 제1 스토리지 장치(131)는 스토리지 인터페이스 회로(127)의 SQ 및 CQ의 쌍과 대응할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터를 포함할 수 있다. 도어벨 레지스터는 스토리지 인터페이스 회로(127)의 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 저장할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터에 저장된 도어벨에 기초하여 스토리지 인터페이스 회로(127)의 SQ의 커맨드를 페치할 수 있다. 제1 스토리지 장치(131)는 가상 머신(VM)과 통신하여 커맨드를 처리(예를 들어, DMA 동작을 수행)할 수 있다.
I/O 메모리 관리 유닛(140)은 가상 머신(VM)을 실행하는 호스트 장치(110)의 입력 및 출력을 관리할 수 있다. I/O 메모리 관리 유닛(140)은 가상 어드레스 및 물리적 어드레스 사이의 어드레스 변환을 수행함으로써, 스토리지 가상화 장치(120) 및 가상 머신(VM) 사이의 통신을 보조할 수 있다.
예를 들어, 스토리지 가상화 장치(120)로부터 VSQ의 커맨드를 페치하기 위한 요청이 있으면, 이러한 요청의 VSQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에서 데이터를 읽음으로써, VSQ의 커맨드를 페치할 수 있다.
예를 들어, 스토리지 가상화 장치(120)로부터 VCQ에 컴플리션을 기입하기 위한 요청이 있으면, 이러한 요청의 VCQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에서 데이터를 기입함으로써, VCQ에 컴플리션을 기입할 수 있다.
일부 실시 예들에서, I/O 메모리 관리 유닛(140)은 선택적으로 사용될 수 있다. 스토리지 가상화 코어(123)에 의해 가상 어드레스 및 물리적 어드레스 사이의 어드레스 변환이 수행된 경우, I/O 메모리 관리 유닛(140)은 생략될 수 있다.
상술된 바와 같이, 도 3을 참조하여 가상 머신(VM), 가상 머신(VM)을 실행하는 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)의 구조 및 기능 등이 설명되었다.
본 개시의 일부 실시 예들에 따르면, 스토리지 가상화 장치(120)는 일련의 동작들을 수행하여 가상 머신(VM) 및 스토리지 장치 세트(130) 사이의 통신을 지원할 수 있다. 예를 들어, 스토리지 가상화 장치(120)의 동작 방법은 제1 내지 제9 동작들(①~⑨)을 포함할 수 있다.
제1 동작(①)에서, 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 알릴 수 있다. 예를 들어, 복수의 가상 머신(VM)들은 SR-IOV 어댑터(121)의 복수의 VF들(예를 들어, 가상 머신(VM)과의 인터페이스를 제공하는 모듈들)에 각각 대응할 수 있다. VF가 제공하는 인터페이스를 통해, 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 출력할 수 있다. SR-IOV 어댑터(121)는 가상 머신(VM)으로부터 수신된 도어벨을 도어벨 레지스터(122)로 전송할 수 있다.
제2 동작(②)에서, 스토리지 가상화 장치(120)는 VSQ에 커맨드가 기입된 것을 확인하고, VSQ의 커맨드를 페치할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 SQ 폴링을 수행하여 도어벨이 저장된 것을 확인할 수 있다. 스토리지 가상화 코어(123)는 VSQ의 커맨드를 요청할 수 있고, 요청에 대한 응답으로 VSQ의 커맨드를 수신할 수 있다.
일부 실시 예들에서, 스토리지 가상화 코어(123)는 I/O 메모리 관리 유닛(140)을 통해 VSQ의 커맨드를 요청할 수 있다. 예를 들어, VSQ의 커맨드를 페치하는 것은 호스트 장치(110)에서 실제 데이터를 읽는 것을 의미할 수 있다. I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 VSQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 변환된 물리적 어드레스에 기초하여, 스토리지 가상화 코어(123)는 VSQ의 커맨드를 페치할 수 있다.
제3 동작(③)에서, 스토리지 가상화 장치(120)는 페치된 VSQ의 커맨드를 스토리지 인터페이스 회로(127)의 SQ로 분배할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 페치된 커맨드에 포함된 DMA 버퍼의 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환하고, 변환된 물리적 어드레스를 포함하는 커맨드를 스토리지 인터페이스 회로(127)의 SQ로 전송할 수 있다.
제4 동작(④)에서, 스토리지 가상화 장치(120)는 SQ의 커맨드를 스토리지 장치 세트(130)로 제공할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)는 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 제1 스토리지 장치(131)의 도어벨 레지스터로 출력할 수 있다. 제1 스토리지 장치(131)는 SQ의 커멘드를 페치하기 위한 요청을 스토리지 인터페이스 회로(127)로 출력할 수 있다. 스토리지 인터페이스 회로(127)는 요청에 대한 응답으로 SQ의 커맨드를 제1 스토리지 장치(131)로 출력할 수 있다.
제5 동작(⑤)에서, 스토리지 장치 세트(130)는 페치된 커맨드를 처리할 수 있다. 예를 들어, 제1 스토리지 장치(131)가 커맨드를 페치한 경우, 제1 스토리지 장치(131)는 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드를 처리할 수 있다. 이 때, 스토리지 가상화 코어(123)에 의해 가상 어드레스가 이미 물리적 어드레스로 변환되었으므로, 제1 스토리지 장치(131)는 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드를 처리할 수 있다. 스토리지 가상화 장치(120)의 DMA 엔진(125)은 제1 스토리지 장치(131)의 커맨드 처리를 보조할 수 있다.
제6 동작(⑥)에서, 스토리지 장치 세트(130)는 커맨드가 처리된 것을 가리키는 컴플리션을 스토리지 인터페이스 회로(127)의 CQ에 기입할 수 있다. 예를 들어, 제1 스토리지 장치(131)는 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드의 처리를 마친 후, 스토리지 인터페이스 회로(127)의 CQ에 컴플리션을 기입할 수 있다.
제7 동작(⑦)에서, 스토리지 인터페이스 회로(127)는 개재 계층(126)을 통해 CQ의 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 인터페이스 회로(127)의 CQ는 가상 머신(VM)의 VCQ와 매핑될 수 있다.
제8 동작(⑧)에서, 스토리지 가상화 코어(123)는 가상화 계층에 분배된 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다. 일부 실시 예들에서, 스토리지 가상화 코어(123)는 I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 예를 들어, 컴플리션을 가상 머신(VM)의 VCQ에 기입하는 것은 호스트 장치(110)에 실제 데이터를 저장하는 것을 의미할 수 있다. I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 VCQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 변환된 물리적 어드레스에 기초하여, 스토리지 가상화 코어(123)는 VCQ에 컴플리션을 기입할 수 있다.
제9 동작(⑨)에서, 가상 머신(VM)은 VCQ에 기입된 컴플리션을 처리하고, 스토리지 가상화 장치(120)에게 컴플리션이 처리된 것을 알릴 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에게 컴플리션이 처리된 것을 알리고, CQ를 해제(release)할 수 있다.
도 4는 본 개시의 일부 실시 예들에 따른 가상 머신의 블록도이다. 도 4를 참조하면, 가상 머신(VM)이 도시된다. 가상 머신(VM)은 도 1 내지 도 3에서 설명된 복수의 가상 머신(VM)들 각각에 대응할 수 있다. 가상 머신(VM)은 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다.
가상 머신은 스토리지 장치 드라이버, SVD(storage virtualization device) 엔진 드라이버, VSQ, VCQ, 및 DMA 버퍼를 포함할 수 있다. VSQ, VCQ, 및 DMA 버퍼의 특징들은 도 3에서 설명된 VSQ, VCQ, 및 DMA 버퍼의 특징들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
스토리지 장치 드라이버는 SVD 엔진 드라이버, VSQ, 및 VCQ와 통신할 수 있다. 스토리지 장치 드라이버는 커맨드를 VSQ에 기입할 수 있다. VSQ에 기입된 커맨드는 I/O 메모리 관리 유닛(140)을 통해 스토리지 가상화 장치(120)로 제공될 수 있다. 스토리지 장치 드라이버는 VCQ에 기입된 컴플리션을 처리할 수 있다. VCQ의 컴플리션은 I/O 메모리 관리 유닛(140)을 통해 스토리지 가상화 장치(120)에 의해 기입될 수 있다.
SVD 엔진 드라이버는 스토리지 장치 드라이버 및 스토리지 가상화 장치(120)와 통신할 수 있다. SVD 엔진 드라이버는 스토리지 장치 드라이버가 VSQ로 제공하는 커맨드를 인터셉트(intercept)하고, VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다. SVD 엔진 드라이버는 스토리지 장치 드라이버가 VCQ로 제공하는 컴플리션을 인터셉트하고, VCQ에 컴플리션이 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다. 도 5를 참조하면, 스토리지 시스템의 동작 방법이 설명된다. 스토리지 시스템은 도 1 및 도 2의 스토리지 시스템(100)에 대응할 수 있다. 스토리지 시스템은 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)을 포함할 수 있다. 호스트 장치(110)는 CPU(111) 및 메모리 장치(112)를 포함할 수 있다.
S110 단계에서, CPU(111)는 가상 머신(VM)을 실행할 수 있다. 가상 머신(VM), 가상 머신(VM) 상에서 실행되는 운영 체제, 애플리케이션 등은 메모리 장치(112)에 저장될 수 있다. 예를 들어, 가상 머신(VM)의 VSQ 및 VCQ는 물리적으로 호스트 장치(110)의 메모리 장치(112)에 구현될 수 있다.
S121 단계에서, CPU(111)는 메모리 장치(112)의 VSQ에 커맨드를 기입할 수 있다. 예를 들어, 커맨드는 읽기 커맨드, 쓰기 커맨드 등과 같은 가상 머신(VM)의 데이터 처리를 위한 커맨드일 수 있다.
S122 단계에서, CPU(111)는 스토리지 가상화 장치(120)에게 VSQ의 커맨드를 알릴 수 있다. 예를 들어, CPU(111)는 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다.
S131 단계에서, 스토리지 가상화 장치(120)는 VSQ의 커맨드를 요청할 수 있다. 가상 머신(VM)의 VSQ의 커맨드를 읽는 것은 물리적으로 메모리 장치(112)의 데이터를 읽는 것일 수 있다. I/O 메모리 관리 유닛(140)은 VSQ에 대응하는 가상 어드레스를 메모리 장치(112)에 대응하는 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에 기초하여 메모리 장치(112)로 액세스함으로써, VSQ의 커맨드를 요청할 수 있다.
S132 단계에서, 스토리지 가상화 장치(120)는 메모리 장치(112)로의 액세스에 기초하여, VSQ의 커맨드를 페치할 수 있다. VSQ의 커맨드를 페치하는 것은 S131 단계의 요청에 대응하는 응답을 메모리 장치(112)로부터 수신하는 것일 수 있다. 일부 실시 예들에서, S132 단계는 I/O 메모리 관리 유닛(140)의 관여 없이 수행될 수 있다. 예를 들어, S132 단계의 응답은 S131 단계의 요청에 대한 데이터만 포함할 뿐, 가상 머신(VM)의 어드레스를 포함하지 않을 수 있다. 스토리지 가상화 장치(120)는 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 메모리 장치(112)로부터 VSQ의 커맨드를 수신할 수 있다.
S133 단계에서, 스토리지 가상화 장치(120)는 커맨드를 SQ로 분배할 수 있다. SQ는 가상 머신(VM)의 VSQ와 매핑될 수 있다. 스토리지 가상화 장치(120)는 SQ 및 VSQ의 매핑을 관리할 수 있다.
일부 실시 예들에서, S133 단계는 가상 머신(VM)의 DMA 버퍼의 가상 어드레스(예를 들어, 페치된 커맨드에 포함된 어드레스)를 메모리 장치(112)의 물리적 어드레스로 변환하는 것을 포함할 수 있다.
S134 단계에서, 스토리지 가상화 장치(120)는 SQ에 커맨드가 기입된 것을 스토리지 장치 세트(130)에게 알릴 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 장치 세트(130)로 출력할 수 있다.
S141 단계에서, 스토리지 장치 세트(130)는 SQ의 커맨드를 요청할 수 있다. S142 단계에서, 스토리지 장치 세트(130)는 SQ의 커맨드를 페치할 수 있다. SQ의 커맨드를 페치하는 것은 S141 단계의 요청에 대한 응답을 수신하는 것일 수 있다.
S150 단계에서, 스토리지 장치 세트(130)는 커맨드를 처리할 수 있다. 예를 들어, 커맨드는 DMA 읽기 동작 또는 DMA 쓰기 동작일 수 있다. 스토리지 장치 세트(130)는 메모리 장치(112)와 통신하여 커맨드를 처리할 수 있다. 이 때, 상술된 바와 같이, S133 단계의 분배를 통해 가상 머신(VM)의 가상 어드레스가 메모리 장치(112)의 물리적 어드레스로 변환되었으므로, 스토리지 장치 세트(130) 및 메모리 장치(112) 사이의 통신은 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 수행될 수 있다.
S161 단계에서, 스토리지 장치 세트(130)는 스토리지 가상화 장치(120)의 CQ에 컴플리션을 기입할 수 있다. 컴플리션은 커맨드가 처리된 것(즉, S150 단계가 완료된 것)을 가리킬 수 있다.
S162 단계에서, 스토리지 가상화 장치(120)는 CQ의 컴플리션을 가상화 계층에 분배할 수 있다. CQ는 가상 머신(VM)의 VCQ와 매핑될 수 있다. 스토리지 가상화 장치(120)는 CQ 및 VCQ의 매핑을 관리할 수 있다.
S163 단계에서, 스토리지 가상화 장치(120)는 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다. 가상 머신(VM)의 VCQ에 컴플리션을 기입하는 것은 물리적으로 메모리 장치(112)에 데이터를 기입하는 것일 수 있다. I/O 메모리 관리 유닛(140)은 VCQ에 대응하는 가상 어드레스를 메모리 장치(112)에 대응하는 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에 기초하여 메모리 장치(112)로 액세스함으로써, VCQ에 컴플리션을 기입할 수 있다.
S171 단계에서, CPU(111)는 메모리 장치(112)의 VCQ를 폴링할 수 있다. 예를 들어, CPU(111)는 메모리 장치(112)의 VCQ에 컴플리션이 기입되었는지 여부를 주기적으로 확인할 수 있다. CPU(111)는 폴링을 통해서 가상 머신(VM)의 VCQ에 컴플리션이 기입되었다고 결정할 수 있다. 만약, CPU(111)에서 폴링을 수행하지 않는 경우, 스토리지 가상화 장치(120)는 VCQ에 컴플리션이 기입된 것을 CPU(111)에게 알리기 위해, 인터럽트를 CPU(111)로 출력할 수 있다. CPU(111)는 VCQ에 기입된 컴플리션을 처리할 수 있다.
S172 단계에서, CPU(111)는 VCQ의 컴플리션이 처리된 것을 스토리지 가상화 장치(120)에게 알릴 수 있다. 이 후, S173 단계에서, 스토리지 가상화 장치(120)는 CQ를 해제할 수 있고, 컴플리션이 처리된 것을 스토리지 장치 세트(130)에게 알릴 수 있다.
도 6a, 도 6b, 및 도 6c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들의 리소스 할당을 설명하는 도면들이다. 도 6a, 도 6b, 및 도 6c를 참조하면, 제1 가상 머신(VM1)은 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)을 포함할 수 있다. 제2 가상 머신(VM2)은 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)을 포함할 수 있다. 스토리지 가상화 장치(120)는 제1 스토리지 인터페이스 회로를 포함할 수 있다. 제1 스토리지 인터페이스 회로는 큐들(SQ1a, CQ1a, SQ1b, CQ1b)을 포함할 수 있다. 제1 스토리지 인터페이스 회로는 제1 스토리지 장치(131)에 대응할 수 있다.
일부 실시 예들에서, 도 6a에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 가상 머신(VM1)은 복수의 큐들을 포함할 수 있고, 제1 스토리지 인터페이스 회로는 복수의 큐들을 포함할 수 있고, 가상 머신의 복수의 큐들 및 스토리지 인터페이스 회로의 큐들은 대응 관계를 가질 수 있다.
도 6a에서, 제2 가상 머신(VM2)은 사용되지 않는 가상 머신일 수 있다. 예를 들어, 제2 가상 머신(VM2)은 도 2의 호스트 장치(110)의 CPU(111)에 의해 생성되고 실행되었지만, 스토리지 장치(예를 들어, 도 2의 스토리지 장치 세트(130)에 포함된 복수의 스토리지 장치들 중 적어도 하나)를 사용하지 않을 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)은 스토리지 가상화 장치(120)에 의해 리소스 할당이 해제(예를 들어, 스토리지 인터페이스 회로와의 매핑 해제)될 수 있다. 다시 제2 가상 머신(VM2)을 사용할 필요가 있는 경우, 스토리지 가상화 장치(120)는 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)을 다시 리소스를 할당할 수 있다.
일부 실시 예들에서, 도 6b에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 스토리지 인터페이스 회로는 복수의 가상 머신들(VM1, VM2)을 지원할 수 있다.
일부 실시 예들에서, 도 6c에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 스토리지 인터페이스 회로의 큐(SQ1b)는 복수의 큐들(VSQ1b, VSQ2a)을 지원할 수 있다. 제1 스토리지 인터페이스 회로의 큐(CQ1b)는 복수의 큐들(VCQ1b, VCQ2a)을 지원할 수 있다.
상술된 바와 같이, 도 6a, 도 6b, 및 도 6c를 참조하여, 가상 머신들의 리소스 할당이 설명되었다. 본 개시의 실시 예들에 따르면, 스토리지 가상화 장치(120)는 스토리지 장치 및 복수의 가상 머신들 사이의 유연한 매핑을 제공할 수 있다. 스토리지 가상화 장치(120)는 복수의 가상 머신들을 관리하기 위해, 복수의 가상 머신들의 큐들을 위한 어드레스들을 저장하고 관리할 수 있다. 스토리지 가상화 장치(120)는 사용하지 않는 가상 머신의 큐들을 위한 리소스 할당을 해제할 수 있고, 가상 머신을 다시 사용할 필요가 있는 경우 대응하는 가상 머신의 큐들을 위한 리소스를 다시 할당할 수 있다.
도 7a, 도 7b, 및 도 7c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 리소스 할당을 설명하는 도면들이다. 도 7a, 도 7b, 및 도 7c를 참조하면, 제1 가상 머신(VM1)은 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)을 포함할 수 있다. 제2 가상 머신(VM2)은 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)을 포함할 수 있다. 스토리지 가상화 장치(120)는 제1 및 제2 스토리지 인터페이스 회로들을 포함할 수 있다. 제1 스토리지 인터페이스 회로는 큐들(SQ1a, CQ1a, SQ1b, CQ1b)을 포함할 수 있다. 제1 스토리지 인터페이스 회로는 제1 스토리지 장치(131)에 대응할 수 있다. 제2 스토리지 인터페이스 회로는 큐들(SQ2a, CQ2a, SQ2b, CQ2b)을 포함할 수 있다. 제2 스토리지 인터페이스 회로는 제2 스토리지 장치(132)에 대응할 수 있다.
일부 실시 예들에서, 도 7a에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2a, CQ2a, SQ2b, CQ2b)에 대응할 수 있다. 즉, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 매핑을 제공할 수 있다.
일부 실시 예들에서, 도 7b에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a)에 대응할 수 있다. 제1 가상 머신(VM1)의 큐들(VSQ1b, CQ1b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2a, CQ2a)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2b, VCQ2b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2b, CQ2b)에 대응할 수 있다. 즉, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다.
일부 실시 예들에서, 도 7c에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2b, VCQ2b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2b, CQ2b)에 대응할 수 있다. 즉, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다.
상술된 바와 같이, 도 7a, 도 7b, 및 도 7c를 참조하여, 가상 머신들 및 스토리지 장치들 사이의 리소스 할당이 설명되었다. 본 개시의 실시 예들에 따르면, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다. 스토리지 가상화 장치(120)는 동일한 가상 머신에서의 커맨드(예를 들어, 읽기 커맨드, 쓰기 커맨드)를 서로 다른 스토리지 장치들로 전송할 수 있다. 스토리지 가상화 장치(120)는 동일한 스토리지 장치로부터의 컴플리션을 서로 다른 가상 머신들로 전송할 수 있다. 새로운 스토리지 장치가 추가되는 경우, 스토리지 가상화 장치(120)는 기존 스토리지 장치 및 추가된 스토리지 장치에 대해 유연하게 리소스를 할당하거나, 또는 유연하게 리소스 할당을 해제할 수 있다.
도 8은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다. 도 8을 참조하면, 스토리지 가상화 장치의 동작 방법이 설명된다. 스토리지 가상화 장치는 도 1, 도 2, 도 3, 도 5, 도 6a, 도 6b, 도 6c, 도 7a, 도 7b, 및 도 7c의 스토리지 가상화 장치(120)에 대응할 수 있다. 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신할 수 있다. 스토리지 가상화 장치는 SQ 및 CQ를 포함할 수 있다. 스토리지 가상화 장치는 호스트 장치에 의해 실행되는 가상 머신을 지원할 수 있다. 가상 머신은 VSQ 및 VCQ를 포함할 수 있다.
S210 단계에서, 스토리지 가상화 장치는 가상 머신의 VSQ의 커맨드를 페치할 수 있다. 일부 실시 예들에서, S210 단계는, 호스트 장치로부터 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 수신하는 것, 도어벨에 응답하여 VSQ의 커맨드를 호스트 장치에게 요청하는 것, 그리고 호스트 장치로부터 요청에 대한 응답으로 VSQ의 커맨드를 수신하는 것을 포함할 수 있다.
S220 단계에서, 스토리지 가상화 장치는 페치된 커맨드를 SQ로 분배할 수 있다. 가상 머신의 VSQ 및 스토리지 가상화 장치의 SQ는 매핑될 수 있다. 스토리지 가상화 장치는 VSQ 및 SQ의 매핑을 관리할 수 있다. 일부 실시 예들에서, S220 단계는, SQ의 커맨드에 포함된, 가상 머신의 가상 어드레스를 호스트 장치의 물리적 어드레스로 변환하는 것을 포함할 수 있다.
S230 단계에서, 스토리지 가상화 장치는 SQ의 커맨드를 스토리지 장치 세트로 제공할 수 있다. 스토리지 장치 세트는 SQ의 커맨드를 처리할 수 있다. 예를 들어, 스토리지 장치 세트는 가상 머신의 DMA 버퍼와 데이터를 통신함으로써 SQ의 커맨드를 처리할 수 있다.
S240 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 컴플리션을 수신할 수 있다. 컴플리션은 스토리지 가상화 장치의 CQ에 기입될 수 있다. 컴플리션은 S230 단계의 SQ의 커맨드가 처리된 것을 가리킬 수 있다.
S250 단계에서, 스토리지 가상화 장치는 CQ의 커맨드를 가상화 계층으로 분배할 수 있다. 가상 머신의 VCQ 및 스토리지 가상화 장치의 CQ는 매핑될 수 있다. 스토리지 가상화 장치는 VCQ 및 CQ의 매핑을 관리할 수 있다.
S260 단계에서, 스토리지 가상화 장치는 분배된 컴플리션을 가상 머신의 VCQ에 기입할 수 있다. 일부 실시 예들에서, S260 단계는, 호스트 장치로부터 VCQ에 기입된 컴플리션이 처리된 것을 가리키는 제1 도어벨을 수신하는 것, 그리고 제1 도어벨에 기초하여, CQ에 기입된 컴플리션이 처리된 것을 가리키는 제2 도어벨을 스토리지 장치 세트로 출력하는 것을 더 포함할 수 있다.
도 9는 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다. 도 9를 참조하면, 스토리지 가상화 장치의 동작 방법이 설명된다. 스토리지 가상화 장치는 도 1, 도 2, 도 3, 도 5, 도 6a, 도 6b, 도 6c, 도 7a, 도 7b, 및 도 7c의 스토리지 가상화 장치(120)에 대응할 수 있다. 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신할 수 있다. 스토리지 가상화 장치는 제1 SQ(SQ1), 제1 CQ(CQ1), 제2 SQ(SQ2), 및 제2 CQ(CQ2)를 포함할 수 있다. 스토리지 가상화 장치는 호스트 장치에 의해 실행되는 복수의 가상 머신들을 지원할 수 있다. 복수의 가상 머신들은 제1 VSQ(VSQ1), 제1 VCQ(VCQ1), 제2 VSQ(VSQ2), 및 제2 VCQ(VCQ2)를 포함할 수 있다.
S311 단계에서, 스토리지 가상화 장치는 제1 VSQ(VSQ1)의 제1 커맨드를 페치할 수 있다. S312 단계에서, 스토리지 가상화 장치는 페치된 제1 커맨드를 제1 SQ(SQ1)로 분배하고, 그리고 제1 SQ(SQ1)의 제1 커맨드를 스토리지 장치 세트로 제공할 수 있다.
S313 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 제1 컴플리션을 수신할 수 있다. 제1 컴플리션은 스토리지 가상화 장치의 제1 CQ(CQ1)에 기입될 수 있다. 제1 컴플리션은 S312 단계의 제1 SQ(SQ1)의 커맨드가 처리된 것을 가리킬 수 있다. 스토리지 가상화 장치는 제1 CQ(CQ1)의 제1 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 가상화 장치는 분배된 제1 컴플리션을 제1 VCQ(VCQ1)에 기입할 수 있다.
S321 단계에서, 스토리지 가상화 장치는 제2 VSQ(VSQ2)의 제2 커맨드를 페치할 수 있다. S322 단계에서, 스토리지 가상화 장치는 페치된 제2 커맨드를 제2 SQ(SQ2)로 분배하고, 그리고 제2 SQ(SQ2)의 제2 커맨드를 스토리지 장치 세트로 제공할 수 있다.
S323 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 제2 컴플리션을 수신할 수 있다. 제2 컴플리션은 스토리지 가상화 장치의 제2 CQ(CQ2)에 기입될 수 있다. 제2 컴플리션은 S322 단계의 제2 SQ(SQ2)의 커맨드가 처리된 것을 가리킬 수 있다. 스토리지 가상화 장치는 제2 CQ(CQ2)의 제2 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 가상화 장치는 분배된 제2 컴플리션을 제2 VCQ(VCQ2)에 기입할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치는 하나의 가상 머신 및 하나의 스토리지 장치에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1, VSQ2, VCQ2)은 복수의 가상 머신들 중 동일한 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1, SQ2, CQ2)은 스토리지 장치 세트 내의 동일한 스토리지 장치에 대응할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치는 하나의 가상 머신 및 복수의 스토리지 장치들에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1, VSQ2, VCQ2)은 복수의 가상 머신들 중 동일한 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1)은 스토리지 장치 세트 내의 제1 스토리지 장치에 대응할 수 있다. 큐들(SQ2, CQ2)은 스토리지 장치 세트 내의 제2 스토리지 장치에 대응할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치는 복수의 가상 머신들 및 하나의 스토리지 장치에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1)은 복수의 가상 머신들 중 제1 가상 머신에 포함될 수 있다. 큐들(VSQ2, VCQ2)은 복수의 가상 머신들 중 제2 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1, SQ2, CQ2)은 스토리지 장치 세트 내의 동일한 스토리지 장치에 대응할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치는 복수의 가상 머신들 및 복수의 스토리지 장치들에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1)은 복수의 가상 머신들 중 제1 가상 머신에 포함될 수 있다. 큐들(VSQ2, VCQ2)은 복수의 가상 머신들 중 제2 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1)은 스토리지 장치 세트 내의 제1 스토리지 장치에 대응할 수 있다. 큐들(SQ2, CQ2)은 스토리지 장치 세트 내의 제2 스토리지 장치에 대응할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하고, 그리고 상기 호스트 장치에 의해 실행되는 제1 가상 머신을 지원하는 스토리지 가상화 장치의 동작 방법에 있어서:
    상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하는 단계;
    상기 페치된 제1 커맨드를 상기 제1 SQ로 분배하는 단계;
    상기 제1 SQ의 상기 제1 커맨드를 상기 스토리지 장치 세트로 제공하는 단계;
    상기 스토리지 장치 세트로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하는 단계로서, 상기 제1 컴플리션은 상기 제1 CQ에 기입되는 것;
    상기 제1 CQ의 상기 제1 컴플리션을 가상화 계층에 분배하는 단계; 및
    상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 스토리지 가상화 장치는 제2 SQ 및 제2 CQ를 더 포함하고,
    상기 방법은:
    상기 제1 가상 머신의 제2 VSQ의 제2 커맨드를 페치하는 단계;
    상기 페치된 제2 커맨드를 상기 제2 SQ로 분배하는 단계;
    상기 제2 SQ의 상기 제2 커맨드를 상기 스토리지 장치 세트로 제공하는 단계;
    상기 스토리지 장치 세트로부터 상기 제2 커맨드가 처리된 것을 가리키는 제2 컴플리션을 수신하는 단계로서, 상기 제2 컴플리션은 상기 제2 CQ에 기입되는 것;
    상기 제2 CQ의 상기 제2 컴플리션을 가상화 계층에 분배하는 단계; 및
    상기 분배된 제2 컴플리션을 상기 제1 가상 머신의 제2 VCQ에 기입하는 단계를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 제1 SQ, 상기 제1 CQ, 상기 제2 SQ, 및 상기 제2 CQ는 상기 스토리지 장치 세트의 제1 스토리지 장치에 대응하는 방법.
  4. 제 2 항에 있어서,
    상기 제1 SQ 및 상기 제1 CQ는 상기 스토리지 장치 세트의 제1 스토리지 장치에 대응하고, 그리고
    상기 제2 SQ 및 상기 제2 CQ는 상기 스토리지 장치 세트의 제2 스토리지 장치에 대응하는 방법.
  5. 제 1 항에 있어서,
    상기 스토리지 가상화 장치는 제2 SQ 및 제2 CQ를 더 포함하고, 그리고 상기 호스트 장치에 의해 실행되는 제1 가상 머신과 다른 제2 가상 머신을 더 지원하고,
    상기 방법은:
    상기 제2 가상 머신의 제2 VSQ의 제2 커맨드를 페치하는 단계;
    상기 페치된 제2 커맨드를 상기 제2 SQ로 분배하는 단계;
    상기 제2 SQ의 상기 제2 커맨드를 상기 스토리지 장치 세트로 제공하는 단계;
    상기 스토리지 장치 세트로부터 상기 제2 커맨드가 처리된 것을 가리키는 제2 컴플리션을 수신하는 단계로서, 상기 제2 컴플리션은 상기 제2 CQ에 기입되는 것;
    상기 제2 CQ의 상기 제2 컴플리션을 가상화 계층에 분배하는 단계; 및
    상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 제1 SQ, 상기 제1 CQ, 상기 제2 SQ, 및 상기 제2 CQ는 상기 스토리지 장치 세트의 제1 스토리지 장치에 대응하는 방법.
  7. 제 5 항에 있어서,
    상기 제1 SQ 및 상기 제1 CQ는 상기 스토리지 장치 세트의 제1 스토리지 장치에 대응하고, 그리고
    상기 제2 SQ 및 상기 제2 CQ는 상기 스토리지 장치 세트의 제2 스토리지 장치에 대응하는 방법.
  8. 제 1 항에 있어서,
    상기 제1 가상 머신의 제1 VSQ의 제1 커맨드를 페치하는 단계는:
    상기 호스트 장치로부터 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 가리키는 제1 도어벨(doorbell)을 수신하는 단계;
    상기 제1 도어벨에 기초하여 상기 제1 VSQ의 상기 제1 커맨드의 제1 요청을 상기 호스트 장치로 출력하는 단계; 및
    상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계를 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 스토리지 가상화 장치는 I/O(input/output) 메모리 관리 유닛과 더 통신하고,
    상기 제1 도어벨에 기초하여 상기 제1 VSQ의 상기 제1 커맨드의 제1 요청을 상기 호스트 장치로 출력하는 단계는:
    상기 I/O 메모리 관리 유닛을 통해, 상기 제1 VSQ의 상기 제1 커맨드의 상기 제1 요청에 대응하는 제1 가상 어드레스가 제1 물리적 어드레스로 변환되고, 상기 변환된 제1 물리적 어드레스 및 상기 제1 도어벨에 기초하여, 상기 제1 VSQ의 상기 제1 커맨드의 상기 제1 요청을 상기 호스트 장치로 출력하는 단계를 포함하고, 그리고
    상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계는:
    상기 I/O 메모리 관리 유닛에 의한 어드레스 변환 없이, 상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 스토리지 가상화 장치는 I/O(input/output) 메모리 관리 유닛과 더 통신하고, 그리고
    상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하는 단계는:
    상기 I/O 메모리 관리 유닛을 통해, 상기 분배된 제1 컴플리션에 대응하는 제2 가상 어드레스가 제2 물리적 어드레스로 변환되고, 상기 변환된 제2 물리적 어드레스에 기초하여, 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하는 단계를 포함하는 방법.
  11. 제 1 항에 있어서,
    상기 페치된 제1 커맨드를 상기 제1 SQ로 분배하는 단계는:
    상기 페치된 제1 커맨드에 포함된, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 제3 가상 어드레스를 제3 물리적 어드레스로 변환하는 단계를 포함하는 방법.
  12. 제 1 항에 있어서,
    상기 제1 SQ의 상기 제1 커맨드를 상기 스토리지 장치 세트로 제공하는 단계는:
    상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 SQ에 상기 제1 커맨드가 기입된 것을 가리키는 제2 도어벨을 출력하는 단계;
    상기 제1 스토리지 장치로부터 상기 제1 SQ의 상기 제1 커맨드의 제2 요청을 수신하는 단계; 및
    상기 제2 요청에 기초하여 상기 제1 SQ의 상기 제1 커맨드를 포함하는 응답을 상기 제1 스토리지 장치로 출력하는 단계를 포함하는 방법.
  13. 제 1 항에 있어서,
    상기 호스트 장치로부터 상기 제1 VCQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제3 도어벨을 수신하는 단계를 더 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 제3 도어벨에 기초하여, 상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 CQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제4 도어벨을 출력하는 단계를 더 포함하는 방법.
  15. 제 1 항에 있어서,
    상기 스토리지 가상화 장치는 FPGA(field programmable gate array)로 구현되는 방법.
  16. 호스트 장치 및 스토리지 장치 세트와 통신하고, 상기 호스트 장치에 의해 실행되는 제1 가상 머신을 지원하는 스토리지 가상화 장치에 있어서:
    상기 호스트 장치와 통신하고, 상기 제1 가상 머신과의 인터페이스를 제공하도록 구성된 SR-IOV(single root input/output virtualization) 어댑터;
    상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하도록 구성된 제1 스토리지 가상화 코어;
    상기 제1 가상 머신 및 상기 스토리지 장치 세트 사이의 매핑 정보를 포함하는 개재(interposition) 계층; 및
    상기 스토리지 장치 세트와 통신하도록 구성되고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하는 스토리지 인터페이스 회로를 포함하되,
    상기 스토리지 인터페이스 회로는:
    상기 제1 스토리지 가상화 코어로부터 상기 개재 계층을 통해 상기 제1 SQ로 분배된 상기 제1 커맨드를 상기 스토리지 장치 세트로 제공하고;
    상기 스토리지 장치 세트로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하고, 상기 제1 컴플리션은 상기 제1 CQ에 기입되고; 그리고
    상기 개재 계층을 통해 상기 제1 CQ의 제1 컴플리션을 가상화 계층에 분배하도록 더 구성되고, 그리고
    상기 제1 스토리지 가상화 코어는 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하도록 더 구성된 스토리지 가상화 장치.
  17. 제 16 항에 있어서,
    상기 호스트 장치로부터 상기 SR-IOV 어댑터를 통해 상기 제1 커맨드에 대응하는 제1 도어벨을 수신하고, 그리고 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 상기 제1 스토리지 가상화 코어에게 알리도록 구성된 도어벨 레지스터;
    상기 제1 스토리지 가상화 코어와 통신하고, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 가상 어드레스 및 상기 호스트 장치에 대응하는 물리적 어드레스 간의 매핑 정보를 포함하는 테이블; 및
    상기 호스트 장치 및 상기 스토리지 장치 세트 사이의 상기 제1 커맨드의 처리를 지원하는 DMA 엔진을 더 포함하는 스토리지 가상화 장치.
  18. 제 16 항에 있어서,
    상기 SR-IOV 어댑터 및 상기 개재 계층과 통신하고, 상기 호스트 장치에 의해 실행되는 제2 가상 머신의 제2 VSQ의 제2 커맨드를 페치하도록 구성된 제2 스토리지 가상화 코어를 더 포함하되,
    상기 SR-IOV 어댑터는 상기 제2 가상 머신과의 인터페이스를 더 제공하고,
    상기 개재 계층은 상기 제2 가상 머신 및 상기 스토리지 장치 세트 사이의 매핑 정보를 더 포함하고,
    상기 스토리지 인터페이스 회로는 제2 SQ 및 제2 CQ를 더 포함하고,
    상기 스토리지 인터페이스 회로는:
    상기 제2 스토리지 가상화 코어로부터 상기 개재 계층을 통해 상기 제2 SQ로 분배된 상기 제2 커맨드를 상기 스토리지 장치 세트로 제공하고;
    상기 스토리지 장치 세트로부터 상기 제2 커맨드가 처리된 것을 가리키는 제2 컴플리션을 수신하고, 상기 제2 컴플리션은 상기 제2 CQ에 기입되고; 그리고
    상기 개재 계층을 통해 상기 제2 CQ의 제2 컴플리션을 상기 가상화 계층에 분배하도록 더 구성되고, 그리고
    상기 제2 스토리지 가상화 코어는 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하도록 더 구성된 스토리지 가상화 장치.
  19. 가상 머신을 실행하는 호스트 장치, 상기 가상 머신을 지원하고 그리고 SQ(submission queue) 및 CQ(completion queue)를 포함하는 스토리지 가상화 장치, 및 상기 스토리지 가상화 장치와 통신하는 스토리지 장치 세트를 포함하는 스토리지 시스템의 동작 방법에 있어서:
    상기 호스트 장치에 의해, 가상 머신의 VSQ(virtual submission queue)에 커맨드가 기입된 것을 가리키는 도어벨을 생성하는 단계;
    상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계;
    상기 스토리지 가상화 장치에 의해, 상기 페치된 커맨드를 상기 제1 SQ로 분배하는 단계;
    상기 스토리지 가상화 장치에 의해, 상기 제1 SQ의 상기 커맨드를 상기 스토리지 장치 세트로 제공하는 단계;
    상기 스토리지 장치 세트 및 상기 호스트 장치에 의해, 상기 커맨드를 처리하는 단계;
    상기 스토리지 장치 세트에 의해, 상기 커맨드가 처리된 것을 가리키는 컴플리션을 상기 CQ에 기입하는 단계;
    상기 스토리지 가상화 장치에 의해, 상기 CQ의 상기 컴플리션을 가상화 계층에 분배하는 단계; 및
    상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 VCQ(virtual completion queue)에 기입하는 단계를 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 스토리지 시스템은 상기 호스트 장치 및 상기 스토리지 가상화 장치와 통신하는 I/O(input/output) 메모리 관리 유닛을 더 포함하고,
    상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계는:
    상기 스토리지 가상화 장치에 의해, 상기 도어벨에 기초하여 상기 VSQ의 상기 커맨드의 요청을 생성하는 단계;
    상기 I/O 메모리 관리 유닛에 의해, 상기 커맨드의 상기 요청에 대응하는 제1 가상 어드레스를 제1 물리적 어드레스로 변환하는 단계; 및
    상기 호스트 장치에 의해, 상기 제1 물리적 어드레스 및 상기 요청에 기초하여, 상기 VSQ의 상기 커맨드를 상기 스토리지 가상화 장치로 제공하는 단계를 포함하고, 그리고
    상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 상기 VCQ에 기입하는 단계는:
    상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 I/O 메모리 관리 유닛으로 제공하는 단계;
    상기 I/O 메모리 관리 유닛에 의해, 상기 분배된 컴플리션에 대응하는 제2 가상 어드레스를 제2 물리적 어드레스로 변환하는 단계; 및
    상기 호스트 장치에 의해, 상기 제2 물리적 어드레스에 기초하여 상기 분배된 컴플리션을 상기 VCQ에 저장하는 단계를 포함하는 방법.
KR1020210092789A 2020-11-03 2021-07-15 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법 KR102532099B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/504,849 US20220137998A1 (en) 2020-11-03 2021-10-19 Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
CN202111260805.6A CN114443209A (zh) 2020-11-03 2021-10-28 存储虚拟化装置及其操作方法和具有其的系统的操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200145193 2020-11-03
KR20200145193 2020-11-03

Publications (2)

Publication Number Publication Date
KR20220059906A true KR20220059906A (ko) 2022-05-10
KR102532099B1 KR102532099B1 (ko) 2023-05-12

Family

ID=81591687

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210092789A KR102532099B1 (ko) 2020-11-03 2021-07-15 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법

Country Status (1)

Country Link
KR (1) KR102532099B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008152783A (ja) * 2006-12-19 2008-07-03 Internatl Business Mach Corp <Ibm> データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(トランザクション・プロトコルおよび共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
KR20160022098A (ko) * 2014-08-19 2016-02-29 삼성전자주식회사 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
KR20160096279A (ko) * 2015-02-04 2016-08-16 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
JP2020091554A (ja) * 2018-12-04 2020-06-11 株式会社日立製作所 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008152783A (ja) * 2006-12-19 2008-07-03 Internatl Business Mach Corp <Ibm> データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(トランザクション・プロトコルおよび共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
KR20160022098A (ko) * 2014-08-19 2016-02-29 삼성전자주식회사 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
KR20160096279A (ko) * 2015-02-04 2016-08-16 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
JP2020091554A (ja) * 2018-12-04 2020-06-11 株式会社日立製作所 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法

Also Published As

Publication number Publication date
KR102532099B1 (ko) 2023-05-12

Similar Documents

Publication Publication Date Title
US11947991B2 (en) Methods and apparatus to process commands from virtual machines
CN107209681B (zh) 一种存储设备访问方法、装置和系统
CN105993009B (zh) 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
US10846254B2 (en) Management controller including virtual USB host controller
US20140164666A1 (en) Server and method for sharing peripheral component interconnect express interface
JP6040101B2 (ja) ストレージ装置の制御方法、ストレージ装置及び情報処理装置
US11194735B2 (en) Technologies for flexible virtual function queue assignment
EP4053706A1 (en) Cross address-space bridging
KR102365312B1 (ko) 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
CN114662088A (zh) 用于提供对内核和用户空间存储器区域的访问的技术
JP2023532077A (ja) システム及び割り込み処理方法
KR102529761B1 (ko) PCIe 디바이스 및 그 동작 방법
KR20220061983A (ko) 입출력 메모리 관리 유닛으로부터 게스트 운영 시스템으로의 인터럽트 제공
TWI797022B (zh) 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
KR102532099B1 (ko) 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
US11966335B2 (en) Hardware interconnect with memory coherence
CN115454902A (zh) 一种基于pcie接口的nvme通信系统及方法
Zhang et al. NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs
Gouk et al. Enabling realistic logical device interface and driver for nvm express enabled full system simulations
KR20220161852A (ko) 복수의 버스들로 정보를 송수신하는 컴퓨팅 장치 및 이의 동작 방법
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
US20200167086A1 (en) Exit-less host page table switching and virtual machine function detection
CN117369906B (zh) Pcie验证平台、方法、装置、存储介质及电子设备
CN117555832A (zh) 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant