KR20220027019A - 가상 스토리지의 데이터 처리 방법 - Google Patents

가상 스토리지의 데이터 처리 방법 Download PDF

Info

Publication number
KR20220027019A
KR20220027019A KR1020210104801A KR20210104801A KR20220027019A KR 20220027019 A KR20220027019 A KR 20220027019A KR 1020210104801 A KR1020210104801 A KR 1020210104801A KR 20210104801 A KR20210104801 A KR 20210104801A KR 20220027019 A KR20220027019 A KR 20220027019A
Authority
KR
South Korea
Prior art keywords
command
data
virtual
pdu
virtualized
Prior art date
Application number
KR1020210104801A
Other languages
English (en)
Inventor
김화수
Original Assignee
주식회사 넷아스
김화수
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 넷아스, 김화수 filed Critical 주식회사 넷아스
Priority to KR1020210104801A priority Critical patent/KR20220027019A/ko
Publication of KR20220027019A publication Critical patent/KR20220027019A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 일 양상에 따른 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법은, 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위와 데이터 단위로 분리하는 분리단계와 분리된 명령 단위와 데이터 단위를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 생성단계 및 생성단계에서 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 전송단계를 포함한다.

Description

가상 스토리지의 데이터 처리 방법{METHOD OF DATA PROCESSING OF VIRTUAL STORAGE}
본 발명은 가상 스토리지의 데이터 처리 방법에 관한 것으로, 상세하게는, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 관한 것이다.
데이터의 가상화는 데이터 스토리지로 사용되는 일부 독립 디스크(예를 들어, Hard disk, Solid State Disk 등)를 어레이(Array)시켜 단일의 스토리지 형태로 인식시키는 RAID(Redundant Array of Independent Disk) 기술에 기반한다.
최근에는 상술한 RAID 기술을 네트워크망 상에 구현한 가상 스토리지 기술이 개발되었다.
일반적으로 데이터를 가상화할 때 시스템이 작동 중인 프로토콜을 기반으로 데이터의 대규모 입출력(I/O)으로 데이터를 처리하고, 데이터처리 및 스토리지 최적화를 위해 여러 개의 I/O를 결합하여 하나의 큰 I/O를 생성하여 처리하기 때문에 총 I/O 수가 증가하며, 이러한 과정에서 모든 I/O가 수신될 때까지 대기해야 되어 대기에 의한 처리 지연(Latency)가 발생되는 문제점이 있었다.
이러한 문제점을 해결하기 위해 대한민국 등록특허공보 제10-1564712호(출원일: 2015.04.01., 공고일: 2015.11.02., 이하‘종래기술’이라 함.)에서는 자기 디스크보다 빠른 데이터 엑세스 및 전송이 가능한 플래시 드라이브를 어레이(Array)시켜 전체 I/O 처리 속도를 증대시키는 기술이 개시된 바 있다.
하지만, 종래기술은 데이터 처리를 높이기 위해 플래시 드라이브를 어레이시켜 사용하기 때문에 저장영역의 용량 대비 비용이 큰 기술이고, 기존의 자기 디스크 대비 교체 주기 또한 짧기 때문에, 구축 및 유지보수가 어려운 문제점이 있다.
따라서, 기존의 자기 디스크를 포함하는 다양한 복수의 스토리지 장치를 통해 구축된 가상 스토리지의 I/O 처리 효율을 높이기 위한 가상 스토리지의 데이터 처리 기술의 개발이 요구되는 실정이다.
본 발명은 상술한 문제점을 해결하기 위해, 가상화 운영 환경에서의 효율적인 데이터 처리가 가능한 가상 스토리지 기술을 제공하는 것을 목적으로 한다.
본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 관한 것으로, 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위와 데이터 단위로 분리하는 분리단계; 분리된 상기 명령 단위와 데이터 단위를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 생성단계; 및 상기 생성단계에서 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 전송단계;를 포함하며, 상기 생성단계는, 상기 명령 단위로부터 적어도 하나 이상의 가상 명령을 생성하는 명령생성단계; 및 상기 명령생성단계에서 생성된 가상 명령에 따라 상기 데이터 단위를 가공하여 가상화된 데이터를 생성하는 데이터생성단계;를 포함하는 것을 특징으로 한다.
여기서, 상기 분리단계는 수신 중인 I/O 요청이 이전에 이용된 프로토콜을 통해 이루어진 것인지의 여부를 확인하여, 해당 프로토콜을 인터넷 프로토콜(Internet Protocol, IP)로 변경하는 변경단계;를 포함하는 것을 특징으로 한다.
또한, 상기 전송단계는 I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야하는 레거시 장치인 경우, I/O 요청 패킷 전부가 수신되는 동안 생성된 가상화된 데이터를 축적하고, 축적된 가상화된 데이터를 상기 레거시 장치의 데이터 전송 시퀀스에 대응하는 순서로 컴파일하여 가상화된 데이터 생성하여 상기 레거시 장치에 전송하는 단계인 것을 특징으로 한다.
그리고, 상기 명령생성단계는, 상기 분리단계에서 분리된 명령 단위를 수신하는 명령단위수신단계; 상기 가상 스토리지에 명령을 전달하는 복수의 가상 드라이버 중 상기 명령 단위의 헤더 정보를 확인하여, 상기 명령단위수신단계에서 수신한 명령 단위와 관련된 가상 드라이버의 고유한 식별정보를 추출하는 식별정보추출단계; 상기 식별정보를 통해 상기 명령 단위에 참조될 가상 드라이버가 존재하는지를 확인하고, 확인된 가상 드라이버에 명령 단위를 전달하는 명령전달확인단계; 상기 명령 단위 및 상기 명령전달확인단계에서 확인된 가상 드라이버와 관련된 적어도 하나 이상의 가상 명령을 생성하는 가상명령생성단계; 및 상기 가상명령생성단계에서 생성된 가상 명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포하는 가상명령배포단계;를 포함하는 것을 특징으로 한다.
이때, 상기 명령전달확인단계는 상기 명령 단위에 참조될 가상 드라이버가 존재하는지 확인하고, 확인된 가상 드라이버의 식별정보와 상기 명령 단위를 매칭시켜, 가상 드라이버 테이블을 생성하는 단계인 것을 특징으로 한다.
덧붙여, 상기 가상명령배포단계는 상기 가상명령생성단계에서 생성된 적어도 하나 이상의 가상 명령과 관련된 가상 드라이버가 해당 가상 명령을 가상 스토리지에 전달할 수 있는 경우, 해당 가상 명령을 배포하는 단계인 것을 특징으로 한다.
또한, 상기 가상명령배포단계는 상기 식별정보추출단계에서 특정 명령 단위로부터 추출한 헤더 정보 및 식별정보와 해당 명령 단위에 의해 배포된 가상 명령을 매칭시켜 데이터테이블 형태의 스위칭 테이블을 생성하는 단계인 것을 특징으로 한다.
한편, 상기 데이터생성단계는, 상기 분리단계에서 분리된 데이터 단위를 수신하는 데이터단위수신단계; 상기 데이터단위수신단계에서 수신된 데이터 단위로부터 헤더 정보를 추출하는 헤더정보추출단계; 상기 가상명령배포단계에서 배포된 가상 명령을 수신하는 가상명령수신단계; 상기 가상명령수신단계에서 수신된 가상 명령에 따라 상기 데이터 단위를 가상화하여 가상화된 데이터를 생성하는 가상데이터생성단계; 및 상기 가상데이터생성단계에서 생성된 가상화된 데이터의 적합여부를 판단하여, 판단결과에 따라 생성된 가상화된 데이터를 배포하는 가상데이터배포단계;를 포함하는 것을 특징으로 한다.
여기서, 상기 가상데이터생성단계에서 수신된 가상 명령을 해당 가상 명령에 식별정보에 따라 분류하여 저장한 데이터테이블 형태의 스위칭 테이블을 생성하며, 상기 스위칭 테이블로부터 상기 데이터 단위의 헤더정보와 매칭되는 식별정보를 포함하는 가상 명령이 존재하는지 확인하고, 확인된 가상 명령에 따라 상기 데이터 단위를 가상화하는 것을 특징으로 한다.
또한, 상기 가상데이터생성단계에서 데이터 단위를 가상화 할 때, 해당 데이터 단위의 가상화에 이용된 가상 명령과 매칭된 식별정보를 상기 스위칭 테이블로부터 확인하고 확인된 식별정보로부터 새로운 헤더정보를 생성 및 추가하여 가상화된 데이터를 생성하는 것을 특징으로 한다.
그리고, 상기 가상데이터배포단계에서 상기 가상화된 데이터가 전송 시퀀스와 상관없이 I/O 요청의 목적지에 매개 변수(Parameters)를 전달할 수 있을 경우, 해당 가상화된 데이터가 적합한 것으로 판단하는 것을 특징으로 한다.
본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, I/O 요청에 대해, 수신 중인 I/O 요청 패킷으로부터 프로토콜 데이터 단위의 명령 단위와 데이터 단위를 분리하고, 병렬 처리를 통해 가상화된 데이터를 생성하기 때문에, I/O 블록 전체가 수신되는 것을 기다리지 않고도 요청된 I/O의 데이터 처리가 가능해짐에 따라, I/O 처리에 대한 지연발생을 최소화할 수 있는 효과가 있다.
또한, 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 가상 명령 및 가상화된 데이터의 생성 이후에 적합 여부를 확인하여 배포 여부를 결정함으로써, 최종적으로 배포되는 가상화된 데이터를 통한 I/O 처리에 지연발생을 최소화하면서도 I/O처리 시의 데이터의 발신, 수신, 데이터 순서 및 기타 오류를 방지할 수 있는 효과가 있다.
도 1은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 대략적으로 도시한 순서도이다.
도 2는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 적용한 데이터 처리 시스템을 대략적으로 도시한 것이다.
도 3은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법의 일 예를 시각화한 것이다.
도 4는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상명령생성단계의 일 예를 시각화한 것이다.
도 5는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상데이터생성단계의 일 예를 시각화한 것이다.
이하, 첨부한 도면을 참조하여 본 발명의 가상 스토리지의 데이터 처리 방법에 바람직한 실시 예를 상세히 설명한다.
각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다. 또한 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는 것이 바람직하다.
도 1은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 대략적으로 도시한 순서도이다.
도 1을 참조하면, 본 발명의 바람직한 실시예에 따라, 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법은 분리단계(S100), 생성단계(S200) 및 전송단계(S300)을 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 단계적으로 설명하기에 앞서, 본 발명의 가상 스토리지의 데이터 처리 방법은 TCP/IP 상에서 블록 단위(Block-level) SCSI(Small computer system interface) 정보를 캡슐화하여 전달하는 iSCSI(Internet small computer system interface)의 프로토콜에 기반하여 가상 스토리지 서비스의 I/O를 처리하는 시스템에 적용되는 기술로, 후술될 내용에서 사용되는 명칭 또한 iSCSI 및 SCSI에 기반한 내용으로 이해되어져야할 것이다.
도 2는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법을 적용한 데이터 처리 시스템을 대략적으로 도시한 것이고, 도 3은 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법의 일 예를 시각화한 것이다.
도 2 내지 도 3을 참조하여 설명하자면, 분리단계(S100)는 데이터 처리 시스템(100)에서의 통신 유닛(110)이 네트워크를 통해 이니시에이터(I)로부터 요청된 I/O 해당 I/O가 TCP/IP, 파이버 채널 및 기타 유사한 프로토콜과 같은 적절한 프로토콜 형식을 가지는지 확인하는 단계가 선행된다. 여기서 통신 유닛(110)은 프로토콜의 구현이 가능하며, 분리단계(S100)에서는 수신 중인 I/O 요청 패킷이 이전에 이용된 프로토콜을 통해 수신된 것인지 여부를 확인하여, 해당 프로토콜을 인터넷 프로토콜(IP: Internet Protocol)로 변경하는 과정이 이루어질 수 있다.
이후, 로직 유닛(120)이 패킷 단위로 수신 중인 I/O 요청을 iSCSI 데이터를 프로토콜 데이터 단위(PDU : Protocol data unit)의 명령 단위(SCSI 명령)와 데이터 단위(SCSI 데이터)로 분리하는 단계이다. 여기서, SCSI 명령과 SCSI 데이터는 iSCSI 패킷의 iSCSI PDU 내에 포함되어 있고, iSCSI 패킷의 iSCSI 헤더에는 SCSI 명령 및 SCSI 데이터의 추출방법이 포함되어 있기 때문에, 로직 유닛(120)은 SCSI 명령과 SCSI 데이터를 명령 단위(=명령PDU)와 데이터 단위(=데이터PDU)로 분리하게 된다. 이후, 로직 유닛(120)은 명령 PDU와 데이터 PDU를 각각 커맨드 유닛(130)과 데이터 엔진(140)에 제공하게 되며, 후술할 생성단계(S200)에서 커맨드 유닛(130)과 데이터 엔진(140)이 iSCSI 데이터를 명령 부분과 데이터 부분으로 병렬 처리되게 된다.
생성단계(S200)는 분리단계(S100)에서 로직 유닛(120)에 의해 분리된 명령PDU와 데이터PDU를 커맨드 유닛(130)과 데이터 엔진(140)이 각각 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 단계이며, 명령생성단계(S210) 및 데이터생성단계(S220)을 포함할 수 있다.
도 4는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상명령생성단계의 일 예를 시각화한 것이다.
도 1 내지 도 4를 참조하여 설명하자면, 명령생성단계(S210)는 커맨드 유닛(130)이 분리단계(S100)에서 로직 유닛(120)에 의해 분리된 명령PDU로부터 적어도 하나 이상의 가상 명령을 생성하는 단계이며, 명령단위수신단계(S211), 식별정보추출단계(S212), 명령전달확인단계(S213), 가상명령생성단계(S214) 및 가상명령배포단계(S215)를 포함할 수 있다.
명령단위수신단계(S211)는 커맨드 유닛(130)이 분리단계(S100)에서 분리된 명령PDU를 로직 유닛(120)으로부터 수신하는 단계이다.
식별정보추출단계(S212)는 커맨드 유닛(130)이 가상 스토리지에 명령을 전달하는 복수의 가상 드라이버 중 명령PDU의 헤더 정보를 확인하여, 명령단위수신단계(S211)에서 수신한 명령PDU와 관련된 가상 드라이버의 고유한 식별정보를 추출하는 단계이다. 여기서 커맨드 유닛(130)이 추출하는 고유한 식별정보는 SCSI 방식에서 논리적으로 사용되는 고유 식별자 번호인 LUN(Logical Unit Number)정보이며, 커맨드 유닛(130)은 LUN정보를 통해 명령PDU가 복수의 스토리지 디바이스를 가상화한 가상 스토리지(150)에서 어떠한 특정 스토리지 디바이스에 대응하는 명령인지 확인할 수 있다. 이때, 가상 스토리지(150)는 데이터 케이블을 통해 직접 연결된 로컬 스토리지 어레이(Array) 또는 네트워크를 통해 연결된 네트워크 스토리지 어레이 또는 로컬 스토리지 어레이와 네트워크 스토리지 어레이 모두가 네트워크를 통해 연결된 형태를 포함할 수도 있다.
명령전달확인단계(S213)는 식별정보추출단계(S212)에서 추출된 LUN정보를 통해 명령PDU로부터 확인된 스토리지 디바이스에 명령을 전달하는 가상 드라이버가 존재하는지를 확인하고, 확인된 가상 드라이버에 명령PDU를 전달하는 단계이다. 여기서 가상 스토리지(150)는 복수의 스토리지 디바이스를 하나의 가상 저장영역(Volume)으로 관리하는 가상 볼륨 관리자(VVM:Virtual Volume Manager)와 하드웨어 또는 소프트웨어 모듈 형태로 가상 볼륨에 I/O에 따른 명령을 전달하는 Snapshot Pass-through Volume Driver, Snapshot Mount Volume Driver, Sparse Volume Driver, Mirror Replication Quick-sync Volume Driver, Spanned Mirror Volume Driver, Partial Volume Driver를 포함하는 가상 드라이버가 포함된다. 여기서, 명령전달확인단계(S213)는 커맨드 유닛(130)이 명령PDU에 참조될 가상 드라이버가 존재하는지 확인하고, 확인된 가상 스토리지의 LUN정보와 명령PDU를 매칭시켜, 해당 명령PDU의 명령을 전달하는 가상 드라이버를 데이터테이블 형태로 저장한 가상 드라이버 테이블을 생성할 수 있다.
다시 말해, 명령전달확인단계(S213)에서 커맨드 유닛(130)은 가상 스토리지(150)에서 수신한 명령PDU에 실질적으로 I/O가 발생되는 스토리지 디바이스에 명령을 전달하여 가상 저장영역으로 작동되도록 명령을 전달하는 가상 드라이버가 어떠한 것인지 확인하고, 각 가상 드라이버가 명령 PDU에 맞게 스토리지 디바이스에 명령을 전달하는지 확인하여, 각 명령PDU에 관련된 가상 드라이버 종류 및 명령을 가상 드라이버 테이블에 저장하게 된다. 예를 들어, 명령PDU가 가상 스토리지(150)에서 특정 데이터를 READ하는 요청에 관한 것이라면, 커맨드 유닛(130)은 LUN정보를 통해 해당 데이터가 저장된 물리적 스토리지 디바이스를 확인하고, 확인된 스토리지 디바이스로부터 해당 데이터에 접근하고 READ하는 과정이 가상 저장영역 상에서 작동되도록 하기 위해 실제 데이터가 저장된 스토리지 디바이스에 명령을 전달하는 가상 드라이버를 확인한다. 이후, 커맨드 유닛(130)은 명령PDU에 의해 READ가 완료될 때 까지 이용된 가상 드라이버의 종류, 명령 내역 등의 리스트가 가상 드라이버 테이블에 저장되고 또 다른 명령 PDU에 대해서도 누적하여 저장하게 된다. 이때, 커맨드 유닛(130)은 가상 스토리지(150)와 연결(Coupled)되어 있기 때문에, 가상 드라이버의 작동 내역을 확인할 수 있게 된다.
가상명령생성단계(S214)는 커맨드 유닛(130)이 명령단위수신단계(S211)에서 수신한 명령PDU와 해당 명령PDU의 명령을 전달하는 가상 드라이버와 관련하여 적어도 하나 이상의 가상 명령을 생성하는 단계이다. 여기서, 커맨드 유닛(130)은 수신한 명령PDU에 대응되는 가상 드라이버의 동작 내역을 가상 드라이버 테이블로부터 확인하고, 명령PDU에 대응하는 가상 드라이버의 동작 내역이 존재하는 경우에 한하여, 가상 명령을 생성하게 된다. 이때, 커맨드 유닛(130)은 후에 데이터생성단계(S220)에서 생성된 가상화된 데이터가 데이터의 발신, 수신, 데이터 순서 및 명령 이상 등을 발생시키는 것을 방지하기 위해, 가상 드라이버 테이블에 수신한 명령PDU에 해당하는 가상 드라이버의 동작 내역이 적어도 둘 이상일 경우에 한하여 가상 명령을 생성한다.
가상명령배포단계(S215)는 커맨드 유닛(130)이 가상명령생성단계(S214)에서 생성된 가상 명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포하는 단계이다.
여기서, 가상명령배포단계(S215)는 커맨드 유닛(130)이 가상명령생성단계(S214)에서 생성된 적어도 하나 이상의 가상 명령과 관련된 가상 드라이버가 해당 가상 명령을 가상 스토리지에 전달할 수 있는 경우, 해당 가상 명령을 배포하는 단계이며, 생성된 가상명령이 명령PDU로 확인된 가상 드라이브를 호출(Call)하는지 여부와 가상 명령이 명령PDU가 요구하는 모든 가상 드라이버에 접근(Access) 가능한지를 확인하여 가상 명령 배포를 결정하게 된다. 따라서, 커맨드 유닛(130) 배포하는 가상 명령에는 데이터 전송의 목적지가 되는 헤더 정보를 포함하고 있기 때문에, 이후 데이터생성단계(S220) 이후에 생성될 가상화된 데이터의 헤더로 대체하여 이용될 수 있다.
도 5는 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법에서의 가상데이터생성단계의 일 예를 시각화한 것이다.
도 1 내지 도 5를 참조하여 설명하자면, 데이터생성단계(S220)는 명령생성단계(S210)에서 생성된 가상 명령에 따라 데이터 엔진(140)이 분리단계(S100)에 분리된 데이터PDU를 가공하여 가상화된 데이터를 생성하는 단계이며, 데이터단위수신단계(S221), 헤더정보추출단계(S222), 가상명령수신단계(S223) 및 가상데이터배포단계(S224)를 포함할 수 있다. 여기서, 데이터 엔진(140)은 로직 유닛(120) 및 가상 스토리지(150)와 연결(Coupled)되어, 가상 명령을 사용하여 물리적 스토리지 디바이스에 분배될 데이터를 가상화할 수 있다.
데이터단위수신단계(S221)는 데이터 엔진(140)이 분리단계(S100)에서 분리된 데이터PDU를 수신하는 단계이다.
헤더정보추출단계(S222)는 데이터 엔진(140)이 데이터단위수신단계(S221)에서 수신된 데이터PDU로부터 헤더 정보를 추출하는 단계이다. 여기서 추출되는 헤더 정보는 후술할 가상데이터생성단계(S224)에서 연관된 가상 명령과 매칭시키기 위한 하나의 기준 값을 추출하는 것으로, 데이터PDU 또한 명령PDU와 마찬가지로 SCSI를 기반으로 하고 있기 때문에, 헤더정보로부터 LUN정보가 추출될 수 있다.
가상명령수신단계(S223)는 데이터 엔진(140)이 가상명령배포단계(S215)에서 배포된 가상 명령을 수신하는 단계이다.
가상데이터생성단계(S224)는 데이터 엔진(140)이 가상명령수신단계(S223)에서 수신된 가상 명령에 따라 데이터PDU를 가상화하여 가상화된 데이터를 생성하는 단계이다. 여기서, 데이터 엔진(140)은 가상명령수신단계(S223)에서 수신된 가상 명령, 목적지의 MAC주소를 해당 가상 명령에 식별정보에 따라 분류하여 저장한 데이터테이블 형태의 스위칭 테이블을 생성할 수 있으며, 생성된 스위칭 테이블로부터 데이터PDU의 헤더정보와 매칭되는 식별정보를 포함하는 가상 명령이 존재하는지 확인하고, 확인된 가상 명령에 따라 데이터PDU의 가상화가 이루어진다. 이때, 데이터 엔진(140)이 생성하는 가상화된 데이터에는 해당 데이터PDU의 가상화에 이용된 가상 명령과 매칭된 식별정보를 스위칭 테이블로부터 확인하고 확인된 식별정보로부터 새로운 헤더정보를 생성 및 추가하여 가상화된 데이터가 생성될 수 있다.
가상데이터배포단계(S225)는 데이터 엔진(140)이 가상데이터생성단계(S224)에서 생성된 가상화된 데이터의 적합여부를 판단하여, 판단결과에 따라 생성된 가상화된 데이터를 배포하는 단계이다. 이때, 데이터 엔진(140)은 적절한 데이터 시퀀스를 가지는지를 확인하고 적절한 데이터 시퀀스를 가질 경우, 해당 가상화된 데이터를 배포하게 된다. 여기서 가상화되 데이터를 배포한다 함은, 최초 I/O 요청의 목적지에 가상화된 데이터가 전달될 수 있도록 데이터의 전송이 가능한 상태로 준비함을 의미한다. 만약 가상화된 데이터가 적절한 시퀀스를 가지지 않는다면, I/O 요청의 목적지에 매개 변수(Parameters)를 전달할 수 있는지 여부를 통해 가상화된 데이터의 배포 여부를 결정하게 된다. 이때, 가상화된 데이터가 I/O 요청의 목적지에 매개 변수를 전달할 수 있다면 해당 가상화된 데이터를 배포할 수도 있다.
전송단계(S300)는 데이터 엔진(140) 또는 통신 유닛(110)이 가상데이터배포단계(S225)에서 배포된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 단계이다. 이때, 전송단계(S300)에서 I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야하는 레거시 장치인 경우, 데이터 엔진(140)은 I/O 요청 패킷 전부가 수신되는 동안 생성된 가상화된 데이터를 축적하고, 축적된 가상화된 데이터를 레거시 장치의 데이터 전송 시퀀스에 대응하는 순서로 컴파일하여 가상화된 데이터 생성하여 레거시 장치에 전송할 수 있다.
즉, 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, I/O 요청에 대해, 수신 중인 I/O 요청 패킷으로부터 프로토콜 데이터 단위의 명령 단위와 데이터 단위를 분리하고, 병렬 처리를 통해 가상화된 데이터를 생성하기 때문에, I/O 블록 전체가 수신되는 것을 기다리지 않고도 요청된 I/O의 데이터 처리가 가능해짐에 따라, I/O 처리에 대한 지연발생을 최소화할 수 있는 효과가 있다.
또한, 본 발명의 바람직한 실시예에 따른 가상 스토리지의 데이터 처리 방법은, 가상 명령 및 가상화된 데이터의 생성 이후에 적합 여부를 확인하여 배포 여부를 결정함으로써, 최종적으로 배포되는 가상화된 데이터를 통한 I/O 처리에 지연발생을 최소화하면서도 I/O처리 시의 데이터의 발신, 수신, 데이터 순서 및 기타 오류를 방지할 수 있는 효과가 있다.
상기한 본 발명의 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대해 통상의 지식을 가진 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.
100: 가상 스토리지의 데이터 처리 시스템
110: 통신 유닛 120: 로직 유닛
130: 커맨드 유닛 140: 데이터 엔진
150: 가상 스토리지

