KR102289937B1 - Method of data processing of virtual storage - Google Patents

Method of data processing of virtual storage Download PDF

Info

Publication number
KR102289937B1
KR102289937B1 KR1020200107769A KR20200107769A KR102289937B1 KR 102289937 B1 KR102289937 B1 KR 102289937B1 KR 1020200107769 A KR1020200107769 A KR 1020200107769A KR 20200107769 A KR20200107769 A KR 20200107769A KR 102289937 B1 KR102289937 B1 KR 102289937B1
Authority
KR
South Korea
Prior art keywords
virtual
data
command
pdu
virtualized
Prior art date
Application number
KR1020200107769A
Other languages
Korean (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 KR1020200107769A priority Critical patent/KR102289937B1/en
Priority to KR1020210104801A priority patent/KR20220027019A/en
Application granted granted Critical
Publication of KR102289937B1 publication Critical patent/KR102289937B1/en

Links

Images

Classifications

    • 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/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

A method of processing the data of a virtual storage according to an aspect of the present invention that provides a storage space to an information terminal or a network through virtual storage virtualized a plurality of storage devices, includes: a separation step of separating a received I/O request packet into the command unit and data unit of a protocol data unit (PDU); a generation step of generating at least one or more virtualized data by parallel processing the separated command unit and data unit; and a transmission step of transmitting the virtualized data generated in the generation step to the destination of the I/O request packet.

Description

가상 스토리지의 데이터 처리 방법{METHOD OF DATA PROCESSING OF VIRTUAL STORAGE}How to process data in virtual storage

본 발명은 가상 스토리지의 데이터 처리 방법에 관한 것으로, 상세하게는, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 관한 것이다.The present invention relates to a data processing method of a virtual storage, and more particularly, to a data processing method of a virtual storage that provides a storage space to an information terminal or a network through a virtual storage obtained by virtualizing a plurality of storage devices.

데이터의 가상화는 데이터 스토리지로 사용되는 일부 독립 디스크(예를 들어, Hard disk, Solid State Disk 등)를 어레이(Array)시켜 단일의 스토리지 형태로 인식시키는 RAID(Redundant Array of Independent Disk) 기술에 기반한다.Data virtualization is based on RAID (Redundant Array of Independent Disk) technology that recognizes a single storage form by arranging some independent disks (eg, hard disks, solid state disks, etc.) used as data storage. .

최근에는 상술한 RAID 기술을 네트워크망 상에 구현한 가상 스토리지 기술이 개발되었다. Recently, a virtual storage technology in which the above-described RAID technology is implemented on a network has been developed.

일반적으로 데이터를 가상화할 때 시스템이 작동 중인 프로토콜을 기반으로 데이터의 대규모 입출력(I/O)으로 데이터를 처리하고, 데이터처리 및 스토리지 최적화를 위해 여러 개의 I/O를 결합하여 하나의 큰 I/O를 생성하여 처리하기 때문에 총 I/O 수가 증가하며, 이러한 과정에서 모든 I/O가 수신될 때까지 대기해야 되어 대기에 의한 처리 지연(Latency)가 발생되는 문제점이 있었다.In general, when virtualizing data, the system processes data with large input/output (I/O) of data based on the protocol in which it is operating, and combines multiple I/Os to optimize data processing and storage into one large I/O. Since O is generated and processed, the total number of I/Os increases, and in this process, it has to wait until all I/Os are received, so there is a problem in that processing latency occurs due to waiting.

이러한 문제점을 해결하기 위해 대한민국 등록특허공보 제10-1564712호(출원일: 2015.04.01., 공고일: 2015.11.02., 이하‘종래기술’이라 함.)에서는 자기 디스크보다 빠른 데이터 엑세스 및 전송이 가능한 플래시 드라이브를 어레이(Array)시켜 전체 I/O 처리 속도를 증대시키는 기술이 개시된 바 있다.In order to solve this problem, in Korean Patent Publication No. 10-1564712 (application date: April 1, 2015, publication date: November 2, 2015, hereinafter referred to as 'prior art'), faster data access and transmission than magnetic disks are possible. A technique for increasing the overall I/O processing speed by arranging flash drives has been disclosed.

하지만, 종래기술은 데이터 처리를 높이기 위해 플래시 드라이브를 어레이시켜 사용하기 때문에 저장영역의 용량 대비 비용이 큰 기술이고, 기존의 자기 디스크 대비 교체 주기 또한 짧기 때문에, 구축 및 유지보수가 어려운 문제점이 있다.However, since the prior art uses an array of flash drives to increase data processing, the cost is high compared to the capacity of the storage area, and since the replacement cycle is also short compared to the conventional magnetic disk, construction and maintenance are difficult.

따라서, 기존의 자기 디스크를 포함하는 다양한 복수의 스토리지 장치를 통해 구축된 가상 스토리지의 I/O 처리 효율을 높이기 위한 가상 스토리지의 데이터 처리 기술의 개발이 요구되는 실정이다.Accordingly, there is a need to develop a data processing technology of a virtual storage to increase I/O processing efficiency of a virtual storage built through a plurality of storage devices including conventional magnetic disks.

본 발명은 상술한 문제점을 해결하기 위해, 가상화 운영 환경에서의 효율적인 데이터 처리가 가능한 가상 스토리지 기술을 제공하는 것을 목적으로 한다.An object of the present invention is to provide a virtual storage technology capable of efficiently processing data in a virtualized operating environment in order to solve the above problems.

본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 관한 것으로, 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위와 데이터 단위로 분리하는 분리단계; 분리된 상기 명령 단위와 데이터 단위를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 생성단계; 및 상기 생성단계에서 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 전송단계;를 포함하며, 상기 생성단계는, 상기 명령 단위로부터 적어도 하나 이상의 가상 명령을 생성하는 명령생성단계; 및 상기 명령생성단계에서 생성된 가상 명령에 따라 상기 데이터 단위를 가공하여 가상화된 데이터를 생성하는 데이터생성단계;를 포함하는 것을 특징으로 한다.A data processing method of a virtual storage according to a preferred embodiment of the present invention relates to a data processing method of a virtual storage that provides a storage space to an information terminal or a network through a virtual storage virtualized a plurality of storage devices, Separating the /O request packet into a command unit and a data unit of a protocol data unit (PDU); generating at least one virtualized data by parallel processing the separated command unit and data unit; and a transmitting step of transmitting the virtualized data generated in the generating step to the destination of the I/O request packet, wherein the generating step includes: a command generating step of generating at least one virtual command from the command unit; and a data generating step of generating virtualized data by processing the data unit according to the virtual command generated in the command generating step.

여기서, 상기 분리단계는 수신 중인 I/O 요청이 이전에 이용된 프로토콜을 통해 이루어진 것인지의 여부를 확인하여, 해당 프로토콜을 인터넷 프로토콜(Internet Protocol, IP)로 변경하는 변경단계;를 포함하는 것을 특징으로 한다.Here, the separating step includes a changing step of changing the corresponding protocol to an Internet Protocol (IP) by checking whether the I/O request being received is made through a previously used protocol. do it with

또한, 상기 전송단계는 I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야하는 레거시 장치인 경우, I/O 요청 패킷 전부가 수신되는 동안 생성된 가상화된 데이터를 축적하고, 축적된 가상화된 데이터를 상기 레거시 장치의 데이터 전송 시퀀스에 대응하는 순서로 컴파일하여 가상화된 데이터 생성하여 상기 레거시 장치에 전송하는 단계인 것을 특징으로 한다.In addition, in the transmitting step, when the destination of the I/O request is a legacy device to which data is to be transmitted according to a preset sequence, the virtualized data generated while all I/O request packets are received is accumulated, and the accumulated virtualization Compiling the data obtained in an order corresponding to the data transmission sequence of the legacy device, generating virtualized data, and transmitting the generated data to the legacy device.

그리고, 상기 명령생성단계는, 상기 분리단계에서 분리된 명령 단위를 수신하는 명령단위수신단계; 상기 가상 스토리지에 명령을 전달하는 복수의 가상 드라이버 중 상기 명령 단위의 헤더 정보를 확인하여, 상기 명령단위수신단계에서 수신한 명령 단위와 관련된 가상 드라이버의 고유한 식별정보를 추출하는 식별정보추출단계; 상기 식별정보를 통해 상기 명령 단위에 참조될 가상 드라이버가 존재하는지를 확인하고, 확인된 가상 드라이버에 명령 단위를 전달하는 명령전달확인단계; 상기 명령 단위 및 상기 명령전달확인단계에서 확인된 가상 드라이버와 관련된 적어도 하나 이상의 가상 명령을 생성하는 가상명령생성단계; 및 상기 가상명령생성단계에서 생성된 가상 명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포하는 가상명령배포단계;를 포함하는 것을 특징으로 한다.In addition, the command generating step may include: a command unit receiving step of receiving the command unit separated in the separating step; an identification information extraction step of extracting unique identification information of a virtual driver related to the command unit received in the command unit receiving step by checking header information of the command unit among a plurality of virtual drivers that transmit a command to the virtual storage; a command delivery confirmation step of confirming whether a virtual driver to be referenced in the command unit exists through the identification information, and transferring the command unit to the checked virtual driver; a virtual command generation step of generating at least one virtual command related to the command unit and the virtual driver identified in the command delivery checking step; and a virtual command distribution step of judging whether the virtual command generated in the virtual command generating step is appropriate, and distributing the virtual command only when appropriate.

이때, 상기 명령전달확인단계는 상기 명령 단위에 참조될 가상 드라이버가 존재하는지 확인하고, 확인된 가상 드라이버의 식별정보와 상기 명령 단위를 매칭시켜, 가상 드라이버 테이블을 생성하는 단계인 것을 특징으로 한다.In this case, the command delivery check step is characterized in that the step of generating a virtual driver table by checking whether a virtual driver to be referenced in the command unit exists, matching the identified virtual driver identification information with the command unit.

덧붙여, 상기 가상명령배포단계는 상기 가상명령생성단계에서 생성된 적어도 하나 이상의 가상 명령과 관련된 가상 드라이버가 해당 가상 명령을 가상 스토리지에 전달할 수 있는 경우, 해당 가상 명령을 배포하는 단계인 것을 특징으로 한다.In addition, the virtual command distribution step is a step of distributing the virtual command when the virtual driver related to at least one or more virtual commands generated in the virtual command generation step can deliver the virtual command to the virtual storage. .

또한, 상기 가상명령배포단계는 상기 식별정보추출단계에서 특정 명령 단위로부터 추출한 헤더 정보 및 식별정보와 해당 명령 단위에 의해 배포된 가상 명령을 매칭시켜 데이터테이블 형태의 스위칭 테이블을 생성하는 단계인 것을 특징으로 한다.In addition, the virtual command distribution step is a step of generating a switching table in the form of a data table by matching the header information and identification information extracted from the specific command unit in the identification information extraction step with the virtual command distributed by the corresponding command unit. do it with

한편, 상기 데이터생성단계는, 상기 분리단계에서 분리된 데이터 단위를 수신하는 데이터단위수신단계; 상기 데이터단위수신단계에서 수신된 데이터 단위로부터 헤더 정보를 추출하는 헤더정보추출단계; 상기 가상명령배포단계에서 배포된 가상 명령을 수신하는 가상명령수신단계; 상기 가상명령수신단계에서 수신된 가상 명령에 따라 상기 데이터 단위를 가상화하여 가상화된 데이터를 생성하는 가상데이터생성단계; 및 상기 가상데이터생성단계에서 생성된 가상화된 데이터의 적합여부를 판단하여, 판단결과에 따라 생성된 가상화된 데이터를 배포하는 가상데이터배포단계;를 포함하는 것을 특징으로 한다.Meanwhile, the data generating step may include: a data unit receiving step of receiving the data unit separated in the separating step; a header information extraction step of extracting header information from the data unit received in the data unit receiving step; a virtual command receiving step of receiving the virtual command distributed in the virtual command distributing step; a virtual data generation step of virtualizing the data unit according to the virtual command received in the virtual command receiving step to generate virtualized data; and a virtual data distribution step of judging whether the virtualized data generated in the virtual data generating step is appropriate, and distributing the generated virtualized data according to the determination result.

여기서, 상기 가상데이터생성단계에서 수신된 가상 명령을 해당 가상 명령에 식별정보에 따라 분류하여 저장한 데이터테이블 형태의 스위칭 테이블을 생성하며, 상기 스위칭 테이블로부터 상기 데이터 단위의 헤더정보와 매칭되는 식별정보를 포함하는 가상 명령이 존재하는지 확인하고, 확인된 가상 명령에 따라 상기 데이터 단위를 가상화하는 것을 특징으로 한다.Here, a switching table in the form of a data table is created by classifying the virtual command received in the virtual data generation step according to identification information in the corresponding virtual command, and identification information matching the header information of the data unit from the switching table. It is checked whether a virtual command including

또한, 상기 가상데이터생성단계에서 데이터 단위를 가상화 할 때, 해당 데이터 단위의 가상화에 이용된 가상 명령과 매칭된 식별정보를 상기 스위칭 테이블로부터 확인하고 확인된 식별정보로부터 새로운 헤더정보를 생성 및 추가하여 가상화된 데이터를 생성하는 것을 특징으로 한다.In addition, when virtualizing a data unit in the virtual data generation step, identification information matching a virtual command used for virtualization of the corresponding data unit is checked from the switching table, and new header information is created and added from the identified identification information. It is characterized in that it creates virtualized data.

그리고, 상기 가상데이터배포단계에서 상기 가상화된 데이터가 전송 시퀀스와 상관없이 I/O 요청의 목적지에 매개 변수(Parameters)를 전달할 수 있을 경우, 해당 가상화된 데이터가 적합한 것으로 판단하는 것을 특징으로 한다.And, in the virtual data distribution step, when the virtualized data can transmit parameters to the destination of the I/O request regardless of the transmission sequence, it is characterized in that the virtualized data is determined to be suitable.

본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, I/O 요청에 대해, 수신 중인 I/O 요청 패킷으로부터 프로토콜 데이터 단위의 명령 단위와 데이터 단위를 분리하고, 병렬 처리를 통해 가상화된 데이터를 생성하기 때문에, I/O 블록 전체가 수신되는 것을 기다리지 않고도 요청된 I/O의 데이터 처리가 가능해짐에 따라, I/O 처리에 대한 지연발생을 최소화할 수 있는 효과가 있다.The data processing method of a virtual storage according to a preferred embodiment of the present invention separates a command unit and a data unit of a protocol data unit from an I/O request packet being received for an I/O request, and performs virtualization through parallel processing. Since data is generated, it is possible to process the requested I/O data without waiting for the entire I/O block to be received, thereby minimizing the delay in I/O processing.

또한, 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 가상 명령 및 가상화된 데이터의 생성 이후에 적합 여부를 확인하여 배포 여부를 결정함으로써, 최종적으로 배포되는 가상화된 데이터를 통한 I/O 처리에 지연발생을 최소화하면서도 I/O처리 시의 데이터의 발신, 수신, 데이터 순서 및 기타 오류를 방지할 수 있는 효과가 있다.In addition, the data processing method of the virtual storage according to a preferred embodiment of the present invention determines whether to distribute by checking whether it is suitable after the creation of a virtual command and virtualized data, so that I / through the finally distributed virtualized data While minimizing delay in O processing, it has the effect of preventing data transmission, reception, data sequence and other errors during I/O processing.

도 1은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 대략적으로 도시한 순서도이다.
도 2는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 적용한 데이터 처리 시스템을 대략적으로 도시한 것이다.
도 3은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법의 일 예를 시각화한 것이다.
도 4는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상명령생성단계의 일 예를 시각화한 것이다.
도 5는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상데이터생성단계의 일 예를 시각화한 것이다.
1 is a flowchart schematically illustrating a data processing method of a virtual storage according to a preferred embodiment of the present invention.
FIG. 2 schematically shows a data processing system to which a data processing method of a virtual storage according to a preferred embodiment of the present invention is applied.
3 is a visualization of an example of a data processing method of a virtual storage according to a preferred embodiment of the present invention.
4 is a visualization of an example of a virtual command generation step in a data processing method of a virtual storage according to a preferred embodiment of the present invention.
5 is a visualization of an example of a virtual data generation step in a data processing method of a virtual storage according to a preferred embodiment of the present invention.

이하, 첨부한 도면을 참조하여 본 발명의 가상 스토리지의 데이터 처리 방법에 바람직한 실시 예를 상세히 설명한다.Hereinafter, a preferred embodiment of the data processing method of the virtual storage of the present invention will be described in detail with reference to the accompanying drawings.

각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다. 또한 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는 것이 바람직하다.Like reference numerals in each figure indicate like elements. In addition, specific structural or functional descriptions for the embodiments of the present invention are only exemplified for the purpose of describing the embodiments according to the present invention, and unless otherwise defined, all terms used herein, including technical or scientific terms They have the same meaning as commonly understood by those of ordinary skill in the art to which the present invention pertains. Terms such as those defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present specification. It is preferable not to

도 1은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 대략적으로 도시한 순서도이다.
도 1을 참조하면, 본 발명의 바람직한 실시예에 따라, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법은 분리단계(S100), 생성단계(S200) 및 전송단계(S300)을 포함할 수 있다.
1 is a flowchart schematically illustrating a data processing method of a virtual storage according to a preferred embodiment of the present invention.
Referring to FIG. 1 , according to a preferred embodiment of the present invention, a data processing method of a virtual storage that provides a storage space to an information terminal or a network through a virtual storage virtualized a plurality of storage devices includes a separation step (S100), generation It may include a step (S200) and a transmission step (S300).

본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 단계적으로 설명하기에 앞서, 본 발명의 가상 스토리지의 데이터 처리 방법은 TCP/IP 상에서 블록 단위(Block-level) SCSI(Small computer system interface) 정보를 캡슐화하여 전달하는 iSCSI(Internet small computer system interface)의 프로토콜에 기반하여 가상 스토리지 서비스의 I/O를 처리하는 시스템에 적용되는 기술로, 후술될 내용에서 사용되는 명칭 또한 iSCSI 및 SCSI에 기반한 내용으로 이해되어져야할 것이다.Prior to a step-by-step description of the data processing method of the virtual storage according to the preferred embodiment of the present invention, the data processing method of the virtual storage of the present invention is a block-level SCSI (Small Computer System Interface) over TCP/IP. It is a technology applied to a system that processes I/O of a virtual storage service based on the iSCSI (Internet small computer system interface) protocol that encapsulates and delivers information. The name used in the following description is also based on iSCSI and SCSI should be understood as

도 2는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 적용한 데이터 처리 시스템을 대략적으로 도시한 것이고, 도 3은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법의 일 예를 시각화한 것이다.
도 2 내지 도 3을 참조하여 설명하자면, 분리단계(S100)는 데이터 처리 시스템(100)에서의 통신 유닛(110)이 네트워크를 통해 이니시에이터(I)로부터 요청된 I/O 해당 I/O가 TCP/IP, 파이버 채널 및 기타 유사한 프로토콜과 같은 적절한 프로토콜 형식을 가지는지 확인하는 단계가 선행된다. 여기서 통신 유닛(110)은 프로토콜의 구현이 가능하며, 분리단계(S100)에서는 수신 중인 I/O 요청 패킷이 이전에 이용된 프로토콜을 통해 수신된 것인지 여부를 확인하여, 해당 프로토콜을 인터넷 프로토콜(IP: Internet Protocol)로 변경하는 과정이 이루어질 수 있다.
2 schematically shows a data processing system to which the data processing method of the virtual storage according to a preferred embodiment of the present invention is applied, and FIG. 3 shows an example of the data processing method of the virtual storage according to the preferred embodiment of the present invention. it is visualized.
2 to 3, in the separation step (S100), the communication unit 110 in the data processing system 100 is the I/O requested from the initiator I through the network, the corresponding I/O is TCP This is followed by ensuring that you have the appropriate protocol format, such as /IP, Fiber Channel, and other similar protocols. Here, the communication unit 110 can implement a protocol, and in the separation step S100 , it is checked whether the I/O request packet being received is received through a previously used protocol, and the corresponding protocol is converted to the Internet protocol (IP). : Internet Protocol) can be changed.

