KR102417848B1 - Virtual storage management system - Google Patents

Virtual storage management system Download PDF

Info

Publication number
KR102417848B1
KR102417848B1 KR1020210066360A KR20210066360A KR102417848B1 KR 102417848 B1 KR102417848 B1 KR 102417848B1 KR 1020210066360 A KR1020210066360 A KR 1020210066360A KR 20210066360 A KR20210066360 A KR 20210066360A KR 102417848 B1 KR102417848 B1 KR 102417848B1
Authority
KR
South Korea
Prior art keywords
data
virtual
command
storage
unit
Prior art date
Application number
KR1020210066360A
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 KR1020210066360A priority Critical patent/KR102417848B1/en
Application granted granted Critical
Publication of KR102417848B1 publication Critical patent/KR102417848B1/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Abstract

The present invention relates to a virtual storage management system. In addition, the present invention relates to a method and system for efficiently processing data of a virtual storage. In addition, the present invention relates to a data processing method of a virtual storage which provides a storage space to a terminal or a network through a virtual storage in which a plurality of storage devices are virtualized.

Description

가상 스토리지 관리 시스템 {Virtual storage management system}Virtual storage management system {Virtual storage management system}

본 발명은 가상 스토리지 관리 시스템에 관한 것이다.The present invention relates to a virtual storage management system.

또한 본 발명은 가상 스토리지의 데이터를 효율적으로 처리하는 방법 및 그 시스템에 관한 것이다.The present invention also relates to a method and system for efficiently processing data in a virtual storage.

또한 본 발명은 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 관한 것이다.Further, the present invention relates to a data processing method of a virtual storage that provides a storage space to a terminal or a network through 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 to create 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 the Republic of Korea 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 the replacement cycle is also short compared to the existing magnetic disk, so it is difficult to build and maintain.

따라서, 기존의 자기 디스크를 포함하는 다양한 복수의 스토리지 장치를 통해 구축된 가상 스토리지의 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.

공개특허공보 제10-2011-0080480호 (공개일자 2011년07월13일)Laid-open Patent Publication No. 10-2011-0080480 (published on July 13, 2011) 공개특허공보 제10-2014-0134464호 (공개일자 2014년11월24일)Laid-open Patent Publication No. 10-2014-0134464 (published on November 24, 2014)

본 발명은 상술한 문제점을 해결하기 위해, 가상화 운영 환경에서의 효율적인 데이터 처리가 가능한 가상 스토리지 기술을 제공하는 것을 목적으로 한다.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.

본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The technical problems to be achieved in the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those of ordinary skill in the art to which the present invention belongs from the description below. will be able

본 발명의 일 실시예는 복수의 스토리지 디바이스를 가상화한 가상 스토리지의 데이터를 효율적으로 처리하는 시스템에 있어서, 상기 가상 스토리지를 통해 단말 또는 네트워크에게 저장 공간을 제공하기 위한 신호를 송수신하는 통신부; 및 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위와 데이터 단위로 분리하고, 분리된 상기 명령 단위와 데이터 단위를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하고, 상기 생성단계에서 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하도록 제어하는 제어부; 를 포함하고, 상기 제어부는, 상기 명령 단위로부터 적어도 하나 이상의 가상 명령을 생성하고, 상기 명령생성단계에서 생성된 가상 명령에 따라 상기 데이터 단위를 가공하여 가상화된 데이터를 생성하는 것을 특징으로 하는 시스템을 제안한다.An embodiment of the present invention provides a system for efficiently processing data in a virtual storage virtualized with a plurality of storage devices, comprising: a communication unit for transmitting and receiving a signal for providing a storage space to a terminal or a network through the virtual storage; and dividing the received I/O request packet into a command unit and a data unit of a protocol data unit (PDU), and parallel processing the separated command unit and data unit to generate at least one virtualized data, the generating step a control unit that controls to transmit the virtualized data generated in the I/O request packet to the destination; including, wherein the control unit generates at least one virtual command from the command unit, and processes the data unit according to the virtual command generated in the command generating step to generate virtualized data. suggest

상기 제어부는, 수신 중인 I/O 요청 패킷이 이전에 이용된 프로토콜을 통해 수신된 것인지 여부를 확인하고, 확인 결과에 기반하여 해당 프로토콜을 인터넷 프로토콜(Internet Protocol, IP)로 변경하고, 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위의 명령 단위와 데이터 단위로 분리하는 것을 특징으로 할 수 있다.The control unit checks whether the receiving I/O request packet is received through a previously used protocol, changes the corresponding protocol to Internet Protocol (IP) based on the check result, and the receiving I It may be characterized in that the /O request packet is divided into a command unit and a data unit of a protocol data unit.

상기 제어부는, 상기 복수의 스토리지 디바이스 중 스토리지 잔여 용량률이 가장 큰 스토리지 디바이스가 가상화된 데이터를 저장하거나, 상기 스토리지 잔여 용량률이 가장 큰 스토리지 디바이스를 통하여 가상화된 데이터를 배포하도록 제어하는 것을 특징으로 할 수 있다.wherein the control unit controls such that a storage device having the largest residual storage capacity ratio among the plurality of storage devices stores virtualized data or distributing virtualized data through a storage device having the largest residual storage capacity ratio can do.

상기 제어부는, 가상화된 데이터가 생성될 때마다 상기 가상화된 데이터를 I/O 요청의 목적지로 전송하도록 제어하는 것을 특징으로 할 수 있다.The controller may control to transmit the virtualized data to the destination of the I/O request whenever virtualized data is generated.

상기 제어부는, 미리 설정된 개수 또는 용량의 가상 데이터가 생성되어 축적될 때마다 상기 미리 설정된 개수 또는 용량만큼 축적된 가상 데이터를 I/O 요청의 목적지로 전송하는 것을 특징으로 할 수 있다.The controller may be characterized in that whenever virtual data of a preset number or capacity is generated and accumulated, the virtual data accumulated by the preset number or capacity is transmitted to the destination of the I/O request.

본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 관한 것으로, 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위와 데이터 단위로 분리하는 분리단계; 분리된 상기 명령 단위와 데이터 단위를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 생성단계; 및 상기 생성단계에서 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 전송단계;를 포함하며, 상기 생성단계는, 상기 명령 단위로부터 적어도 하나 이상의 가상 명령을 생성하는 명령생성단계; 및 상기 명령생성단계에서 생성된 가상 명령에 따라 상기 데이터 단위를 가공하여 가상화된 데이터를 생성하는 데이터생성단계;를 포함하는 것을 특징으로 한다.A data processing method of a virtual storage according to an 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 obtained by virtualizing a plurality of storage devices. Separating the /O request packet into a command unit and a data unit of a protocol data unit (PDU); a generating step of generating at least one or more 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 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 generated data to the legacy device.

또한, 상기 전송단계는 상기 복수의 스토리지 디바이스 중 스토리지 잔여 용량률이 가장 큰 스토리지 디바이스가 가상화된 데이터를 저장하거나, 상기 스토리지 잔여 용량률이 가장 큰 스토리지 디바이스를 통하여 가상화된 데이터를 배포하는 단계인 것을 특징으로 하며, 상기 스토리지 잔여 용량률은 하기의 수학식에 대응하는 것을 특징으로 한다.In addition, in the transmitting step, a storage device having the largest residual storage capacity ratio among the plurality of storage devices stores virtualized data, or distributing virtualized data through a storage device having the largest residual storage capacity ratio Characterized in that, the storage remaining capacity ratio is characterized in that it corresponds to the following equation.

X=(Y-Z)χY [X=스토리지 잔여 용량률, Y=스토리지 디바이스의 전체 용량, Z=스토리지 디바이스에서 사용된 용량]X=(Y-Z)χY [X=percentage of storage capacity remaining, Y=total capacity of storage device, Z=capacity used on storage device]

또한, 상기 전송단계는 가상화된 데이터가 생성될 때마다 상기 가상화된 데이터를 I/O 요청의 목적지로 전송하는 단계인 것을 특징으로 한다.In addition, the transmitting step is characterized in that whenever virtualized data is generated, the virtualized data is transmitted to the destination of the I/O request.

또한, 상기 전송단계는 미리 설정된 개수 또는 용량의 가상 데이터가 생성되어 축적될 때마다 상기 미리 설정된 개수 또는 용량만큼 축적된 가상 데이터를 I/O 요청의 목적지로 전송하는 단계인 것을 특징으로 한다.In addition, the transmitting step is characterized in that whenever virtual data of a preset number or capacity is generated and accumulated, the virtual data accumulated by the preset number or capacity is transmitted to the destination of the I/O request.