Claims (1)

  1. 복수의 스토리지 디바이스를 가상화한 가상 스토리지를 통해 정보단말 또는 네트워크에 저장 공간을 제공하는 가상 스토리지의 데이터 처리 방법에 있어서,
    수신 중인 I/O 요청 패킷이 이전에 이용된 프로토콜을 통해 수신된 것인지 여부를 확인하여, 해당 프로토콜을 인터넷 프로토콜(IP)로 변경하고, 상기 수신 중인 I/O 요청 패킷을 프로토콜 데이터 단위(PDU)의 명령 단위(명령 PDU)와 데이터 단위(데이터 PDU)로 분리하는 분리단계;
    분리된 상기 명령 PDU와 상기 데이터 PDU를 병렬 처리하여 적어도 하나 이상의 가상화된 데이터를 생성하는 생성단계; 및
    상기 생성단계에서 생성된 가상화된 데이터를 I/O 요청 패킷의 목적지에 전송하는 전송단계; 를 포함하며,
    상기 생성단계는,
    상기 명령 PDU로부터 적어도 하나 이상의 가상 명령을 생성하는 명령생성단계; 및
    상기 명령생성단계에서 생성된 가상 명령에 따라 상기 데이터 PDU를 가공하여 가상화된 데이터를 생성하는 데이터생성단계; 를 포함하고,
    상기 전송단계는, I/O 요청의 목적지가 미리 설정된 시퀀스에 따라 데이터가 전송되어야하는 레거시 장치인 경우에는, I/O 요청 패킷 전부가 수신되는 동안 생성된 가상화된 데이터를 축적하고, 축적된 가상화된 데이터를 상기 레거시 장치의 데이터 전송 시퀀스에 대응하는 순서로 컴파일하여 가상화된 데이터 생성하여 상기 레거시 장치에게 전송하는 것을 특징으로 하고,
    상기 명령생성단계는,
    상기 분리단계에서 분리된 명령 PDU를 수신하는 명령단위수신단계;
    상기 가상 스토리지에 명령을 전달하는 복수의 가상 드라이버 중에서 상기 명령 PDU의 헤더 정보를 확인하여, 상기 명령단위수신단계에서 수신한 명령 PDU와 관련된 가상 드라이버의 고유한 식별정보를 추출하는 식별정보추출단계;
    상기 식별정보를 통해 상기 명령 PDU에 참조될 가상 드라이버가 존재하는지를 확인하고, 확인된 가상 드라이버에 명령 PDU를 전달하고, 확인된 가상 드라이버의 식별정보와 상기 명령 PDU를 매칭시킨 가상 드라이버 테이블을 생성하는 명령전달확인단계;
    상기 명령 PDU 및 상기 명령전달확인단계에서 확인된 가상 드라이버와 관련된 적어도 하나 이상의 가상 명령을 생성하는 가상명령생성단계; 및
    상기 가상명령생성단계에서 생성된 가상 명령의 적합여부를 판단하여, 적합한 경우에 한하여 가상 명령을 배포하는 가상명령배포단계; 를 더 포함하는 것을 특징으로 하고,
    상기 가상 스토리지는 하드웨어 또는 소프트웨어 모듈 형태로 구현되는 상기 복수의 가상 드라이버를 포함하고,
    기 가상데이터배포단계에서 상기 가상화된 데이터가 전송 시퀀스와 상관없이 I/O 요청의 목적지에 매개 변수(Parameters)를 전달할 수 있을 경우에는, 해당 가상화된 데이터가 적합한 것으로 판단하는 것을 특징으로 하는,
    가상 스토리지의 데이터 처리 방법.