이후, 로직 유닛(120)이 패킷 단위로 수신 중인 I/O 요청을 iSCSI 데이터를 프로토콜 데이터 단위(PDU : Protocol data unit)의 명령 단위(SCSI 명령)와 데이터 단위(SCSI 데이터)로 분리하는 단계이다. 여기서, SCSI 명령과 SCSI 데이터는 iSCSI 패킷의 iSCSI PDU 내에 포함되어 있고, iSCSI 패킷의 iSCSI 헤더에는 SCSI 명령 및 SCSI 데이터의 추출방법이 포함되어 있기 때문에, 로직 유닛(120)은 SCSI 명령과 SCSI 데이터를 명령 단위(=명령PDU)와 데이터 단위(=데이터PDU)로 분리하게 된다. 이후, 로직 유닛(120)은 명령 PDU와 데이터 PDU를 각각 커맨드 유닛(130)과 데이터 엔진(140)에 제공하게 되며, 후술할 생성단계(S200)에서 커맨드 유닛(130)과 데이터 엔진(140)이 iSCSI 데이터를 명령 부분과 데이터 부분으로 병렬 처리되게 된다.Thereafter, the logic unit 120 divides the I/O request being received in packet units into a command unit (SCSI command) and a data unit (SCSI data) of a protocol data unit (PDU). . Here, since the SCSI command and SCSI data are included in the iSCSI PDU of the iSCSI packet, and the iSCSI header of the iSCSI packet includes the SCSI command and the method of extracting the SCSI data, the logic unit 120 transmits the SCSI command and the SCSI data. It is divided into a command unit (=command PDU) and a data unit (=data PDU). Thereafter, the logic unit 120 provides the command PDU and the data PDU to the command unit 130 and the data engine 140, respectively, and in the generation step S200 to be described later, the command unit 130 and the data engine 140 . This iSCSI data is processed in parallel into a command part and a data part.