그리고, 상기 명령생성단계는, 상기 분리단계에서 분리된 명령 단위를 수신하는 명령단위수신단계; 상기 가상 스토리지에 명령을 전달하는 복수의 가상 드라이버 중 상기 명령 단위의 헤더 정보를 확인하여, 상기 명령단위수신단계에서 수신한 명령 단위와 관련된 가상 드라이버의 고유한 식별정보를 추출하는 식별정보추출단계; 상기 식별정보를 통해 상기 명령 단위에 참조될 가상 드라이버가 존재하는지를 확인하고, 확인된 가상드라이버에 명령 단위를 전달하는 명령전달확인단계; 상기 명령 단위 및 상기 명령전달확인단계에서 확인된 가상 드라이버와 관련된 적어도 하나 이상의 가상 명령을 생성하는 가상명령생성단계; 및 상기 가상명령생성단계에서 생성된 가상 명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포하는 가상명령배포단계;를 포함하는 것을 특징으로 한다.In addition, the command generating step may include: a command unit receiving step of receiving the command unit separated in the separation 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 a 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 generated 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 it is determined that the virtualized data is suitable.

본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법은, I/O 요청에 대해, 수신 중인 I/O 요청 패킷으로부터 프로토콜 데이터 단위의 명령 단위와 데이터 단위를 분리하고, 병렬 처리를 통해 가상화된 데이터를 생성하기 때문에, I/O 블록 전체가 수신되는 것을 기다리지 않고도 요청된 I/O의 데이터 처리가 가능해짐에 따라, I/O 처리에 대한 지연발생을 최소화할 수 있는 효과가 있다.The data processing method of a virtual storage according to an 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 an 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.

또한, 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 잔여 용량률이 높은 스토리지 디바이스부터 가상 데이터의 저장 및 배포에 관여하도록 함으로써, 가상 스토리지가 가상화하는 복수의 스토리지 디바이스가 비슷한 수준으로 잔여 용량을 관리하도록 하는 효과가 있다.In addition, in the data processing method of the virtual storage according to an embodiment of the present invention, a storage device having a high residual capacity rate is involved in the storage and distribution of virtual data, so that a plurality of storage devices virtualized by the virtual storage are set to a similar level. It has the effect of managing the remaining capacity.

또한, 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 미리 설정된 개수 또는 용량의 데이터가 축적될 때마다 상기 미리 설정된 개수 또는 용량만큼 축적된 가상 데이터를 I/O 요청의 목적지로 전송함으로써 과도한 가상 데이터 전송 횟수에 따른 과도한 리소스 사용이나 오버헤드를 사전에 방지하도록 하는 효과가 있다.In addition, in the data processing method of the virtual storage according to an embodiment of the present invention, whenever data of a preset number or capacity is accumulated, the virtual data accumulated by the preset number or capacity is transmitted to the destination of the I/O request This has the effect of preventing excessive resource use or overhead due to the excessive number of virtual data transmissions in advance.

본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtainable in the present invention are not limited to the above-mentioned effects, and other effects not mentioned may be clearly understood by those of ordinary skill in the art to which the present invention belongs from the following description. will be.

본 발명의 특정한 일 실시예들의 상기에서 설명한 바와 같은 또한 다른 측면들과, 특징들 및 이득들은 첨부 도면들과 함께 처리되는 하기의 설명으로부터 보다 명백하게 될 것이다.
도 1a 및 도 1b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법을 대략적으로 도시한 순서도이다.
도 2a 및 도 2b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법을 적용한 데이터 처리 시스템을 대략적으로 도시한 것이다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법의 일 예를 시각화한 것이다.
도 4는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상명령생성단계의 일 예를 시각화한 것이다.
도 5a 및 도 5b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상데이터생성단계의 일 예를 시각화한 것이다.
상기 도면들을 통해, 유사 참조 번호들은 동일한 혹은 유사한 엘리먼트들과, 특징들 및 구조들을 도시하기 위해 사용된다는 것에 유의해야만 한다.
BRIEF DESCRIPTION OF THE DRAWINGS [0007] Other aspects, features and benefits as described above of certain embodiments of the present invention will become more apparent from the following description taken in conjunction with the accompanying drawings.
1A and 1B are flowcharts schematically illustrating a data processing method of a virtual storage according to an embodiment of the present invention.
2A and 2B schematically show a data processing system to which a data processing method of a virtual storage according to an embodiment of the present invention is applied.
3A and 3B are visualizations of an example of a data processing method of a virtual storage according to an 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 an embodiment of the present invention.
5A and 5B are visualizations of an example of a virtual data generation step in a data processing method of a virtual storage according to an embodiment of the present invention.
It should be noted that throughout the drawings, like reference numerals are used to denote the same or similar elements, features, and structures.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.In describing the embodiments, descriptions of technical contents that are well known in the technical field to which the present invention pertains and are not directly related to the present invention will be omitted. This is to more clearly convey the gist of the present invention without obscuring the gist of the present invention by omitting unnecessary description.

마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.For the same reason, some components are exaggerated, omitted, or schematically illustrated in the accompanying drawings. In addition, the size of each component does not fully reflect the actual size. In each figure, the same or corresponding elements are assigned the same reference numerals.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention, and a method for achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, and only these embodiments allow the disclosure of the present invention to be complete, and common knowledge in the technical field to which the present invention belongs It is provided to fully inform the possessor of the scope of the invention, and the present invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout.

이때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.At this time, it will be understood that each block of the flowchart diagrams and combinations of the flowchart diagrams may be performed by computer program instructions. These computer program instructions may be embodied in a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment, such that the instructions performed by the processor of the computer or other programmable data processing equipment are not described in the flowchart block(s). It creates a means to perform functions. These computer program instructions may also be stored in a computer-usable or computer-readable memory that may direct a computer or other programmable data processing equipment to implement a function in a particular manner, and thus the computer-usable or computer-readable memory. It is also possible that the instructions stored in the flow chart block(s) produce an article of manufacture containing instruction means for performing the function described in the flowchart block(s). The computer program instructions may also be mounted on a computer or other programmable data processing equipment, such that a series of operational steps are performed on the computer or other programmable data processing equipment to create a computer-executed process to create a computer or other programmable data processing equipment. It is also possible that instructions for performing the processing equipment provide steps for performing the functions described in the flowchart block(s).

또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.Additionally, each block may represent a module, segment, or portion of code that includes one or more executable instructions for executing specified logical function(s). It should also be noted that in some alternative implementations it is also possible for the functions recited in blocks to occur out of order. For example, two blocks shown one after another may be performed substantially simultaneously, or the blocks may sometimes be performed in the reverse order according to a corresponding function.

이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field-Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.In this case, the term '~ unit' used in this embodiment means software or hardware components such as field-programmable gate array (FPGA) or ASIC (Application Specific Integrated Circuit), and '~ unit' refers to what role carry out the However, '-part' is not limited to software or hardware. '~' may be configured to reside on an addressable storage medium or may be configured to refresh one or more processors. Accordingly, as an example, '~' indicates components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, and procedures. , subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables. The functions provided in the components and '~ units' may be combined into a smaller number of components and '~ units' or further separated into additional components and '~ units'. In addition, components and '~ units' may be implemented to play one or more CPUs in a device or secure multimedia card.

본 발명의 실시예들을 구체적으로 설명함에 있어서, 특정 시스템의 예를 주된 대상으로 할 것이지만, 본 명세서에서 청구하고자 하는 주요한 요지는 유사한 기술적 배경을 가지는 여타의 통신 시스템 및 서비스에도 본 명세서에 개시된 범위를 크게 벗어나지 아니하는 범위에서 적용 가능하며, 이는 당해 기술분야에서 숙련된 기술적 지식을 가진 자의 판단으로 가능할 것이다.In describing embodiments of the present invention in detail, an example of a specific system will be mainly targeted, but the main subject matter to be claimed in the present specification is to extend the scope disclosed herein to other communication systems and services having a similar technical background. It can be applied within a range that does not deviate significantly, and this will be possible at the discretion of a person with technical knowledge skilled in the art.

도 1a 내지 도 1b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법을 대략적으로 도시한 순서도이다.1A to 1B are flowcharts schematically illustrating a data processing method of a virtual storage according to an embodiment of the present invention.

도 1a를 참조하면, 본 발명의 일 실시예에 따라, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법은 분리단계(S100), 생성단계(S200) 및 전송단계(S300)을 포함할 수 있다.Referring to FIG. 1A , according to an embodiment of the present invention, a data processing method of a virtual storage that provides a storage space to a terminal or a network through a virtual storage virtualized a plurality of storage devices includes a separation step ( S100 ), a creation step (S200) and a transmission step (S300) may be included.