KR1020210104801A 2020-08-26 2021-08-09 가상 스토리지의 데이터 처리 방법 KR20220027019A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210104801A KR20220027019A (ko) 2020-08-26 2021-08-09 가상 스토리지의 데이터 처리 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200107769A KR102289937B1 (ko) 2020-08-26 2020-08-26 가상 스토리지의 데이터 처리 방법
KR1020210104801A KR20220027019A (ko) 2020-08-26 2021-08-09 가상 스토리지의 데이터 처리 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200107769A Division KR102289937B1 (ko) 2020-08-26 2020-08-26 가상 스토리지의 데이터 처리 방법

Publications (1)

Publication Number Publication Date
KR20220027019A true KR20220027019A (ko) 2022-03-07

Family

ID=77313834

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200107769A KR102289937B1 (ko) 2020-08-26 2020-08-26 가상 스토리지의 데이터 처리 방법
KR1020210104801A KR20220027019A (ko) 2020-08-26 2021-08-09 가상 스토리지의 데이터 처리 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200107769A KR102289937B1 (ko) 2020-08-26 2020-08-26 가상 스토리지의 데이터 처리 방법

Country Status (1)

Country Link
KR (2) KR102289937B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102258139B1 (ko) * 2021-01-22 2021-05-28 스톤플라이코리아 주식회사 가상 스토리지의 데이터를 효율적으로 처리하는 방법 및 그 시스템

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527697B2 (en) * 2009-07-20 2013-09-03 Netapp, Inc. Virtualized data storage in a network computing environment
WO2011013125A1 (en) * 2009-07-27 2011-02-03 Storwize Ltd. Method and system for transformation of logical data objects for storage
CA2891355C (en) * 2012-11-20 2022-04-05 Charles I. Peddle Solid state drive architectures
US9712619B2 (en) * 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
KR20160133615A (ko) * 2015-05-12 2016-11-23 주식회사 퓨쳐시스템 사물 인터넷을 위한 사물기기 제어 시스템과 가상화 사물 서버에서 실행되는 사물기기 제어방법
US10158614B2 (en) * 2015-05-26 2018-12-18 Bank Of America Corporation Database processing system for multiple destination payloads
TWI636366B (zh) * 2017-11-22 2018-09-21 緯穎科技服務股份有限公司 資料冗餘的處理方法及其相關電腦系統
JP7299019B2 (ja) * 2018-12-28 2023-06-27 ノゾミ・ネットワークス・エッセアジエッレ インフラストラクチャの異常を検出するための方法および装置