생성단계(S200)는 분리단계(S100)에서 로직 유닛(120)에 의해 분리된 명령PDU와 데이터PDU를 커맨드 유닛(130)과 데이터 엔진(140)이 각각 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 단계이며, 명령생성단계(S210) 및 데이터생성단계(S220)을 포함할 수 있다.In the generating step (S200), the command unit 130 and the data engine 140 parallelly process the command PDU and the data PDU separated by the logic unit 120 in the separating step (S100) to generate at least one or more virtualized data. This is a generating step, and may include a command generating step (S210) and a data generating step (S220).

도 4는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상명령생성단계의 일 예를 시각화한 것이다.
도 1 내지 도 4를 참조하여 설명하자면, 명령생성단계(S210)는 커맨드 유닛(130)이 분리단계(S100)에서 로직 유닛(120)에 의해 분리된 명령PDU로부터 적어도 하나 이상의 가상 명령을 생성하는 단계이며, 명령단위수신단계(S211), 식별정보추출단계(S212), 명령전달확인단계(S213), 가상명령생성단계(S214) 및 가상명령배포단계(S215)를 포함할 수 있다.
4 is a visualization of an example of a virtual command generation step in a data processing method of a virtual storage according to a preferred embodiment of the present invention.
1 to 4, the command generating step S210 is the command unit 130 generating at least one virtual command from the command PDU separated by the logic unit 120 in the separating step S100. step, and may include a command unit receiving step (S211), an identification information extraction step (S212), a command delivery confirmation step (S213), a virtual command generation step (S214), and a virtual command distribution step (S215).