본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법을 단계적으로 설명하기에 앞서, 본 발명의 가상 스토리지의 데이터 처리 방법은 당업계에서 활용되는 다양한 방식 및/또는 iSCSI 표준에 의해 공지된 방식을 채용할 수 있다.Before describing the data processing method of the virtual storage according to an embodiment of the present invention step by step, the data processing method of the virtual storage of the present invention includes various methods utilized in the art and/or methods known by the iSCSI standard. can be hired

예컨대, 본 발명의 가상 스토리지의 데이터 처리 방법은 SCSI(Small Computer System Interface), AHCI(Advanced Host Controller Interface), SATA(Serial ATA) 및 NVMe(Non-Volatile Memory Express) 등의 다양한 프로토콜에 기반할 수 있다. 일 예로, 본 발명은 TCP/IP 상에서 블록 단위(Block-level) SCSI 정보를 캡슐화하여 전달하는 iSCSI(Internet Small Computer System Interface)의 프로토콜에 기반하여 가상 스토리지 서비스의 I/O를 처리하는 시스템에 적용되는 기술과 관련될 수 있다.For example, the data processing method of the virtual storage of the present invention may be based on various protocols such as SCSI (Small Computer System Interface), AHCI (Advanced Host Controller Interface), SATA (Serial ATA), and NVMe (Non-Volatile Memory Express). have. As an example, the present invention is applied to a system that processes I/O of a virtual storage service based on an Internet Small Computer System Interface (iSCSI) protocol that encapsulates and delivers block-level SCSI information over TCP/IP. It may be related to the technology being

한편 iSCSI(Internet Small Computer System Interface)는 컴퓨팅 환경에서 데이터 스토리지 시설을 이어주는 IP 기반의 스토리지 네트워킹 표준이다. iSCSI는 IP 망을 통해 SCSI 명령을 전달함으로써 인트라넷을 거쳐 데이터 전송을 쉽게 하고 먼 거리에 걸쳐 스토리지를 관리하는 데 쓰인다. iSCSI는 근거리 통신망과 원거리 통신망, 아니면 인터넷을 통해 데이터를 전송하는 데 쓰이며 위치에 영향을 받지 않는 데이터 보관과 복구를 사용할 수 있게 한다.Meanwhile, iSCSI (Internet Small Computer System Interface) is an IP-based storage networking standard that connects data storage facilities in a computing environment. iSCSI is used to facilitate data transfer across intranets and to manage storage over long distances by passing SCSI commands over IP networks. iSCSI is used to transfer data over local area networks, wide area networks, or the Internet, enabling location-agnostic data storage and recovery.

이하에서는 설명의 편의를 위하여 iSCSI 및 SCSI에 기반하는 발명의 실시예에 한정하여 설명하나, 발명의 내용이 iSCSI 및 SCSI에 기반하는 범위로 제한되는 것은 아니다.Hereinafter, embodiments of the invention based on iSCSI and SCSI are limited to embodiments of the invention for convenience of description, but the content of the invention is not limited to the scope based on iSCSI and SCSI.

도 2a 및 도 2b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법을 적용한 데이터 처리 시스템을 대략적으로 도시한 것이고, 도 3a 및 도 3b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법의 일 예를 시각화한 것이다.2A and 2B schematically show a data processing system to which a data processing method of a virtual storage according to an embodiment of the present invention is applied, and FIGS. 3A and 3B are data of a virtual storage according to an embodiment of the present invention. An example of a processing method is visualized.

도 2a를 참조하면, 본 발명의 일 실시예는 이니시에이터(initiator)(10), 네트워크(20) 및 데이터 처리 시스템(100)에 의해 구현될 수 있다.Referring to FIG. 2A , an embodiment of the present invention may be implemented by an initiator 10 , a network 20 , and a data processing system 100 .

도 2b를 참조하면, 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)은 서버(server)(200) 및/또는 단말(terminal, user equipment)(300)에 의해 구현될 수 있다.Referring to FIG. 2B , the data processing system 100 according to an embodiment of the present invention may be implemented by a server 200 and/or a terminal, user equipment 300 .

또한 본 발명의 서버(200)는 제1 제어부(210), 제1 통신부(220), 제1 입력 인터페이스(230), 제1 출력 인터페이스(240) 및 저장부(250)를 포함할 수 있으며, 본 발명의 단말(300)은 제2 제어부(310), 제2 통신부(320), 제2 입력 인터페이스(330), 제2 출력 인터페이스(340) 및 내부배터리(350)를 포함할 수 있다.In addition, the server 200 of the present invention may include a first control unit 210 , a first communication unit 220 , a first input interface 230 , a first output interface 240 , and a storage unit 250 , The terminal 300 of the present invention may include a second control unit 310 , a second communication unit 320 , a second input interface 330 , a second output interface 340 , and an internal battery 350 .

제어부(210, 310)는 본 발명의 일 실시예에 따른 동작/단계/과정을 구현할 수 있도록 본 발명의 서버(200) 및/또는 본 발명의 단말(300)을 직/간접적으로 제어할 수 있다. 또한 제어부(210, 310)는 적어도 하나의 프로세서를 포함할 수 있으며, 프로세서는 적어도 하나의 중앙 처리 유닛(CPU) 및/또는 적어도 하나의 그래픽 처리 디바이스(GPU)를 포함할 수 있다.The controllers 210 and 310 may directly/indirectly control the server 200 of the present invention and/or the terminal 300 of the present invention to implement an operation/step/process according to an embodiment of the present invention. . In addition, the controllers 210 and 310 may include at least one processor, and the processor may include at least one central processing unit (CPU) and/or at least one graphics processing device (GPU).

통신부(220, 320)는 본 발명의 서버(200) 및/또는 본 발명의 단말(300) 등과 각종 데이터, 신호, 정보를 송수신할 수 있다. 또한, 통신부(220, 320)는 무선 통신 모듈(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 또한, 통신부(220, 320)는 제1 네트워크(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제2 네트워크(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)으로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다.The communication units 220 and 320 may transmit/receive various data, signals, and information to and from the server 200 of the present invention and/or the terminal 300 of the present invention. In addition, the communication units 220 and 320 may include a wireless communication module (eg, a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module (eg, a local area network (LAN) communication module). , or a power line communication module). In addition, the communication units 220 and 320 may include a first network (eg, a short-range communication network such as Bluetooth, WiFi direct or IrDA (infrared data association)) or a second network (eg, a cellular network, the Internet, or a computer network (eg, LAN) Alternatively, it may communicate with an external electronic device through a telecommunication network (such as a WAN). These various types of communication modules may be integrated into one component (eg, a single chip) or may be implemented as a plurality of components (eg, multiple chips) separate from each other.

입력 인터페이스(230, 330)은 본 발명의 서버(200) 및/또는 본 발명의 단말(300)의 구성요소(예: 제어부(210, 310) 등)에 사용될 명령 또는 데이터를 본 발명의 서버(200) 및/또는 본 발명의 단말(300)의 외부(예: 제1 사용자, 제2 사용자 등), 본 발명의 서버(200)의 관리자 등)로부터 수신할 수 있다. 또한, 입력 인터페이스(230, 330)은 서버(200) 및/또는 단말(300)에 설치된 터치인식가능 디스플레이, 터치패드, 버튼형 인식 모듈, 음성인식센서, 마이크, 마우스, 또는 키보드 등을 포함할 수 있다. 여기서 터치인식가능 디스플레이, 터치패드, 버튼형 인식 모듈은 감압식 및/또는 정전식 방식을 통하여 사용자의 신체(예; 손가락)를 통한 터치를 인식할 수 있다.The input interfaces 230 and 330 transmit commands or data to be used in the server 200 of the present invention and/or components of the terminal 300 of the present invention (eg, the control units 210 and 310, etc.) to the server ( 200) and/or from outside the terminal 300 of the present invention (eg, a first user, a second user, etc., an administrator of the server 200 of the present invention, etc.). In addition, the input interfaces 230 and 330 may include a touch recognition capable display installed in the server 200 and/or the terminal 300, a touch pad, a button-type recognition module, a voice recognition sensor, a microphone, a mouse, or a keyboard. have. Here, the touch recognition capable display, touch pad, and button type recognition module may recognize a touch through the user's body (eg, finger) through a pressure-sensitive and/or capacitive method.

출력 인터페이스(240, 340)는 본 발명의 서버(200) 및/또는 본 발명의 단말(300)의 제어부(210, 310)에 의해 생성되거나 통신부(220, 320)를 통하여 획득된 신호(예; 음성 신호), 정보, 데이터, 이미지, 및/또는 각종 객체(object) 등을 표시하는 모듈이다. 예를 들면, 출력 인터페이스(240, 340)은 디스플레이, 스크린, 표시부(displaying unit), 스피커 및/또는 발광장치(예; LED 램프) 등을 포함할 수 있다.The output interfaces 240 and 340 are generated by the controllers 210 and 310 of the server 200 of the present invention and/or the terminal 300 of the present invention or signals obtained through the communication units 220 and 320 (eg; audio signal), information, data, images, and/or various objects. For example, the output interfaces 240 and 340 may include a display, a screen, a displaying unit, a speaker, and/or a light emitting device (eg, an LED lamp).

또한, 본 발명의 서버(200) 및/또는 단말(300)은 저장 모듈(storage module)을 더 포함할 수 있으며, 본 발명의 서버(200) 및/또는 단말(300)의 동작을 위한 기본 프로그램, 응용 프로그램, 설정 정보 등의 데이터를 저장한다. 또한, 저장 모듈은 플래시 메모리 타입(Flash Memory Type), 하드 디스크 타입(Hard Disk Type), 멀티미디어 카드 마이크로 타입(Multimedia Card Micro Type), 카드 타입의 메모리(예를 들면, SD 또는 XD 메모리 등), 자기 메모리, 자기 디스크, 광디스크, 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory, ROM), PROM(Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory) 중 적어도 하나의 저장매체를 포함할 수 있다.In addition, the server 200 and/or the terminal 300 of the present invention may further include a storage module, and a basic program for the operation of the server 200 and/or the terminal 300 of the present invention , application programs, and data such as setting information are stored. In addition, the storage module is a flash memory type (Flash Memory Type), a hard disk type (Hard Disk Type), a multimedia card micro type (Multimedia Card Micro Type), a card type memory (eg, SD or XD memory, etc.), Magnetic Memory, Magnetic Disk, Optical Disk, Random Access Memory (RAM), Static Random Access Memory (SRAM), Read-Only Memory, ROM, Programmable Read-Only Memory (PROM), Electrically Erasable Programmable Read (EEPROM) -Only Memory) may include at least one storage medium.

