KR102532099B1 - Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same - Google Patents
Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same Download PDFInfo
- Publication number
- KR102532099B1 KR102532099B1 KR1020210092789A KR20210092789A KR102532099B1 KR 102532099 B1 KR102532099 B1 KR 102532099B1 KR 1020210092789 A KR1020210092789 A KR 1020210092789A KR 20210092789 A KR20210092789 A KR 20210092789A KR 102532099 B1 KR102532099 B1 KR 102532099B1
- Authority
- KR
- South Korea
- Prior art keywords
- storage
- virtual machine
- command
- completion
- vsq
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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)에 기입하는 단계를 포함한다.A storage virtualization device according to an embodiment of the present disclosure communicates with a host device and a set of storage devices, includes a first submission queue (SQ) and a first completion queue (CQ), and includes a first execution by the host device. Virtual machine support. The operating method of the storage virtualization device may include fetching a first command of a first virtual submission queue (VSQ) of a first virtual machine, distributing the fetched first command to a first SQ, and a first command of the first SQ. providing a command to a set of storage devices, receiving a first completion from the set of storage devices indicating that the first command has been processed, the first completion being written to a first CQ; distributing a first completion of to a virtualization layer, and writing the distributed first completion to a first virtual completion queue (VCQ) of a first virtual machine.
Description
본 개시는 가상화된 스토리지 장치의 관리에 관한 것으로, 좀 더 상세하게는 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법에 관한 것이다.The present disclosure relates to management of a virtualized storage device, and more particularly, to a storage virtualization device supporting a virtual machine, an operating method thereof, and a method of operating a system including the same.
스토리지 가상화 기술은 가상 머신에게 가상 스토리지 장치를 제공할 수 있다. 가상 머신은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다. 가상 스토리지 장치는 물리적 스토리지 장치(예를 들어, 실제 스토리지 장치)와 매핑(mapping)될 수 있고, 물리적 스토리지 장치는 가상 머신로부터의 읽기 커맨드나 쓰기 커맨드 등과 같은 요청을 처리하기 위한 데이터를 물리적으로 저장할 수 있다.Storage virtualization technology may provide a virtual storage device to a virtual machine. A virtual machine may be a software-implemented computing environment, and an operating system or application may be installed and executed on the virtual machine. The virtual storage device may be mapped with a physical storage device (eg, a real storage device), and the physical storage device physically stores data for processing a request such as a read command or a write command from a virtual machine. can
가상 머신에게 가상 스토리지 장치를 제공하기 위해, 스토리지 가상화 기술은 가상화 계층을 지원할 수 있다. 가상화 계층은 물리적 스토리지 장치 및 가상 머신 사이의 리소스 관리 기능(예를 들어, 데이터 속도, 대역폭 등을 제어)을 제공할 수 있다. 일반적으로, 소프트웨어 기반의 가상 스토리지 기술은 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공할 수 있지만, CPU(central processing unit)의 리소스가 많이 소모되어 데이터 속도가 저하될 수 있다. 하드웨어 기반의 가상 스토리지 기술은 CPU의 리소스가 절약되고 데이터 속도가 증가할 수 있지만, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공하지 못할 수 있다.To provide virtual storage devices to virtual machines, storage virtualization technology may support a virtualization layer. The virtualization layer may provide resource management functions (eg, control data rate, bandwidth, etc.) between physical storage devices and virtual machines. In general, a software-based virtual storage technology may provide a flexible resource management function and a flexible virtual machine management function, but a lot of resources of a central processing unit (CPU) may be consumed and data speed may be reduced. Hardware-based virtual storage technologies may save CPU resources and increase data rates, but may not provide flexible resource management capabilities and flexible virtual machine management capabilities.
본 개시의 일 실시 예에 따르면, 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.According to an embodiment of the present disclosure, a storage virtualization device supporting a virtual machine, an operating method thereof, and a method of operating a system including the same are provided.
본 개시의 일 실시 예에 따르면, 호스트 장치 및 스토리지 장치 세트와 통신하고, 제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)에 기입하는 단계를 포함한다.According to an embodiment of the present disclosure, a first virtual machine communicates with a host device and a set of storage devices, includes a first submission queue (SQ) and a first completion queue (CQ), and is executed by the host device. A method of operating a storage virtualization device that supports is provided. The method may include fetching a first command from a first virtual submission queue (VSQ) of the first virtual machine, distributing the fetched first command to the first SQ, and distributing the fetched first command to the first SQ. providing the first command of to the storage device set; receiving a first completion indicating that the first command has been processed from the storage device set; writing to a CQ, distributing the first completion of the first CQ to a virtualization layer, and sending the distributed first completion to a first virtual completion queue (VCQ) of the first virtual machine. It includes the step of entering
본 개시의 일 실시 예에 따르면, 호스트 장치 및 스토리지 장치 세트와 통신하고, 상기 호스트 장치에 의해 실행되는 제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)에 기입하도록 더 구성된다.According to one embodiment of the present disclosure, a storage virtualization device that communicates with a set of a host device and a storage device and supports a first virtual machine executed by the host device is provided. The storage virtualization device may include: a single root input/output virtualization (SR-IOV) adapter configured to communicate with the host device and provide an interface with the first virtual machine; a first virtual submission (VSQ) adapter of the first virtual machine; To communicate with a first storage virtualization core configured to fetch a first command of a queue, an interposition layer including mapping information between the first virtual machine and the set of storage devices, and the set of storage devices. and a storage interface circuit including a first submission queue (SQ) and a first completion queue (CQ). The storage interface circuit provides the first command distributed from the first storage virtualization core to the first SQ through the intervening layer to the storage device set, and processes the first command from the storage device set. receive a first completion indicating that the first completion is written to the first CQ, and distribute the first completion of the first CQ to a virtualization layer through the intervening layer. do. And, the first storage virtualization core is further configured to write the distributed first completion to a first virtual completion queue (VCQ) of the first virtual machine.
본 개시의 일 실시 예에 따르면, 가상 머신을 실행하는 호스트 장치, 상기 가상 머신을 지원하고 그리고 SQ(submission queue) 및 CQ(completion queue)를 포함하는 스토리지 가상화 장치, 및 상기 스토리지 가상화 장치와 통신하는 스토리지 장치 세트를 포함하는 스토리지 시스템의 동작 방법이 제공된다. 상기 방법은, 상기 호스트 장치에 의해, 가상 머신의 VSQ(virtual submission queue)에 커맨드가 기입된 것을 가리키는 도어벨을 생성하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 페치된 커맨드를 상기 제1 SQ로 분배하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 제1 SQ의 상기 커맨드를 상기 스토리지 장치 세트로 제공하는 단계, 상기 스토리지 장치 세트 및 상기 호스트 장치에 의해, 상기 커맨드를 처리하는 단계, 상기 스토리지 장치 세트에 의해, 상기 커맨드가 처리된 것을 가리키는 컴플리션을 상기 CQ에 기입하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 CQ의 상기 컴플리션을 가상화 계층에 분배하는 단계, 및 상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.According to an embodiment of the present disclosure, a host device that runs a virtual machine, a storage virtualization device that supports the virtual machine and includes a submission queue (SQ) and a completion queue (CQ), and a storage virtualization device that communicates with the storage virtualization device. A method of operating a storage system including a set of storage devices is provided. The method may include generating, by the host device, a doorbell indicating that a command is written in a virtual submission queue (VSQ) of a virtual machine; receiving, by the storage virtualization device, the command of the VSQ of the virtual machine fetching, distributing, by the storage virtualization device, the fetched command to the first SQ; providing, by the storage virtualization device, the command of the first SQ to the set of storage devices; processing the command by the storage device set and the host device; writing a completion indicating that the command has been processed to the CQ by the storage device set; Distributing the completion of the CQ to a virtualization layer, and writing the distributed completion to a virtual completion queue (VCQ) of the virtual machine by the storage virtualization device.
본 개시의 일 실시 예에 따르면, 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.According to an embodiment of the present disclosure, a storage virtualization device supporting a virtual machine, an operating method thereof, and a method of operating a system including the same are provided.
또한, 가상 머신을 위한 가상화 계층을 지원함으로써, CPU의 리소스가 절약되고, 데이터 속도가 향상되고, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.In addition, by supporting a virtualization layer for virtual machines, CPU resources are saved, data rates are improved, storage virtualization devices that provide flexible resource management functions and flexible virtual machine management functions, an operation method thereof, and the same A method of operating the system is provided.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 도면이다.
도 4는 본 개시의 일부 실시 예들에 따른 가상 머신의 블록도이다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다.
도 6a, 도 6b, 및 도 6c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들의 리소스 할당을 설명하는 도면들이다.
도 7a, 도 7b, 및 도 7c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 리소스 할당을 설명하는 도면들이다.
도 8은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다.
도 9는 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다.1 is a block diagram of a storage system according to an embodiment of the present disclosure.
2 is a block diagram of a storage system according to some embodiments of the present disclosure.
3 is a diagram illustrating an operating method of a storage virtualization apparatus according to some embodiments of the present disclosure.
4 is a block diagram of a virtual machine according to some embodiments of the present disclosure.
5 is a flowchart illustrating a method of operating a storage system according to some embodiments of the present disclosure.
6A, 6B, and 6C are diagrams illustrating resource allocation of a plurality of virtual machines according to some embodiments of the present disclosure.
7A, 7B, and 7C are diagrams illustrating resource allocation between a plurality of virtual machines and a plurality of storage devices according to some embodiments of the present disclosure.
8 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure.
9 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present disclosure will be described clearly and in detail to the extent that those skilled in the art can easily practice the embodiments of the present disclosure.
상세한 설명에서 사용되는 부 또는 유닛(unit), 모듈(module), 계층(layer) 등의 용어를 참조하여 설명되는 구성 요소들 및 도면에 도시된 기능 블록들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예를 들어, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.Components described with reference to terms such as unit, unit, module, layer, etc. used in the detailed description and functional blocks shown in the drawings are software, hardware, or a combination thereof. can be implemented in the form For example, software can be machine code, firmware, embedded code, and application software. For example, the hardware may include an electrical circuit, an electronic circuit, a processor, a computer, an integrated circuit, integrated circuit cores, a pressure sensor, an inertial sensor, a microelectromechanical system (MEMS), a passive component, or a combination thereof. .
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(100)은 호스트 장치(110), 스토리지 가상화 장치(120), 및 스토리지 장치 세트(130)를 포함할 수 있다. 스토리지 시스템(100)은 복수의 가상 머신(VM)들을 제공할 수 있다. 가상 머신(VM)은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신(VM) 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다.1 is a block diagram of a storage system according to an embodiment of the present disclosure. Referring to FIG. 1 , a
일부 실시 예들에서, 스토리지 시스템(100)은 서버 장치일 수 있다. 예를 들어, 스토리지 시스템(100)은 복수의 사용자들을 위한 복수의 가상 머신(VM)들을 포함하는 클라우드 컴퓨팅 환경을 제공하는 서버 장치일 수 있다. In some embodiments, the
복수의 가상 머신(VM)들은 물리적 스토리지 장치들(예를 들어, 스토리지 장치 세트(130)와 같은 실제 스토리지 장치들)를 공유하므로, 적은 개수의 스토리지 장치들로 여러 가상 머신(VM)들을 지원할 수 있다. 또한, 가상 머신(VM)의 위치나 동작이 물리적 스토리지 장치들(예를 들어, 스토리지 장치 세트(130))에 제한되지 않을 수 있다. 예를 들어, 제1 스토리지 장치(131)에 대응하는 가상 머신(VM)을 제2 스토리지 장치(132)에 대응하도록 변경할 수 있다.Since the plurality of virtual machines (VMs) share physical storage devices (eg, actual storage devices such as the storage device set 130), multiple virtual machines (VMs) can be supported with a small number of storage devices. there is. Also, the location or operation of the virtual machine (VM) may not be limited to physical storage devices (eg, the storage device set 130). For example, a virtual machine (VM) corresponding to the
호스트 장치(110)는 가상 머신(VM)을 실행할 수 있다. 예를 들어, 호스트 장치(110)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS; operating system) 및 애플리케이션 등을 위한 연산들을 실제로 수행할 수 있다. 호스트 장치(110)는 가상 머신(VM)의 데이터 처리를 위한 요청들(예를 들어, 읽기 커맨드, 쓰기 커맨드 등)을 관리할 수 있다.The
스토리지 가상화 장치(120)는 가상 머신(VM) 관리를 지원할 수 있다. 스토리지 가상화 장치(120)는 호스트 장치(110) 및 스토리지 장치 세트(130)와 통신할 수 있다. 스토리지 가상화 장치(120)는 가상 머신(VM)으로부터의 요청(예를 들어, 호스트 장치(110)로부터 수신됨)을 스토리지 장치 세트(130)와 같은 실제 스토리지 장치들이 처리할 수 있도록 변경할 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)로부터 수신된 응답을 가상 머신(VM)에서 처리할 수 있도록 변경할 수 있다.The
일부 실시 예들에서, 스토리지 가상화 장치(120)는 별도의 하드웨어 장치로 제공될 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 호스트 장치(110) 및 스토리지 장치 세트(130)와 독립적으로, 스토리지 시스템(100)에 설치되거나, 제거되거나, 교체되거나, 또는 동작할 수 있다.In some embodiments, the
일부 실시 예들에서, 스토리지 가상화 장치(120)는 FPGA(field programmable gate array)로 구현될 수 있다. 그러나, 본 개시의 범위는 이에 제한되지 않으며, 스토리지 가상화 장치(120)는 FPGA 이외에도, 호스트 장치(110) 및 스토리지 장치 세트(130)와 통신하는 다양한 종류의 하드웨어 장치로 구현될 수 있다.In some embodiments, the
스토리지 장치 세트(130)는 제1 내지 제N 스토리지 장치들(131~13N)을 포함할 수 있다. N은 임의의 자연수이다. 제1 내지 제N 스토리지 장치들(131~13N) 각각은 데이터를 저장하는 장치일 수 있다. 예를 들어, 제1 스토리지 장치(131)는 솔리드 스테이트 드라이브(SSD; solid state drive)와 같은 플래시 메모리일 수 있으나, 본 개시는 이에 제한되지 않으며, 제1 스토리지 장치(131)는 쓰기 커맨드에 따라 데이터를 저장하고, 읽기 커맨드에 따라 저장된 데이터를 제공하는 임의의 스토리지 매체일 수 있다.The storage device set 130 may include first to
일부 실시 예들에서, 스토리지 가상화 장치(120)는 서브미션 큐(SQ; submission queue) 및 컴플리션 큐(CQ; completion queue)를 포함할 수 있다. SQ는 읽기 커맨드, 쓰기 커맨드 등과 같은 가상 머신(VM)의 데이터 처리를 위한 요청 및 요청을 위한 물리적 어드레스를 저장하는 버퍼일 수 있다. CQ는 SQ의 요청에 대응하는 응답(예를 들어, 요청에 따른 데이터가 처리된 것을 가리키는 컴플리션)을 저장하는 버퍼일 수 있다.In some embodiments, the
예를 들어, 스토리지 가상화 장치(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를 참조하여 후술될 것이다.For example, the
일부 실시 예들에서, 스토리지 가상화 장치(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의 매핑을 제공할 수 있다.In some embodiments, the
상술된 바와 같이, 본 개시에 따르면, 가상 머신(VM) 관리를 지원하는 스토리지 가상화 장치(120)를 포함하는 스토리지 시스템(100)이 제공된다. 스토리지 가상화 장치(120)가 호스트 장치(110)에 의해 실행되는 소프트웨어가 아닌 별도의 하드웨어로 제공됨으로써, 호스트 장치(110)의 리소스가 절약되고, 데이터 속도가 향상될 수 있다. 스토리지 가상화 장치(120)가 가상 머신(VM) 및 스토리지 장치 세트(130) 간의 매핑을 제공함으로써, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공할 수 있다.As described above, according to the present disclosure, a
도 2는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다. 도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), I/O(input/output) 메모리 관리 유닛(140), 및 통신 인터페이스(150)를 포함할 수 있다. 스토리지 시스템(100)은 복수의 가상 머신(VM)들을 제공할 수 있다. 2 is a block diagram of a storage system according to some embodiments of the present disclosure. Referring to FIG. 2 , the
가상 머신(VM)은 VSQ 및 VCQ를 포함할 수 있다. 일부 실시 예들에서, VSQ 및 VCQ는 각각 스토리지 가상화 장치(120)의 SQ 및 CQ에 대응할 수 있다.A virtual machine (VM) may include VSQ and VCQ. In some embodiments, VSQ and VCQ may correspond to SQ and CQ of the
호스트 장치(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에 기입된 컴플리션을 읽을 수 있다.The
메모리 장치(112)는 가상 머신(VM)을 구현하기 위한 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(112)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS) 및 애플리케이션 등과 같은 데이터를 저장할 수 있다. 메모리 장치(112)는 가상 머신(VM)의 VSQ 및 VCQ에 대응하는 물리적인 저장 공간들을 제공할 수 있다. The
스토리지 가상화 장치(120)는 SQ 및 CQ를 포함할 수 있다. 스토리지 가상화 장치(120)는 복수의 가상 머신(VM)들 및 스토리지 장치 세트(130) 간의 매핑을 제공할 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 가상 머신(VM)의 VSQ에 기입된 커맨드를 스토리지 장치 세트(130)에서 처리될 수 있도록 변경하고, 변경된 커맨드를 SQ에 저장할 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에 의해 CQ에 기입된 컴플리션을 가상 머신(VM)에 의해 처리될 수 있도록 변경하고, 변경된 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다.The
스토리지 장치 세트(130)는 제1 내지 제N 스토리지 장치들(131~13N)을 포함할 수 있다. 제1 내지 제N 스토리지 장치들(131~13N) 각각은 가상 머신(VM)의 요청(예를 들어, 읽기 커맨드, 쓰기 커맨드 등)에 따른 데이터를 저장하거나, 또는 저장된 데이터를 제공할 수 있다. 도면의 간략함을 위해, 스토리지 가상화 장치(120)는 한 쌍의 SQ 및 CQ를 포함하는 것으로 도시되나, 스토리지 가상화 장치(120)는 제1 내지 제N 스토리지 장치들(131~13N) 각각에 대응하는 SQ 및 CQ의 쌍들을 제공할 수 있다.The storage device set 130 may include first to
I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 가상 어드레스 및 호스트 장치(110)의 메모리 장치(112)의 물리적 어드레스 사이의 변환을 관리할 수 있다. 예를 들어, 가상 머신(VM)은 CPU(111)에 의해 실행된 소프트웨어일 수 있고, 가상 머신(VM) 상의 데이터를 위한 가상 어드레스는 메모리 장치(112)의 실제 데이터를 위한 물리적 어드레스에 대응할 수 있다. I/O 메모리 관리 유닛(140)은 가상 어드레스를 대응하는 물리적 어드레스로 변환하거나, 또는 물리적 어드레스를 대응하는 가상 어드레스로 변환할 수 있다.The I/O
가상 머신(VM)의 VSQ에 커맨드가 기입되면, 스토리지 가상화 장치(120)는 가상 머신(VM)의 VSQ에 기입된 커맨드를 직접 읽기 어려울 수 있다. I/O 메모리 관리 유닛(140)은, 스토리지 가상화 장치(120)로부터 VSQ의 커맨드의 요청(예를 들어, VSQ의 커맨드를 페치(fetch)하기 위한 요청)이 수신되면, 가상 머신(VM)의 가상 어드레스를 메모리 장치(112)의 물리적 어드레스로 변환할 수 있다. I/O 메모리 관리 유닛(140)은 변환된 물리적 어드레스를 포함하는 요청을 호스트 장치(110)로 제공할 수 있다. 스토리지 가상화 장치(120)는 메모리 장치(112)의 실제 데이터를 수신할 수 있고, 실제 데이터는 가상 머신(VM)의 VSQ에 기입된 커맨드와 동일할 수 있다.When a command is written in the VSQ of the virtual machine (VM), the
일부 실시 예들에서, I/O 메모리 관리 유닛(140)은 생략될 수 있다. I/O 메모리 관리 유닛(140)이 생략되는 경우, 스토리지 가상화 장치(120)는 가상 머신(VM)의 가상 어드레스 및 메모리 장치(112)의 물리적 어드레스의 매핑 정보를 관리할 수 있다.In some embodiments, I/O
통신 인터페이스(150)는 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140) 간의 통신을 위한 인터페이스를 제공할 수 있다. 일부 실시 예들에서, 통신 인터페이스(150)는 PCIe(peripheral component interconnect express) 인터페이스로 구현될 수 있다. 예를 들어, 통신 인터페이스(150)는 PCIe 스위치(미도시)를 포함할 수 있다. PCIe 스위치는 호스트 장치(110)의 개입 없이 스토리지 가상화 장치(120) 및 스토리지 장치 세트(130) 사이의 통신을 지원할 수 있다.The
도 3은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 도면이다. 도 3을 참조하면, 스토리지 가상화 장치(120)는 가상 머신(VM), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다. 스토리지 가상화 장치(120)가 가상 머신(VM)과 통신하는 것은 가상 머신(VM)을 실행하는 호스트 장치(110)와 물리적으로 통신하는 것을 가리킬 수 있다.3 is a diagram illustrating an operating method of a storage virtualization apparatus according to some embodiments of the present disclosure. Referring to FIG. 3 , the
스토리지 가상화 장치(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)를 포함할 수 있다.The
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))를 공유하는 것을 지원할 수 있다.The SR-
도어벨 레지스터(122)는 SR-IOV 어댑터(121) 및 스토리지 가상화 코어(123)와 통신할 수 있다. 도어벨 레지스터(122)는 가상 머신(VM)을 실행하는 호스트 장치(110)로부터 SR-IOV 어댑터(121)를 통해 도어벨을 수신할 수 있다. 도어벨은 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 가리키는 신호일 수 있다. 도어벨 레지스터(122)는 스토리지 가상화 코어(123)의 SQ 폴링(polling)을 통해, 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 스토리지 가상화 코어(123)에 알릴 수 있다.The doorbell register 122 may communicate with the SR-
스토리지 가상화 코어(123)는 도어벨 레지스터(122), gPA-to-hPA 테이블(124), DMA 엔진(125), 개재 계층(126), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다.
일부 실시 예들에서, 스토리지 가상화 장치(120)는 복수의 스토리지 가상화 코어(123)들을 포함할 수 있다. 예를 들어, 복수의 스토리지 가상화 코어(123)들은 복수의 가상 머신(VM)들에 각각 대응할 수 있다. 하나의 스토리지 가상화 코어(123)는 하나의 가상 머신(VM)에 대응할 수 있다.In some embodiments, the
그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니고, 본 개시가 속한 기술 분야에서의 통상의 기술자에 의해, 하나의 스토리지 가상화 코어(123)가 복수의 가상 머신(VM)들에 대응하거나, 또는 복수의 스토리지 가상화 코어(123)들이 하나의 가상 머신(VM)에 대응하도록 변경될 수 있다.However, the scope of the present disclosure is not necessarily limited thereto, and by a person skilled in the art to which the present disclosure belongs, one
스토리지 가상화 코어(123)는 SQ 폴링, CQ 핸들링, 어드레스 변환, 및 인터럽트 생성을 수행할 수 있다. SQ 폴링은 도어벨 레지스터(122)에 도어벨이 저장되었는지 여부를 주기적으로 확인하는 동작을 가리킬 수 있다. CQ 핸들링은 스토리지 인터페이스 회로(127)의 CQ에 기입된 컴플리션을 가상화 계층으로 분배하고 관리하는 동작을 가리킬 수 있다. 어드레스 변환은 gPA-to-hPA 테이블(124)을 참조하여 가상 머신(VM)의 가상 어드레스 및 가상 머신(VM)을 실행하는 호스트 장치(110)의 물리적 어드레스 사이의 변환을 가리킬 수 있다. 인터럽트 생성은 가상 머신(VM)을 실행하는 호스트 장치(110)로 제공될 인터럽트를 생성하는 것을 가리킬 수 있다. 인터럽트는 가상 머신(VM)의 VCQ에 기입된 컴플리션의 처리를 요청하는 신호일 수 있다.The
일부 실시 예들에서, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 저장된 도어벨을 처리할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 도어벨이 저장된 것을 확인하고, I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VSQ의 커맨드를 페치하고, 그리고 페치된 커맨드를 개재 계층(126)으로 제공할 수 있다.In some embodiments, the
일부 실시 예들에서, 스토리지 가상화 코어(123)는 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 스토리지 인터페이스 회로(127)로부터 개재 계층(126)을 통해 컴플리션을 수신하고, 그리고 I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다.In some embodiments, the
gPA-to-hPA 테이블(124)은 게스트 물리적 어드레스 및 호스트 물리적 어드레스의 매핑을 관리할 수 있다. 게스트 물리적 어드레스는 가상 머신(VM)의 가상 어드레스를 의미할 수 있다. 호스트 물리적 어드레스는 가상 머신(VM)을 실행하는 호스트 장치(110)의 물리적 어드레스를 의미할 수 있다. 게스트 물리적 어드레스 및 호스트 물리적 어드레스는 모두 가상 머신(VM)의 DMA 버퍼의 어드레스에 대응할 수 있다. gPA-to-hPA 테이블(124)의 매핑 정보는 스토리지 가상화 코어(123)의 어드레스 변환을 위해 사용될 수 있다.The gPA-to-hPA table 124 may manage the mapping of guest physical addresses and host physical addresses. The guest physical address may refer to a virtual address of a virtual machine (VM). The host physical address may refer to a physical address of the
DMA 엔진(125)은 가상 머신(VM) 및 스토리지 장치 세트(130) 간의 DMA 동작을 지원할 수 있다. DMA 동작은 VSQ에 기입된 커맨드를 처리하는 것일 수 있다. DMA 동작은 어드레스 변환 없이 수행될 수 있다. 도면의 복잡함을 피하기 위해 도 3에서 명시적으로 표현되지는 않았으나, DMA 엔진(125)은 가상 머신(VM)의 VSQ의 커맨드를 페치하는 것 그리고 가상 머신(VM)의 VCQ에 컴플리션을 기입하는 것을 보조할 수 있다.The
개재 계층(126)은 스토리지 가상화 코어(123) 및 스토리지 인터페이스 회로(127)와 통신할 수 있다. 개재 계층(126)은 장치 매핑 정보를 포함할 수 있다. 장치 매핑 정보는 복수의 가상 머신(VM)들 및 스토리지 장치 세트(130)간의 대응 관계를 포함할 수 있다. The intervening
일부 실시 예들에서, 가상 머신(VM)을 위한 VSQ 및 VCQ는 스토리지 장치를 위한 SQ 및 CQ와 대응 관계를 가질 수 있다. 예를 들어, 장치 매핑 정보는 가상 머신(VM)의 VSQ 및 VCQ는 제1 스토리지 장치(131)를 위한 SQ 및 CQ에 각각 대응한다는 정보를 포함할 수 있다.In some embodiments, VSQ and VCQ for a virtual machine (VM) may have a corresponding relationship with SQ and CQ for a storage device. For example, the device mapping information may include information indicating that VSQ and VCQ of the virtual machine (VM) respectively correspond to SQ and CQ for the
일부 실시 예들에서, 개재 계층(126)은 VSQ 및 SQ 사이의 매핑을 관리할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 가상 머신(VM)의 VSQ의 커맨드를 페치할 수 있다. 개재 계층(126)은 스토리지 가상화 코어(123)로부터 페치된 커맨드를 수신할 수 있다. 개재 계층(126)은 수신된 커맨드를 스토리지 인터페이스 회로(127)의 SQ에 분배할 수 있다.In some embodiments, intervening
일부 실시 예들에서, 개재 계층(126)은 VCQ 및 CQ 사이의 매핑을 관리할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입될 수 있다. 개재 계층(126)은 스토리지 인터페이스 회로(127)의 CQ에 기입된 컴플리션을 가상화 계층에 분배할 수 있다. 개재 계층(126)은 가상화 계층에 분배된 컴플리션을 스토리지 가상화 코어(123)로 제공할 수 있다.In some embodiments, intervening
스토리지 인터페이스 회로(127)는 개재 계층(126) 및 스토리지 장치 세트(130)와 통신할 수 있다.The
일부 실시 예들에서, 스토리지 가상화 장치(120)는 복수의 스토리지 인터페이스 회로(127)를 포함할 수 있다. 예를 들어, 복수의 스토리지 인터페이스 회로(127)들은 스토리지 장치 세트(130)에 포함된 복수의 스토리지 장치들에 각각 대응할 수 있다. 제1 스토리지 장치(131)는 스토리지 인터페이스 회로(127)에 대응할 수 있다.In some embodiments, the
그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니고, 본 개시가 속한 기술 분야에서의 통상의 기술자에 의해, 하나의 스토리지 인터페이스 회로(127)가 복수의 스토리지 장치들에 대응하거나, 또는 제1 스토리지 장치(131)가 복수의 스토리지 인터페이스 회로(127)들에 대응하도록 변경될 수 있다. 다만, 개재 계층(126)은 한 쌍의 SQ 및 CQ가 한 쌍의 VSQ 및 VCQ에 대응하도록 매핑 정보를 관리할 수 있다.However, the scope of the present disclosure is not necessarily limited thereto, and by a person skilled in the art to which the present disclosure belongs, one
스토리지 인터페이스 회로(127)는 SQ 및 CQ를 포함할 수 있다. 스토리지 인터페이스 회로(127)는 CQ 폴링 및 SQ 핸들링을 수행할 수 있다. CQ 폴링은 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입되었는지 여부를 주기적으로 확인하는 동작을 가리킬 수 있다. SQ 핸들링은 개재 계층(126)을 통해 SQ로 분배된 커맨드를 관리하는 동작을 가리킬 수 있다.The
일부 실시 예들에서, 스토리지 인터페이스 회로(127)는 스토리지 장치 세트(130)로 SQ에 저장된 커맨드를 제공할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)는 SQ에 커맨드가 기입된 것을 알리는 도어벨을 제1 스토리지 장치(131)로 출력할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터에 저장된 도어벨에 기초하여, SQ에 기입된 커맨드를 페치할 수 있다.In some embodiments, the
일부 실시 예들에서, 스토리지 인터페이스 회로(127)는 스토리지 장치 세트(130)로부터 컴플리션을 수신할 수 있다. 예를 들어, 제1 스토리지 장치(131)는 SQ의 커맨드를 페치할 수 있다. 제1 스토리지 장치(131)는 페치된 커맨드를 처리할 수 있다. 제1 스토리지 장치(131)는 커맨드가 처리된 것을 가리키는 컴플리션을 스토리지 인터페이스 회로(127)의 CQ에 기입할 수 있다.In some embodiments, the
스토리지 가상화 장치(120)는 복수의 가상 머신(VM)들과 통신할 수 있다. 가상 머신(VM)은 VSQ, VCQ, 및 DMA 버퍼를 포함할 수 있다. VSQ는 스토리지 장치 세트(130)에서 처리될 커맨드를 저장할 수 있다. 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 스토리지 가상화 장치(120)에게 알릴 수 있고, 스토리지 가상화 장치(120)는 I/O 메모리 관리 유닛(140)을 통해 VSQ의 커맨드를 페치할 수 있다. The
VCQ는 VSQ의 커맨드가 처리된 것을 가리키는 컴플리션을 저장할 수 있다. 스토리지 가상화 장치(120)는 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입되면, I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 가상 머신(VM)은 VCQ에 컴플리션이 기입된 것을 확인하고, 컴플리션을 처리할 수 있다. 가상 머신(VM)은 스토리지 가상화 장치(120)에게 VCQ의 컴플리션이 처리된 것을 알릴 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에게 컴플리션이 처리된 것을 알릴 수 있다.The VCQ may store a completion indicating that the command of the VSQ has been processed. When the
DMA 버퍼는 스토리지 장치 세트(130)와 통신할 수 있다. DMA 버퍼는 DMA 동작(예를 들어, DMA 읽기 동작, DMA 쓰기 동작 등)을 통해 스토리지 장치 세트(130)와 데이터를 교환할 수 있다. DMA 버퍼 및 스토리지 장치 세트(130) 사이에서 DMA 동작에 따라 데이터를 교환하는 것은 SQ에 기입된 커맨드를 처리하는 것을 의미할 수 있다. 스토리지 가상화 장치(120)의 DMA 엔진(125)은 DMA 버퍼의 DMA 동작을 보조할 수 있다. 예를 들어, DMA 엔진(125)은 DMA 버퍼를 포함하는 가상 머신(VM)이 실행되는 호스트 메모리 및 스트리지 장치 세트(130)의 제1 스토리지 장치(131) 사이의 데이터 전송을 보조하거나 또는 관리할 수 있다.The DMA buffer may communicate with the
이 때, 스토리지 가상화 장치(120)는 gPA-to-hPA 테이블(124)을 참조하여 가상 머신(VM)의 가상 어드레스(예를 들어, 게스트 물리적 어드레스)를 호스트 장치(110)에서의 물리적 어드레스(예를 들어, 호스트 물리적 어드레스)로 변경하여 스토리지 장치 세트(130)로 제공하므로, 가상 머신(VM)의 DMA 버퍼 및 스토리지 장치 세트(130) 사이의 DMA 동작은 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 수행될 수 있다.At this time, the
스토리지 장치 세트(130)는 복수의 스토리지 장치들을 포함할 수 있다. 복수의 스토리지 장치들 각각은 도어벨 레지스터를 포함할 수 있다. 예를 들어, 스토리지 장치 세트(130)는 제1 스토리지 장치(131)를 포함할 수 있다. 제1 스토리지 장치(131)는 스토리지 인터페이스 회로(127)의 SQ 및 CQ의 쌍과 대응할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터를 포함할 수 있다. 도어벨 레지스터는 스토리지 인터페이스 회로(127)의 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 저장할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터에 저장된 도어벨에 기초하여 스토리지 인터페이스 회로(127)의 SQ의 커맨드를 페치할 수 있다. 제1 스토리지 장치(131)는 가상 머신(VM)과 통신하여 커맨드를 처리(예를 들어, DMA 동작을 수행)할 수 있다.The storage device set 130 may include a plurality of storage devices. Each of the plurality of storage devices may include a doorbell register. For example, the storage device set 130 may include a
I/O 메모리 관리 유닛(140)은 가상 머신(VM)을 실행하는 호스트 장치(110)의 입력 및 출력을 관리할 수 있다. I/O 메모리 관리 유닛(140)은 가상 어드레스 및 물리적 어드레스 사이의 어드레스 변환을 수행함으로써, 스토리지 가상화 장치(120) 및 가상 머신(VM) 사이의 통신을 보조할 수 있다. The I/O
예를 들어, 스토리지 가상화 장치(120)로부터 VSQ의 커맨드를 페치하기 위한 요청이 있으면, 이러한 요청의 VSQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에서 데이터를 읽음으로써, VSQ의 커맨드를 페치할 수 있다.For example, if there is a request to fetch a VSQ command from the
예를 들어, 스토리지 가상화 장치(120)로부터 VCQ에 컴플리션을 기입하기 위한 요청이 있으면, 이러한 요청의 VCQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에서 데이터를 기입함으로써, VCQ에 컴플리션을 기입할 수 있다.For example, when there is a request to write a completion in the VCQ from the
일부 실시 예들에서, I/O 메모리 관리 유닛(140)은 선택적으로 사용될 수 있다. 스토리지 가상화 코어(123)에 의해 가상 어드레스 및 물리적 어드레스 사이의 어드레스 변환이 수행된 경우, I/O 메모리 관리 유닛(140)은 생략될 수 있다.In some embodiments, I/O
상술된 바와 같이, 도 3을 참조하여 가상 머신(VM), 가상 머신(VM)을 실행하는 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)의 구조 및 기능 등이 설명되었다. As described above, referring to FIG. 3 , a virtual machine (VM), a
본 개시의 일부 실시 예들에 따르면, 스토리지 가상화 장치(120)는 일련의 동작들을 수행하여 가상 머신(VM) 및 스토리지 장치 세트(130) 사이의 통신을 지원할 수 있다. 예를 들어, 스토리지 가상화 장치(120)의 동작 방법은 제1 내지 제9 동작들(①~⑨)을 포함할 수 있다.According to some embodiments of the present disclosure, the
제1 동작(①)에서, 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 알릴 수 있다. 예를 들어, 복수의 가상 머신(VM)들은 SR-IOV 어댑터(121)의 복수의 VF들(예를 들어, 가상 머신(VM)과의 인터페이스를 제공하는 모듈들)에 각각 대응할 수 있다. VF가 제공하는 인터페이스를 통해, 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 출력할 수 있다. SR-IOV 어댑터(121)는 가상 머신(VM)으로부터 수신된 도어벨을 도어벨 레지스터(122)로 전송할 수 있다.In a first operation (①), the virtual machine (VM) may inform VSQ that a command is written. For example, a plurality of virtual machines (VMs) may each correspond to a plurality of VFs (eg, modules providing interfaces with virtual machines (VMs)) of the SR-
제2 동작(②)에서, 스토리지 가상화 장치(120)는 VSQ에 커맨드가 기입된 것을 확인하고, VSQ의 커맨드를 페치할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 SQ 폴링을 수행하여 도어벨이 저장된 것을 확인할 수 있다. 스토리지 가상화 코어(123)는 VSQ의 커맨드를 요청할 수 있고, 요청에 대한 응답으로 VSQ의 커맨드를 수신할 수 있다.In the second operation (②), the
일부 실시 예들에서, 스토리지 가상화 코어(123)는 I/O 메모리 관리 유닛(140)을 통해 VSQ의 커맨드를 요청할 수 있다. 예를 들어, VSQ의 커맨드를 페치하는 것은 호스트 장치(110)에서 실제 데이터를 읽는 것을 의미할 수 있다. I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 VSQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 변환된 물리적 어드레스에 기초하여, 스토리지 가상화 코어(123)는 VSQ의 커맨드를 페치할 수 있다.In some embodiments, the
제3 동작(③)에서, 스토리지 가상화 장치(120)는 페치된 VSQ의 커맨드를 스토리지 인터페이스 회로(127)의 SQ로 분배할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 페치된 커맨드에 포함된 DMA 버퍼의 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환하고, 변환된 물리적 어드레스를 포함하는 커맨드를 스토리지 인터페이스 회로(127)의 SQ로 전송할 수 있다.In the third operation (③), the
제4 동작(④)에서, 스토리지 가상화 장치(120)는 SQ의 커맨드를 스토리지 장치 세트(130)로 제공할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)는 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 제1 스토리지 장치(131)의 도어벨 레지스터로 출력할 수 있다. 제1 스토리지 장치(131)는 SQ의 커멘드를 페치하기 위한 요청을 스토리지 인터페이스 회로(127)로 출력할 수 있다. 스토리지 인터페이스 회로(127)는 요청에 대한 응답으로 SQ의 커맨드를 제1 스토리지 장치(131)로 출력할 수 있다.In a fourth operation (④), the
제5 동작(⑤)에서, 스토리지 장치 세트(130)는 페치된 커맨드를 처리할 수 있다. 예를 들어, 제1 스토리지 장치(131)가 커맨드를 페치한 경우, 제1 스토리지 장치(131)는 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드를 처리할 수 있다. 이 때, 스토리지 가상화 코어(123)에 의해 가상 어드레스가 이미 물리적 어드레스로 변환되었으므로, 제1 스토리지 장치(131)는 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드를 처리할 수 있다. 스토리지 가상화 장치(120)의 DMA 엔진(125)은 제1 스토리지 장치(131)의 커맨드 처리를 보조할 수 있다.In a fifth operation (⑤), the storage device set 130 may process the fetched command. For example, when the
제6 동작(⑥)에서, 스토리지 장치 세트(130)는 커맨드가 처리된 것을 가리키는 컴플리션을 스토리지 인터페이스 회로(127)의 CQ에 기입할 수 있다. 예를 들어, 제1 스토리지 장치(131)는 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드의 처리를 마친 후, 스토리지 인터페이스 회로(127)의 CQ에 컴플리션을 기입할 수 있다.In the sixth operation (⑥), the storage device set 130 may write completion indicating that the command has been processed to the CQ of the
제7 동작(⑦)에서, 스토리지 인터페이스 회로(127)는 개재 계층(126)을 통해 CQ의 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 인터페이스 회로(127)의 CQ는 가상 머신(VM)의 VCQ와 매핑될 수 있다.In the seventh operation (⑦), the
제8 동작(⑧)에서, 스토리지 가상화 코어(123)는 가상화 계층에 분배된 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다. 일부 실시 예들에서, 스토리지 가상화 코어(123)는 I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 예를 들어, 컴플리션을 가상 머신(VM)의 VCQ에 기입하는 것은 호스트 장치(110)에 실제 데이터를 저장하는 것을 의미할 수 있다. I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 VCQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 변환된 물리적 어드레스에 기초하여, 스토리지 가상화 코어(123)는 VCQ에 컴플리션을 기입할 수 있다.In an eighth operation (⑧), the
제9 동작(⑨)에서, 가상 머신(VM)은 VCQ에 기입된 컴플리션을 처리하고, 스토리지 가상화 장치(120)에게 컴플리션이 처리된 것을 알릴 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에게 컴플리션이 처리된 것을 알리고, CQ를 해제(release)할 수 있다.In a ninth operation (⑨), the virtual machine (VM) may process the completion written in the VCQ and notify the
도 4는 본 개시의 일부 실시 예들에 따른 가상 머신의 블록도이다. 도 4를 참조하면, 가상 머신(VM)이 도시된다. 가상 머신(VM)은 도 1 내지 도 3에서 설명된 복수의 가상 머신(VM)들 각각에 대응할 수 있다. 가상 머신(VM)은 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다.4 is a block diagram of a virtual machine according to some embodiments of the present disclosure. Referring to Figure 4, a virtual machine (VM) is shown. The virtual machine (VM) may correspond to each of the plurality of virtual machines (VM) described in FIGS. 1 to 3 . A virtual machine (VM) may communicate with the
가상 머신은 스토리지 장치 드라이버, SVD(storage virtualization device) 엔진 드라이버, VSQ, VCQ, 및 DMA 버퍼를 포함할 수 있다. VSQ, VCQ, 및 DMA 버퍼의 특징들은 도 3에서 설명된 VSQ, VCQ, 및 DMA 버퍼의 특징들과 유사하므로, 이에 대한 상세한 설명은 생략된다.A virtual machine may include a storage device driver, a storage virtualization device (SVD) engine driver, VSQ, VCQ, and DMA buffers. Since features of the VSQ, VCQ, and DMA buffers are similar to those of the VSQ, VCQ, and DMA buffers described in FIG. 3, detailed descriptions thereof are omitted.
스토리지 장치 드라이버는 SVD 엔진 드라이버, VSQ, 및 VCQ와 통신할 수 있다. 스토리지 장치 드라이버는 커맨드를 VSQ에 기입할 수 있다. VSQ에 기입된 커맨드는 I/O 메모리 관리 유닛(140)을 통해 스토리지 가상화 장치(120)로 제공될 수 있다. 스토리지 장치 드라이버는 VCQ에 기입된 컴플리션을 처리할 수 있다. VCQ의 컴플리션은 I/O 메모리 관리 유닛(140)을 통해 스토리지 가상화 장치(120)에 의해 기입될 수 있다.The storage device driver can communicate with the SVD engine driver, VSQ, and VCQ. The storage device driver can write commands to the VSQ. A command written to the VSQ may be provided to the
SVD 엔진 드라이버는 스토리지 장치 드라이버 및 스토리지 가상화 장치(120)와 통신할 수 있다. SVD 엔진 드라이버는 스토리지 장치 드라이버가 VSQ로 제공하는 커맨드를 인터셉트(intercept)하고, VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다. SVD 엔진 드라이버는 스토리지 장치 드라이버가 VCQ로 제공하는 컴플리션을 인터셉트하고, VCQ에 컴플리션이 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다.The SVD engine driver may communicate with the storage device driver and the
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다. 도 5를 참조하면, 스토리지 시스템의 동작 방법이 설명된다. 스토리지 시스템은 도 1 및 도 2의 스토리지 시스템(100)에 대응할 수 있다. 스토리지 시스템은 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)을 포함할 수 있다. 호스트 장치(110)는 CPU(111) 및 메모리 장치(112)를 포함할 수 있다.5 is a flowchart illustrating a method of operating a storage system according to some embodiments of the present disclosure. Referring to FIG. 5 , a method of operating the storage system will be described. The storage system may correspond to the
S110 단계에서, CPU(111)는 가상 머신(VM)을 실행할 수 있다. 가상 머신(VM), 가상 머신(VM) 상에서 실행되는 운영 체제, 애플리케이션 등은 메모리 장치(112)에 저장될 수 있다. 예를 들어, 가상 머신(VM)의 VSQ 및 VCQ는 물리적으로 호스트 장치(110)의 메모리 장치(112)에 구현될 수 있다.In step S110, the
S121 단계에서, CPU(111)는 메모리 장치(112)의 VSQ에 커맨드를 기입할 수 있다. 예를 들어, 커맨드는 읽기 커맨드, 쓰기 커맨드 등과 같은 가상 머신(VM)의 데이터 처리를 위한 커맨드일 수 있다. In step S121 , the
S122 단계에서, CPU(111)는 스토리지 가상화 장치(120)에게 VSQ의 커맨드를 알릴 수 있다. 예를 들어, CPU(111)는 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다.In step S122, the
S131 단계에서, 스토리지 가상화 장치(120)는 VSQ의 커맨드를 요청할 수 있다. 가상 머신(VM)의 VSQ의 커맨드를 읽는 것은 물리적으로 메모리 장치(112)의 데이터를 읽는 것일 수 있다. I/O 메모리 관리 유닛(140)은 VSQ에 대응하는 가상 어드레스를 메모리 장치(112)에 대응하는 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에 기초하여 메모리 장치(112)로 액세스함으로써, VSQ의 커맨드를 요청할 수 있다.In step S131, the
S132 단계에서, 스토리지 가상화 장치(120)는 메모리 장치(112)로의 액세스에 기초하여, VSQ의 커맨드를 페치할 수 있다. VSQ의 커맨드를 페치하는 것은 S131 단계의 요청에 대응하는 응답을 메모리 장치(112)로부터 수신하는 것일 수 있다. 일부 실시 예들에서, S132 단계는 I/O 메모리 관리 유닛(140)의 관여 없이 수행될 수 있다. 예를 들어, S132 단계의 응답은 S131 단계의 요청에 대한 데이터만 포함할 뿐, 가상 머신(VM)의 어드레스를 포함하지 않을 수 있다. 스토리지 가상화 장치(120)는 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 메모리 장치(112)로부터 VSQ의 커맨드를 수신할 수 있다.In step S132 , the
S133 단계에서, 스토리지 가상화 장치(120)는 커맨드를 SQ로 분배할 수 있다. SQ는 가상 머신(VM)의 VSQ와 매핑될 수 있다. 스토리지 가상화 장치(120)는 SQ 및 VSQ의 매핑을 관리할 수 있다.In step S133, the
일부 실시 예들에서, S133 단계는 가상 머신(VM)의 DMA 버퍼의 가상 어드레스(예를 들어, 페치된 커맨드에 포함된 어드레스)를 메모리 장치(112)의 물리적 어드레스로 변환하는 것을 포함할 수 있다.In some embodiments, operation S133 may include converting a virtual address (eg, an address included in a fetched command) of a DMA buffer of a virtual machine (VM) into a physical address of the
S134 단계에서, 스토리지 가상화 장치(120)는 SQ에 커맨드가 기입된 것을 스토리지 장치 세트(130)에게 알릴 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 장치 세트(130)로 출력할 수 있다.In step S134 , the
S141 단계에서, 스토리지 장치 세트(130)는 SQ의 커맨드를 요청할 수 있다. S142 단계에서, 스토리지 장치 세트(130)는 SQ의 커맨드를 페치할 수 있다. SQ의 커맨드를 페치하는 것은 S141 단계의 요청에 대한 응답을 수신하는 것일 수 있다.In step S141, the storage device set 130 may request an SQ command. In step S142, the storage device set 130 may fetch the command of SQ. Fetching the command of SQ may be receiving a response to the request of step S141.
S150 단계에서, 스토리지 장치 세트(130)는 커맨드를 처리할 수 있다. 예를 들어, 커맨드는 DMA 읽기 동작 또는 DMA 쓰기 동작일 수 있다. 스토리지 장치 세트(130)는 메모리 장치(112)와 통신하여 커맨드를 처리할 수 있다. 이 때, 상술된 바와 같이, S133 단계의 분배를 통해 가상 머신(VM)의 가상 어드레스가 메모리 장치(112)의 물리적 어드레스로 변환되었으므로, 스토리지 장치 세트(130) 및 메모리 장치(112) 사이의 통신은 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 수행될 수 있다.In step S150, the storage device set 130 may process a command. For example, the command may be a DMA read operation or a DMA write operation. The storage device set 130 may communicate with the
S161 단계에서, 스토리지 장치 세트(130)는 스토리지 가상화 장치(120)의 CQ에 컴플리션을 기입할 수 있다. 컴플리션은 커맨드가 처리된 것(즉, S150 단계가 완료된 것)을 가리킬 수 있다.In step S161 , the storage device set 130 may write the completion in the CQ of the
S162 단계에서, 스토리지 가상화 장치(120)는 CQ의 컴플리션을 가상화 계층에 분배할 수 있다. CQ는 가상 머신(VM)의 VCQ와 매핑될 수 있다. 스토리지 가상화 장치(120)는 CQ 및 VCQ의 매핑을 관리할 수 있다.In step S162, the
S163 단계에서, 스토리지 가상화 장치(120)는 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다. 가상 머신(VM)의 VCQ에 컴플리션을 기입하는 것은 물리적으로 메모리 장치(112)에 데이터를 기입하는 것일 수 있다. I/O 메모리 관리 유닛(140)은 VCQ에 대응하는 가상 어드레스를 메모리 장치(112)에 대응하는 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에 기초하여 메모리 장치(112)로 액세스함으로써, VCQ에 컴플리션을 기입할 수 있다.In step S163, the
S171 단계에서, CPU(111)는 메모리 장치(112)의 VCQ를 폴링할 수 있다. 예를 들어, CPU(111)는 메모리 장치(112)의 VCQ에 컴플리션이 기입되었는지 여부를 주기적으로 확인할 수 있다. CPU(111)는 폴링을 통해서 가상 머신(VM)의 VCQ에 컴플리션이 기입되었다고 결정할 수 있다. 만약, CPU(111)에서 폴링을 수행하지 않는 경우, 스토리지 가상화 장치(120)는 VCQ에 컴플리션이 기입된 것을 CPU(111)에게 알리기 위해, 인터럽트를 CPU(111)로 출력할 수 있다. CPU(111)는 VCQ에 기입된 컴플리션을 처리할 수 있다.In step S171, the
S172 단계에서, CPU(111)는 VCQ의 컴플리션이 처리된 것을 스토리지 가상화 장치(120)에게 알릴 수 있다. 이 후, S173 단계에서, 스토리지 가상화 장치(120)는 CQ를 해제할 수 있고, 컴플리션이 처리된 것을 스토리지 장치 세트(130)에게 알릴 수 있다.In step S172, the
도 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, 6B, and 6C are diagrams illustrating resource allocation of a plurality of virtual machines according to some embodiments of the present disclosure. Referring to FIGS. 6A, 6B, and 6C, the first virtual machine VM1 may include queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b. The second virtual machine VM2 may include queues VSQ2a, VCQ2a, VSQ2b, and VCQ2b. The
일부 실시 예들에서, 도 6a에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 가상 머신(VM1)은 복수의 큐들을 포함할 수 있고, 제1 스토리지 인터페이스 회로는 복수의 큐들을 포함할 수 있고, 가상 머신의 복수의 큐들 및 스토리지 인터페이스 회로의 큐들은 대응 관계를 가질 수 있다.In some embodiments, as shown in FIG. 6A , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond That is, the first virtual machine VM1 may include a plurality of queues, the first storage interface circuit may include a plurality of queues, and the plurality of queues of the virtual machine and the queues of the storage interface circuit may have a corresponding relationship. can have
도 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)을 다시 리소스를 할당할 수 있다.In FIG. 6A , the second virtual machine VM2 may be an unused virtual machine. For example, the second virtual machine VM2 is created and executed by the
일부 실시 예들에서, 도 6b에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 스토리지 인터페이스 회로는 복수의 가상 머신들(VM1, VM2)을 지원할 수 있다.In some embodiments, as shown in FIG. 6B , the queues VSQ1a and VCQ1a of the first virtual machine VM1 may correspond to the queues SQ1a and CQ1a of the first storage interface circuit, respectively. The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. That is, the first storage interface circuit may support a plurality of virtual machines VM1 and 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)을 지원할 수 있다.In some embodiments, as shown in FIG. 6C , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. That is, the queue SQ1b of the first storage interface circuit may support a plurality of queues VSQ1b and VSQ2a. The queue CQ1b of the first storage interface circuit may support a plurality of queues VCQ1b and VCQ2a.
상술된 바와 같이, 도 6a, 도 6b, 및 도 6c를 참조하여, 가상 머신들의 리소스 할당이 설명되었다. 본 개시의 실시 예들에 따르면, 스토리지 가상화 장치(120)는 스토리지 장치 및 복수의 가상 머신들 사이의 유연한 매핑을 제공할 수 있다. 스토리지 가상화 장치(120)는 복수의 가상 머신들을 관리하기 위해, 복수의 가상 머신들의 큐들을 위한 어드레스들을 저장하고 관리할 수 있다. 스토리지 가상화 장치(120)는 사용하지 않는 가상 머신의 큐들을 위한 리소스 할당을 해제할 수 있고, 가상 머신을 다시 사용할 필요가 있는 경우 대응하는 가상 머신의 큐들을 위한 리소스를 다시 할당할 수 있다.As described above, resource allocation of virtual machines has been described with reference to FIGS. 6A, 6B, and 6C. According to embodiments of the present disclosure, the
도 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, 7B, and 7C are diagrams illustrating resource allocation between a plurality of virtual machines and a plurality of storage devices according to some embodiments of the present disclosure. Referring to FIGS. 7A, 7B, and 7C , the first virtual machine VM1 may include queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b. The second virtual machine VM2 may include queues VSQ2a, VCQ2a, VSQ2b, and VCQ2b. The
일부 실시 예들에서, 도 7a에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2a, CQ2a, SQ2b, CQ2b)에 대응할 수 있다. 즉, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 매핑을 제공할 수 있다.In some embodiments, as shown in FIG. 7A , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond The queues VSQ2a, VCQ2a, VSQ2b, and VCQ2b of the second virtual machine VM2 may correspond to the queues SQ2a, CQ2a, SQ2b, and CQ2b of the second storage interface circuit, respectively. That is, the
일부 실시 예들에서, 도 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)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다.In some embodiments, as shown in FIG. 7B , the queues VSQ1a and VCQ1a of the first virtual machine VM1 may correspond to the queues SQ1a and CQ1a of the first storage interface circuit, respectively. The queues VSQ1b and CQ1b of the first virtual machine VM1 may correspond to the queues SQ2a and CQ2a of the second storage interface circuit, respectively. The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. The queues VSQ2b and VCQ2b of the second virtual machine VM2 may correspond to the queues SQ2b and CQ2b of the second storage interface circuit, respectively. That is, the
일부 실시 예들에서, 도 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)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다.In some embodiments, as shown in FIG. 7C , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. The queues VSQ2b and VCQ2b of the second virtual machine VM2 may correspond to the queues SQ2b and CQ2b of the second storage interface circuit, respectively. That is, the
상술된 바와 같이, 도 7a, 도 7b, 및 도 7c를 참조하여, 가상 머신들 및 스토리지 장치들 사이의 리소스 할당이 설명되었다. 본 개시의 실시 예들에 따르면, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다. 스토리지 가상화 장치(120)는 동일한 가상 머신에서의 커맨드(예를 들어, 읽기 커맨드, 쓰기 커맨드)를 서로 다른 스토리지 장치들로 전송할 수 있다. 스토리지 가상화 장치(120)는 동일한 스토리지 장치로부터의 컴플리션을 서로 다른 가상 머신들로 전송할 수 있다. 새로운 스토리지 장치가 추가되는 경우, 스토리지 가상화 장치(120)는 기존 스토리지 장치 및 추가된 스토리지 장치에 대해 유연하게 리소스를 할당하거나, 또는 유연하게 리소스 할당을 해제할 수 있다.As described above, resource allocation between virtual machines and storage devices has been described with reference to FIGS. 7A, 7B, and 7C. According to embodiments of the present disclosure, the
도 8은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다. 도 8을 참조하면, 스토리지 가상화 장치의 동작 방법이 설명된다. 스토리지 가상화 장치는 도 1, 도 2, 도 3, 도 5, 도 6a, 도 6b, 도 6c, 도 7a, 도 7b, 및 도 7c의 스토리지 가상화 장치(120)에 대응할 수 있다. 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신할 수 있다. 스토리지 가상화 장치는 SQ 및 CQ를 포함할 수 있다. 스토리지 가상화 장치는 호스트 장치에 의해 실행되는 가상 머신을 지원할 수 있다. 가상 머신은 VSQ 및 VCQ를 포함할 수 있다.8 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure. Referring to FIG. 8 , a method of operating a storage virtualization device will be described. The storage virtualization device may correspond to the
S210 단계에서, 스토리지 가상화 장치는 가상 머신의 VSQ의 커맨드를 페치할 수 있다. 일부 실시 예들에서, S210 단계는, 호스트 장치로부터 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 수신하는 것, 도어벨에 응답하여 VSQ의 커맨드를 호스트 장치에게 요청하는 것, 그리고 호스트 장치로부터 요청에 대한 응답으로 VSQ의 커맨드를 수신하는 것을 포함할 수 있다.In step S210, the storage virtualization device may fetch a VSQ command of the virtual machine. In some embodiments, step S210 includes receiving a doorbell indicating that a command has been written to the VSQ from the host device, requesting a VSQ command to the host device in response to the doorbell, and responding to the request from the host device. It may include receiving a command of the VSQ in response.
S220 단계에서, 스토리지 가상화 장치는 페치된 커맨드를 SQ로 분배할 수 있다. 가상 머신의 VSQ 및 스토리지 가상화 장치의 SQ는 매핑될 수 있다. 스토리지 가상화 장치는 VSQ 및 SQ의 매핑을 관리할 수 있다. 일부 실시 예들에서, S220 단계는, SQ의 커맨드에 포함된, 가상 머신의 가상 어드레스를 호스트 장치의 물리적 어드레스로 변환하는 것을 포함할 수 있다.In step S220, the storage virtualization device may distribute the fetched command to SQ. The VSQ of the virtual machine and the SQ of the storage virtualization device may be mapped. The storage virtualization device can manage the mapping of VSQ and SQ. In some embodiments, step S220 may include converting a virtual address of the virtual machine included in the SQ command into a physical address of the host device.
S230 단계에서, 스토리지 가상화 장치는 SQ의 커맨드를 스토리지 장치 세트로 제공할 수 있다. 스토리지 장치 세트는 SQ의 커맨드를 처리할 수 있다. 예를 들어, 스토리지 장치 세트는 가상 머신의 DMA 버퍼와 데이터를 통신함으로써 SQ의 커맨드를 처리할 수 있다.In step S230, the storage virtualization device may provide the SQ command to the storage device set. A set of storage devices may process the commands of SQ. For example, a set of storage devices may process commands from the SQ by communicating data with a DMA buffer of a virtual machine.
S240 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 컴플리션을 수신할 수 있다. 컴플리션은 스토리지 가상화 장치의 CQ에 기입될 수 있다. 컴플리션은 S230 단계의 SQ의 커맨드가 처리된 것을 가리킬 수 있다.In step S240, the storage virtualization device may receive a completion from the storage device set. Completion may be written to the CQ of the storage virtualization device. Completion may indicate that the SQ command of step S230 has been processed.
S250 단계에서, 스토리지 가상화 장치는 CQ의 커맨드를 가상화 계층으로 분배할 수 있다. 가상 머신의 VCQ 및 스토리지 가상화 장치의 CQ는 매핑될 수 있다. 스토리지 가상화 장치는 VCQ 및 CQ의 매핑을 관리할 수 있다.In step S250, the storage virtualization device may distribute the CQ command to the virtualization layer. The VCQ of the virtual machine and the CQ of the storage virtualization device may be mapped. The storage virtualization device may manage the mapping of VCQ and CQ.
S260 단계에서, 스토리지 가상화 장치는 분배된 컴플리션을 가상 머신의 VCQ에 기입할 수 있다. 일부 실시 예들에서, S260 단계는, 호스트 장치로부터 VCQ에 기입된 컴플리션이 처리된 것을 가리키는 제1 도어벨을 수신하는 것, 그리고 제1 도어벨에 기초하여, CQ에 기입된 컴플리션이 처리된 것을 가리키는 제2 도어벨을 스토리지 장치 세트로 출력하는 것을 더 포함할 수 있다.In step S260, the storage virtualization device may write the distributed completion into the VCQ of the virtual machine. In some embodiments, step S260 includes receiving a first doorbell indicating that the completion written in the VCQ has been processed from the host device, and based on the first doorbell, the completion written in the CQ is It may further include outputting a second doorbell indicating the processed one to the set of storage devices.
도 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)를 포함할 수 있다.9 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure. Referring to FIG. 9 , a method of operating a storage virtualization device will be described. The storage virtualization device may correspond to the
S311 단계에서, 스토리지 가상화 장치는 제1 VSQ(VSQ1)의 제1 커맨드를 페치할 수 있다. S312 단계에서, 스토리지 가상화 장치는 페치된 제1 커맨드를 제1 SQ(SQ1)로 분배하고, 그리고 제1 SQ(SQ1)의 제1 커맨드를 스토리지 장치 세트로 제공할 수 있다. In step S311, the storage virtualization device may fetch a first command of a first VSQ (VSQ1). In step S312 , the storage virtualization device may distribute the fetched first command to the first SQ (SQ1) and provide the first command of the first SQ (SQ1) to the storage device set.
S313 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 제1 컴플리션을 수신할 수 있다. 제1 컴플리션은 스토리지 가상화 장치의 제1 CQ(CQ1)에 기입될 수 있다. 제1 컴플리션은 S312 단계의 제1 SQ(SQ1)의 커맨드가 처리된 것을 가리킬 수 있다. 스토리지 가상화 장치는 제1 CQ(CQ1)의 제1 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 가상화 장치는 분배된 제1 컴플리션을 제1 VCQ(VCQ1)에 기입할 수 있다.In step S313, the storage virtualization device may receive a first completion from the storage device set. The first completion may be written in the first CQ (CQ1) of the storage virtualization device. The first completion may indicate that the command of the first SQ (SQ1) of step S312 has been processed. The storage virtualization apparatus may distribute the first completion of the first CQ (CQ1) to the virtualization layer. The storage virtualization device may write the distributed first completion into the first VCQ (VCQ1).
S321 단계에서, 스토리지 가상화 장치는 제2 VSQ(VSQ2)의 제2 커맨드를 페치할 수 있다. S322 단계에서, 스토리지 가상화 장치는 페치된 제2 커맨드를 제2 SQ(SQ2)로 분배하고, 그리고 제2 SQ(SQ2)의 제2 커맨드를 스토리지 장치 세트로 제공할 수 있다.In step S321, the storage virtualization device may fetch a second command of a second VSQ (VSQ2). In step S322 , the storage virtualization device may distribute the fetched second command to the second SQ (SQ2) and provide the second command of the second SQ (SQ2) to the storage device set.
S323 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 제2 컴플리션을 수신할 수 있다. 제2 컴플리션은 스토리지 가상화 장치의 제2 CQ(CQ2)에 기입될 수 있다. 제2 컴플리션은 S322 단계의 제2 SQ(SQ2)의 커맨드가 처리된 것을 가리킬 수 있다. 스토리지 가상화 장치는 제2 CQ(CQ2)의 제2 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 가상화 장치는 분배된 제2 컴플리션을 제2 VCQ(VCQ2)에 기입할 수 있다.In step S323, the storage virtualization device may receive a second completion from the storage device set. The second completion may be written to the second CQ (CQ2) of the storage virtualization device. The second completion may indicate that the command of the second SQ (SQ2) of step S322 has been processed. The storage virtualization apparatus may distribute the second completion of the second CQ (CQ2) to the virtualization layer. The storage virtualization device may write the distributed second completion into the second VCQ (VCQ2).
일부 실시 예들에서, 스토리지 가상화 장치는 하나의 가상 머신 및 하나의 스토리지 장치에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1, VSQ2, VCQ2)은 복수의 가상 머신들 중 동일한 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1, SQ2, CQ2)은 스토리지 장치 세트 내의 동일한 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization device may provide multiple mappings for one virtual machine and one storage device. For example, the queues VSQ1 , VCQ1 , VSQ2 , and VCQ2 may be included in the same virtual machine among a plurality of virtual machines. The queues SQ1 , CQ1 , SQ2 , and CQ2 may correspond to the same storage device in the set of storage devices.
일부 실시 예들에서, 스토리지 가상화 장치는 하나의 가상 머신 및 복수의 스토리지 장치들에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1, VSQ2, VCQ2)은 복수의 가상 머신들 중 동일한 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1)은 스토리지 장치 세트 내의 제1 스토리지 장치에 대응할 수 있다. 큐들(SQ2, CQ2)은 스토리지 장치 세트 내의 제2 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization device may provide multiple mappings for one virtual machine and multiple storage devices. For example, the queues VSQ1 , VCQ1 , VSQ2 , and VCQ2 may be included in the same virtual machine among a plurality of virtual machines. The queues SQ1 and CQ1 may correspond to a first storage device in the storage device set. The queues SQ2 and CQ2 may correspond to a second storage device in the storage device set.
일부 실시 예들에서, 스토리지 가상화 장치는 복수의 가상 머신들 및 하나의 스토리지 장치에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1)은 복수의 가상 머신들 중 제1 가상 머신에 포함될 수 있다. 큐들(VSQ2, VCQ2)은 복수의 가상 머신들 중 제2 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1, SQ2, CQ2)은 스토리지 장치 세트 내의 동일한 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization device may provide multiple mappings for multiple virtual machines and one storage device. For example, the queues VSQ1 and VCQ1 may be included in a first virtual machine among a plurality of virtual machines. The queues VSQ2 and VCQ2 may be included in a second virtual machine among a plurality of virtual machines. The queues SQ1 , CQ1 , SQ2 , and CQ2 may correspond to the same storage device in the set of storage devices.
일부 실시 예들에서, 스토리지 가상화 장치는 복수의 가상 머신들 및 복수의 스토리지 장치들에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1)은 복수의 가상 머신들 중 제1 가상 머신에 포함될 수 있다. 큐들(VSQ2, VCQ2)은 복수의 가상 머신들 중 제2 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1)은 스토리지 장치 세트 내의 제1 스토리지 장치에 대응할 수 있다. 큐들(SQ2, CQ2)은 스토리지 장치 세트 내의 제2 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization apparatus may provide a plurality of mappings for a plurality of virtual machines and a plurality of storage devices. For example, the queues VSQ1 and VCQ1 may be included in a first virtual machine among a plurality of virtual machines. The queues VSQ2 and VCQ2 may be included in a second virtual machine among a plurality of virtual machines. The queues SQ1 and CQ1 may correspond to a first storage device in the storage device set. The queues SQ2 and CQ2 may correspond to a second storage device in the storage device set.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing are specific embodiments for carrying out the present invention. The present invention will include not only the above-described embodiments, but also embodiments that can be simply or easily changed in design. In addition, the present invention will also include techniques that can be easily modified and practiced using the embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments and should not be defined by the following claims as well as those equivalent to the claims of this invention.
Claims (20)
상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하거나 상기 제2 가상 머신의 제2 VSQ의 제2 커맨드를 패치하는 단계;
페치된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 제1 SQ 및 상기 제2 SQ 중 적어도 하나로 분배하는 단계;
상기 제1 SQ 또는 상기 제2 SQ의 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트의 제1 스토리지 장치 및 제2 스토리지 장치 중 하나로 제공하는 단계;
상기 제1 스토리지 장치 및 상기 제2 스토리지 장치 중 하나로부터 상기 제1 커맨드 또는 상기 제2 커맨드가 처리된 것을 가리키는 제1 컴플리션 또는 제2 컴플리션을 수신하여 상기 제1 CQ 또는 상기 제2 CQ에 기입하는 단계;
상기 제1 CQ 또는 상기 제2 CQ의 상기 제1 컴플리션 또는 상기 제2 컴플리션을 가상화 계층에 분배하는 단계; 및
상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하거나 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하는 단계를 포함하고,
상기 제1 SQ 및 상기 제1 CQ는 상기 제1 스토리지 장치에 대응되고, 상기 제2 SQ 및 상기 제2 CQ는 상기 제2 스토리지 장치에 대응되는 방법.a first virtual machine that communicates with a host device and a set of storage devices, includes a first submission queue (SQ) and a first completion queue (CQ) and a second SQ and a second CQ, and is executed by the host device; and In the operating method of a storage virtualization device supporting a second virtual machine:
fetching a first command of a first virtual submission queue (VSQ) of the first virtual machine or fetching a second command of a second VSQ of the second virtual machine;
distributing the fetched first command or the second command to at least one of the first SQ and the second SQ;
providing the first command or the second command of the first SQ or the second SQ to one of a first storage device and a second storage device of the set of storage devices;
The first CQ or the second completion is received from one of the first storage device and the second storage device, indicating that the first command or the second command has been processed. writing CQ;
distributing the first completion or the second completion of the first CQ or the second CQ to a virtualization layer; and
Writing the distributed first completion into a first virtual completion queue (VCQ) of the first virtual machine or writing the distributed second completion into a second VCQ of the second virtual machine do,
The first SQ and the first CQ correspond to the first storage device, and the second SQ and the second CQ correspond to the second storage device.
상기 제1 SQ 및 상기 제1 CQ은 적어도 둘 이상의 쌍으로 구비되고,
상기 제2 SQ 및 상기 제2 CQ는 적어도 둘 이상의 쌍으로 구비되는 방법.According to claim 1,
The first SQ and the first CQ are provided in pairs of at least two,
The second SQ and the second CQ are provided in pairs of at least two or more.
적어도 둘 이상의 상기 제1 SQ 및 상기 제1 CQ의 쌍 중 적어도 한 쌍의 제1 SQ 및 제1 CQ는 상기 제1 가상 머신에 대응되고, 적어도 다른 한 쌍의 제1 SQ 및 제1 CQ는 상기 제1 가상 머신 및 상기 제2 가상 머신에 공통되어 대응되는 방법.According to claim 3,
At least one pair of 1st SQ and 1st CQ among at least two pairs of 1st SQ and 1st CQ corresponds to the first virtual machine, and at least another pair of 1st SQ and 1st CQ corresponds to the first virtual machine. A method common to and corresponding to the first virtual machine and the second virtual machine.
적어도 둘 이상의 상기 제2 SQ 및 상기 제2 CQ 쌍 중 적어도 한 쌍의 제2 SQ 및 제2 CQ는 상기 제2 가상 머신에 대응되는 방법.According to claim 4,
At least one pair of second SQ and second CQ among at least two pairs of second SQ and second CQ corresponds to the second virtual machine.
적어도 둘 이상의 상기 제2 SQ 및 상기 제2 CQ 쌍 중 적어도 한 쌍의 제2 SQ 및 제2 CQ는 상기 제2 가상 머신에 대응되고, 적어도 다른 한 쌍의 제2 SQ 및 제2 CQ는 상기 제1 가상 머신 및 상기 제2 가상 머신에 공통되어 대응되는 방법.According to claim 4,
At least one pair of second SQ and second CQ among at least two pairs of second SQ and second CQ corresponds to the second virtual machine, and at least another pair of second SQ and second CQ corresponds to the second virtual machine. A method common to and corresponding to the first virtual machine and the second virtual machine.
상기 제1 가상 머신의 제1 VSQ의 제1 커맨드 및 상기 제2 가상 머신의 제1 VSQ의 제2 커맨드 중 적어도 하나를 페치하는 단계는:
상기 호스트 장치로부터 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 가리키는 제1 도어벨(doorbell)을 수신하는 단계;
상기 제1 도어벨에 기초하여 상기 제1 VSQ의 상기 제1 커맨드의 제1 요청을 상기 호스트 장치로 출력하는 단계; 및
상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계를 포함하는 방법.According to claim 1,
Fetching at least one of a first command of a first VSQ of the first virtual machine and a second command of a first VSQ of the second virtual machine may include:
receiving a first doorbell indicating that the first command is written in the first VSQ from the host device;
outputting a first request of the first command of the first VSQ to the host device based on the first doorbell; and
fetching the first command of the first VSQ of the first virtual machine from the host device.
상기 스토리지 가상화 장치는 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 커맨드를 페치하는 단계를 포함하는 방법.According to claim 8,
The storage virtualization device further communicates with an input/output (I/O) memory management unit;
The step of outputting a first request of the first command of the first VSQ to the host device based on the first doorbell:
Through the I/O memory management unit, a first virtual address corresponding to the first request of the first command of the first VSQ is converted into a first physical address, and the converted first physical address and the first outputting the first request of the first command of the first VSQ to the host device based on one doorbell; and
Fetching the first command of the first VSQ of the first virtual machine from the host device comprises:
and fetching the first command of the first VSQ of the first virtual machine from the host device without address translation by the I/O memory management unit.
상기 스토리지 가상화 장치는 I/O(input/output) 메모리 관리 유닛과 더 통신하고, 그리고
상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하거나 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 상기 제2 VCQ에 기입하는 단계는:
상기 I/O 메모리 관리 유닛을 통해, 상기 분배된 제1 컴플리션에 대응하는 제2 가상 어드레스가 제2 물리적 어드레스로 변환되고, 상기 변환된 제2 물리적 어드레스에 기초하여, 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하는 단계를 포함하는 방법.According to claim 1,
The storage virtualization device further communicates with an input/output (I/O) memory management unit, and
Writing the distributed first completion to the first VCQ of the first virtual machine or writing the distributed second completion to the second VCQ of the second virtual machine comprises:
Through the I/O memory management unit, a second virtual address corresponding to the distributed first completion is converted into a second physical address, and based on the converted second physical address, the distributed first completion and writing a completion to the first VCQ of the first virtual machine.
페치된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 제1 SQ 및 상기 제2 SQ 중 적어도 하나로 분배하는 단계는:
상기 페치된 제1 커맨드에 포함된, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 제3 가상 어드레스를 제3 물리적 어드레스로 변환하는 단계를 포함하는 방법.According to claim 1,
Distributing the fetched first command or the second command to at least one of the first SQ and the second SQ includes:
and converting a third virtual address of a direct memory access (DMA) buffer of the first virtual machine, included in the fetched first command, into a third physical address.
상기 제1 SQ 또는 상기 제2 SQ의 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트로 제공하는 단계는:
상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 SQ에 상기 제1 커맨드가 기입된 것을 가리키는 제2 도어벨을 출력하는 단계;
상기 제1 스토리지 장치로부터 상기 제1 SQ의 상기 제1 커맨드의 제2 요청을 수신하는 단계; 및
상기 제2 요청에 기초하여 상기 제1 SQ의 상기 제1 커맨드를 포함하는 응답을 상기 제1 스토리지 장치로 출력하는 단계를 포함하는 방법.According to claim 1,
Providing the first command or the second command of the first SQ or the second SQ to the storage device set includes:
outputting a second doorbell indicating that the first command is written in the first SQ to a doorbell register of a first storage device of the set of storage devices;
receiving a second request for the first command of the first SQ from the first storage device; and
and outputting a response including the first command of the first SQ to the first storage device based on the second request.
상기 호스트 장치로부터 상기 제1 VCQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제3 도어벨을 수신하는 단계를 더 포함하는 방법.According to claim 1,
and receiving, from the host device, a third doorbell indicating that the first completion written in the first VCQ has been processed.
상기 제3 도어벨에 기초하여, 상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 CQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제4 도어벨을 출력하는 단계를 더 포함하는 방법.According to claim 13,
outputting a fourth doorbell indicating that the first completion written in the first CQ has been processed, to a doorbell register of a first storage device of the storage device set, based on the third doorbell; How to include more.
상기 스토리지 가상화 장치는 FPGA(field programmable gate array)로 구현되는 방법.According to claim 1,
The storage virtualization device is implemented as a field programmable gate array (FPGA).
상기 호스트 장치와 통신하고, 상기 제1 가상 머신 및 상기 제2 가상 머신과의 인터페이스를 제공하도록 구성된 SR-IOV(single root input/output virtualization) 어댑터;
상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하도록 구성된 제1 스토리지 가상화 코어 및 상기 제2 가상 머신의 제2 VSQ의 제2 커맨드를 페치하도록 구성된 제2 스토리지 가상화 코어;
상기 제1 가상 머신 또는 상기 제2 가상 머신과 상기 스토리지 장치 세트 사이의 매핑 정보를 포함하는 개재(interposition) 계층; 및
상기 스토리지 장치 세트와 통신하도록 구성되고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)와 제2 SQ 및 제2 CQ를 포함하는 스토리지 인터페이스 회로를 포함하되,
상기 스토리지 인터페이스 회로는:
상기 제1 스토리지 가상화 코어 또는 상기 제2 스토리지 가상화 코어로부터 상기 개재 계층을 통해 상기 제1 SQ 또는 상기 제2 SQ로 분배된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트의 제1 스토리지 장치 및 제2 스토리지 장치 중 하나로 제공하고;
상기 제1 스토리지 장치 및 상기 제2 스토리지 장치 중 하나로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션 또는 상기 제2 커맨드가 처리된 것을 가리키는 제2 컴플리션을 수신하여, 상기 제1 CQ 또는 상기 제2 CQ에 기입하고; 그리고
상기 개재 계층을 통해 상기 제1 CQ 또는 상기 제2 CQ의 상기 제1 컴플리션또는 상기 제2 컴플리션을 가상화 계층에 분배하도록 더 구성되고, 그리고
상기 제1 스토리지 가상화 코어는 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하고 상기 제2 스토리지 가상화 코어는 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하도록 더 구성된 스토리지 가상화 장치.A storage virtualization device that communicates with a host device and a set of storage devices and supports a first virtual machine and a second virtual machine executed by the host device, comprising:
a single root input/output virtualization (SR-IOV) adapter configured to communicate with the host device and provide an interface with the first virtual machine and the second virtual machine;
A first storage virtualization core configured to fetch a first command of a first virtual submission queue (VSQ) of the first virtual machine and a second storage virtualization core configured to fetch a second command of a second VSQ of the second virtual machine. storage virtualization core;
an interposition layer including mapping information between the first virtual machine or the second virtual machine and the storage device set; and
a storage interface circuit configured to communicate with the set of storage devices and including a first submission queue (SQ) and a first completion queue (CQ) and a second SQ and a second CQ;
The storage interface circuitry:
The first command or the second command distributed from the first storage virtualization core or the second storage virtualization core to the first SQ or the second SQ through the intervening layer is transmitted to a first storage device of the storage device set. and a second storage device;
A first completion indicating that the first command has been processed or a second completion indicating that the second command has been processed is received from one of the first storage device and the second storage device, write in CQ or the second CQ; and
and distribute the first completion or the second completion of the first CQ or the second CQ to a virtualization layer through the intervening layer, and
The first storage virtualization core writes the distributed first completion to a first virtual completion queue (VCQ) of the first virtual machine, and the second storage virtualization core writes the distributed second completion to the first virtual machine. A storage virtualization apparatus further configured to write to a second VCQ of a second virtual machine.
상기 호스트 장치로부터 상기 SR-IOV 어댑터를 통해 상기 제1 커맨드에 대응하는 제1 도어벨을 수신하고, 그리고 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 상기 제1 스토리지 가상화 코어에게 알리도록 구성된 도어벨 레지스터;
상기 제1 스토리지 가상화 코어와 통신하고, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 가상 어드레스 및 상기 호스트 장치에 대응하는 물리적 어드레스 간의 매핑 정보를 포함하는 테이블; 및
상기 호스트 장치 및 상기 스토리지 장치 세트 사이의 상기 제1 커맨드의 처리를 지원하는 DMA 엔진을 더 포함하는 스토리지 가상화 장치.17. The method of claim 16,
Receive a first doorbell corresponding to the first command from the host device through the SR-IOV adapter, and inform the first storage virtualization core that the first command is written in the first VSQ. doorbell register;
a table communicating with the first storage virtualization core and including mapping information between a virtual address of a direct memory access (DMA) buffer of the first virtual machine and a physical address corresponding to the host device; and
The storage virtualization apparatus further comprising a DMA engine supporting processing of the first command between the host device and the set of storage devices.
상기 호스트 장치에 의해, 상기 가상 머신의 VSQ(virtual submission queue)에 커맨드가 기입된 것을 가리키는 도어벨을 생성하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 페치된 커맨드를 상기 SQ로 분배하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 SQ의 상기 커맨드를 상기 스토리지 장치 세트로 제공하는 단계;
상기 스토리지 장치 세트 및 상기 호스트 장치에 의해, 상기 커맨드를 처리하는 단계;
상기 스토리지 장치 세트에 의해, 상기 커맨드가 처리된 것을 가리키는 컴플리션을 상기 CQ에 기입하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 CQ의 상기 컴플리션을 가상화 계층에 분배하는 단계; 및
상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 VCQ(virtual completion queue)에 기입하는 단계를 포함하고,
상기 SQ 및 상기 CQ는,
상기 스토리지 장치 세트의 복수의 스토리지 장치 중 하나에 대응되는 방법.A host device running a plurality of virtual machines, a plurality of storage virtualization devices each supporting a corresponding virtual machine among the plurality of virtual machines and including a submission queue (SQ) and a completion queue (CQ), and the storage virtualization device A method of operating a storage system comprising a set of storage devices in communication with:
generating, by the host device, a doorbell indicating that a command has been written to a virtual submission queue (VSQ) of the virtual machine;
fetching, by the storage virtualization device, the command of the VSQ of the virtual machine;
distributing the fetched command to the SQ by the storage virtualization device;
providing, by the storage virtualization device, the command of the SQ to the set of storage devices;
processing the command by the set of storage devices and the host device;
writing, by the set of storage devices, to the CQ a completion indicating that the command has been processed;
distributing, by the storage virtualization device, the completion of the CQ to a virtualization layer; and
writing the distributed completion to a virtual completion queue (VCQ) of the virtual machine, by the storage virtualization device;
The SQ and the CQ are,
A method corresponding to one of a plurality of storage devices of the set of storage devices.
상기 스토리지 시스템은 상기 호스트 장치 및 상기 스토리지 가상화 장치와 통신하는 I/O(input/output) 메모리 관리 유닛을 더 포함하고,
상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계는:
상기 스토리지 가상화 장치에 의해, 상기 도어벨에 기초하여 상기 VSQ의 상기 커맨드의 요청을 생성하는 단계;
상기 I/O 메모리 관리 유닛에 의해, 상기 커맨드의 상기 요청에 대응하는 제1 가상 어드레스를 제1 물리적 어드레스로 변환하는 단계; 및
상기 호스트 장치에 의해, 상기 제1 물리적 어드레스 및 상기 요청에 기초하여, 상기 VSQ의 상기 커맨드를 상기 스토리지 가상화 장치로 제공하는 단계를 포함하고, 그리고
상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 상기 VCQ에 기입하는 단계는:
상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 I/O 메모리 관리 유닛으로 제공하는 단계;
상기 I/O 메모리 관리 유닛에 의해, 상기 분배된 컴플리션에 대응하는 제2 가상 어드레스를 제2 물리적 어드레스로 변환하는 단계; 및
상기 호스트 장치에 의해, 상기 제2 물리적 어드레스에 기초하여 상기 분배된 컴플리션을 상기 VCQ에 저장하는 단계를 포함하는 방법.According to claim 19,
The storage system further includes an input/output (I/O) memory management unit communicating with the host device and the storage virtualization device;
Fetching, by the storage virtualization device, the command of the VSQ of the virtual machine:
generating, by the storage virtualization device, a request for the command of the VSQ based on the doorbell;
converting, by the I/O memory management unit, a first virtual address corresponding to the request of the command into a first physical address; and
providing, by the host device, the command of the VSQ to the storage virtualization device based on the first physical address and the request; and
Writing, by the storage virtualization device, the distributed completion to the VCQ of the virtual machine:
providing the distributed completion to the I/O memory management unit by the storage virtualization device;
converting, by the I/O memory management unit, a second virtual address corresponding to the distributed completion into a second physical address; and
and storing, by the host device, the distributed completion in the VCQ based on the second physical address.
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 (en) | 2020-11-03 | 2021-10-28 | Storage virtualization apparatus, operation method thereof, and operation method of system having the same |
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 KR20220059906A (en) | 2022-05-10 |
KR102532099B1 true KR102532099B1 (en) | 2023-05-12 |
Family
ID=81591687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210092789A KR102532099B1 (en) | 2020-11-03 | 2021-07-15 | Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102532099B1 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008152783A (en) * | 2006-12-19 | 2008-07-03 | Internatl Business Mach Corp <Ibm> | Method, program, and system for communicating between first host system and second host system in data processing system (system and method for communication between host systems using transaction protocol and shared memory) |
JP2020091554A (en) * | 2018-12-04 | 2020-06-11 | 株式会社日立製作所 | Multi-node storage system and queue control method of multi-node storage system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102308782B1 (en) * | 2014-08-19 | 2021-10-05 | 삼성전자주식회사 | Memory controller, storage device, server virtualization system, and storage device identification in server virtualization system |
KR102336443B1 (en) * | 2015-02-04 | 2021-12-08 | 삼성전자주식회사 | Storage device and user device supporting virtualization function |
-
2021
- 2021-07-15 KR KR1020210092789A patent/KR102532099B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008152783A (en) * | 2006-12-19 | 2008-07-03 | Internatl Business Mach Corp <Ibm> | Method, program, and system for communicating between first host system and second host system in data processing system (system and method for communication between host systems using transaction protocol and shared memory) |
JP2020091554A (en) * | 2018-12-04 | 2020-06-11 | 株式会社日立製作所 | Multi-node storage system and queue control method of multi-node storage system |
Also Published As
Publication number | Publication date |
---|---|
KR20220059906A (en) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11947991B2 (en) | Methods and apparatus to process commands from virtual machines | |
CN107209681B (en) | Storage device access method, device and system | |
CN105993009B (en) | The method and apparatus that MSI-X is interrupted are transmitted by computing resource of the non-transparent bridge into PCIe cluster | |
JP5608243B2 (en) | Method and apparatus for performing I / O processing in a virtual environment | |
JP6004608B2 (en) | Method, apparatus, and computer program for virtualizing host USB adapter (virtualization of host USB adapter) | |
US20140164666A1 (en) | Server and method for sharing peripheral component interconnect express interface | |
JP6040101B2 (en) | Storage device control method, storage device, and information processing device | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
US20200142848A1 (en) | Management controller including virtual usb host controller | |
CN104636076A (en) | Distributed block device driving method and system for cloud storage | |
CN115495389B (en) | Memory controller, calculation memory device, and operation method of calculation memory device | |
EP4053706A1 (en) | Cross address-space bridging | |
WO2020135504A1 (en) | Virtualization method and apparatus | |
US10990436B2 (en) | System and method to handle I/O page faults in an I/O memory management unit | |
KR102529761B1 (en) | PCIe DEVICE AND OPERATING METHOD THEREOF | |
US11150928B2 (en) | Hypervisor translation bypass | |
KR20220061983A (en) | Provides interrupts from the I/O memory management unit to the guest operating system | |
KR102532099B1 (en) | Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same | |
TWI797022B (en) | Storage controller, computational storage device, and operational method of computational storage device | |
US20230052808A1 (en) | Hardware Interconnect With Memory Coherence | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
EP3671472B1 (en) | Data access method and device | |
CN115454902A (en) | NVME communication system and method based on PCIE interface | |
Zhang et al. | NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same |
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 |