명령단위수신단계(S211)는 커맨드 유닛(130)이 분리단계(S100)에서 분리된 명령PDU를 로직 유닛(120)으로부터 수신하는 단계이다.The command unit receiving step S211 is a step in which the command unit 130 receives the command PDU separated in the separation step S100 from the logic unit 120 .

식별정보추출단계(S212)는 커맨드 유닛(130)이 가상 스토리지에 명령을 전달하는 복수의 가상 드라이버 중 명령PDU의 헤더 정보를 확인하여, 명령단위수신단계(S211)에서 수신한 명령PDU와 관련된 가상 드라이버의 고유한 식별정보를 추출하는 단계이다. 여기서 커맨드 유닛(130)이 추출하는 고유한 식별정보는 SCSI 방식에서 논리적으로 사용되는 고유 식별자 번호인 LUN(Logical Unit Number)정보이며, 커맨드 유닛(130)은 LUN정보를 통해 명령PDU가 복수의 스토리지 디바이스를 가상화한 가상 스토리지(150)에서 어떠한 특정 스토리지 디바이스에 대응하는 명령인지 확인할 수 있다. 이때, 가상 스토리지(150)는 데이터 케이블을 통해 직접 연결된 로컬 스토리지 어레이(Array) 또는 네트워크를 통해 연결된 네트워크 스토리지 어레이 또는 로컬 스토리지 어레이와 네트워크 스토리지 어레이 모두가 네트워크를 통해 연결된 형태를 포함할 수도 있다.In the identification information extraction step ( S212 ), the command unit 130 checks header information of a command PDU among a plurality of virtual drivers that transmit a command to the virtual storage, This is the step of extracting the driver's unique identification information. Here, the unique identification information extracted by the command unit 130 is LUN (Logical Unit Number) information, which is a unique identification number logically used in the SCSI method, and the command unit 130 transmits the command PDU to a plurality of storage units through the LUN information. In the virtual storage 150 in which the device is virtualized, a command corresponding to a specific storage device may be checked. In this case, the virtual storage 150 may include a local storage array directly connected through a data cable, a network storage array connected through a network, or a form in which both the local storage array and the network storage array are connected through a network.

명령전달확인단계(S213)는 식별정보추출단계(S212)에서 추출된 LUN정보를 통해 명령PDU로부터 확인된 스토리지 디바이스에 명령을 전달하는 가상 드라이버가 존재하는지를 확인하고, 확인된 가상 드라이버에 명령PDU를 전달하는 단계이다. 여기서 가상 스토리지(150)는 복수의 스토리지 디바이스를 하나의 가상 저장영역(Volume)으로 관리하는 가상 볼륨 관리자(VVM:Virtual Volume Manager)와 하드웨어 또는 소프트웨어 모듈 형태로 가상 볼륨에 I/O에 따른 명령을 전달하는 Snapshot Pass-through Volume Driver, Snapshot Mount Volume Driver, Sparse Volume Driver, Mirror Replication Quick-sync Volume Driver, Spanned Mirror Volume Driver, Partial Volume Driver를 포함하는 가상 드라이버가 포함된다. 여기서, 명령전달확인단계(S213)는 커맨드 유닛(130)이 명령PDU에 참조될 가상 드라이버가 존재하는지 확인하고, 확인된 가상 스토리지의 LUN정보와 명령PDU를 매칭시켜, 해당 명령PDU의 명령을 전달하는 가상 드라이버를 데이터테이블 형태로 저장한 가상 드라이버 테이블을 생성할 수 있다.The command delivery confirmation step (S213) checks whether a virtual driver that delivers a command to the storage device identified from the command PDU exists through the LUN information extracted in the identification information extraction step (S212), and sends the command PDU to the checked virtual driver. This is the stage of delivery. Here, the virtual storage 150 is a virtual volume manager (VVM) that manages a plurality of storage devices as a single virtual storage area (Volume) and a command according to I/O to the virtual volume in the form of a hardware or software module. Includes Virtual Drivers, including Forwarding Snapshot Pass-through Volume Driver, Snapshot Mount Volume Driver, Sparse Volume Driver, Mirror Replication Quick-sync Volume Driver, Spanned Mirror Volume Driver, and Partial Volume Driver. Here, in the command delivery confirmation step S213, the command unit 130 checks whether a virtual driver to be referenced in the command PDU exists, matches the checked LUN information of the virtual storage with the command PDU, and delivers the command of the command PDU. You can create a virtual driver table that stores the virtual driver in the form of a data table.