또한, 상기 저장 모듈은 본 발명의 서버(200) 및/또는 본 발명의 단말(300)을 사용하는 사용자의 개인정보를 포함할 수 있다. 여기서 개인정보는 이름, 아이디(ID; identifier), 패스워드, 주민등록번호, 도로명 주소, 전화 번호, 휴대폰 번호, 및/또는 이메일 주소 등을 포함할 수 있다. 또한, 제어부(210, 310)는 저장 모듈에 저장된 각종 프로그램, 컨텐츠, 데이터 등을 이용하여 다양한 동작을 수행할 수 있다.In addition, the storage module may include personal information of a user who uses the server 200 of the present invention and/or the terminal 300 of the present invention. Here, the personal information may include a name, ID (identifier), password, resident registration number, street name address, phone number, mobile phone number, and/or e-mail address. In addition, the controllers 210 and 310 may perform various operations using various programs, contents, data, etc. stored in the storage module.

또한 도 2a, 도 3a 및 도 3b를 참조하여 설명하자면, 분리단계(S100)는 데이터 처리 시스템(100)에서의 통신 유닛(110)이 네트워크를 통해 이니시에이터(10)로부터 요청된 I/O 해당 I/O가 TCP/IP, 파이버 채널 및 기타 유사한 프로토콜과 같은 적절한 프로토콜 형식을 가지는지 확인하는 단계가 선행된다.Also, to explain with reference to FIGS. 2A, 3A and 3B, the separation step (S100) is the I/O corresponding I/O requested by the communication unit 110 in the data processing system 100 from the initiator 10 through the network. This is followed by ensuring that /O has the appropriate protocol format, such as TCP/IP, Fiber Channel, and other similar protocols.

이니시에이터(10)는, SU(Single User)-MIMO(Multiple Input Multiple Output) 동작을 서포트하는 장치이며, 레시프로칼(Reciprocal, 상반성) MIMO 페이즈 및 논레시프로칼(Non-Reciprocal, 비상반성) MIMO 페이즈의 어느 것이 SU-MIMO BF(Beam Forming) 트레이닝에 적용되는지를 나타내는 값을 포함한 제1의 신호를 생성하는 생성 회로와, 상기 제1의 신호를 리스폰더 장치에 송신하는 송신 회로를 구비하는 구성을 취할 수 있다.The initiator 10 is a device that supports a single user (SU)-multiple input multiple output (MIMO) operation, and a reciprocal (reciprocal) MIMO phase and a non-reciprocal (Non-Reciprocal, non-reflection) operation. A generating circuit for generating a first signal including a value indicating which of the MIMO phases is applied to SU-MIMO Beam Forming (BF) training; and a transmitting circuit for transmitting the first signal to a responder device. configuration can be taken.

통신 유닛(110)은 프로토콜의 구현이 가능하며, 분리단계(S100)에서는 수신 중인 I/O 요청 패킷이 이전에 이용된 프로토콜을 통해 수신된 것인지 여부를 확인하여, 해당 프로토콜을 인터넷 프로토콜(Internet Protocol, IP)로 변경하는 과정이 이루어질 수 있다.The communication unit 110 can implement the protocol, and in the separation step S100 , it is checked whether the I/O request packet being received is received through the previously used protocol, and the corresponding protocol is converted to the Internet Protocol (Internet Protocol). , IP) can be changed.

이후, 로직 유닛(120)이 패킷 단위로 수신 중인 I/O 요청과 관련하여 iSCSI 데이터를 프로토콜 데이터 단위(PDU: Protocol Data Unit)의 명령 단위인 SCSI 명령과 데이터 단위인 SCSI 데이터로 분리하는 단계이다. 여기서, SCSI 명령과 SCSI 데이터는 iSCSI 패킷의 iSCSI PDU 내에 포함될 수 있다.Thereafter, in relation to the I/O request being received by the logic unit 120 in packet units, it is a step of separating the iSCSI data into a SCSI command, which is a command unit of a protocol data unit (PDU), and SCSI data, which is a data unit. . Here, the SCSI command and SCSI data may be included in the iSCSI PDU of the iSCSI packet.

또한, iSCSI 패킷의 iSCSI 헤더(header)에는 SCSI 명령 및 SCSI 데이터의 추출방법이 포함될 수 있다. 로직 유닛(120)은 iSCSI PDU 및 iSCSI 헤더에 기초하여 SCSI 명령과 SCSI 데이터를 명령 단위(예; command PDU)와 데이터 단위(예; data PDU)로 분리할 수 있다. 이후, 로직 유닛(120)은 명령 PDU와 데이터 PDU를 각각 커맨드 유닛(130)과 데이터 엔진(140)에 제공하게 되며, 후술할 생성단계(S200)에서 커맨드 유닛(130)과 데이터 엔진(140)이 iSCSI 데이터를 명령 부분과 데이터 부분으로 병렬 처리할 수 있다.Also, the iSCSI header of the iSCSI packet may include a SCSI command and a method of extracting SCSI data. The logic unit 120 may separate the SCSI command and SCSI data into a command unit (eg, command PDU) and a data unit (eg, data PDU) based on the iSCSI PDU and the iSCSI header. 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 generating step S200 to be described later, the command unit 130 and the data engine 140 . This iSCSI data can be processed in parallel into command part and data part.

병렬 처리는 하나의 데이터 단위를 구성하고 있는 각 비트(bit)들에 대한 독립적인 연산들을 병렬로 처리하는 비트 단위 병렬 처리에 대응할 수 있다. 또는, 병렬 처리는 한 프로세스 내의 여러 변수(variable)들을 동시에 계산하는 변수 단위 병렬 처리에 대응할 수 있다. 또는, 병렬 처리는 서로 다른 사용자들에 의해 제출된 작업(job) 프로그램들 혹은 한 사용자에 의해 제출된 여러 개의 독립적인 작업 프로그램 단위로 병렬 처리하는 작업 병렬 처리에 대응할 수 있다. 또는, 병렬 처리는 작업 프로그램을 구성하는 복수의 태스크(task) 단위로 병렬 처리하는 태스크 병렬 처리에 대응할 수 있다.Parallel processing may correspond to bit-unit parallel processing in which independent operations for each bit constituting one data unit are processed in parallel. Alternatively, parallel processing may correspond to variable unit parallel processing in which several variables in one process are simultaneously calculated. Alternatively, parallel processing may correspond to job parallel processing in which job programs submitted by different users or multiple independent job program units submitted by one user are parallelized. Alternatively, parallel processing may correspond to task parallel processing in which parallel processing is performed in units of a plurality of tasks constituting the work program.