Also Published As

Publication number Publication date
KR102289937B1 (ko) 2021-08-13

Similar Documents

Publication Publication Date Title
US9285995B2 (en) Processor agnostic data storage in a PCIE based shared storage environment
US7865588B2 (en) System for providing multi-path input/output in a clustered data storage network
US20080077918A1 (en) Apparatus and method for packet based storage virtualization
US6421742B1 (en) Method and apparatus for emulating an input/output unit when transferring data over a network
US8010707B2 (en) System and method for network interfacing
CN1169061C (zh) 用多个虚拟通道进行raid条带化
JP5026283B2 (ja) 協調的共用ストレージアーキテクチャ
JP3033935B2 (ja) アダプタ・ハードウェアへのインターフェース方法
EP1934760B1 (en) Parallel processing of frame based data transfers
US20110185076A1 (en) System and Method for Network Interfacing
US8924610B1 (en) SAS/SATA store-and-forward buffering for serial-attached-SCSI (SAS) storage network
US7924859B2 (en) Method and system for efficiently using buffer space
KR102289937B1 (ko) 가상 스토리지의 데이터 처리 방법
US11106605B2 (en) Enhanced tape drive communication
US8676928B1 (en) Method and system for writing network data
US7639715B1 (en) Dedicated application interface for network systems
EP1460805B1 (en) System and method for network interfacing
US20070076685A1 (en) Programmable routing for frame-packet based frame processing
KR20050083861A (ko) 데이터 처리 시스템
US8041902B2 (en) Direct memory move of multiple buffers between logical partitions
US9164947B1 (en) Method and system for inserting cookies in I/O commands
CN102868684A (zh) 一种光纤通道目标器及光纤通道目标器实现方法
US11768622B2 (en) Differential snapshot without array support
EP2300925B1 (en) System to connect a serial scsi array controller to a storage area network
US11163708B2 (en) Automated transformation from command mode to transport mode

Legal Events

Date Code Title Description
WITB Written withdrawal of application