다시 말해, 명령전달확인단계(S213)에서 커맨드 유닛(130)은 가상 스토리지(150)에서 수신한 명령PDU에 실질적으로 I/O가 발생되는 스토리지 디바이스에 명령을 전달하여 가상 저장영역으로 작동되도록 명령을 전달하는 가상 드라이버가 어떠한 것인지 확인하고, 각 가상 드라이버가 명령 PDU에 맞게 스토리지 디바이스에 명령을 전달하는지 확인하여, 각 명령PDU에 관련된 가상 드라이버 종류 및 명령을 가상 드라이버 테이블에 저장하게 된다. 예를 들어, 명령PDU가 가상 스토리지(150)에서 특정 데이터를 READ하는 요청에 관한 것이라면, 커맨드 유닛(130)은 LUN정보를 통해 해당 데이터가 저장된 물리적 스토리지 디바이스를 확인하고, 확인된 스토리지 디바이스로부터 해당 데이터에 접근하고 READ하는 과정이 가상 저장영역 상에서 작동되도록 하기 위해 실제 데이터가 저장된 스토리지 디바이스에 명령을 전달하는 가상 드라이버를 확인한다. 이후, 커맨드 유닛(130)은 명령PDU에 의해 READ가 완료될 때 까지 이용된 가상 드라이버의 종류, 명령 내역 등의 리스트가 가상 드라이버 테이블에 저장되고 또 다른 명령 PDU에 대해서도 누적하여 저장하게 된다. 이때, 커맨드 유닛(130)은 가상 스토리지(150)와 연결(Coupled)되어 있기 때문에, 가상 드라이버의 작동 내역을 확인할 수 있게 된다.In other words, in the command delivery confirmation step ( S213 ), the command unit 130 transmits a command to a storage device in which I/O is actually generated in the command PDU received from the virtual storage 150 so as to operate as a virtual storage area. It checks which virtual driver transmits the command PDU and whether each virtual driver transmits a command to the storage device according to the command PDU, and stores the virtual driver type and command related to each command PDU in the virtual driver table. For example, if the command PDU relates to a request to read specific data from the virtual storage 150, the command unit 130 checks the physical storage device in which the corresponding data is stored through the LUN information, and receives the corresponding data from the checked storage device. Check the virtual driver that transmits commands to the storage device where the actual data is stored so that the process of accessing and READing data operates on the virtual storage area. Thereafter, the command unit 130 stores a list of types of virtual drivers, command details, etc. used until the READ by the command PDU is completed in the virtual driver table, and accumulates and stores another command PDU. In this case, since the command unit 130 is coupled to the virtual storage 150 , it is possible to check the operation details of the virtual driver.

가상명령생성단계(S214)는 커맨드 유닛(130)이 명령단위수신단계(S211)에서 수신한 명령PDU와 해당 명령PDU의 명령을 전달하는 가상 드라이버와 관련하여 적어도 하나 이상의 가상 명령을 생성하는 단계이다. 여기서, 커맨드 유닛(130)은 수신한 명령PDU에 대응되는 가상 드라이버의 동작 내역을 가상 드라이버 테이블로부터 확인하고, 명령PDU에 대응하는 가상 드라이버의 동작 내역이 존재하는 경우에 한하여, 가상 명령을 생성하게 된다. 이때, 커맨드 유닛(130)은 후에 데이터생성단계(S220)에서 생성된 가상화된 데이터가 데이터의 발신, 수신, 데이터 순서 및 명령 이상 등을 발생시키는 것을 방지하기 위해, 가상 드라이버 테이블에 수신한 명령PDU에 해당하는 가상 드라이버의 동작 내역이 적어도 둘 이상일 경우에 한하여 가상 명령을 생성한다.The virtual command generation step (S214) is a step in which the command unit 130 generates at least one virtual command in relation to the command PDU received in the command unit receiving step (S211) and a virtual driver that transmits the command of the corresponding command PDU. . Here, the command unit 130 checks the operation details of the virtual driver corresponding to the received command PDU from the virtual driver table, and generates a virtual command only when the operation details of the virtual driver corresponding to the command PDU exist. do. At this time, the command unit 130 receives the command PDU received in the virtual driver table in order to prevent the virtualized data generated in the data generation step S220 from generating data transmission, reception, data order, and command abnormality. A virtual command is created only when there are at least two operation details of the virtual driver corresponding to .

가상명령배포단계(S215)는 커맨드 유닛(130)이 가상명령생성단계(S214)에서 생성된 가상 명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포하는 단계이다.The virtual command distribution step S215 is a step in which the command unit 130 determines whether the virtual command generated in the virtual command generation step S214 is appropriate, and distributes the virtual command only if appropriate.

여기서, 가상명령배포단계(S215)는 커맨드 유닛(130)이 가상명령생성단계(S214)에서 생성된 적어도 하나 이상의 가상 명령과 관련된 가상 드라이버가 해당 가상 명령을 가상 스토리지에 전달할 수 있는 경우, 해당 가상 명령을 배포하는 단계이며, 생성된 가상명령이 명령PDU로 확인된 가상 드라이브를 호출(Call)하는지 여부와 가상 명령이 명령PDU가 요구하는 모든 가상 드라이버에 접근(Access) 가능한지를 확인하여 가상 명령 배포를 결정하게 된다. 따라서, 커맨드 유닛(130) 배포하는 가상 명령에는 데이터 전송의 목적지가 되는 헤더 정보를 포함하고 있기 때문에, 이후 데이터생성단계(S220) 이후에 생성될 가상화된 데이터의 헤더로 대체하여 이용될 수 있다.Here, in the virtual command distribution step S215 , when the virtual driver related to at least one virtual command generated in the virtual command generation step S214 by the command unit 130 can deliver the virtual command to the virtual storage, the corresponding virtual This is the step of distributing the command, and it distributes the virtual command by checking whether the generated virtual command calls the virtual drive identified by the command PDU and whether the virtual command can access all the virtual drivers required by the command PDU. will decide Accordingly, since the virtual command distributed by the command unit 130 includes header information that is a destination of data transmission, it can be used by replacing the header of virtualized data to be generated after the data generation step ( S220 ).

도 5는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상데이터생성단계의 일 예를 시각화한 것이다.
도 1 내지 도 5를 참조하여 설명하자면, 데이터생성단계(S220)는 명령생성단계(S210)에서 생성된 가상 명령에 따라 데이터 엔진(140)이 분리단계(S100)에 분리된 데이터PDU를 가공하여 가상화된 데이터를 생성하는 단계이며, 데이터단위수신단계(S221), 헤더정보추출단계(S222), 가상명령수신단계(S223) 및 가상데이터배포단계(S224)를 포함할 수 있다. 여기서, 데이터 엔진(140)은 로직 유닛(120) 및 가상 스토리지(150)와 연결(Coupled)되어, 가상 명령을 사용하여 물리적 스토리지 디바이스에 분배될 데이터를 가상화할 수 있다.
5 is a visualization of an example of a virtual data generation step in a data processing method of a virtual storage according to a preferred embodiment of the present invention.
1 to 5, in the data generation step S220, the data engine 140 processes the data PDU separated in the separation step S100 according to the virtual command generated in the command generation step S210. This is a step of generating virtualized data, and may include a data unit reception step (S221), a header information extraction step (S222), a virtual command reception step (S223), and a virtual data distribution step (S224). Here, the data engine 140 may be coupled to the logic unit 120 and the virtual storage 150 to virtualize data to be distributed to the physical storage device using a virtual command.

데이터단위수신단계(S221)는 데이터 엔진(140)이 분리단계(S100)에서 분리된 데이터PDU를 수신하는 단계이다.The data unit reception step S221 is a step in which the data engine 140 receives the data PDU separated in the separation step S100.

헤더정보추출단계(S222)는 데이터 엔진(140)이 데이터단위수신단계(S221)에서 수신된 데이터PDU로부터 헤더 정보를 추출하는 단계이다. 여기서 추출되는 헤더 정보는 후술할 가상데이터생성단계(S224)에서 연관된 가상 명령과 매칭시키기 위한 하나의 기준 값을 추출하는 것으로, 데이터PDU 또한 명령PDU와 마찬가지로 SCSI를 기반으로 하고 있기 때문에, 헤더정보로부터 LUN정보가 추출될 수 있다.The header information extraction step S222 is a step in which the data engine 140 extracts header information from the data PDU received in the data unit receiving step S221. The header information extracted here is to extract one reference value for matching with the virtual command associated in the virtual data generation step (S224) to be described later. Since the data PDU is also based on SCSI like the command PDU, LUN information can be extracted.

가상명령수신단계(S223)는 데이터 엔진(140)이 가상명령배포단계(S215)에서 배포된 가상 명령을 수신하는 단계이다.The virtual command receiving step S223 is a step in which the data engine 140 receives the virtual command distributed in the virtual command distributing step S215 .

가상데이터생성단계(S224)는 데이터 엔진(140)이 가상명령수신단계(S223)에서 수신된 가상 명령에 따라 데이터PDU를 가상화하여 가상화된 데이터를 생성하는 단계이다. 여기서, 데이터 엔진(140)은 가상명령수신단계(S223)에서 수신된 가상 명령, 목적지의 MAC주소를 해당 가상 명령에 식별정보에 따라 분류하여 저장한 데이터테이블 형태의 스위칭 테이블을 생성할 수 있으며, 생성된 스위칭 테이블로부터 데이터PDU의 헤더정보와 매칭되는 식별정보를 포함하는 가상 명령이 존재하는지 확인하고, 확인된 가상 명령에 따라 데이터PDU의 가상화가 이루어진다. 이때, 데이터 엔진(140)이 생성하는 가상화된 데이터에는 해당 데이터PDU의 가상화에 이용된 가상 명령과 매칭된 식별정보를 스위칭 테이블로부터 확인하고 확인된 식별정보로부터 새로운 헤더정보를 생성 및 추가하여 가상화된 데이터가 생성될 수 있다.The virtual data generation step ( S224 ) is a step in which the data engine 140 virtualizes the data PDU according to the virtual command received in the virtual command receiving step ( S223 ) to generate virtualized data. Here, the data engine 140 may create a switching table in the form of a data table in which the virtual command received in the virtual command receiving step (S223) and the MAC address of the destination are classified and stored in the virtual command according to identification information, It is checked from the generated switching table whether a virtual command including identification information matching the header information of the data PDU exists, and the data PDU is virtualized according to the checked virtual command. At this time, in the virtualized data generated by the data engine 140, identification information matched with a virtual command used for virtualization of the corresponding data PDU is checked from the switching table, and new header information is generated and added from the identified identification information. Data may be generated.

가상데이터배포단계(S225)는 데이터 엔진(140)이 가상데이터생성단계(S224)에서 생성된 가상화된 데이터의 적합여부를 판단하여, 판단결과에 따라 생성된 가상화된 데이터를 배포하는 단계이다. 이때, 데이터 엔진(140)은 적절한 데이터 시퀀스를 가지는지를 확인하고 적절한 데이터 시퀀스를 가질 경우, 해당 가상화된 데이터를 배포하게 된다. 여기서 가상화되 데이터를 배포한다 함은, 최초 I/O 요청의 목적지에 가상화된 데이터가 전달될 수 있도록 데이터의 전송이 가능한 상태로 준비함을 의미한다. 만약 가상화된 데이터가 적절한 시퀀스를 가지지 않는다면, I/O 요청의 목적지에 매개 변수(Parameters)를 전달할 수 있는지 여부를 통해 가상화된 데이터의 배포 여부를 결정하게 된다. 이때, 가상화된 데이터가 I/O 요청의 목적지에 매개 변수를 전달할 수 있다면 해당 가상화된 데이터를 배포할 수도 있다.The virtual data distribution step S225 is a step in which the data engine 140 determines whether the virtualized data generated in the virtual data generation step S224 is appropriate, and distributes the generated virtualized data according to the determination result. At this time, the data engine 140 checks whether it has an appropriate data sequence, and when it has an appropriate data sequence, it distributes the corresponding virtualized data. Distributing virtualized data here means preparing in a state where data transmission is possible so that virtualized data can be delivered to the destination of the initial I/O request. If the virtualized data does not have an appropriate sequence, it is decided whether to distribute the virtualized data through whether parameters can be passed to the destination of the I/O request. At this time, if the virtualized data can pass parameters to the destination of the I/O request, the virtualized data may be distributed.

전송단계(S300)는 데이터 엔진(140) 또는 통신 유닛(110)이 가상데이터배포단계(S225)에서 배포된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 단계이다. 이때, 전송단계(S300)에서 I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야하는 레거시 장치인 경우, 데이터 엔진(140)은 I/O 요청 패킷 전부가 수신되는 동안 생성된 가상화된 데이터를 축적하고, 축적된 가상화된 데이터를 레거시 장치의 데이터 전송 시퀀스에 대응하는 순서로 컴파일하여 가상화된 데이터 생성하여 레거시 장치에 전송할 수 있다.The transmission step S300 is a step in which the data engine 140 or the communication unit 110 transmits the virtualized data distributed in the virtual data distribution step S225 to the destination of the I/O request packet. At this time, if the destination of the I/O request in the transmission step S300 is a legacy device to which data must be transmitted according to a preset sequence, the data engine 140 generates virtualized data generated while all of the I/O request packets are received. By accumulating data and compiling the accumulated virtualized data in an order corresponding to the data transmission sequence of the legacy device, virtualized data may be generated and transmitted to the legacy device.

즉, 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, I/O 요청에 대해, 수신 중인 I/O 요청 패킷으로부터 프로토콜 데이터 단위의 명령 단위와 데이터 단위를 분리하고, 병렬 처리를 통해 가상화된 데이터를 생성하기 때문에, I/O 블록 전체가 수신되는 것을 기다리지 않고도 요청된 I/O의 데이터 처리가 가능해짐에 따라, I/O 처리에 대한 지연발생을 최소화할 수 있는 효과가 있다.That is, the data processing method of the virtual storage according to a preferred embodiment of the present invention separates a command unit and a data unit of a protocol data unit from an I/O request packet being received for an I/O request, and performs parallel processing through Since virtualized data is generated, it is possible to process the requested I/O data without waiting for the entire I/O block to be received, thereby minimizing the delay in I/O processing.

또한, 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 가상 명령 및 가상화된 데이터의 생성 이후에 적합 여부를 확인하여 배포 여부를 결정함으로써, 최종적으로 배포되는 가상화된 데이터를 통한 I/O 처리에 지연발생을 최소화하면서도 I/O처리 시의 데이터의 발신, 수신, 데이터 순서 및 기타 오류를 방지할 수 있는 효과가 있다.In addition, the data processing method of the virtual storage according to a preferred embodiment of the present invention determines whether to distribute by checking whether it is suitable after the creation of a virtual command and virtualized data, so that I / through the finally distributed virtualized data While minimizing delay in O processing, it has the effect of preventing data transmission, reception, data sequence and other errors during I/O processing.

상기한 본 발명의 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대해 통상의 지식을 가진 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.The above-described embodiments of the present invention have been disclosed for the purpose of illustration, and various modifications, changes, and additions will be possible within the spirit and scope of the present invention by those skilled in the art having a general knowledge of the present invention, and such modifications, changes and additions should be regarded as belonging to the following claims.