생성단계(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 separation 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).

도 4a 및 도 4b는 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상명령생성단계의 일 예를 시각화한 것이다.4A and 4B are visualizations of an example of a virtual command generation step in a data processing method of a virtual storage according to an embodiment of the present invention.

도 1a 내지 도 4b를 참조하여 설명하자면, 명령생성단계(S210)는 커맨드 유닛(130)이 분리단계(S100)에서 로직 유닛(120)에 의해 분리된 명령PDU로부터 적어도 하나 이상의 가상 명령을 생성하는 단계이며, 명령단위수신단계(S211), 식별정보추출단계(S212), 명령전달확인단계(S213), 가상명령생성단계(S214) 및 가상명령배포단계(S215)를 포함할 수 있다.1A to 4B, in the command generation step S210, the command unit 130 generates at least one virtual command from the command PDU separated by the logic unit 120 in the separation 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정보를 통해 명령DPU가 복수의 스토리지 디바이스를 가상화한 가상 스토리지(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, and a virtual information related to the command PDU received in the command unit receiving step (S211) 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 identifier number logically used in the SCSI method, and the command unit 130 uses the LUN information to provide the command DPU with a plurality of storage units. 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.

다만, 명령 PDU가 특정 스토리지 디바이스 A에 대응하는 명령인 경우에, 해당 명령에 대응되는 동작을 수행하는 물리적 스토리지 디바이스가 반드시 특정 스토리지 디바이스 A에 한정되어야 하는 것은 아니다. 나아가, 해당 명령에 대응되는 데이터PDU가 반드시 특정 스토리지 디바이스 A에 저장되거나, 특정 스토리지 디바이스 A를 통하여 I/O 요청 패킷의 목적지에 전송되어야 하는 것은 아니다. 예컨대, 실시예에 따라, 가상 스토리지(150)는 각 물리적 스토리지 디바이스의 가용 스토리지 용량에 기초하여 명령 PDU에 대응되는 데이터PDU를 저장하거나 배포할 물리적 스토리지 디바이스를 결정할 수 있으며, 이와 관련한 상세한 사항은 후술할 전송단계(S300)에 대한 설명에서 보다 자세히 설명된다.However, when the command PDU is a command corresponding to a specific storage device A, a physical storage device performing an operation corresponding to the command is not necessarily limited to the specific storage device A. Furthermore, the data PDU corresponding to the corresponding command does not necessarily have to be stored in the specific storage device A or transmitted to the destination of the I/O request packet through the specific storage device A. For example, according to an embodiment, the virtual storage 150 may determine a physical storage device to store or distribute a data PDU corresponding to the command PDU based on the available storage capacity of each physical storage device, and related details will be described later. It will be described in more detail in the description of the transmission step (S300) to be performed.

가상 스토리지(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)는 식별정보추출단계(S212)에서 추출된 LUN정보를 통해 명령PDU로부터 확인된 스토리지 디바이스에 명령을 전달하는 가상 드라이버가 존재하는지를 확인하고, 확인된 가상드라이버에 명령PDU를 전달하는 단계에 대응될 수 있다. 구체적으로, 명령전달확인단계(S213)는 커맨드 유닛(130)이 명령PDU에 참조될 가상 드라이버가 존재하는지 확인하고, 확인된 가상 스토리지의 LUN정보와 명령PDU를 매칭시켜, 해당 명령PDU의 명령을 전달하는 가상 드라이버를 데이터테이블 형태로 저장한 가상 드라이버 테이블을 생성할 수 있다.The virtual storage 150 transmits commands according to I/O to a virtual volume manager (VVM) that manages a plurality of storage devices as one virtual storage area (Volume) and a virtual volume in the form of a hardware or software module. Virtual drivers including 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 are included. According to an embodiment, 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), It may correspond to the step of delivering the command PDU to the virtual driver. Specifically, 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 executes the command of the command PDU. You can create a virtual driver table that stores the delivered virtual driver in the form of a data table.

명령전달확인단계(S213)에서 커맨드 유닛(130)은 가상 스토리지(150)에서 수신한 명령PDU에 실질적으로 I/O가 발생되는 스토리지 디바이스에 명령을 전달하여 가상 저장영역으로 작동되도록 명령을 전달하는 가상 드라이버가 어떠한 것인지 확인하고, 각 가상 드라이버가 명령 PDU에 맞게 스토리지 디바이스에 명령을 전달하는지 확인하여, 각 명령PDU에 관련된 가상 드라이버 종류 및 명령을 가상 드라이버 테이블에 저장할 수 있다. 이때, 커맨드 유닛(130)은 가상 스토리지(150)와 연결(Coupled)되어 있기 때문에, 가상 드라이버의 작동 내역을 확인할 수 있다.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 a command PDU received from the virtual storage 150 to deliver a command to operate as a virtual storage area. By checking what kind of virtual driver is and whether each virtual driver transmits a command to the storage device according to the command PDU, the virtual driver type and command related to each command PDU can be stored in the virtual driver table. In this case, since the command unit 130 is coupled to the virtual storage 150 , the operation details of the virtual driver may be checked.

가상명령생성단계(S214)는 커맨드 유닛(130)이 명령단위수신단계(S211)에서 수신한 명령PDU와 관련하여 적어도 하나의 가상 명령을 생성하는 단계일 수 있다. 실시예에 따라, 커맨드 유닛(130)은 수신한 명령 PUD와 함께 해당 명령PDU의 명령을 전달하는 가상 드라이버와 관련하여 적어도 하나의 가상 명령을 생성할 수 있다. 예컨대, 커맨드 유닛(130)은 수신한 명령PDU에 대응되는 가상 드라이버의 동작 내역을 가상 드라이버 테이블로부터 확인하고, 명령PDU에 대응하는 가상 드라이버의 동작 내역이 존재하는 경우에 한하여, 가상 명령을 생성할 수 있다. 또는, 커맨드 유닛(130)은 명령PDU에 대응하는 가상 드라이버의 동작 내역이 존재하지 않더라도, 명령PDU 자체가 유효하면 가상 명령을 생성할 수도 있다.The virtual command generating step S214 may be 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 . According to an embodiment, the command unit 130 may generate at least one virtual command in relation to a virtual driver that transmits a command of a corresponding command PDU together with the received command PUD. For example, 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. can Alternatively, the command unit 130 may generate a virtual command if the command PDU itself is valid even if the operation details of the virtual driver corresponding to the command PDU do not exist.

가상명령배포단계(S215)는 커맨드 유닛(130)이 가상명령생성단계(S214)에서 생성된 가상 명령을 배포하는 단계이다. 실시예에 따라, 커맨드 유닛(130)은 생성된 가상명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포할 수도 있다.The virtual command distribution step ( S215 ) is a step in which the command unit 130 distributes the virtual command generated in the virtual command generation step ( S214 ). According to an embodiment, the command unit 130 may determine whether the generated virtual command is appropriate, and distribute the virtual command only when appropriate.

커맨드 유닛(130)은 가상 명령을 배포할 때까지 가상 드라이버 테이블의 저장을 유지할 수 있다. 또는, 커맨드 유닛(130)은 데이터 엔진(140)이 가상 명령을 성공적으로 수신하였음을 확인할 때까지 가상 드라이버 테이블의 저장을 유지할 수 있다(즉, 유지 시간 이후에는 해당 가상 드라이버 테이블을 삭제할 수 있다). 관련하여, 커맨드 유닛(130)은 데이터 엔진(140)으로부터 가상 명령의 성공적인 수신을 알리는 신호(예를 들어, ACK 신호)를 수신할 수 있다. 또는, 커맨드 유닛(130)은 데이터 엔진(140)이 가상 데이터를 성공적으로 배포하였음을 확인할 때까지 가상 드라이버 테이블의 저장을 유지할 수 있다(즉, 유지 시간 이후에는 해당 가상 드라이버 테이블을 삭제할 수 있다). 관련하여, 커맨드 유닛(130)은 데이터 엔진(140)으로부터 가상 데이터의 성공적인 배포를 알리는 신호를 수신할 수 있다.The command unit 130 may maintain storage of the virtual driver table until distributing the virtual command. Alternatively, the command unit 130 may maintain the storage of the virtual driver table until the data engine 140 confirms that the virtual command has been successfully received (that is, the virtual driver table may be deleted after the retention time). . In this regard, the command unit 130 may receive a signal (eg, an ACK signal) announcing successful reception of the virtual command from the data engine 140 . Alternatively, the command unit 130 may maintain the storage of the virtual driver table until the data engine 140 confirms that the virtual data has been successfully distributed (that is, the virtual driver table may be deleted after the retention time). . In this regard, the command unit 130 may receive a signal from the data engine 140 announcing successful distribution of the virtual data.