삭제delete

100: 가상 스토리지의 데이터 처리 시스템
110: 통신 유닛 120: 로직 유닛
130: 커맨드 유닛 140: 데이터 엔진
150: 가상 스토리지
100: data processing system of virtual storage
110: communication unit 120: logic unit
130: command unit 140: data engine
150: virtual storage

Claims (10)

복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 있어서,
수신 중인 I/O 요청 패킷이 이전에 이용된 프로토콜을 통해 수신된 것인지 여부를 확인하여, 해당 프로토콜을 인터넷 프로토콜(IP)로 변경하고, 상기 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위(명령 PDU)와 데이터 단위(데이터 PDU)로 분리하는 분리단계;
분리된 상기 명령 PDU와 상기 데이터 PDU를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 생성단계; 및
상기 생성단계에서 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 전송단계; 를 포함하며,
상기 생성단계는,
상기 명령 PDU로부터 적어도 하나 이상의 가상 명령을 생성하는 명령생성단계; 및
상기 명령생성단계에서 생성된 가상 명령에 따라 상기 데이터 PDU를 가공하여 가상화된 데이터를 생성하는 데이터생성단계; 를 포함하고,
상기 전송단계는, I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야하는 레거시 장치인 경우에는, I/O 요청 패킷 전부가 수신되는 동안 생성된 가상화된 데이터를 축적하고, 축적된 가상화된 데이터를 상기 레거시 장치의 데이터 전송 시퀀스에 대응하는 순서로 컴파일하여 가상화된 데이터 생성하여 상기 레거시 장치에게 전송하는 것을 특징으로 하고,
상기 명령생성단계는,
상기 분리단계에서 분리된 명령 PDU를 수신하는 명령단위수신단계;
상기 가상 스토리지에 명령을 전달하는 복수의 가상 드라이버 중에서 상기 명령 PDU의 헤더 정보를 확인하여, 상기 명령단위수신단계에서 수신한 명령 PDU와 관련된 가상 드라이버의 고유한 식별정보를 추출하는 식별정보추출단계;
상기 식별정보를 통해 상기 명령 PDU에 참조될 가상 드라이버가 존재하는지를 확인하고, 확인된 가상 드라이버에 명령 PDU를 전달하고, 확인된 가상 드라이버의 식별정보와 상기 명령 PDU를 매칭시킨 가상 드라이버 테이블을 생성하는 명령전달확인단계;
상기 명령 PDU 및 상기 명령전달확인단계에서 확인된 가상 드라이버와 관련된 적어도 하나 이상의 가상 명령을 생성하는 가상명령생성단계; 및
상기 가상명령생성단계에서 생성된 가상 명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포하는 가상명령배포단계; 를 더 포함하는 것을 특징으로 하고,
상기 가상 스토리지는 하드웨어 또는 소프트웨어 모듈 형태로 구현되는 상기 복수의 가상 드라이버를 포함하는,
가상 스토리지의 데이터 처리 방법.
In the data processing method of a virtual storage that provides a storage space to an information terminal or a network through a virtual storage virtualized a plurality of storage devices,
Check whether the I/O request packet being received is received through the previously used protocol, change the protocol to Internet Protocol (IP), and convert the received I/O request packet to a protocol data unit (PDU) a separation step of dividing into command units (command PDUs) and data units (data PDUs);
generating at least one virtualized data by parallel processing the separated command PDU and the data PDU; and
a transmission step of transmitting the virtualized data generated in the generation step to the destination of the I/O request packet; includes,
The generating step is
a command generation step of generating at least one virtual command from the command PDU; and
a data generating step of generating virtualized data by processing the data PDU according to the virtual command generated in the command generating step; including,
In the transmitting step, when the destination of the I/O request is a legacy device to which data must be transmitted according to a preset sequence, the virtualized data generated while all of the I/O request packets are received is accumulated, and the accumulated virtualization Compiling the data obtained in an order corresponding to the data transmission sequence of the legacy device, generating virtualized data, and transmitting the data to the legacy device,
The command generation step is
a command unit receiving step of receiving the command PDU separated in the separation step;
an identification information extraction step of extracting unique identification information of a virtual driver related to the command PDU received in the command unit receiving step by checking header information of the command PDU from among a plurality of virtual drivers that transmit a command to the virtual storage;
Checking whether a virtual driver to be referenced in the command PDU exists through the identification information, delivering the command PDU to the checked virtual driver, and creating a virtual driver table matching the identified virtual driver identification information with the command PDU command delivery confirmation step;
a virtual command generation step of generating at least one virtual command related to the command PDU and the virtual driver identified in the command delivery checking step; and
a virtual command distribution step of judging whether the virtual command generated in the virtual command generating step is appropriate, and distributing the virtual command only when appropriate; characterized in that it further comprises,
The virtual storage includes the plurality of virtual drivers implemented in the form of hardware or software modules,
How to process data in virtual storage.
삭제delete 삭제delete 삭제delete 삭제delete 제 1 항에 있어서,
상기 가상명령배포단계는 상기 가상명령생성단계에서 생성된 적어도 하나 이상의 가상 명령과 관련된 가상 드라이버가 해당 가상 명령을 가상 스토리지에 전달할 수 있는 경우에는, 해당 가상 명령을 배포하는 것을 특징으로 하는,
가상 스토리지의 데이터 처리 방법.
The method of claim 1,
In the virtual command distribution step, when a virtual driver related to at least one or more virtual commands generated in the virtual command generation step can deliver the virtual command to the virtual storage, the virtual command is distributed,
How to process data in virtual storage.
제 6 항에 있어서,
상기 데이터생성단계는,
상기 분리단계에서 분리된 데이터 PDU를 수신하는 데이터단위수신단계;
상기 데이터단위수신단계에서 수신된 데이터 PDU로부터 헤더 정보를 추출하는 헤더정보추출단계;
상기 가상명령배포단계에서 배포된 가상 명령을 수신하는 가상명령수신단계;
상기 가상명령수신단계에서 수신된 가상 명령에 따라 상기 데이터 PDU를 가상화하여 가상화된 데이터를 생성하는 가상데이터생성단계; 및
상기 가상데이터생성단계에서 생성된 가상화된 데이터의 적합여부를 판단하여, 판단결과에 따라 생성된 가상화된 데이터를 배포하는 가상데이터배포단계; 를 더 포함하는 것을 특징으로 하는,
가상 스토리지의 데이터 처리 방법.
7. The method of claim 6,
The data generation step is
a data unit receiving step of receiving the data PDU separated in the separation step;
a header information extraction step of extracting header information from the data PDU received in the data unit receiving step;
a virtual command receiving step of receiving the virtual command distributed in the virtual command distributing step;
a virtual data generating step of generating virtualized data by virtualizing the data PDU according to the virtual command received in the virtual command receiving step; and
a virtual data distribution step of judging whether the virtualized data generated in the virtual data generation step is appropriate, and distributing the generated virtualized data according to the determination result; characterized in that it further comprises,
How to process data in virtual storage.
제 7 항에 있어서,
상기 가상데이터생성단계에서 가상 명령을 해당 가상 명령에 식별정보에 따라 분류하여 저장한 데이터테이블 형태의 스위칭 테이블을 생성하며, 상기 스위칭 테이블로부터 상기 데이터 PDU의 헤더정보와 매칭되는 식별정보를 포함하는 가상 명령이 존재하는지 확인하고, 확인된 가상 명령에 따라 상기 데이터 PDU를 가상화하는 것을 특징으로 하는,
가상 스토리지의 데이터 처리 방법.
8. The method of claim 7,
In the virtual data generation step, a switching table in the form of a data table is generated by classifying virtual commands in the corresponding virtual commands according to identification information, and a virtual command including identification information matching the header information of the data PDU from the switching table. Checking whether a command exists, and virtualizing the data PDU according to the verified virtual command,
How to process data in virtual storage.
제 8 항에 있어서,
상기 가상데이터생성단계에서 데이터 PDU를 가상화 할 때, 해당 데이터 PDU의 가상화에 이용된 가상 명령과 매칭된 식별정보를 상기 스위칭 테이블로부터 확인하고 확인된 식별정보로부터 새로운 헤더정보를 생성 및 추가하여 가상화된 데이터를 생성하는 것을 특징으로 하는,
가상 스토리지의 데이터 처리 방법.
9. The method of claim 8,
When virtualizing a data PDU in the virtual data generation step, identification information matching a virtual command used for virtualization of the corresponding data PDU is checked from the switching table, and new header information is generated and added from the identified identification information to create virtualized data PDUs. characterized by generating data,
How to process data in virtual storage.
제 7 항에 있어서,
기 가상데이터배포단계에서 상기 가상화된 데이터가 전송 시퀀스와 상관없이 I/O 요청의 목적지에 매개 변수(Parameters)를 전달할 수 있을 경우에는, 해당 가상화된 데이터가 적합한 것으로 판단하는 것을 특징으로 하는,
가상 스토리지의 데이터 처리 방법.
8. The method of claim 7,
In the virtual data distribution step, if the virtualized data can transmit parameters to the destination of the I/O request regardless of the transmission sequence, it is characterized in that it is determined that the virtualized data is suitable,
How to process data in virtual storage.
KR1020200107769A 2020-08-26 2020-08-26 Method of data processing of virtual storage KR102289937B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200107769A KR102289937B1 (en) 2020-08-26 2020-08-26 Method of data processing of virtual storage
KR1020210104801A KR20220027019A (en) 2020-08-26 2021-08-09 Method of data processing of virtual storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200107769A KR102289937B1 (en) 2020-08-26 2020-08-26 Method of data processing of virtual storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020210104801A Division KR20220027019A (en) 2020-08-26 2021-08-09 Method of data processing of virtual storage

Publications (1)

Publication Number Publication Date
KR102289937B1 true KR102289937B1 (en) 2021-08-13

Family

ID=77313834

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200107769A KR102289937B1 (en) 2020-08-26 2020-08-26 Method of data processing of virtual storage
KR1020210104801A KR20220027019A (en) 2020-08-26 2021-08-09 Method of data processing of virtual storage

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020210104801A KR20220027019A (en) 2020-08-26 2021-08-09 Method of data processing of virtual storage

Country Status (1)

Country Link
KR (2) KR102289937B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102417848B1 (en) * 2021-01-22 2022-07-07 주식회사 넷아스 Virtual storage management system

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110016272A1 (en) * 2009-07-20 2011-01-20 Lsi Corporation Virtualized data storage in a network computing environment
US20120117341A1 (en) * 2009-07-27 2012-05-10 Storwize Ltd. Method and system for transformation of logical data objects for storage
JP2016501403A (en) * 2012-11-20 2016-01-18 アイ. ペドル,チャールズ Solid state drive architecture
US20160127468A1 (en) * 2014-11-04 2016-05-05 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
KR20160133615A (en) * 2015-05-12 2016-11-23 주식회사 퓨쳐시스템 System and method for controlling Things run on the Virtual Thing Server
US20160352700A1 (en) * 2015-05-26 2016-12-01 Bank Of America Corporation Database processing system for multiple destination payloads
US20190155772A1 (en) * 2017-11-22 2019-05-23 Wiwynn Corporation Processing Method of Data Redundancy and Computer System Thereof
JP2020108071A (en) * 2018-12-28 2020-07-09 ノゾミ・ネットワークス・エッセアジエッレ Method and apparatus for detecting anomalies of infrastructure

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110016272A1 (en) * 2009-07-20 2011-01-20 Lsi Corporation Virtualized data storage in a network computing environment
US20120117341A1 (en) * 2009-07-27 2012-05-10 Storwize Ltd. Method and system for transformation of logical data objects for storage
JP2016501403A (en) * 2012-11-20 2016-01-18 アイ. ペドル,チャールズ Solid state drive architecture
US20160127468A1 (en) * 2014-11-04 2016-05-05 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
KR20160133615A (en) * 2015-05-12 2016-11-23 주식회사 퓨쳐시스템 System and method for controlling Things run on the Virtual Thing Server
US20160352700A1 (en) * 2015-05-26 2016-12-01 Bank Of America Corporation Database processing system for multiple destination payloads
US20190155772A1 (en) * 2017-11-22 2019-05-23 Wiwynn Corporation Processing Method of Data Redundancy and Computer System Thereof
JP2020108071A (en) * 2018-12-28 2020-07-09 ノゾミ・ネットワークス・エッセアジエッレ Method and apparatus for detecting anomalies of infrastructure

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102417848B1 (en) * 2021-01-22 2022-07-07 주식회사 넷아스 Virtual storage management system

Also Published As

Publication number Publication date
KR20220027019A (en) 2022-03-07

Similar Documents

Publication Publication Date Title
US9285995B2 (en) Processor agnostic data storage in a PCIE based shared storage environment
US7865588B2 (en) System for providing multi-path input/output in a clustered data storage network
US6421742B1 (en) Method and apparatus for emulating an input/output unit when transferring data over a network
US20080077918A1 (en) Apparatus and method for packet based storage virtualization
JP5026283B2 (en) Collaborative shared storage architecture
US7404038B2 (en) Storage system having a plurality of interfaces
JP3033935B2 (en) How to interface to adapter hardware
US7924859B2 (en) Method and system for efficiently using buffer space
CN105739930A (en) Storage framework as well as initialization method, data storage method and data storage and management apparatus therefor
KR102289937B1 (en) Method of data processing of virtual storage
JP4644410B2 (en) Method for controlling communication of a single computer within a computer network
US11106605B2 (en) Enhanced tape drive communication
EP1460805B1 (en) System and method for network interfacing
US8676928B1 (en) Method and system for writing network data
CN1976310B (en) Communication method using bus interface over a network
US20100250894A1 (en) Explicit data segment boundaries with SCSI I/O referrals
US20070076685A1 (en) Programmable routing for frame-packet based frame processing
US8041902B2 (en) Direct memory move of multiple buffers between logical partitions
CN102868684A (en) Fiber channel target and realizing method thereof
US11163708B2 (en) Automated transformation from command mode to transport mode
EP2300925B1 (en) System to connect a serial scsi array controller to a storage area network
US11768622B2 (en) Differential snapshot without array support
CN114003342A (en) Distributed storage method and device, electronic equipment and storage medium
WO2014077451A1 (en) Network distributed file system and method using iscsi storage system
US6829652B1 (en) I2O ISM implementation for a san based storage subsystem

Legal Events

Date Code Title Description
A107 Divisional application of patent
GRNT Written decision to grant