한편, 커맨드 유닛(130)은 i) 본 발명의 데이터 처리 시스템(100), 서버(200) 및/또는 단말(300)의 성능, ii) 가상 명령을 성공적으로 수신하였음을 나타내는 메시지가 수신된 횟수 및/또는 상기 메시지를 전송한 단말들(또는 네트워크 장치들)의 개수 또는 iii) 상기 단말(300)이나 외부 단말(미도시)의 내부배터리의 충전잔량에 기반하여 상기 유지 시간을 상이하게 설정할 수도 있다.On the other hand, the command unit 130 i) the performance of the data processing system 100, the server 200 and/or the terminal 300 of the present invention, ii) the number of times a message indicating that the virtual command has been successfully received is received and/or the number of terminals (or network devices) that have transmitted the message or iii) the holding time may be set differently based on the remaining charge amount of the internal battery of the terminal 300 or the external terminal (not shown) have.

일 예로, 데이터 처리 시스템(100)이 단말(300)을 포함하는 경우에는, 상기 단말(300)의 내부배터리(350)의 충전잔량이 소정의 임계치를 넘는 경우에는 미리 설정된 시간 만큼의 유지 시간을 설정하되(또는 기존의 유지 시간에 기반하여 상기 가상 드라이버 테이블을 유지하되), 상기 내부배터리(350)의 충전잔량이 상기 소정의 임계치를 넘지 못하는 경우에는 상기 유지 시간(HT, holding time)을 아래 수학식 2에 기반하여 재설정할 수 있다. (HT는 재설정되는 유지 시간에 상응하며, HT0는 기존에 설정된 유지 시간(즉, 초기값)에 상응하며, TDS(Data Size of virtual driver Table)는 가상 드라이버 테이블의 데이터 크기에 상응하며, RN(Reception Number)은 가상 명령을 성공적으로 수신하였음을 나타내는 메시지가 수신된 횟수(및/또는 상기 메시지를 전송한 단말들(또는 네트워크 장치들)의 개수)에 상응하며, RB(Remaining Battery)에 상기 내부배터리(350)의 충전잔량(잔여배터리값)에 상응할 수 있다.For example, when the data processing system 100 includes the terminal 300, when the remaining amount of charge of the internal battery 350 of the terminal 300 exceeds a predetermined threshold, a holding time for a preset time is maintained. Set (or maintain the virtual driver table based on the existing holding time), but when the remaining charge amount of the internal battery 350 does not exceed the predetermined threshold, the holding time (HT, holding time) is lowered. It can be reset based on Equation (2). (HT corresponds to the reset holding time, HT0 corresponds to the previously set holding time (that is, the initial value), TDS (Data Size of virtual driver Table) corresponds to the data size of the virtual driver table, RN ( Reception Number) corresponds to the number of times a message indicating that the virtual command has been successfully received (and/or the number of terminals (or network devices) that transmitted the message), and is stored in the RB (Remaining Battery). It may correspond to the remaining charge amount (remaining battery value) of the battery 350 .

Figure 112021059566402-pat00001
Figure 112021059566402-pat00001

다른 예로, 데이터 처리 시스템(100)이 단말(300)이 아닌 경우에는 아래 수학식 3에 기반하여 재설정할 수 있다. (HT는 재설정되는 유지 시간에 상응하며, HT0는 기존에 설정된 유지 시간(즉, 초기값)에 상응하며, TDS(Data Size of virtual driver Table)는 가상 드라이버 테이블의 데이터 크기에 상응하며, RN(Reception Number)은 가상 명령을 성공적으로 수신하였음을 나타내는 메시지가 수신된 횟수(및/또는 상기 메시지를 전송한 단말들(또는 네트워크 장치들)의 개수)에 상응할 수 있다.As another example, when the data processing system 100 is not the terminal 300, it may be reset based on Equation 3 below. (HT corresponds to the reset holding time, HT0 corresponds to the previously set holding time (that is, the initial value), TDS (Data Size of virtual driver Table) corresponds to the data size of the virtual driver table, RN ( Reception Number) may correspond to the number of times a message indicating that the virtual command has been successfully received is received (and/or the number of terminals (or network devices) that have transmitted the message).

Figure 112021059566402-pat00002
Figure 112021059566402-pat00002

실시예에 따라, 가상명령배포단계(S215)는 커맨드 유닛(130)이 가상명령생성단계(S214)에서 생성된 적어도 하나 이상의 가상 명령과 관련된 가상 드라이버가 해당 가상 명령을 가상 스토리지(150)에 전달할 수 있는 경우, 해당 가상 명령을 배포하는 단계일 수 있다. 이 경우, 커맨드 유닛(130)은 생성된 가상명령이 명령PDU로 확인된 가상 드라이브를 호출(Call)하는지 여부와 가상 명령이 명령PDU가 요구하는 모든 가상 드라이버에 접근(Access) 가능한지를 확인하여 가상 명령 배포를 결정하게 된다. 따라서, 커맨드 유닛(130) 배포하는 가상 명령에는 데이터 전송의 목적지가 되는 헤더 정보를 포함하고 있기 때문에, 이후 데이터생성단계(S220) 이후에 생성될 가상화된 데이터의 헤더로 대체하여 이용될 수 있다.According to an embodiment, in the virtual command distribution step S215 , the command unit 130 transmits the virtual command to the virtual storage 150 by a virtual driver related to at least one or more virtual commands generated in the virtual command generation step S214 . If possible, it may be a step of distributing the corresponding virtual command. In this case, the command unit 130 checks whether the generated virtual command calls the virtual drive identified by the command PDU and whether the virtual command can access all virtual drivers required by the command PDU. You decide to distribute the command. 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 as a substitute for a 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 an 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 a virtual command related in the virtual data generation step (S224), which will be described later. Since the data PDU is also based on SCSI like the command PDU, it is 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 generating 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 according to identification information in the corresponding virtual command and stored, 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 matching the virtual command used for virtualization of the corresponding data PDU is checked from the switching table, and new header information is created and added from the identified identification information to create virtualized data. 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 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, whether to distribute the virtualized data is determined 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.

일실시예에 따르면, 데이터 시퀀스 정보가 데이터PDU에 포함되지 않는 경우에도, 사전에 정의된 데이터 시퀀스 규칙이 존재하는 경우, 데이터 엔진(140)이 가상데이터생성단계(S224)에서 가상화된 데이터를 배포할 수 있다. 예컨대, 데이터 시퀀스 규칙은 스토리지 잔여 용량률이 가장 큰 물리적 스토리지 디바이스에 가상화된 데이터를 저장하거나, 스토리지 잔여 용량률이 가장 큰 물리적 스토리지 디바이스를 통하여 가상화된 데이터를 배포하도록 결정될 수 있다. 여기서, 가상 스토리지(150)가 가상화하는 복수의 스토리지 디바이스 각각에 대하여 스토리지 잔여 용량률(X)은 아래의 수학식 1에 기반하여 산출될 수 있다.According to an embodiment, even when data sequence information is not included in the data PDU, if a predefined data sequence rule exists, the data engine 140 distributes the virtualized data in the virtual data generation step ( S224 ). can do. For example, the data sequence rule may be determined to store virtualized data in a physical storage device having the largest remaining storage capacity ratio or to distribute virtualized data through a physical storage device having the largest remaining storage capacity ratio. Here, the storage remaining capacity ratio X for each of the plurality of storage devices virtualized by the virtual storage 150 may be calculated based on Equation 1 below.

Figure 112021059566402-pat00003
Figure 112021059566402-pat00003

이때 X는 스토리지 잔여 용량률에 상응하고, Y는 스토리지 디바이스의 전체 용량에 상응하고, Z는 스토리지 디바이스에서 사용된 용량에 상응할 수 있다. 스토리지 디바이스에서 사용된 용량은 스토리지 디바이스에 이미 저장된 데이터가 차지하는 용량을 의미할 수 있다. 그 외에도, 다양한 방식에 따라 데이터 시퀀스 규칙이 결정될 수 있다.In this case, X may correspond to a storage remaining capacity percentage, Y may correspond to a total capacity of the storage device, and Z may correspond to a used capacity in the storage device. The capacity used in the storage device may mean a capacity occupied by data already stored in the storage device. In addition, the data sequence rule may be determined according to various methods.

전송단계(S300)는 데이터 엔진(140) 또는 통신 유닛(110)이 가상데이터배포단계(S225)에서 배포된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 단계이다. 이때, 전송단계(S300)에서 I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야하는 레거시 장치인 경우, 데이터 엔진(140)은 I/O 요청 패킷 전부가 수신되는 동안 생성된 가상화된 데이터를 축적하고, 축적된 가상화된 데이터를 레거시 장치의 데이터 전송 시퀀스에 대응하는 순서로 컴파일하여 가상화된 데이터 생성하여 레거시 장치에 전송할 수 있다. 반면, 전송단계(S300)에서 I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야 하는 장치가 아닌 경우, 데이터 엔진(140)은 가상화된 데이터가 생성될 때마다 곧바로 이를 장치로 전송할 수 있다. 또는, 실시예에 따라, 데이터 엔진(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, when 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 the 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. On the other hand, when the destination of the I/O request in the transmission step S300 is not a device to which data is to be transmitted according to a preset sequence, the data engine 140 can directly transmit virtualized data to the device whenever virtualized data is generated. have. Alternatively, according to an embodiment, the data engine 140 waits until a preset number or capacity of data is generated, and whenever the preset number or capacity of data is accumulated, it is sent to the device that is the destination of the I/O request. can be transmitted

전술한 바와 같이, 데이터 엔진(140)은 스토리지 잔여 용량률이 가장 큰 물리적 스토리지 디바이스에 가상화된 데이터를 저장하거나, 스토리지 잔여 용량률이 가장 큰 물리적 스토리지 디바이스를 통하여 가상화된 데이터를 배포하도록 결정된 데이터 시퀀스 규칙에 따라 가상화된 데이터를 전송할 수 있다.As described above, the data engine 140 stores the virtualized data in the physical storage device having the largest remaining storage capacity ratio or the data sequence determined to distribute the virtualized data through the physical storage device having the largest remaining storage capacity ratio. Virtualized data can be transmitted according to rules.

본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법은, I/O 요청에 대해, 수신 중인 I/O 요청 패킷으로부터 프로토콜 데이터 단위의 명령 단위와 데이터 단위를 분리하고, 병렬 처리를 통해 가상화된 데이터를 생성하기 때문에, I/O 블록 전체가 수신되는 것을 기다리지 않고도 요청된 I/O의 데이터 처리가 가능해짐에 따라, I/O 처리에 대한 지연발생을 최소화할 수 있는 효과가 있다.The data processing method of a virtual storage according to an 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 an 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.

또한, 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 잔여 용량률이 높은 스토리지 디바이스부터 가상 데이터의 저장 및 배포에 관여하도록 함으로써, 가상 스토리지(150)가 가상화하는 복수의 스토리지 디바이스가 비슷한 수준으로 잔여 용량을 관리하도록 하는 효과가 있다.In addition, in the data processing method of the virtual storage according to an embodiment of the present invention, a plurality of storage devices virtualized by the virtual storage 150 by participating in the storage and distribution of virtual data from a storage device having a high residual capacity ratio It has the effect of managing the remaining capacity at a similar level.

또한, 본 발명의 일 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 미리 설정된 개수 또는 용량의 데이터가 축적될 때마다 상기 미리 설정된 개수 또는 용량만큼 축적된 가상 데이터를 I/O 요청의 목적지로 전송함으로써 과도한 가상 데이터 전송 횟수에 따른 과도한 리소스 사용이나 오버헤드를 사전에 방지하도록 하는 효과가 있다.In addition, in the data processing method of the virtual storage according to an embodiment of the present invention, whenever data of a preset number or capacity is accumulated, the virtual data accumulated by the preset number or capacity is transmitted to the destination of the I/O request This has the effect of preventing excessive resource use or overhead due to the excessive number of virtual data transmissions in advance.

본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 즉 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은 본 발명의 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다. 또한 상기 각각의 실시예는 필요에 따라 서로 조합되어 운용할 수 있다. 예컨대, 본 발명의 모든 실시예는 일부분들이 서로 조합되어 본 발명의 시스템(100), 서버(200), 및/또는 단말(300)에 의해 구현될 수 있다.The embodiments of the present invention disclosed in the present specification and drawings are merely provided for specific examples to easily explain the technical content of the present invention and help the understanding of the present invention, and are not intended to limit the scope of the present invention. That is, it will be apparent to those of ordinary skill in the art to which the present invention pertains that other modifications are possible based on the technical spirit of the present invention. In addition, each of the above embodiments may be operated in combination with each other as needed. For example, all embodiments of the present invention may be implemented by the system 100 , the server 200 , and/or the terminal 300 of the present invention in combination with each other in parts.

또한, 본 발명의 시스템(100), 서버(200), 및/또는 단말(300)을 제어하는 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다.In addition, the method of controlling the system 100, the server 200, and/or the terminal 300 of the present invention may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. have.

이와 같이, 본 발명의 다양한 실시예들은 특정 관점에서 컴퓨터 리드 가능 기록 매체(computer readable recording medium)에서 컴퓨터 리드 가능 코드(computer readable code)로서 구현될 수 있다. 컴퓨터 리드 가능 기록 매체는 컴퓨터 시스템에 의해 리드될 수 있는 데이터를 저장할 수 있는 임의의 데이터 저장 디바이스이다. 컴퓨터 리드 가능 기록 매체의 예들은 읽기 전용 메모리(read only memory: ROM)와, 랜덤-접속 메모리(random access memory: RAM)와, 컴팩트 디스크- 리드 온니 메모리(compact disk-read only memory: CD-ROM)들과, 마그네틱 테이프(magnetic tape)들과, 플로피 디스크(floppy disk)들과, 광 데이터 저장 디바이스들, 및 캐리어 웨이브(carrier wave)들(인터넷을 통한 데이터 송신 등)을 포함할 수 있다. 컴퓨터 리드 가능 기록 매체는 또한 네트워크 연결된 컴퓨터 시스템들을 통해 분산될 수 있고, 따라서 컴퓨터 리드 가능 코드는 분산 방식으로 저장 및 실행된다. 또한, 본 발명의 다양한 실시예들을 성취하기 위한 기능적 프로그램들, 코드, 및 코드 세그먼트(segment)들은 본 발명이 적용되는 분야에서 숙련된 프로그래머들에 의해 쉽게 해석될 수 있다.As such, various embodiments of the present invention may be embodied as computer readable code on a computer readable recording medium in a particular aspect. A computer readable recording medium is any data storage device capable of storing data that can be read by a computer system. Examples of computer readable recording media include read only memory (ROM), random access memory (RAM), and compact disk-read only memory (CD-ROM). ), magnetic tapes, floppy disks, optical data storage devices, and carrier waves (such as data transmission over the Internet). The computer readable recording medium may also be distributed over network coupled computer systems, so that the computer readable code is stored and executed in a distributed fashion. In addition, functional programs, codes, and code segments for achieving various embodiments of the present invention may be easily interpreted by programmers skilled in the field to which the present invention is applied.

또한 본 발명의 다양한 실시예들에 따른 장치 및 방법은 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합의 형태로 실현 가능하다는 것을 알 수 있을 것이다. 이러한 소프트웨어는 예를 들어, 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 콤팩트 디스크(compact disk: CD), DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 본 발명의 다양한 실시예들에 따른 방법은 제어부(210, 310) 및 메모리를 포함하는 컴퓨터 또는 휴대 단말에 의해 구현될 수 있고, 이러한 메모리는 본 발명의 실시예들을 구현하는 명령들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. In addition, it will be appreciated that the apparatus and method according to various embodiments of the present invention can be realized in the form of hardware, software, or a combination of hardware and software. Such software may include, for example, a volatile or non-volatile storage device, such as a ROM, or a memory, such as, for example, RAM, a memory chip, device or integrated circuit, whether erasable or rewritable, or For example, the storage medium may be stored in an optically or magnetically recordable storage medium such as a compact disk (CD), a DVD, a magnetic disk, or a magnetic tape, and a machine (eg, computer) readable storage medium. The method according to various embodiments of the present invention may be implemented by a computer or a mobile terminal including the controller 210, 310 and a memory, such memory being a program including instructions for implementing embodiments of the present invention or It will be appreciated that this is an example of a machine-readable storage medium suitable for storing programs.

따라서, 본 발명은 본 명세서의 청구항에 기재된 장치 또는 방법을 구현하기 위한 코드를 포함하는 프로그램 및 이러한 프로그램을 저장하는 기계(컴퓨터 등)로 읽을 수 있는 저장 매체를 포함한다. 또한, 이러한 프로그램은 유선 또는 무선 연결을 통해 전달되는 통신 신호와 같은 임의의 매체를 통해 전자적으로 이송될 수 있고, 본 발명은 이와 균등한 것을 적절하게 포함한다.Accordingly, the present invention includes a program including code for implementing the apparatus or method described in the claims of the present specification, and a machine (computer, etc.) readable storage medium storing such a program. Also, such a program may be transmitted electronically through any medium such as a communication signal transmitted through a wired or wireless connection, and the present invention suitably includes the equivalent thereof.

본 명세서와 도면에 개시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고, 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 또한 앞서 설명된 본 발명에 따른 실시예들은 예시적인 것에 불과하며, 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 범위의 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 다음의 특허청구범위에 의해서 정해져야 할 것이다.The embodiments of the present invention disclosed in the present specification and drawings are merely provided for specific examples to easily explain the technical content of the present invention and help the understanding of the present invention, and are not intended to limit the scope of the present invention. In addition, the above-described embodiments according to the present invention are merely exemplary, and it will be understood by those skilled in the art that various modifications and equivalent ranges of embodiments are possible therefrom. Accordingly, the true technical protection scope of the present invention should be defined by the following claims.

Claims (1)

복수의 스토리지 디바이스를 가상화한 가상 스토리지의 데이터를 효율적으로 처리하는 시스템에 있어서,
상기 가상 스토리지를 통해 단말 또는 네트워크에게 저장 공간을 제공하기 위한 신호를 송수신하는 통신부; 및
수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위와 데이터 단위로 분리하고,
분리된 상기 명령 단위와 데이터 단위를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하고,
상기 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하도록 제어하는 제어부; 를 포함하고,
상기 제어부는,
상기 명령 단위로부터 적어도 하나 이상의 가상 명령을 생성하고,
상기 생성된 가상 명령에 따라 상기 데이터 단위를 가공하여 가상화된 데이터를 생성하고,
상기 복수의 스토리지 디바이스 중에서 스토리지 잔여 용량률이 가장 큰 스토리지 디바이스가 가상화된 데이터를 저장하거나, 상기 스토리지 잔여 용량률이 가장 큰 스토리지 디바이스를 통하여 가상화된 데이터를 배포하도록 제어하고,
상기 제어부는,
수신 중인 I/O 요청 패킷이 이전에 이용된 프로토콜을 통해 수신된 것인지 여부를 확인하고,
확인 결과에 기반하여 해당 프로토콜을 인터넷 프로토콜(Internet Protocol, IP)로 변경하고,
수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위의 명령 단위와 데이터 단위로 분리하는 것을 특징으로 하는,
시스템.
In the system for efficiently processing data of virtual storage virtualized a plurality of storage devices,
a communication unit for transmitting and receiving a signal for providing a storage space to a terminal or a network through the virtual storage; and
Separates the incoming I/O request packet into command unit and data unit of protocol data unit (PDU),
generating at least one or more virtualized data by parallel processing the separated command unit and data unit;
a control unit controlling to transmit the generated virtualized data to a destination of an I/O request packet; including,
The control unit is
generating at least one or more virtual commands from the command unit;
Process the data unit according to the generated virtual command to generate virtualized data,
controlling such that a storage device having the largest residual storage capacity ratio among the plurality of storage devices stores virtualized data or distributing virtualized data through a storage device having the largest residual storage capacity ratio;
The control unit is
Checks whether the incoming I/O request packet was received through a previously used protocol;
Change the protocol to Internet Protocol (IP) based on the verification result;
It is characterized in that the received I/O request packet is separated into a command unit and a data unit of a protocol data unit,
system.
KR1020210066360A 2021-01-22 2021-05-24 Virtual storage management system KR102417848B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210066360A KR102417848B1 (en) 2021-01-22 2021-05-24 Virtual storage management system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210009071A KR102258139B1 (en) 2021-01-22 2021-01-22 method and system for efficiently processing data in virtual storage
KR1020210066360A KR102417848B1 (en) 2021-01-22 2021-05-24 Virtual storage management system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020210009071A Division KR102258139B1 (en) 2021-01-22 2021-01-22 method and system for efficiently processing data in virtual storage

Publications (1)

Publication Number Publication Date
KR102417848B1 true KR102417848B1 (en) 2022-07-07

Family

ID=76140198

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020210009071A KR102258139B1 (en) 2021-01-22 2021-01-22 method and system for efficiently processing data in virtual storage
KR1020210066360A KR102417848B1 (en) 2021-01-22 2021-05-24 Virtual storage management system
KR1020210066361A KR102523876B1 (en) 2021-01-22 2021-05-24 Method and system for distributing virtualized data

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020210009071A KR102258139B1 (en) 2021-01-22 2021-01-22 method and system for efficiently processing data in virtual storage

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020210066361A KR102523876B1 (en) 2021-01-22 2021-05-24 Method and system for distributing virtualized data

Country Status (1)

Country Link
KR (3) KR102258139B1 (en)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0991230A (en) * 1995-09-26 1997-04-04 Matsushita Electric Ind Co Ltd Data transfer system
US20110016272A1 (en) * 2009-07-20 2011-01-20 Lsi Corporation Virtualized data storage in a network computing environment
KR20110080480A (en) 2010-01-06 2011-07-13 주식회사 태진인포텍 Virtual storage device and control method using the same
US20120117341A1 (en) * 2009-07-27 2012-05-10 Storwize Ltd. Method and system for transformation of logical data objects for storage
KR20140134464A (en) 2013-05-14 2014-11-24 (주) 글루시스 A method using posix abstraction layer for virtualizing adaptabile 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
KR102289937B1 (en) * 2020-08-26 2021-08-13 스톤플라이코리아(주) Method of data processing of virtual storage

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102288503B1 (en) * 2017-10-23 2021-08-10 한국전자통신연구원 Apparatus and method for managing integrated storage

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0991230A (en) * 1995-09-26 1997-04-04 Matsushita Electric Ind Co Ltd Data transfer system
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
KR20110080480A (en) 2010-01-06 2011-07-13 주식회사 태진인포텍 Virtual storage device and control method using the same
JP2016501403A (en) * 2012-11-20 2016-01-18 アイ. ペドル,チャールズ Solid state drive architecture
KR20140134464A (en) 2013-05-14 2014-11-24 (주) 글루시스 A method using posix abstraction layer for virtualizing adaptabile storage
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
KR102289937B1 (en) * 2020-08-26 2021-08-13 스톤플라이코리아(주) Method of data processing of virtual storage

Also Published As

Publication number Publication date
KR102523876B1 (en) 2023-04-21
KR20220106652A (en) 2022-07-29
KR102258139B1 (en) 2021-05-28

Similar Documents

Publication Publication Date Title
KR102506394B1 (en) METHOD OF AGGREGATING STORAGE FOR AGGREGATED NVMe OVER FABRIC DEVICE
JP6138275B2 (en) Data storage method and storage device
US8966172B2 (en) Processor agnostic data storage in a PCIE based shared storage enviroment
RU2505851C2 (en) Providing indirect data addressing in input/output processing system where indirect data address list is fragmented
US8959249B1 (en) Cooperative cloud I/O scheduler
US6618798B1 (en) Method, system, program, and data structures for mapping logical units to a storage space comprises of at least one array of storage units
JP6734751B2 (en) Electronic system having interface control mechanism and operating method thereof
JP2018173959A5 (en)
CN1561489A (en) Block data storage within a computer network
US20150370595A1 (en) Implementing dynamic virtualization of an sriov capable sas adapter
US9600185B2 (en) Computer realizing high-speed access and data protection of storage device, computer system, and I/O request processing method
CN105739930A (en) Storage framework as well as initialization method, data storage method and data storage and management apparatus therefor
CN115221089A (en) Apparatus, method and computer program product for efficient software-defined network acceleration processing using storage local to a host
EP2854020A1 (en) Storage control apparatus, storage control method, and storage control program
JP2024516572A (en) Zone Segment Drive Management
EP3674900A1 (en) Method for processing i/o request, storage array, and host
US9329788B2 (en) Computer system and method for allocating and recovering virtual volumes
KR102417848B1 (en) Virtual storage management system
JP5439435B2 (en) Computer system and disk sharing method in the computer system
US10768964B2 (en) Virtual machine messaging
CN102868684A (en) Fiber channel target and realizing method thereof
CN115913953A (en) Cloud resource acceleration method, device and medium thereof
US11030100B1 (en) Expansion of HBA write cache using NVDIMM
US10628349B2 (en) I/O control method and I/O control system
US9122806B2 (en) SATA data appliance for providing SATA hosts with access to a configurable number of SATA drives residing in a SAS topology

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant