KR20200070349A - I/o 요청 처리 방법 및 기기 - Google Patents

I/o 요청 처리 방법 및 기기 Download PDF

Info

Publication number
KR20200070349A
KR20200070349A KR1020207014420A KR20207014420A KR20200070349A KR 20200070349 A KR20200070349 A KR 20200070349A KR 1020207014420 A KR1020207014420 A KR 1020207014420A KR 20207014420 A KR20207014420 A KR 20207014420A KR 20200070349 A KR20200070349 A KR 20200070349A
Authority
KR
South Korea
Prior art keywords
access
section
control node
command
host
Prior art date
Application number
KR1020207014420A
Other languages
English (en)
Other versions
KR102342607B1 (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 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20200070349A publication Critical patent/KR20200070349A/ko
Application granted granted Critical
Publication of KR102342607B1 publication Critical patent/KR102342607B1/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • 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/0653Monitoring storage devices or systems

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시예는 호스트에 의해 수행되는 데이터 처리 방법을 제공한다. 상기 호스트와 저장 시스템은 NVMeoF 프로토콜을 사용하여 서로 통신한다. 상기 저장 시스템은 논리 디스크를 포함하고, 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스한다. 상기 데이터 처리 방법은, 상기 제어 노드에 상태 조회 커맨드를 전송하는 단계 - 상기 상태 조회 커맨드는 상기 제어 노드에, 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용됨 -; 상기 제어 노드에 의해 보고되는 경로 상태를 수신하는 단계; 수신된 경로 상태가, 상기 논리 디스크가 액세스 구간을 포함한다는 것을 지시하는 경우, 상기 제어 노드에 구간 조회 커맨드를 전송하는 단계; 상기 제어 노드에 의해 보고되는 액세스 구간 정보를 수신하는 단계 - 상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 상기 제어 노드에 미리 할당됨 -; 및 상기 제어 노드와 상기 액세스 구간 정보 사이의 매핑 관계를 기록하는 단계를 포함한다.

Description

I/O 요청 처리 방법 및 기기
본 출원은 저장 분야, 특히 I/O 요청 처리 방법 및 기기에 관한 것이다.
MVMe over Fabrics(NVMeoF) 프로토콜에 기초한 기존의 저장 아키텍처(storage architecture)에서, 저장 시스템은 복수의 제어 노드 및 논리 디스크(예: Namespace)를 포함한다. 호스트는 복수의 제어 노드를 사용하여 논리 디스크에 액세스하므로, 호스트와 논리 디스크 사이에 복수의 경로가 존재한다. 호스트는 폴링을 통해 경로를 선택하여, 저장 시스템에 I/O 요청을 전달한다. 저장 시스템에 있고 I/O 요청을 수신하는 제어 노드는 I/O 요청에 실려 전달되는 논리 주소에 기초하여 특정 알고리즘에 따라, I/O 요청을 실행하는 제어 노드를 계산한다. 예를 들어, 호스트는 복수의 경로 중의 제1 경로를 사용하여 I/O 요청을 제1 제어 노드에 전달한다. 제1 제어 노드는, I/O 요청의 논리 주소에 기초하여 미리 설정된 알고리즘에 따라 계산을 수행함으로써, I/O 요청이 제2 제어 노드에 의해 실행되어야 한다는 것을 알게 되고, 제1 제어 노드는 I/O 요청을 제2 제어 노드에 포워딩한다. 결과적으로, I/O 요청의 포워딩은 I/O 지연을 증가시킨다.
본 발명의 실시예는 저장 시스템에서 각각의 제어 노드에 대한 액세스 구간을 설정하기 위한 I/O 요청 처리 방법, 기기 및 호스트를 제공한다.
본 발명의 실시예의 제1 측면은 호스트에 의해 수행되는 데이터 처리 방법을 제공한다. 상기 호스트와 저장 시스템은 NVMeoF 프로토콜을 사용하여 서로 통신한다. 상기 저장 시스템은 논리 디스크를 포함하고, 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스한다. 상기 데이터 처리 방법은, 상기호스트가 상기 제어 노드에 상태 조회 커맨드를 전송하는 단계 - 상기 상태 조회 커맨드는 상기 제어 노드에, 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용됨 -; 그 후 상기 제어 노드에 의해 보고되는 경로 상태를 수신하는 단계; 상기 호스트에 의해 수신되는 경로 상태가, 상기 논리 디스크가 액세스 구간(access interval)을 포함한다는 것을 지시하는 경우, 상기 제어 노드에 구간 조회 커맨드(interval query command)를 전송하는 단계; 그 후 상기 제어 노드에 의해 보고되는 액세스 구간 정보(access interval information)를 수신하는 단계; 및 상기 제어 노드와 상기 액세스 구간 정보 사이의 매핑 관계를 기록하는 단계 - 상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 상기 제어 노드에 미리 할당됨 -를 포함한다.
각각 제어 노드에 대해 저장 시스템에 의해 설정되는 액세스 구간은 NVMeoF 프로토콜의 상태 조회 커맨드 및 새로 추가된 구간 조회 커맨드를 사용하여 획득된다. 이러한 방식으로, 후속하여 I/O 요청이 수신되는 경우, I/O 요청은 I/O 요청의 논리 주소에 대응하는 분할 구간(partition interval)에 기초하여, 분할 구간에 대응하는 제어기에 전달될 수 있어, I/O 요청의 포워딩을 피할 수 있다.
가능한 설계에서, 상기 데이터 처리 방법은, I/O 요청을 수신하는 단계 - 상기 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달함 -; 상기 논리 주소에 대응하는 액세스 구간을 결정하는 단계; 상기 매핑 관계에 기초하여, 상기 액세스 구간에 대응하는 제어 노드를 결정하는 단계; 및 상기 액세스 구간에 대응하는 제어 노드에 상기 I/O 요청을 전송하는 단계를 더 포함한다.
호스트는 제어 노드와 액세스 구간 정보 사이의 매핑 관계를 기록하고, 따라서 I/O 요청을 수신한 경우, 호스트는 I/O 요청의 논리 주소에 대응하는 분할 구간에 기초하여, 분할 구간에 대응하는 제어기에 I/O 요청을 전달할 수 있어, I/O 요청의 포워딩을 피할 수 있다.
가능한 설계에서, 상기 논리 디스크가 상기 액세스 구간을 포함한다고 결정하는 경우, 상기 제어 노드는 상기 호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고한다.
논리 디스크가 액세스 구간을 포함한다는 것을 지시하는 경로 상태가 NVMe 프로토콜에 추가되므로, 호스트는 경로 상태에 기초하여, 분할 구간을 조회할지를 결정할 수 있다.
가능한 설계에서, 상기 액세스 구간 조회 커맨드는 상기 NVMeoF 프로토콜 내의 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가된다.
구간 조회 커맨드가 기존의 NVMeoF 프로토콜 내의 커맨드를 사용하여 정의되며, 기존의 NVMeoF 프로토콜은 수정될 필요가 없다.
가능한 설계에서, 상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 연속된 주소 공간이다.
가능한 설계에서, 상기 액세스 구간 정보는 액세스 구간 시작 주소 및 액세스 구간 길이를 포함한다.
가능한 설계에서, 상기 제어 노드에 대응하는 액세스 구간은 제1 액세스 서브구간(sub-interval) 및 제2 액세스 서브구간을 포함하고, 상기 제1 액세스 서브구간과 상기 제2 액세스 서브구간 사이에 간격이 존재한다.
가능한 설계에서, 상기 제1 액세스 서브구간은 상기 제2 액세스 서브구간에 인접하고, 상기 액세스 구간 정보는 액세스 구간 시작 주소, 각각의 액세스 서브구간의 길이, 및 두 개의 인접한 액세스 서브구간 사이의 간격을 포함한다.
가능한 설계에서, 상기 액세스 구간 정보는 액세스 구간 조회 커맨드에 대해 정의되는 응답 정보를 사용하여 호스트에 보고되고, 상기 액세스 구간 정보는 상기 응답 정보의 구간 설명(interval description) 필드에 추가된다.
본 발명의 제2 측면은 저장 시스템의 제어 노드에 의해 수행되는 데이터 처리 방법을 제공한다. 상기 저장 시스템과 호스트는 NVMeoF 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함한다. 상기 데이터 처리 방법은, 상기 호스트에 의해 전송되는 상태 조회 커맨드를 수신하는 단계 - 상기 상태 조회 커맨드는 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 상기 제어 노드에 명령하는 데 사용됨 -; 상기 논리 디스크가 액세스 구간을 포함하는 경우, 상기 호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고하는 단계; 상기 경로 상태에 기초하여 상기 호스트에 의해 전송되는 액세스 구간 조회 커맨드를 수신하는 단계; 및 상기 구간 조회 정보에 기초하여 상기 호스트에, 상기 제어 노드에 할당된 액세스 구간의 액세스 구간 정보를 보고하여, 상기 호스트가 상기 액세스 구간 정보와 상기 제어 노드 사이의 매핑 관계를 기록할 수 있도록 하는 단계를 포함한다.
각각 제어 노드에 대해 저장 시스템에 의해 설정되는 액세스 구간은 NVMeoF 프로토콜의 상태 조회 커맨드 및 새로 추가된 구간 조회 커맨드를 사용하여 획득된다. 이러한 방식으로, 후속하여 I/O 요청이 수신되는 경우, I/O 요청은 I/O 요청의 논리 주소에 대응하는 분할 구간(partition interval)에 기초하여, 분할 구간에 대응하는 제어기에 전달될 수 있어, I/O 요청의 포워딩을 피할 수 있다.
본 발명의 실시예의 제2 측면의 다양한 가능한 설계는 기본적으로 제1 측면의 다양한 가능한 설계와 동일하며, 세부사항은 여기서 다시 설명하지 않는다.
본 출원의 실시예의 제3 측면은 호스트에 의해 수행되는 데이터 처리 방법을 제공한다. 상기 호스트는 저장 시스템에 연결된다. 상기 저장 시스템은 복수의 제어 노드를 포함하고, 상기 호스트는 상기 복수의 제어 노드를 사용하여 상기 저장 시스템의 논리 디스크에 액세스한다. 상기 데이터 처리 방법은, I/O 요청을 수신하는 단계 - 상기 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달함 -; 상기 논리 주소에 대응하는 액세스 구간을 결정하는 단계 - 상기 논리 디스크는 복수의 액세스 구간을 포함하고, 상기 호스트는 각각의 액세스 구간과 제어 노드 사이의 매핑 관계를 기록함 -; 및 결정된 액세스 구간에 대응하는 제어 노드에 상기 I/O 요청을 전달하는 단계를 포함한다.
저장 시스템의 각각의 제어 노드에 대해 액세스 구간이 설정된다. I/O 요청이 수신되는 경우, I/O 요청은 논리 요청에서의 논리 주소에 대응하는 분할 구간에 기초하여 분할 구간에 대응하는 제어기에 전달될 수 있어, I/O 요청의 포워딩을 피할 수 있다.
가능한 설계에서, 상기 데이터 처리 방법은, 상기 복수의 제어 노드에 상태 조회 커맨드를 전송하는 단계 - 상기 상태 조회 커맨드는 상기 복수의 제어 노드 각각에, 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용됨 -; 상기 복수의 제어 노드에 의해 보고되는 경로 상태를 수신하는 단계; 수신된 경로 상태가, 상기 논리 디스크가 액세스 구간을 포함한다는 것을 지시하는 경우, 상기 경로 상태를 보고하는 제어 노드에 구간 조회 커맨드(interval query command)를 전송하는 단계; 상기 경로 상태를 보고하는 제어 노드에 의해 보고되는 액세스 구간 정보를 수신하는 단계; 및 상기 액세스 구간 정보와 상기 경로 상태를 보고하는 제어 노드 사이의 매핑 관계를 기록하는 단계를 더 포함한다.
NVMeoF 프로토콜의 상태 조회 커맨드 및 새로 추가 된 구간 조회 커맨드를 사용하여 각 제어 노드에 대해 저장 시스템에 의해 설정되는 액세스 구간은 분할 구간에 기초하여 호스트가 전달할 수 있다. I/O 요청의 논리 주소에 대응하고, I/O 요청은 분할 구간에 대응하는 제어기로의 I/O 요청의 전달을 피한다.
각각 제어 노드에 대해 저장 시스템에 의해 설정되는 액세스 구간은 NVMeoF 프로토콜의 상태 조회 커맨드 및 새로 추가된 구간 조회 커맨드를 사용하여 획득되므로, 호스트는 I/O 요청에서의 논리 주소에 대응하는 분할 구간)에 기초하여, 분할 구간에 대응하는 제어기에 I/O 요청을 전달할 수 있어, I/O 요청의 포워딩을 피할 수 있다.
가능한 설계에서, 상기 논리 디스크가 액세스 구간을 포함한다고 결정한 경우, 상기 상태 조회 커맨드를 수신하는 제어 노드는 상기호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고한다.
논리 디스크가 액세스 구간을 포함한다는 것을 지시하는 경로 상태가 NVMe 프로토콜에 추가되므로, 호스트는 경로 상태에 기초하여, 분할 구간을 조회할지를 결정할 수 있다.
본 발명의 이 실시예의 다른 가능한 설계는 제1 측면의 여러 가능한 설계와 동일하며, 세부사항은 여기서 다시 설명하지 않는다.
본 발명의 실시예의 제4 측면은 호스트에 의해 수행되는 데이터 처리 방법을 제공한다. 상기 호스트와 저장 시스템은 외부 네트워크를 사용하여 서로 통신한다. 상기 데이터 처리 방법은, 비휘발성 메모리 익스프레스(non-volatile memory express, NVMe) 구간 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화(encapsulating)하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하는 단계 - 상기 NVMe 구간 조회 커맨드는 상기 저장 시스템의 제어기에 할당된 액세스 구간을 조회하는 데 사용되고, 상기 액세스 구간은 상기 저장 시스템의 명칭 공간(namespace)에 속함 -; 상기 외부 네트워크 프로토콜 구간 조회 커맨드를 상기 제어 노드에 전송하는 단계; 상기 제어 노드에 의해 전송되는 외부 네트워크 프로토콜 구간 응답 메시지(external network protocol interval response message)를 수신하는 단계 - 상기 외부 네트워크 프로토콜 구간 응답 메시지는 상기 NVMe 구간 조회 커맨드에 대한 응답을 포함하고, 상기 NVMe 구간 조회 커맨드에 대한 응답은 상기 명칭 공간의 액세스 구간 정보를 포함함 -; 상기 외부 네트워크 프로토콜 구간 응답 메시지를 파싱하여 상기 NVMe 구간 조회 커맨드의 응답 정보를 획득하는 단계; 및 상기 NVMe 구간 조회 명령에 대한 응답으로부터, 상기 제어 노드의 액세스 구간 정보를 획득하고, 상기 액세스 구간 정보를 기록하는 단계를 포함한다.
각각 제어 노드에 대해 저장 시스템에 의해 설정되는 액세스 구간은 NVMeoF 프로토콜의 새로 추가된 구간 조회 커맨드를 사용하여 획득된다. 이러한 방식으로, 후속하여 I/O 요청이 수신되는 경우, I/O 요청은 I/O 요청에서의 논리 주소에 대응하는 분할 구간에 기초하여, 분할 구간에 대응하는 제어기에 전달될 수 있어, I/O 요청의 포워딩을 피할 수 있다.
가능한 설계에서, 상기 비휘발성 메모리 익스프레스(NVMe) 구간 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하는 단계 전에, 상기 데이터 처리 방법은, NVMe 상태 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 상태 조회 커맨드를 획득하는 단계 - 상기 NVMe 상태 조회 커맨드는 상기 제어 노드에 대응하는 경로의 경로 상태를 조회하는 데 사용됨-; 상기 외부 네트워크 프로토콜 상태 조회 커맨드를 상기 제어 노드로 전송하는 단계; 상기 제어 노드에 의해 전송되는 외부 네트워크 프로토콜 상태 응답 메시지를 수신하는 단계 - 상기 외부 네트워크 프로토콜 상태 응답 메시지는 상기 NVMe 상태 조회 커맨드에 대한 응답을 포함하고, 상기 NVMe 상태 조회 커맨드에 대한 응답은 경로 상태 정보를 포함하며, 상기 경로 상태 정보는 상기 명칭 공간이 액세스 구간을 포함한다는 것을 지시함 - ; 및 상기 외부 네트워크 프로토콜 상태 응답 메시지를 파싱하여 상기 NVMe 상태 조회 커맨드의 응답 정보를 획득하는 단계를 더 포함한다.
경로 상태 정보는 NVMe 경로 상태 조회 커맨드를 사용하여 호스트에 보고될 수 있으므로, 호스트는 경로 상태 정보에 기초하여, 액세스 구간이 논리 디스크에 대해 할당되는지를 결정할 수 있다.
본 발명의 이 실시예의 다른 가능한 구현예는 제1 측면의 가능한 구현예들과 동일하며, 세부사항은 여기서 다시 설명하지 않는다.
본 발명의 실시예의 제5 측면은 저장 시스템의 제어 노드에 의해 수행되는 데이터 처리 방법을 제공한다. 상기 호스트와 상기 저장 시스템은 외부 네트워크를 사용하여 서로 통신하며, 상기 데이터 처리 방법은, 상기 호스트에 의해 전송되는 외부 네트워크 프로토콜 구간 조회 커맨드를 수신하고, 상기 외부 네트워크 프로토콜 구간 조회 커맨드를 파싱하여 NVMe 구간 조회 커맨드를 획득하는 단계; 상기 NVMe 구간 조회 커맨드의 응답 정보를 생성하고 - 상기 NVMe 구간 조회 커맨드의 응답 정보는 상기 제어 노드에 대응하는 액세스 구간 정보를 포함함-; 상기 NVMe 구간 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하는 단계; 및 상기 외부 네트워크 프로토콜 구간 조회 커맨드를 상기 호스트에 보고하는 단계를 포함한다.
각각 제어 노드에 대해 저장 시스템에 의해 설정되는 액세스 구간은 NVMeoF 프로토콜의 새로 추가된 구간 조회 커맨드를 사용하여 획득된다. 이러한 방식으로, 후속하여 I/O 요청이 수신되는 경우, I/O 요청은 I/O 요청에서의 논리 주소에 대응하는 분할 구간에 기초하여, 분할 구간에 대응하는 제어기에 전달될 수 있어, I/O 요청의 포워딩을 피할 수 있다.
가능한 설계에서, 상기 호스트에 의해 전송되는 외부 네트워크 프로토콜 구간 조회 커맨드를 수신하기 전에, 상기 데이터 처리 방법은, 외부 네트워크 프로토콜 상태 조회 커맨드를 수신하고, 상기 외부 네트워크 프로토콜 상태 조회 커맨드를 파싱하여 상기 비휘발성 메모리 익스프레스 NVMe 상태 조회 커맨드를 획득하는 단계 - 상기 NVMe 상태 조회 커맨드는 상기 제어 노드에, 상기 제어 노드에 대응하는 경로 상태를 보고하도록 명령하는 데 사용됨 -; 상기 NVMe 상태 조회 커맨드의 응답 정보를 생성하고, 상기 명칭 공간이 액세스 구간을 포함하는 경우, 상기 명칭 공간이 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 상기 NVMe 상태 조회 커맨드의 응답 정보에 추가하는 단계; 및 상기 NVMe 상태 조회 커맨드를 캡슐화하여 상기 외부 네트워크 프로토콜 상태 조회 커맨드의 응답 정보를 획득하고, 상기 외부 네트워크 프로토콜 상태 조회 커맨드의 응답 정보를 상기 호스트에 보고하는 단계를 더 포함한다.
경로 상태 정보는 NVMe 경로 상태 조회 커맨드를 사용하여 호스트에 보고될 수 있으므로, 호스트는 경로 상태 정보에 기초하여, 액세스 구간이 논리 디스크에 대해 할당되는지를 결정할 수 있다.
본 발명의 이 실시예의 다른 가능한 구현예는 제1 측면의 가능한 구현예들과 동일하며, 세부사항은 여기서 다시 설명하지 않는다.
제6 측면에 따르면, 본 발명의 일 실시예는 호스트를 더 제공한다. 상기 호스트와 저장 시스템은 NVMeoF 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함하고, 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스하며, 상기 호스트는 제1 측면에서의 단계를 수행하도록 구성된 유닛 또는 수단을 더 포함한다.
제7 측면에 따르면, 본 발명의 일 실시예는 저장 시스템의 제어 노드를 더 제공한다. 호스트와 상기 저장 시스템은 NVMeoF 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함하고, 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스하며, 상기 호스트는 제2 측면에서의 단계를 수행하도록 구성된 유닛 또는 수단을 포함한다.
제8 측면에 따르면, 본 발명의 일 실시예는 호스트를 더 제공한다. 호스트와 저장 시스템은 NVMeoF 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함하고, 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 논리 디스크에 액세스하며, 상기 호스트는 제3 측면에서의 단계를 수행하도록 구성된 유닛 또는 수단을 포함한다.
제9 측면에 따르면, 본 발명의 일 실시예는 호스트를 더 제공한다. 상기 호스트와 저장 시스템은 외부 네트워크를 사용하여 서로 통신하며, 상기 호스트는 제4 측면에서의 단계를 수행하도록 구성된 유닛 또는 수단을 포함한다.
제10 측면에 따르면, 본 발명의 일 실시예는 저장 시스템의 제어 노드를 더 제공한다. 호스트와 상기 저장 시스템은 외부 네트워크를 사용하여 서로 통신하고, 상기 제어 노드는 제5 측면에서의 단계를 수행하도록 구성된 유닛 또는 수단을 포함한다.
제11 측면에 따르면, 본 발명의 일 실시예는 호스트를 추가로 제공한다. 호스트와 저장 시스템은 NVMeoF 프로토콜을 사용하여 서로 통신한다. 상기 저장 시스템은 논리 디스크를 포함한다. 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스한다. 상기 호스트는 메모리와 프로세서를 포함한다. 상기 메모리는 프로그램 및 데이터를 저장하도록 구성된다. 상기 프로세서는 상기 메모리에 저장된 프로그램을 실행하고, 상기 메모리에 저장된 데이터에 기초하여, 제1 측면, 제3 측면, 또는 제4 측면에 제공된 방법을 수행하도록 구성된다.
제12 측면에 따르면, 본 발명의 일 실시예는 저장 시스템의 제어 노드를 추가로 제공한다. 호스트와 상기 저장 시스템은 NVMeoF 프로토콜을 사용하여 서로 통신한다. 상기 저장 시스템은 논리 디스크를 포함한다. 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스한다. 상기 제어 노드는 메모리 및 프로세서를 포함한다. 상기 메모리는 프로그램 및 데이터를 저장하도록 구성된다. 상기 메모리에 저장된 프로그램을 실행하고, 상기 메모리에 저장된 데이터에 기초하여, 제2 측면 또는 제5 측면에 제공된 방법을 수행하도록 구성된다.
도 1은 본 발명의 일 실시예가 적용되는 시스템의 아키텍처도이다.
도 2는 본 발명의 일 실시예에 따른 저장 시스템의 논리 디스크에 액세스하기 위해 호스트에 의해 사용되는 N개의 경로의 개략도이다.
도 3a 및 도 3b는 각각, 본 발명의 일 실시예에 따른 저장 시스템에서의 논리 디스크의 주소 공간을 N개의 연속된 주소 공간(contiguous address space)으로 분할하는 개략도 및 저장 시스템에서의 논리 디스크의 주소 공간을 N개의 비연속된 주소 공간(non-contiguous address space)으로 분할하는 개략도이다.
도 4는 본 발명의 일 실시예에 따른 호스트의 아키텍처도이다.
도 5는 본 발명의 일 실시예에 따른 논리 디스크의 액세스에 사용되는 복수의 경로를 관리하는 방법의 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 경로 상태 조회 커맨드의 개략도이다.
도 7은 본 발명의 일 실시예에 따른 상태 보고 정보의 개략도이다.
도 8은 본 발명의 일 실시예에 따른 NVMeoF 프로토콜에 정의된 경로 상태의 개략도이다.
도 9는 본 발명의 일실시예에 따른 공간 의존 상태(space-dependent state)가 상태 보고 정보에 실려 전달되는 개략도이다.
도 10은 본 발명의 일 실시예에 따른 구간 조회 커맨드의 개략도이다.
도 11은 본 발명의 일 실시예에 따른 구간 보고 정보의 개략도이다.
도 12 및 도 13은 각각 본 발명의 일 실시예에 따른 구간 보고 정보가 주소 공간이 연속되는 액세스 구간의 구간 설명 정보(interval description information)를 실어 전달하는 개략도 및 구간 보고 정보가 주소 공간이 연속되지 않은 액세스 구간의 구간 설명 정보를 실어 전달하는 개략도이다.
도 14는 본 발명의 일 실시예에 따른 I/O 요청을 실행하기 위한 제어 노드를 할당하는 흐름도이다.
도 15는 본 발명의 일 실시예에 따른 호스트의 모듈도이다.
도 16은 본 발명의 일 실시예에 따른 저장 시스템에서의 임의의 제어 노드의 모듈도이다.
도 1은 본 발명의 일 실시예가 적용되는 시스템의 아키텍처도이다. 호스트(100)는 호스트 버스 어댑터(Host Bus Adapter, HBA)(101)와 같은 두 개의 호스트 포트를 사용하여 두 개의 교환기(200)에 연결된다. 두 개의 교환기(200)는 모두 저장 시스템(300)에 연결된다. 두 개의 교환기(200) 및 두 개의 호스트 포트(101)은, 두 개의 교환기(200) 중 하나 또는 두 개의 호스트 포트 중 하나에 장애가 있는 경우에 채널이 끊기는 것을 방지하기 위해 배치된다.
저장 시스템(300)은 노드 1∼노드 N과 같은 복수의 제어 노드(302)를 포함한다. 각각의 제어 노드(302)는 두 개의 저장 포트(301)(예: HBA 카드)를 사용하여 두 개의 교환기(switch)(200)에 연결된다. 이러한 방식으로, 호스트와 각각의 제어 노드(301) 사이에 두 개의 경로가 존재한다. 이 두 개의 경로는 서로에 대해 용장성이 있다(redundant). 경로 중 하나에 장애가 있는 경우, 다른 경로가 호스트(100)와 제어 노드(301) 사이에 데이터를 송신하는 데 사용될 수 있다. 저장 시스템(300)은 복수의 SSD로 구성된 저장 기기(304)를 포함한다. 저장 기기(304)는 독립 디스크의 용장성 어레이(Redundant Array of Independent Disks, RAID) 또는 그냥 플래시의 무리(Just a Bunch of Flash)일 수 있다. 가상 SSD는 저장 기기(304)에, NVMeoF(Non-Volatile Memory express over Fabric) 프로토콜을 사용하여 저장 기기(304)와 통신하는 다른 저장 기기를 매핑함으로써 획득된다. NVMeoF 프로토콜을 사용하여 원격 SSD 를 로컬 저장 기기에 매핑하고 그 SSD를 가상상 SSD로서 사용하는 것은 종래 기술에 관한 것이어서, 여기서는 상세하게 설명하지 않는다. 호스트(100)와 저장 시스템(300)은 NVMeoF 프로토콜을 사용하여 서로 통신한다.
저장 기기(304)의 로컬 SSD 및/또는 가상 SSD는 논리 디스크(303)를 생성하는 데 사용될 수 있다. 논리 디스크(303)는 명칭 공간(Namespace)일 수 있고, 명칭 공간은 NVMeoF 프로토콜에 정의된 논리 디스크에 대한 표현 수단이다. 도 1은 하나의 논리 디스크(303)만 도시한다. 하지만, 실제 애플리케이션에서, 복수의 논리 디스크가 저장 기기(304)에 생성될 수 있다. 하나의 논리 디스크가 사용을 위해 복수의 호스트에 할당될 수 있거나, 또는 복수의 논리 디스크가 사용을 위해 하나의 호스트에 할당될 수 있다.
본 발명의 이 실시예에서, 도 1에 도시된 바와 같이. 호스트(100)는 N개의 제어 노드(302)를 사용하여, 호스트(100)에 할당된 논리 디스크(303)에 액세스할 수 있다. 호스트(100)와 논리 디스크 사이의 경로에 대한 설명을 용이하게 하기 위해, 도 2에서는, 도 1의 호스트(100)외 논리 디스크 사이의 물리 링크는 생략되고, 동일한 제어 노드를 통과하는 두 개의 용장성 경로가 하나의 경로로 결합되어 논리 디스크(303)에 액세스하기 위해 호스트(100)에 의해 사용되는 N개의 경로를 획득한다.
저장 시스템(300)에서, 사용자에 의해 지정되는 임의의 제어 노드(302)는 논리 디스크(303)를 생성 및 관리할 수 있다. 여기서, 사용자에 의해 지정되는 제어 노드는 노드 1인 것으로 가정한다. 논리 디스크(303)가 생성된 후, 노드 1은 디스크 식별자(Identification, ID) 및 디스크 코드를 논리 디스크(303)에 할당한다. 디스크 식별자는 논리 디스크를 유일하게 식별할 수 있게 한다. 예를 들어, 디스크 식별자는 NVMeoF 프로토콜, 제조자 정보 및 제품 정보에 적용되는 전역 유일 식별자(Globally Unique Identifier, GUID)를 포함한다. 디스크 코드는 저장 기기(304)에서 생성된 상이한 논리 디스크를 구별하기 위해 사용된다. 예를 들어, 논리 디스크(303)의 디스크 코드는 명칭 공간 1로서 표현될 수 있다.
논리 디스크(303)의 디스크 식별자 및 디스크 코드가 할당된 후, 노드 1은 논리 디스크(303)에 가상 호스트를 할당한다. 예를 들어, 노드 1은 논리 디스크(303)에 가상 호스트 1을 할당하고, 논리 디스크(303)와 가상 호스트 사이의 매핑 관계를 가상 호스트 1 : 명칭 공간 1과 같이 기록한다.
논리 디스크(303)의 디스크 식별자 및 디스크 코드가 할당된 후, 노드 1은 논리 디스크(303)에 액세스하는 제어 노드를 구성할 수 있다. 예를 들어, N개의 제어 노드가 논리 디스크(303)에 대해 구성된다. 제어 노드(303) 간을 구별하기 위해, 저장 시스템(300)은 각각의 제어 노드(303)에 유일 식별자, 즉 노드 식별자를 할당한다. 논리 디스크(303)에 대해 구성된 제어 노드는 다음 매핑 관계를 사용하여 표현될 수 있다: 명칭 공간 1 : 노드 1, 노드 2,…, 노드 N.
본 발명의 이 실시예에서, 각각의 제어 노드(302)에 대해, 노드 1은 제어 노드(302)에 액세스 가능한 액세스 구간을 추가로 설정할 수 있다. 도 3a는 논리 디스크(303)의 주소 공간을 노드 1에 의해 N개의 연속된 주소 공간으로 분할하는 개략도이다. 예를 들어, 논리 디스크(303)가 1GB의 저장 공간을 가지면, 노드 1에 할당된 구간은 0∼99MB이고, 노드 2에 할당된 구간은 100∼199MB이며 노드 3에 할당된 구간은 200∼399MB, … 및 노드 N에 할당된 구간은 800∼1023MB이다. 각 액세스 구간은 인접한 주소 공간이며 액세스 구간은 크기가 같거나 다를 수 있다.
다른 실시예에서, 노드 1에 의해 각각의 제어 노드에 할당되는 액세스 구간은 비연속적이다. 도 3b에 도시된 바와 같이, 노드 1은 먼저 논리 디스크(303)의 주소 공간을 동일한 크기를 갖는 둘 이상의 주소 서브공간(address sub-space)으로 분할한 다음, 각각의 주소 서브공간을 N개의 액세스 서브구간(access sub-interval)으로 분할한다. 각각의 액세스 서브구간은 하나의 제어 노드에 대응한다. 주소 서브공간들은 동일한 방식으로 분할된다. 구체적으로, 각각의 주소 서브공간에서, 동일한 제어 노드에 대응하는 액세스 서브구간은 주소 서브공간에서 동일한 크기 및 동일한 순서를 갖는다. 각각의 제어 노드에 대응하는 액세스 서브구간의 세트는 제어 노드의 액세스 구간을 구성한다. 예를 들어, 논리 디스크(303)가 네 개의 주소 서브공간으로 분할되면, 노드 1의 액세스 구간은 0∼a0, d0+1∼a1 및 d1+1∼a2이고; 노드 2의 액세스 구간은 a0+1∼b0, a1+1∼b1 및 a2+1∼b2이고; 노드 N의 액세스 구간은 c0+1∼d0, c1+1∼d1 및 c2+1∼d2이다. 각각의 노드 1에 대응하는 액세스 구간의 액세스 서브구간은 동일한 크기 및 동일한 간격을 갖는다. 각각의 제어 노드에 할당된 액세스 구간을 기록하는 동안, 액세스 구간의 시작 주소, 액세스 구간을 구성하는 액세스 서브구간의 주소 길이, 액세스 서브구간 사이의 주소 간격, 및 액세스 구간을 구성하는 액세스 서브구간의 수량이 기록될 수 있다. 액세스 구간이 N개의 제어 노드(302)에 할당된 후, 호스트의 요청에 응답하여, N개의 제어 노드(302)는 제어 노드(302)에 대응하는 각각의 액세스 구간을 호스트(100)에 보고하고, 호스트는 액세스 구간에 기초하여 I/O 요청을 전달할 수 있다. 액세스 구간을 보고하는 방법은 후술한다. 본 발명의 이 실시예에서, 논리 디스크(303) 이외의 논리 디스크가 실제 요건에 기초하여, 저장 기기(304)에 추가로 생성되면, 다른 논리 디스크에 대한 액세스 구간의 할당은 실제 요건에 기초한다.
도 1에 도시된 바와 같이, N개의 제어 노드가 저장 포트(301) 및 교환기(200)를 사용하여 호스트 포트(101)에 연결되는 경우, 각각의 제어 노드(302)는 제어 노드(302)에 연결된 호스트 포트(101)의 식별자를 획득한 다음, 가상 디스크와 논리 디스크(303)의 디스크 코드 사이의 매핑 관계를 호스트 포트 식별자와 논리 디스크의 디스크 코드 사이의 매핑 관계로 대체할 수 있다. 대체된 매핑 관계는 HBA 1, HBA 2(가상 머신 1) : 명칭 공간 1로 표현될 수 있다. 본 발명의 이 실시예에서, 용장도(redundancy)를 위해, 호스트(100)는 저장 시스템(300)을 이용하여 저장 시스템(300)에 연결된다. 두 개의 호스트 포트(101), 따라서 두 개의 호스트 포트의 두 개의 식별자 HBA 1 및 HBA 2는 매핑 관계로 기록된다.
생성된 다양한 매핑 관계, 예를 들어, 논리 디스크의 디스크 코드와 N개의 제어 노드(302)의 노드 식별자 사이의 매핑 관계, 호스트 포트 식별자와 논리 디스크의 디스크 코드 사이의 매핑 관계, 그리고 각각의 제어 노드의 식별자와 액세스 구간 사이의 매핑 관계는 모든 N개의 제어 노드(302)에 액세스 가능한 저장 영역에 저장될 수 있다.
도 4는 본 발명의 일 실시예에 따른 호스트(100)의 아키텍처도이다. 두 개의 호스트 포트(101) 외에, 호스트(100)는 프로세서(102) 및 메모리(103)를 더 포함하며, 메모리(103)는 다중 경로 프로그램(104) 및 운영 체제(105)를 저장한다. 프로세서(102)는 운영 체제(105) 및 다중 경로 프로그램(104)을 실행하여, 호스트(100)가 논리 디스크(303)에 액세스하기 위해 사용되는 복수의 경로를 관리할 수 있도록 한다. 호스트(100)가 논리 디스크(303)에 액세스하기 위해 사용되는 복수의 경로를 관리한다는 것은 도 5에 도시된 흐름도를 사용하여 이하에 설명한다.
단계 S501: 호스트(100)의 운영 체제(105)가 저장 시스템(300)이 호스트(100)에 연결되어 있음을 검출하는 경우, 운영 체제(105)는 호스트(100)와 저장 시스템(300) 사이의 복수의 경로(즉, N개의 제어 노드의 스토리지 포트(301)와 호스트 포트(101) 사이의 복수의 경로)를 사용하여 저장 시스템(300)에 디스크 보고 커맨드를 개별적으로 전송한다. 디스크 보고 커맨드가 호스트 포트(101)를 통과할 때, 호스트 포트의 식별자가 디스크 보고 커맨드에 추가된다.
단계 S502: 저장 시스템(300)의 각각의 제어 노드(302)가 디스크 보고 커맨드를 수신한 후, 제어 노드(302)는 디스크 보고 커맨드 내의 호스트 포트의 식별자를 획득하고, 호스트 포트의 식별자, 및 호스트 포트 식별자와 논리 디스크의 디스크 코드 사이의 매핑 관계에 기초하여, 호스트 포트의 식별자에 대응하는 디스크 코드를 결정한다.
단계 S503: 저장 시스템(300)의 각각의 제어 노드(302)가 디스크 코드에 대응하는 논리 디스크에 대한 보고 정보를 생성하고, 디스크를 정보를 보고 정보에 추가하며. 그 보고 정보를 호스트(100)에 보고한다. 보고 정보를 보고하는 프로세스는 노드 1을 예로 사용하여 이하에 설명된다. 노드 1은 두 개의 HBA 카드를 사용하여 호스트의 두 개의 HBA 카드에 연결되므로, 노드 1과 호스트 사이에는 두 개의 경로가 있다. 두 개의 HBA 카드를 사용하여 두 개의 디스크 보고 커맨드를 수신하는 경우, 노드 1은 두 개의 디스크 보고 커맨드로부터 두 개의 HBA 카드의 식별자를 획득한 다음, 두 개의 HBA 카드의 식별자에 기초하여 동일한 디스크 코드를 획득한다. 디스크 코드를 획득한 후, 노드 1은 노드 1과 호스트(100) 사이의 두 개의 경로 각각을 사용하여 디스크 코드를 호스트(100)에 보고할 수 있다.
NVMeoF 프로토콜에 규정된 바와 같이, 보고 정보를 보고하는 과정에서, 보고 정보를 보고하는 제어 노드의 식별자와, 보고 정보가 통과하는 호스트 포트(101) 및 저장 포트(301)(예: 노드 1의 두 개의 HBA 포트)가 보고 정보에 추가된다. 이러한 방식으로, 보고 정보 내의 제어기 식별자, 저장 포트, 호스트 포트 및 디스크 코드는 디스크 코드를 보고하는 데 사용되는 경로를 나타내는 데 사용된다.
단계 S504: 저장 시스템(300)의 각각의 제어 노드(302)에 의해 보고되는 보고 정보를 수신한 후, 호스트(100)의 다중 경로 프로그램(104)은 각각의 보고 정보 내의 경로 정보에 의해 지시되는 경로를 사용하여 디스크 식별자 조회 커맨드를 전송하며, 조회 커맨드는 보고 정보에 디스크 코드를 포함한다.
단계 S505: 조회 커맨드를 수신한 후, 저장 시스템(300)의 각각의 제어 노드(302)는 조회 커맨드 내의 디스크 코드에 기초하여, 디스크 코드에 대응하는 디스크 식별자를 획득한다.
단계 S506: 저장 시스템(300)의 각각의 제어 노드(302)는, 조회 커맨드를 전송하는 데 사용되는 경로를 사용하여 디스크 코드에 대응하는 디스크 식별자를 보고한다. 논리 디스크(303)를 생성하는 경우, 저장 시스템(300)은 디스크 식별자 및 디스크 코드를 각각의 논리 디스크(303)에 할당하므로, 디스크 코드를 수신한 후, 저장 시스템(300)은 디스크 코드에 기초하여 디스크 식별자를 획득할 수 있다.
단계 507: 호스트(100)의 다중 경로 프로그램(104)은 보고된 디스크 식별자에 기초하여, 디스크 식별자에 대응하는 논리 디스크에 액세스하는 데 사용되는 경로를 결정하고, 결정된 경로를 관리한다.
구체적으로, 처음으로 디스크 식별자를 수신하는 경우, 다중 경로 프로그램(104)은 디스크 식별자에 기초하여 디스크 객체(disk object)를 생성하고, 디스크 객체 명칭을 디스크 객체에 할당하고, 디스크 객체 명칭과 디스크 식별자 사이의 매핑 관계를 수립하고, 디스크 객체의 경로로서, 디스크 식별자를 보고하는 데 사용되는 경로를 기록한다. 또한, 다중 경로 프로그램(104)은 디스크 객체에 디스크의 주소 공간 및 용량 크기와 같은 다른 관련 정보를 추가로 기록할 수 있다. 다중 경로 프로그램(104)이 후속하여 동일한 디스크 식별자를 수신하면, 다중 경로 프로그램(104)은 디스크 객체의 다른 경로로서, 후속하여 디스크 식별자를 보고하는 데 사용되는 경로를 기록할 수 있다.
본 발명의 이 실시예에서, 신뢰성을 보장하기 위해, 용장성 경로(redundant path)가 각각의 제어 노드(302)와 호스트(100) 사이에 설정된다. 다중 경로 프로그램이 각각의 논리 디스크(303)에 액세스하는 데 사용되는 경로를 관리하는 경우, 호스트(100)와 모든 제어 노드(302) 사이의 용장성 경로는 하나의 경로로 결합된다. 결합 시에, 동일한 제어 노드의 경로는 제어 노드의 식별자에 기초하여 함께 기록될 수 있다. 이러한 방식으로 호스트는 용장성 경로 중 하나를 선택하여 I/O 요청을 전달하고, 하나의 경로에 장애가 있으면, 호스트는 장애가 있는 경로를 대체할 다른 경로를 선택하여 I/O 요청을 전달한다. 설명의 편의를 위해, 결합된 경로가 이하에서 설명을 위해 사용된다. 다시 말해, 각각의 제어 노드(302)와 호스트(100) 사이에 하나의 경로만이 존재하는 경우가 설명을 위해 사용된다.
이러한 방식으로, 다중 경로 소프트웨어(104)는 디스크 객체를 사용하여, 디스크에 액세스하기 위해 사용되는 복수의 경로를 관리할 수 있으며, 예를 들어, 새로운 경로를 발견하고, 끊긴 경로(broken path)를 삭제하고, 미리 설정된 정책에 따라, I/O 요청을 전달하는 데 사용되는 경로를 선택할 수 있다.
예를 들어, 다중 경로 소프트웨어(104)가 경로 1에서, 디스크 코드가 명칭 공간 1인 논리 디스크의 디스크 식별자를 먼저 수신하면, 다중 경로 소프트웨어(104)는 명칭 공간 1에 대한 디스크 객체를 생성하고, 디스크 객체에 디스크 객체 명칭 sda를 할당하고, 디스크 객체 명칭 sda와 디스크 식별자 사이의 매핑 관계를 수립하고, 경로 1을 디스크 객체의 제1 경로로서 기록한다. 다중 경로 소프트웨어(104)가 후속하여 경로 2 및 경로 3에서 명칭 공간 1의 디스크 식별자를 추가로 수신하면, 다중 경로 소프트웨어(104)는 또한 경로 2 및 경로 3을 디스크 객체의 경로로서 기록한다. 예를 들어, 이 실시예에서, 다중 경로 소프트웨어는 2N개의 경로에서 2N개의 디스크 식별자 명칭 공간 1을 수신하고, 동일한 제어 노드의 경로들을 결합한 후, 다중 경로 소프트웨어는 호스트와 저장 시스템 사이의 N개의 경로를 관리한다.
단계 S508: 논리 디스크에 대한 액세스 경로를 생성한 후, 다중 경로 소프트웨어(104)는 경로 상태 조회 커맨드를 저장 시스템(300)에 전송하며, 여기서 상태 조회 커맨드는 각각의 제어 노드에, 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용된다.
본 발명의 이 실시예에서, 호스트(100)와 저장 시스템(300)은 NVMeoF 프로토콜을 사용하여 서로 통신한다. 호스트는 먼저 비휘발성 메모리 익스프레스(Non-Volatile Memory express, NVMe) 경로 상태 조회 커맨드를 생성한 다음, NVMe 구간 조회 커맨드를 외부 네트워크 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득한다. 이 단계에서, 전송된 경로 상태 조회 커맨드는 외부 네트워크 프로토콜 구간 조회 커맨드이다.
NVMe 경로 상태 조회 커맨드는 기존의 NVMe 프로토콜에 정의된 커맨드이다. NVMe 경로 상태 조회 커맨드는 NVMe 프로토콜의 Get Log Page 명령 Dword 10에 따라 정의된 커맨드이다. NVMe 경로 상태 조회 커맨드는 도 6에 도시되어 있다. 경로 상태 조회 커맨드의 커맨드 식별자 OCh가 로그 페이지 식별자 필드인 log page identifier(LID) 필드에 추가되고, LID 필드는 경로 상태 조회 커맨드의 바이트 07:00에 있다. 커맨드 내의 다른 필드들은 본 발명의 이 실시예와 관련이 없으며, 여기서는 구체적으로 설명하지 않는다. 이하에서는 본 발명의 이 실시예와 관련된 필드만을 설명한다.
본 발명의 이 실시예에서, 외부 네트워크 프로토콜은 파이버 채널(Fibre channel, FC), 무한 대역(InfiniBand) 기술, RoCe(RDMA over Converged Ethernet), iWARP(RDMA over TCP), 주변 구성요소 상호연결 익스프레(Peripheral Component Interconnect Express, PCIe), 또는 다른 네트워크 프로토콜일 수 있다.
단계 S509: 경로 상태 조회 커맨드를 수신한 제어 노드는 경로 상태를 획득하고, 상태 보고 정보에 경로 상태를 추가하고, 상태 보고 정보를 호스트의 다중 경로 소프트웨어(104)에 보고한다.
경로 상태 조회 커맨드는 외부 네트워크 프로토콜 구간 조회 커맨드이기 때문에, 경로 상태 조회 커맨드를 수신한 후, 경로 상태 조회 커맨드를 수신한 제어 노드는 먼저 경로 상태 조회 커맨드를 분석하여 NVMe 경로 상태 조회 커맨드를 획득한 다음, NVMe 경로 상태 조회 커맨드의 명령에 따라, 경로 상태 조회 커맨드를 수신한 제어 노드에 대응하는 경로의 경로 상태를 조회한다.
NVMeoF 프로토콜에, 몇몇 경로 상태가 미리 정의되어 있다. 도 8에 도시된 바와 같이, 상태 코드 01h∼04h로 지시되는 경로 상태는 기존의 프로토콜에 정의된 경로 상태이다. 상태 코드 01h는 최적화된 상태(즉, ANA Optimized State)를 지시한다. 호스트(100)는 상태 코드 01h를 포함하는 상태 보고 정보를 수신한 후, 상태 보고 정보를 보고하는 데 사용된 경로를 최적화된 경로로 설정한다. 상태 코드 02h는 최적화되지 않은 상태(즉, ANA Non-Optimized State)를 지시한다. 호스트(100)는 코드 02h를 포함하는 상태 보고 정보를 수신한 후, 상태 보고 정보를 보고하는데 사용된 경로를 최적화되지 않은 경로로 설정한다. 상태 코드 03h는 액세스 불가능한 상태(즉, ANA inaccessible State)를 지시한다. 호스트(100)는 상태 코드 03h를 포함하는 상태 보고 정보를 수신한 후, 상태 보고 정보를 보고하는 데 사용된 경로를 액세스 불가능한 경로로 설정한다. 상태 코드 04h는 지속하는 손실 상태(즉, ANA Persistent Loss State)를 지시한다. 호스트(100)는 상태 코드 03h를 포함하는 상태 보고 정보를 수신한 후, 상태 보고 정보를 보고하는 데 사용된 경로를 장애 경로(failure path)로 설정한다.
상태 코드 05h로 지시되는 공간 의존 상태(ANA LBA-Dependent State)는 본 발명의 이 실시예에서 새로 추가된 상태이다. 공간 의존 상태는 논리 디스크(303)가 복수의 액세스 구간으로 분할됨을 지시한다. 호스트(100)는 상태 코드 05h를 포함하는 상태 보고 정보를 수신한 후, 이 상태를 보고하는 제어 노드에 대응하는 액세스 구간을 획득한다. 이하에서는 구체적인 획득 방식을 상세하게 설명한다.
경로 상태 조회 커맨드를 수신한 제어 노드는 다음과 같은 방식으로 경로 상태를 획득한다: 논리 디스크(303)는 복수의 액세스 구간으로 분할되어 있는지를 판정하고; 논리 디스크(303)가 복수의 액세스 구간으로 분할되지 않은 경우, 제어 노드에 대응하는 경로의 경로 상태를 획득하는 한다. 저장 시스템에서 각 경로의 상태는 미리 식별된다. 예를 들어, 논리 디스크(303)에 액세스하기 위해 사용되는 최적화된 경로 및 최적화되지 않은 경로가 미리 설정되고, 미리 식별된 액세스 불가능한 경로 및 장애 경로가 또한 식별된다. 논리 디스크(303)가 복수의 액세스 구간으로 분할되는 경우, 경로 상태는 공간 의존 상태인 것으로 결정될 수 있다. 경로 상태를 획득한 후, 경로 상태 조회 커맨드를 수신한 제어 노드는 도 7에 도시된 상태 보고 정보를 사용하여 각각의 경로 상태의 상태 코드를 호스트(100)에 보고한다.
경로 상태가 결정된 후, NVMe 경로 조회 커맨드의 응답 정보가 생성된다. 도 7은 기존 NVMeoF 프로토콜에서의 NVMe 경로 조회 커맨드의 응답 정보의 포맷을 도시한다. 응답 정보는 호스트(100)에 액세스 가능한 논리 디스크의 수량을 실어 전달하는 데 사용되는 디스크 수량 필드를 포함한다. 수량은 보고 정보의 바이트 07:04에 추가된다. 본 발명의 이 실시예에서, 하나의 논리 디스크만이 설명을 위한 예로서 사용되므로, 1이 여기에 채워진다. 상태 보고 정보는 경로 상태를 실어 전달하는 데 사용되는 경로 상태 필드를 더 포함한다. 경로 상태는 보고 정보의 바이트 16에 추가된다. 논리 디스크(303)가 복수의 액세스 구간으로 분할되지 않은 경우, 경로 상태를 지시하는 코드 01h∼04h 중 하나가 바이트 16에 채워진다. 예를 들어, 제어 노드에 대응하는 경로의 경로 상태가 최적화된 상태이면, 제어 노드는 최적화된 상태에 대응하는 상태 코드 01h를 바이트 16에 추가할 수 있다. 논리 디스크(303)가 복수의 액세스 구간으로 분할되는 경우, 도 9에 도시된 바와 같이, 공간 의존 상태를 나타내는 코드 05h가 상태 보고 정보의 바이트 16에 추가된다.
NVMe 경로 조회 커맨드의 생성된 응답 정보는 외부 네트워크 프로토콜 상태 응답 메시지를 획득하기 위해 외부 네트워크 프로토콜로 캡슐화되고, 외부 네트워크 프로토콜 상태 응답 메시지는 보고 정보로서 사용되고 호스트에 보고된다.
단계 S510: 호스트의 다중 경로 소프트웨어(104)는 보고 정보를 수신한 후, 보고 정보 내의 경로 상태가 논리 디스크(303)가 복수의 액세스 구간을 포함한다는 것을 지시하는지를 판정한다.
호스트의 다중 경로 소프트웨어(104)는 보고 정보를 수신한 후, 보고 정보를 파싱하여 NVMe 상태 조회 커맨드의 응답 정보로서 보고 정보에 캡슐화되는 응답 정보를 획득한 다음, 응답 정보로부터 경로 상태를 지시하는 상태 코드를 획득한다. 상태 코드가 05h이면, 다중 경로 소프트웨어(104)는 논리 디스크(303)가 복수의 액세스 구간을 포함한다고 결정한다. 상태 코드가 01h 내지 04h 중 하나이면, 다중 경로 소프트웨어(104)는 논리 디스크가 복수의 액세스 구간으로 분할되지 않은 것으로 결정한다.
단계 S511: 논리 디스크가 복수의 액세스 구간으로 분할되지 않은 것으로 결정한 경우, 다중 경로 소프트웨어는 I/O 경로 선택 시에 다중 경로 소프트웨어(104)에 의한 참조를 위해, 상태 보고 정보를 보고하는 데 사용되는 경로의 경로 상태로서 경로 코드를 기록한다. I
단계 S512: 논리 디스크가 복수의 액세스 구간으로 분할되지 않은 것으로 결정하는 경우, 다중 경로 소프트웨어(104)는 구간 조회 커맨드를 저장 시스템(300)에 전송하며, 여기서 구간 조회 커맨드는 저장 시스템의 각각의 제어 노드에, 제어 노드에 할당된 액세스 구간을 보고하도록 명령하는 데 사용된다.
구간 조회 커맨드를 전송하기 전에, 다중 경로 소프트웨어는 먼저 NVMe 구간 조회 커맨드를 생성한다. NVMe 구간 조회 커맨드는 NVMe 프로토콜에서의 Get Log Page command Dword 10에 따라 정의된 커맨드이다. 그러나 기존 NVMe 프로토콜에는 NVMe 구간 조회 커맨드가 없다. NVMe 구간 조회 커맨드는 Get Log Page command Dword 10에 따라 새로 정의된 커맨드이다. 구간 조회 커맨드는 NVMeoF 프로토콜에 새로 추가된 서브커맨드(sub-command)이다. 도 10에 도시된 바와 같이, NVMe 구간 조회 커맨드의 커맨드 포맷은 NVMe 경로 상태 조회 커맨드의 포맷과 동일하다. 차이점은 구간 조회 커맨드의 LID 필드는 NVMe 구간 조회 커맨드의 커맨드 식별자, 예를 들어 0Dh가 실려 전달된다는 것이다. NVMe 구간 조회 커맨드가 생성된 후, NVMe 구간 조회 커맨드는 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하기 위해 외부 네트워크 프로토콜로 캡슐화될 수 있다. 이 외부 네트워크 프로토콜 구간 조회 커맨드는 구간 조회 커맨드이다.
저장 시스템(300)에서, NVMe 구간 조회 커맨드에 대한 NVMe 구간 조회 커맨드의 응답 정보가 정의된다. 도 11에 도시된 바와 같이, NVMe 구간 조회 커맨드의 응답 정보의 명칭 공간 식별자 필드는 논리 디스크의 디스크 코드, 예를 들어 명칭 공간 1을 실어 전달하는 데 사용된다. 응답 정보의 바이트 03:00에서, NVMe 구간 조회 커맨드의 응답 정보의 액세스 구간 수량 필드는 구간 보고 정보에 의해 실려 전달되는 액세스 구간의 수량을 실어 전달하는 데 사용된다. 응답 정보의 바이트 11:08에서, 각각의 제어 노드는 본 발명의 이 실시예에서 하나의 논리 디스크에만 액세스하기 때문에, 하나의 액세스 구간이 존재한다. 다른 실시예에서, 호스트(100)는 제어 노드를 사용하여 논리 디스크(303) 외에 다른 논리 디스크에 액세스할 수 있으므로, 여기에 채워지는 액세스 구간의 수량은 1이 아닐 수 있다. NVMe 구간 조회 커맨드의 응답 정보는 액세스 구간 설명 필드를 더 포함한다. 액세스 구간 설명 필드는 액세스 구간의 액세스 구간 정보를 실어 전달하는 데 사용된다. 구간 설명 필드는 응답 정보의 바이트 12:27, 예를 들어, 사용자 데이터 세그먼트 설명자(user data segment descriptor) 1에 있다. 구간 보고 정보가 복수의 액세스 구간을 실어 전달하는 경우, 복수의 액세스 구간 설명 필드가 응답 정보에 추가될 수 있다. 예를 들어, 액세스 구간에 관한 정보는 바이트 27 다음 바이트에 순차적으로 채워진다. 액세스 구간에 대한 설명은 도 12 및 도 13에 도시되어 있다.
도 3a 및 도 3를 참조하면, 분할을 통해 액세스 구간을 획득하는 것에는 두 가지 방식: 도 3a에 도시된 연속된 주소 공간에 대한 분할 방식과, 도 3b에 도시된 비연속된 주소 공간에 대한 분할 방식이 있다.
연속된 주소 공간에 대한 분할 방식이 액세스 구간에 사용되면, 도 13에 도시된 바와 같이, 액세스 구간 설명 정보는 액세스 구간 시작 주소를 실어 전달하는 데 사용되는 액세스 구간 시작 주소 필드를 포함한다. 예를 들어, 액세스 구간 설명 정보의 바이트 07:00에서, 간격 길이 필드가 더 포함되며, 액세스 구간 길이를 실어 전달하는 데 사용된다. 예를 들어, 구간 설명 정보의 바이트 07:00에서, 주소 공간이 연속되기 때문에, 액세스 서브구간은 없고, 액세스 서브구간 간격을 실어 전달하는 바이트 15:12는 0이다. 비연속된 주소 공간에 대한 분할 방식이 액세스 구간에 사용되면, 액세스 구간의 주소는 비연속되고, 바이트 07:00은 첫 번째 액세스 서브구간의 시작 주소를 나타내고, 바이트 11:08은 각각의 액세스 서브구간의 길이를 나타내고, 바이트 15:12는 두 개의 인접한 액세스 서브구간 사이의 간격을 나타낸다.
단계 S513: 저장 시스템의 각각의 제어 노드는 구간 조회 커맨드를 수신한 다음, 구간 보고 정보를 생성하고, 구간 보고 정보를 호스트(100)에 보고한다.
구간 조회 커맨드를 수신하는 경우, 조회 커맨드를 수신한 제어 노드는 구간 조회 커맨드를 파싱하여 NVMe 구간 조회 커맨드를 획득하고, NVMe 구간 조회 커맨드의 응답 정보의 미리 정의된 포맷에 기초하여, NVMe 구간 조회 커맨드의 응답 정보에 조회 커맨드를 수신하는 제어 노드의 액세스 구간을 추가하고, NVMe 구간 조회 커맨드의 응답 정보를 외부 네트워크 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 구간 응답 메시지를 형성하며, 외부 네트워크 프로토콜 구간 응답 메시지를 호스트(100)에 보고하기 위한 구간 보고 정보로서 사용한다.
단계 S514: 구간 보고 정보를 수신한 후, 호스트의 다중 경로 소프트웨어(104)는 구간 보고 정보로부터 액세스 구간 정보를 획득한 다음, 구간 보고 정보를 보고하는 제어 노드에 대응하는 액세스 구간 정보를 기록하며, 이 경우에 I/O 요청을 수신한 경우에 그 정보에 기초하여 I/O 요청을 할당할 수 있다.
액세스 구간 정보를 획득하는 경우, 호스트의 다중 경로 소프트웨어(104)는 먼저 구간 보고 정보를 파싱하여 NVMe 구간 조회 커맨드의 응답 정보를 획득한 다음, NVMe 구간 조회 커맨드의 응답 정보로부터 액세스 구간 정보를 획득한다.
도 14는 호스트(100)가 I/O 요청을 수신한 경우, I/O 요청을 실행하기 위해 제어 노드를 할당하는 흐름도이다.
단계 1301: 호스트(100)가 I/O 요청을 수신하며, 여기서 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달한다.
단계 1302: 호스트(100)가 논리 주소에 대응하는 액세스 구간을 결정한다.
단계 1303 : 호스트(100)가 결정된 액세스 구간에 기초하여, I/O 요청을 처리하는 제어 노드를 결정한다.
단계 1304: 호스트(100)가 I/O 요청을 제어 노드에 전달하고, 제어 노드가 I/O 요청을 처리한다.
이러한 방식으로, 호스트에 의해 전달되는 I/O 요청은 액세스될 데이터의 논리 주소에 대응하는 액세스 구간에 대응하는 제어 노드에 의해 처리되어, 동일한 논리 주소를 실어 전달하는 I/O 요청이 처리를 위해 다른 제어 노드에 전달되는 것을 방지하고, I/O 요청의 포워딩을 피함으로써, I/O 요청의 지연을 감소시킬 수 있다.
도 15 및 도 16은 각각 본 발명의 일 실시예에 따른 호스트의 모듈도 및 저장 시스템의 임의의 제어 노드의 모듈도이다. 호스트는 경로 관리 모듈(1501), 경로 상태 조회 모듈, 구간 조회 모듈(1503), 구간 기록 모듈(1504), 구간 결정 모듈(1505), 및 I/O 전달 모듈(1506)을 포함한다. 제어 노드는 디스크 코드 보고 모듈(1601), 디스크 식별자 보고 모듈(1602), 경로 상태 보고 모듈, 및 구간 보고 모듈(1604)을 포함한다.
호스트의 경로 관리 모듈(1501)은, 호스트(100)의 운영 체제(105)가 저장 시스템(300)이 호스트(100)에 연결되어 있음을 검출한 경우, 호스트(100)와 저장 시스템(300) 사이의 복수의 경로의 각각을 사용하여 저장 시스템(300)에 디스크 보고 커맨드를 전송하도록 구성된다.
디스크 보고 커맨드를 수신한 후, 저장 시스템(300)에서의 제어 노드의 디스크 코드 보고 모듈(1601)은 디스크 보고 커맨드 내의 호스트 포트 식별자를 획득하고; 호스트 포트 식별자 및 호스트 포트 식별자와 논리 디스크의 디스크 코드 사이의 매핑 관계에 기초하여, 호스트 포트 식별자에 대응하는 디스크 코드를 결정한 다음; 디스크 코드에 대응하는 논리 디스크에 대한 보고 정보를 생성하고; 디스크 코드를 보고 정보에 추가하고; 보고 정보를 호스트(100)에 보고한다.
저장 시스템(300)의 각각의 제어 노드(302)에 의해 보고되는 보고 정보를 수신한 후, 호스트의 경로 관리 모듈(1501)은 각각의 보고 정보 내의 경로 정보에 의해 지시되는 경로를 사용하여 디스크 식별자 조회 커맨드를 전송한다. 조회 커맨드는 보고 정보에 디스크 코드를 포함한다.
조회 커맨드를 수신한 후, 저장 시스템(300)의 제어 노드의 디스크 식별자 보고 모듈(1602)은 조회 커맨드 내의 디스크 코드에 기초하여, 디스크 코드에 대응하는 디스크 식별자를 획득하고, 조회 커맨드를 전송하는 데 사용된 경로를 사용하여 디스크 코드에 대응하는 디스크 식별자를 보고한다.
호스트의 경로 관리 모듈(1501)은 보고된 디스크 식별자에 기초하여, 디스크 식별자에 대응하는 논리 디스크에 액세스하는 데 사용되는 경로를 결정하고, 결정된 경로를 관리한다.
호스트의 경로 관리 모듈(1501)에 의해 실행되는 기능은 도 5의 단계 S501, S504 및 S507에서 실행되는 기능과 동일하다. 제어 노드의 디스크 코드 보고 모듈(1601)에 의해 실행되는 기능은 도 5의 단계 S502 및 S503에서 실행되는 기능과 동일하고. 제어 노드의 디스크 식별자 보고 모듈(1602)에 의해 실행되는 기능은 도 5의 단계 S505 및 S507에서 실행되는 기능과 동일하다. 세부사항에 대해서는 도 5에서의 대응하는 단계의 설명을 참조한다.
논리 디스크에 대한 액세스 경로가 생성된 후, 호스트의 경로 상태 조회 모듈(1502)은 경로 상태 조회 커맨드를 저장 시스템(300)에 전송한다. 상태 조회 커맨드는 각각의 제어 노드에, 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용된다. 경로 상태 조회 모듈(1502)에 의해 실행되는 기능은 단계 S508에서 실행되는 기능과 동일하다. 경로 상태 조회 모듈(1502)의 구체적인 구현 세부사항에 대해서는 단계 S508의 관련 설명을 참조한다.
경로 상태 조회 커맨드를 수신하는 경우, 저장 노드(storage node)의 경로 상태 보고 모듈(1603)은 상태 보고 정보에 경로 상태를 추가하여 그 상태 보고 정보를 호스트에 보고한다. 경로 상태 보고 모듈(1603)의 구체적인 구현 세부사항에 대해서는 단계 S509의 관련 설명을 참조한다.
보고 정보를 수신한 후, 호스트의 구간 조회 모듈(1503)은 보고 정보 내의 경로 상태가 논리 디스크(303)가 복수의 액세스 구간을 포함한다는 것을 지시하는지를 판정한다. 논리 디스크가 복수의 액세스 구간으로 분할되지 않은 것으로 판정한 경우, 구간 조회 모듈(1503)은 I/O 경로 선택 시에 다중 경로 소프트웨어(104)에 의한 참조를 위해, 상태 보고 정보를 보고하는 데 사용되는 경로의 경로 상태로서 경로 코드를 기록한다. 논리 디스크가 복수의 액세스 구간으로 분할되지 않은 것으로 판정한 경우, 구간 조회 모듈(1503)은 구간 조회 커맨드를 저장 시스템(300)에 전송한다. 구간 조회 커맨드는 저장 시스템의 각각의 제어 노드에, 제어 노드에 할당된 액세스 구간을 보고하도록 명령하는 데 사용된다. 구간 조회 모듈(1503)의 구체적인 구현 세부사항에 대해서는 단계 S510 내지 S512의 관련 설명을 참조한다.
제어 노드의 구간 보고 모듈(1604)은 구간 조회 커맨드를 수신한 다음, 구간 보고 정보를 생성하고, 구간 보고 정보를 호스트(100)에 보고한다. 구간 보고 모듈(1504)의 구체적인 구현 세부사항에 대해서는 단계 S513의 관련 설명을 참조한다.
구간 보고 정보를 수신한 후, 호스트의 구간 기록 모듈(1504)은 구간 보고 정보로부터 액세스 구간 정보를 획득한 다음, 구간 보고 정보를 보고하는 제어 노드에 대응하는 액세스 구간 정보를 기록하며, 이 경우에 I/O 요청을 수신한 경우 에 그 정보에 기초하여 I/O 요청을 할당한다.
호스트의 구간 결정 모듈(1505)은 I/O 요청을 수신하도록 구성되며, 여기서 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달하고, 논리 주소에 대응하는 액세스 구간을 결정한다.
I/O 전달 모듈(1506)은 결정된 액세스 구간에 기초하여, I/O 요청을 처리하는 제어 노드를 결정한 다음, I/O 요청을 제어 노드에 전달하고, 제어 노드는 I/O 요청을 처리한다.
이상의 설명은 본 발명의 구체적인 구현예일 뿐이고, 본 발명의 보호 범위를 한정하려는 것은 아니다. 본 발명에 개시된 기술 범위 내에서 당업자가 쉽게 생각해 낼 수 있는 모든 변형 또는 대체는 본 발명의 보호 범위 내에 속한다. 따라서, 본 발명의 보호 범위는 청구 범위의 보호 범위에 따라야 한다.

Claims (53)

  1. 호스트에 의해 수행되는 데이터 처리 방법으로서,
    상기 호스트와 저장 시스템은 NVMeoF(Non-Volatile Memory express over Fabric) 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함하고, 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스하며, 상기 데이터 처리 방법은,
    상기 제어 노드에 상태 조회 커맨드(state query command)를 전송하는 단계 - 상기 상태 조회 커맨드는 상기 제어 노드에, 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용됨 -;
    상기 제어 노드에 의해 보고되는 경로 상태를 수신하는 단계;
    수신된 경로 상태가, 상기 논리 디스크가 액세스 구간(access interval)을 포함한다는 것을 지시하는 경우, 상기 제어 노드에 구간 조회 커맨드(interval query command)를 전송하는 단계;
    상기 제어 노드에 의해 보고되는 액세스 구간 정보를 수신하는 단계 - 상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 상기 제어 노드에 미리 할당됨 -; 및
    상기 제어 노드와 상기 액세스 구간 정보 사이의 매핑 관계를 기록하는 단계
    를 포함하는 데이터 처리 방법.
  2. 제1항에 있어서,
    상기 데이터 처리 방법은,
    I/O 요청을 수신하는 단계 - 상기 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달함 -;
    상기 논리 주소에 대응하는 액세스 구간을 결정하는 단계;
    상기 매핑 관계에 기초하여, 상기 액세스 구간에 대응하는 제어 노드를 결정하는 단계; 및
    상기 액세스 구간에 대응하는 제어 노드에 상기 I/O 요청을 전송하는 단계를 더 포함하는 데이터 처리 방법.
  3. 제1항에 있어서,
    상기 논리 디스크가 상기 액세스 구간을 포함한다고 결정하는 경우, 상기 제어 노드는 상기 호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고하는, 데이터 처리 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 액세스 구간 조회 커맨드는 상기 NVMeoF 프로토콜 내의 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가되는, 데이터 처리 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 연속된 주소 공간인, 데이터 처리 방법.
  6. 제5항에 있어서,
    상기 액세스 구간 정보는 액세스 구간 시작 주소 및 액세스 구간 길이를 포함하는, 데이터 처리 방법.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제어 노드에 대응하는 액세스 구간은 제1 액세스 서브구간(sub-interval) 및 제2 액세스 서브구간을 포함하고, 상기 제1 액세스 서브구간과 상기 제2 액세스 서브구간 사이에 간격이 존재하는, 데이터 처리 방법.
  8. 제7항에 있어서,
    상기 제1 액세스 서브구간은 상기 제2 액세스 서브구간에 인접하고, 상기 액세스 구간 정보는 액세스 구간 시작 주소, 각각의 액세스 서브구간의 길이, 및 두 개의 인접한 액세스 서브구간 사이의 간격을 포함하는, 데이터 처리 방법.
  9. 저장 시스템의 제어 노드에 의해 수행되는 데이터 처리 방법으로서,
    상기 저장 시스템과 호스트는 NVMeoF(Non-Volatile Memory express over Fabric) 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함하며, 상기 데이터 처리 방법은,
    상기 호스트에 의해 전송되는 상태 조회 커맨드를 수신하는 단계 - 상기 상태 조회 커맨드는 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 상기 제어 노드에 명령하는 데 사용됨 -;
    상기 논리 디스크가 액세스 구간을 포함하는 경우, 상기 호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고하는 단계;
    상기 경로 상태에 기초하여 상기 호스트에 의해 전송되는 액세스 구간 조회 커맨드를 수신하는 단계; 및
    상기 구간 조회 정보에 기초하여 상기 호스트에, 상기 제어 노드에 할당된 액세스 구간의 액세스 구간 정보를 보고하여, 상기 호스트가 상기 액세스 구간 정보와 상기 제어 노드 사이의 매핑 관계를 기록할 수 있도록 하는 단계
    를 포함하는 데이터 처리 방법.
  10. 제9항에 있어서,
    상기 액세스 구간 조회 커맨드는 상기 NVMeoF 프로토콜 내의 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가되는, 데이터 처리 방법.
  11. 제9항 또는 제10항에 있어서,
    상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 연속된 주소 공간인, 데이터 처리 방법.
  12. 제11항에 있어서,
    상기 액세스 구간 정보는 액세스 구간 시작 주소 및 액세스 구간 길이를 포함하는, 데이터 처리 방법.
  13. 제9항 또는 제10항에 있어서,
    상기 제어 노드에 대응하는 액세스 구간은 제1 액세스 서브구간 및 제2 액세스 서브구간을 포함하고, 상기 제1 액세스 서브구간과 상기 제2 액세스 서브구간 사이에 간격이 존재하는, 데이터 처리 방법.
  14. 제13항에 있어서,
    상기 제1 액세스 서브구간은 상기 제2 액세스 서브구간에 인접하고, 상기 액세스 구간 정보는 액세스 구간 시작 주소, 각각의 액세스 서브구간의 길이, 및 두 개의 인접한 액세스 서브구간 사이의 간격을 포함하는, 데이터 처리 방법.
  15. 호스트에 의해 수행되는 데이터 처리 방법으로서,
    상기 호스트는 저장 시스템에 연결되고, 상기 저장 시스템은 복수의 제어 노드를 포함하고, 상기 호스트는 상기 복수의 제어 노드를 사용하여 상기 저장 시스템의 논리 디스크에 액세스하며, 상기 데이터 처리 방법은,
    I/O 요청을 수신하는 단계 - 상기 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달함 -;
    상기 논리 주소에 대응하는 액세스 구간을 결정하는 단계 - 상기 논리 디스크는 복수의 액세스 구간을 포함하고, 상기 호스트는 각각의 액세스 구간과 제어 노드 사이의 매핑 관계를 기록함 -; 및
    결정된 액세스 구간에 대응하는 제어 노드에 상기 I/O 요청을 전달하는 단계
    를 포함하는 데이터 처리 방법.
  16. 제15항에 있어서,
    상기 데이터 처리 방법은,
    상기 복수의 제어 노드에 상태 조회 커맨드를 전송하는 단계 - 상기 상태 조회 커맨드는 상기 복수의 제어 노드 각각에, 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용됨 -;
    상기 복수의 제어 노드에 의해 보고되는 경로 상태를 수신하는 단계;
    수신된 경로 상태가, 상기 논리 디스크가 액세스 구간을 포함한다는 것을 지시하는 경우, 상기 경로 상태를 보고하는 제어 노드에 구간 조회 커맨드를 전송하는 단계;
    상기 경로 상태를 보고하는 제어 노드에 의해 보고되는 액세스 구간 정보를 수신하는 단계; 및
    상기 액세스 구간 정보와 상기 경로 상태를 보고하는 제어 노드 사이의 매핑 관계를 기록하는 단계를 더 포함하는 데이터 처리 방법.
  17. 제16항에 있어서,
    상기 논리 디스크가 액세스 구간을 포함한다고 결정한 경우, 상기 상태 조회 커맨드를 수신하는 제어 노드는 상기 호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고하는, 데이터 처리 방법.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서,
    상기 액세스 구간 조회 커맨드는 상기 NVMeoF 프로토콜 내의 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가되는, 데이터 처리 방법.
  19. 제15항 내지 제18항 중 어느 한 항에 있어서,
    상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 연속된 주소 공간인, 데이터 처리 방법.
  20. 제19항에 있어서,
    상기 액세스 구간 정보는 액세스 구간 시작 주소 및 액세스 구간 길이를 포함하는, 데이터 처리 방법.
  21. 제15항 내지 제18항 중 어느 한 항에 있어서,
    상기 제어 노드에 대응하는 액세스 구간은 제1 액세스 서브구간 및 제2 액세스 서브구간을 포함하고, 상기 제1 액세스 서브구간과 상기 제2 액세스 서브구간 사이에 간격이 존재하는, 데이터 처리 방법.
  22. 제21항에 있어서,
    상기 제1 액세스 서브구간은 상기 제2 액세스 서브구간에 인접하고, 상기 액세스 구간 정보는 액세스 구간 시작 주소, 각각의 액세스 서브구간의 길이, 및 두 개의 인접한 액세스 서브구간 사이의 간격을 포함하는, 데이터 처리 방법.
  23. 호스트에 의해 수행되는 데이터 처리 방법으로서,
    상기 호스트와 저장 시스템은 외부 네트워크를 사용하여 서로 통신하며, 상기 데이터 처리 방법은,
    비휘발성 메모리 익스프레스(non-volatile memory express, NVMe) 구간 조회 커맨드를 상기 외부 네트워크 프로토콜로 캡슐화(encapsulating)하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하는 단계 - 상기 NVMe 구간 조회 커맨드는 상기 저장 시스템의 제어기에 할당된 액세스 구간을 조회하는 데 사용되고, 상기 액세스 구간은 상기 저장 시스템의 명칭 공간(namespace)에 속함 -;
    상기 외부 네트워크 프로토콜 구간 조회 커맨드를 상기 제어 노드에 전송하는 단계;
    상기 제어 노드에 의해 전송되는 외부 네트워크 프로토콜 구간 응답 메시지(external network protocol interval response message)를 수신하는 단계 - 상기 외부 네트워크 프로토콜 구간 응답 메시지는 상기 NVMe 구간 조회 커맨드에 대한 응답을 포함하고, 상기 NVMe 구간 조회 커맨드에 대한 응답은 상기 명칭 공간의 액세스 구간 정보를 포함함 -;
    상기 외부 네트워크 프로토콜 구간 응답 메시지를 파싱하여 상기 NVMe 구간 조회 커맨드의 응답 정보를 획득하는 단계; 및
    상기 NVMe 구간 조회 명령에 대한 응답으로부터, 상기 제어 노드의 액세스 구간 정보를 획득하고, 상기 액세스 구간 정보를 기록하는 단계
    를 포함하는 데이터 처리 방법.
  24. 제23항에 있어서,
    상기 비휘발성 메모리 익스프레스(NVMe) 구간 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하는 단계 전에, 상기 데이터 처리 방법은,
    NVMe 상태 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 상태 조회 커맨드를 획득하는 단계 - 상기 NVMe 상태 조회 커맨드는 상기 제어 노드에 대응하는 경로의 경로 상태를 조회하는 데 사용됨-;
    상기 외부 네트워크 프로토콜 상태 조회 커맨드를 상기 제어 노드로 전송하는 단계;
    상기 제어 노드에 의해 전송되는 외부 네트워크 프로토콜 상태 응답 메시지를 수신하는 단계 - 상기 외부 네트워크 프로토콜 상태 응답 메시지는 상기 NVMe 상태 조회 커맨드에 대한 응답을 포함하고, 상기 NVMe 상태 조회 커맨드에 대한 응답은 경로 상태 정보를 포함하며, 상기 경로 상태 정보는 상기 명칭 공간이 액세스 구간을 포함한다는 것을 지시함 - ; 및
    상기 외부 네트워크 프로토콜 상태 응답 메시지를 파싱하여 상기 NVMe 상태 조회 커맨드의 응답 정보를 획득하는 단계를 더 포함하는 데이터 처리 방법.
  25. 제23항에 있어서,
    상기 NVMe 액세스 구간 조회 커맨드는 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가되는, 데이터 처리 방법.
  26. 저장 시스템의 제어 노드에 의해 수행되는 데이터 처리 방법으로서,
    호스트와 상기 저장 시스템은 외부 네트워크를 사용하여 서로 통신하며, 상기 데이터 처리 방법은,
    상기 호스트에 의해 전송되는 외부 네트워크 프로토콜 구간 조회 커맨드를 수신하고, 상기 외부 네트워크 프로토콜 구간 조회 커맨드를 파싱하여 NVMe 구간 조회 커맨드를 획득하는 단계;
    상기 NVMe 구간 조회 커맨드의 응답 정보를 생성하고 - 상기 NVMe 구간 조회 커맨드의 응답 정보는 상기 제어 노드에 대응하는 액세스 구간 정보를 포함함-; 상기 NVMe 구간 조회 커맨드를 상기 외부 네트워크 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하는 단계; 및
    상기 외부 네트워크 프로토콜 구간 조회 커맨드를 상기 호스트에 보고하는 단계
    를 포함하는 데이터 처리 방법.
  27. 제26항에 있어서,
    상기 호스트에 의해 전송되는 외부 네트워크 프로토콜 구간 조회 커맨드를 수신하기 전에, 상기 데이터 처리 방법은,
    외부 네트워크 프로토콜 상태 조회 커맨드를 수신하고, 상기 외부 네트워크 프로토콜 상태 조회 커맨드를 파싱하여 상기 비휘발성 메모리 익스프레스 NVMe 상태 조회 커맨드를 획득하는 단계 - 상기 NVMe 상태 조회 커맨드는 상기 제어 노드에, 상기 제어 노드에 대응하는 경로 상태를 보고하도록 명령하는 데 사용됨 -;
    상기 NVMe 상태 조회 커맨드의 응답 정보를 생성하고, 상기 명칭 공간이 액세스 구간을 포함하는 경우, 상기 명칭 공간이 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 상기 NVMe 상태 조회 커맨드의 응답 정보에 추가하는 단계; 및
    상기 NVMe 상태 조회 커맨드를 캡슐화하여 상기 외부 네트워크 프로토콜 상태 조회 커맨드의 응답 정보를 획득하고, 상기 외부 네트워크 프로토콜 상태 조회 커맨드의 응답 정보를 상기 호스트에 보고하는 단계를 더 포함하는 데이터 처리 방법.
  28. 호스트로서,
    상기 호스트와 저장 시스템은 NVMeoF(Non-Volatile Memory express over Fabric) 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함하고, 상기 호스트는 상기 저장 시스템의 제어 노드를 사용하여 상기 논리 디스크에 액세스하며, 상기 호스트는,
    상기 제어 노드에 상태 조회 커맨드를 전송하고 - 상기 상태 조회 커맨드는 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 상기 제어 노드에 명령하는 데 사용됨 -; 상기 제어 노드에 의해 보고되는 경로 상태를 수신하도록 구성된 경로 상태 조회 모듈;
    수신된 경로 상태가, 상기 논리 디스크가 액세스 구간을 포함한다는 것을 지시하는 경우, 상기 제어 노드에 구간 조회 커맨드를 전송하고, 상기 제어 노드에 의해 보고되는 액세스 구간 정보를 수신하도록 구성된 구간 조회 모듈 - 상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 상기 제어 노드에 미리 할당됨 -; 및
    상기 제어 노드와 상기 액세스 구간 정보 사이의 매핑 관계를 기록하도록 구성된 구간 기록 모듈
    을 포함하는 호스트.
  29. 제28항에 있어서,
    상기 호스트는,
    I/O 요청을 수신하고 - 상기 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달함 -, 상기 논리 주소에 대응하는 액세스 구간을 결정하도록 구성된 구간 결정 모듈; 및
    상기 매핑 관계에 기초하여, 상기 액세스 구간에 대응하는 제어 노드를 결정하고; 상기 액세스 구간에 대응하는 제어 노드에 상기 I/O 요청을 전송하도록 구성된 I/O 전달 모듈을 더 포함하는 호스트.
  30. 제8항에 있어서,
    상기 논리 디스크가 상기 액세스 구간을 포함한다고 결정하는 경우, 상기 제어 노드는 상기 호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고하는, 호스트.
  31. 제28항 내지 제30항 중 어느 한 항에 있어서,
    상기 액세스 구간 조회 커맨드는 상기 NVMeoF 프로토콜 내의 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가되는, 호스트.
  32. 제28항 내지 제31항 중 어느 한 항에 있어서,
    상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 연속된 주소 공간인, 호스트.
  33. 제32항에 있어서,
    상기 액세스 구간 정보는 액세스 구간 시작 주소 및 액세스 구간 길이를 포함하는, 호스트.
  34. 제28항 내지 제31항 중 어느 한 항에 있어서,
    상기 제어 노드에 대응하는 액세스 구간은 제1 액세스 서브구간(sub-interval) 및 제2 액세스 서브구간을 포함하고, 상기 제1 액세스 서브구간과 상기 제2 액세스 서브구간 사이에 간격이 존재하는, 호스트.
  35. 제34항에 있어서,
    상기 제1 액세스 서브구간은 상기 제2 액세스 서브구간에 인접하고, 상기 액세스 구간 정보는 액세스 구간 시작 주소, 각각의 액세스 서브구간의 길이, 및 두 개의 인접한 액세스 서브구간 사이의 간격을 포함하는, 호스트.
  36. 저장 시스템의 제어 노드로서,
    상기 저장 시스템과 호스트는 NVMeoF(Non-Volatile Memory express over Fabric) 프로토콜을 사용하여 서로 통신하고, 상기 저장 시스템은 논리 디스크를 포함하며, 상기 방법은,
    상기 호스트에 의해 전송되는 상태 조회 커맨드를 수신하고 - 상기 상태 조회 커맨드는 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 상기 제어 노드에 명령하는 데 사용됨 -; 상기 논리 디스크가 액세스 구간을 포함하는 경우, 상기 호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고하도록 구성된 경로 상태 보고 모듈; 및
    상기 경로 상태에 기초하여 상기 호스트에 의해 전송되는 액세스 구간 조회 커맨드를 수신하고; 상기 호스트가 상기 액세스 구간 정보와 상기 제어 노드 사이의 매핑 관계를 기록할 수 있도록, 상기 구간 조회 정보에 기초하여 상기 호스트에, 상기 제어 노드에 할당된 액세스 구간의 액세스 구간 정보를 보고하도록 구성된 구간 보고 모듈
    을 포함하는 제어 노드.
  37. 제36항에 있어서,
    상기 액세스 구간 조회 커맨드는 상기 NVMeoF 프로토콜 내의 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가되는, 제어 노드.
  38. 제36항 또는 제37항에 있어서,
    상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 연속된 주소 공간인, 제어 노드.
  39. 제38항에 있어서,
    상기 액세스 구간 정보는 액세스 구간 시작 주소 및 액세스 구간 길이를 포함하는, 제어 노드.
  40. 제36항 또는 제37항에 있어서,
    상기 제어 노드에 대응하는 액세스 구간은 제1 액세스 서브구간 및 제2 액세스 서브구간을 포함하고, 상기 제1 액세스 서브구간과 상기 제2 액세스 서브구간 사이에 간격이 존재하는, 제어 노드.
  41. 제40항에 있어서,
    상기 제1 액세스 서브구간은 상기 제2 액세스 서브구간에 인접하고, 상기 액세스 구간 정보는 액세스 구간 시작 주소, 각각의 액세스 서브구간의 길이, 및 두 개의 인접한 액세스 서브구간 사이의 간격을 포함하는, 제어 노드.
  42. 호스트로서,
    상기 호스트는 저장 시스템에 연결되고, 상기 저장 시스템은 복수의 제어 노드를 포함하고, 상기 호스트는 상기 복수의 제어 노드를 사용하여 상기 저장 시스템의 논리 디스크에 액세스하며, 상기 호스트는,
    I/O 요청을 수신하고 - 상기 I/O 요청은 액세스될 데이터의 논리 주소를 실어 전달함 -; 상기 논리 주소에 대응하는 액세스 구간을 결정하도록 구성된 구간 결정 모듈 - 상기 논리 디스크는 복수의 액세스 구간을 포함하고, 상기 호스트는 각각의 액세스 구간과 제어 노드 사이의 매핑 관계를 기록함 -; 및
    결정된 액세스 구간에 대응하는 제어 노드에 상기 I/O 요청을 전달하도록 구성된 I/O 전달 모듈
    을 포함하는 호스트.
  43. 제42항에 있어서,
    상기 호스트는,
    상기 복수의 제어 노드에 상태 조회 커맨드를 전송하고 - 상기 상태 조회 커맨드는 상기 복수의 제어 노드 각각에, 상기 제어 노드에 대응하는 경로의 경로 상태를 보고하도록 명령하는 데 사용됨 -; 상기 복수의 제어 노드에 의해 보고되는 경로 상태를 수신하도록 구성된 경로 상태 조회 모듈;
    수신된 경로 상태가, 상기 논리 디스크가 액세스 구간을 포함한다는 것을 지시하는 경우, 상기 경로 상태를 보고하는 제어 노드에 구간 조회 커맨드를 전송하고; 상기 경로 상태를 보고하는 제어 노드에 의해 보고되는 액세스 구간 정보를 수신하도록 구성된 구간 조회 모듈; 및
    상기 액세스 구간 정보와 상기 경로 상태를 보고하는 제어 노드 사이의 매핑 관계를 기록하도록 구성된 구간 기록 모듈을 더 포함하는 호스트.
  44. 제43항에 있어서,
    상기 논리 디스크가 액세스 구간을 포함한다고 결정한 경우, 상기 상태 조회 커맨드를 수신하는 제어 노드는 상기호스트에, 상기 논리 디스크가 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 보고하는, 호스트.
  45. 제42항 내지 제44항 중 어느 한 항에 있어서,
    상기 액세스 구간 조회 커맨드는 상기 NVMeoF 프로토콜 내의 커맨드 Get Log Page command Dword 10에 따라 정의되고, 상기 액세스 구간 조회 커맨드의 커맨드 식별자가 상기 커맨드의 log page identifier 필드에 추가되는, 호스트.
  46. 제43항 내지 제45항 중 어느 한 항에 있어서,
    상기 액세스 구간 정보에 의해 지시되는 액세스 구간은 연속된 주소 공간인, 호스트.
  47. 제46항에 있어서,
    상기 액세스 구간 정보는 액세스 구간 시작 주소 및 액세스 구간 길이를 포함하는, 호스트.
  48. 제43 내지 제45항 중 어느 한 항에 있어서,
    상기 제어 노드에 대응하는 액세스 구간은 제1 액세스 서브구간 및 제2 액세스 서브구간을 포함하고, 상기 제1 액세스 서브구간과 상기 제2 액세스 서브구간 사이에 간격이 존재하는, 호스트.
  49. 제48항에 있어서,
    상기 제1 액세스 서브구간은 상기 제2 액세스 서브구간에 인접하고, 상기 액세스 구간 정보는 액세스 구간 시작 주소, 각각의 액세스 서브구간의 길이, 및 두 개의 인접한 액세스 서브구간 사이의 간격을 포함하는, 호스트.
  50. 호스트로서,
    상기 호스트와 저장 시스템은 외부 네트워크를 사용하여 서로 통신하며, 상기 호스트는,
    비휘발성 메모리 익스프레스(NVMe) 구간 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화(encapsulating)하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하고 - 상기 NVMe 구간 조회 커맨드는 상기 저장 시스템의 제어기에 할당된 액세스 구간을 조회하는 데 사용되고, 상기 액세스 구간은 상기 저장 시스템의 명칭 공간(namespace)에 속함 -; 상기 외부 네트워크 프로토콜 구간 조회 커맨드를 상기 제어 노드에 전송하고; 상기 제어 노드에 의해 전송되는 외부 네트워크 프로토콜 구간 응답 메시지를 수신하도록 구성된 구간 조회 모듈 - 상기 외부 네트워크 프로토콜 구간 응답 메시지는 상기 NVMe 구간 조회 커맨드에 대한 응답을 포함하고, 상기 NVMe 구간 조회 커맨드에 대한 응답은 상기 명칭 공간의 액세스 구간 정보를 포함함 -; 및
    상기 외부 네트워크 프로토콜 구간 응답 메시지를 파싱하여 상기 NVMe 구간 조회 커맨드의 응답 정보를 획득하고; 상기 NVMe 구간 조회 명령에 대한 응답으로부터, 상기 제어 노드의 액세스 구간 정보를 획득하여, 상기 액세스 구간 정보를 기록하도록 구성된 구간 기록 모듈
    을 포함하는 호스트.
  51. 제50항에 있어서,
    상기 비휘발성 메모리 익스프레스(NVMe) 구간 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 상기 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하기 전에, 상기 호스트는,
    NVMe 상태 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 상태 조회 커맨드를 획득하고 - 상기 NVMe 상태 조회 커맨드는 상기 제어 노드에 대응하는 경로의 경로 상태를 조회하는 데 사용됨-; 상기 외부 네트워크 프로토콜 상태 조회 커맨드를 상기 제어 노드로 전송하고; 상기 제어 노드에 의해 전송되는 외부 네트워크 프로토콜 상태 응답 메시지를 수신하고 - 상기 외부 네트워크 프로토콜 상태 응답 메시지는 상기 NVMe 상태 조회 커맨드에 대한 응답을 포함하고, 상기 NVMe 상태 조회 커맨드에 대한 응답은 경로 상태 정보를 포함하며, 상기 경로 상태 정보는 상기 명칭 공간이 액세스 구간을 포함한다는 것을 지시함 - ; 상기 외부 네트워크 프로토콜 상태 응답 메시지를 파싱하여 상기 NVMe 상태 조회 커맨드의 응답 정보를 획득하도록 구성된 경로 상태 조회 모듈
    을 더 포함하는 호스트.
  52. 저장 시스템의 제어 노드로서,
    호스트와 상기 저장 시스템은 외부 네트워크를 사용하여 서로 통신하며, 상기 제어 노드는 구간 보고 모듈을 포함하고,
    상기 구간 보고 모듈은,
    상기 호스트에 의해 전송되는 외부 네트워크 프로토콜 구간 조회 커맨드를 수신하고, 상기 외부 네트워크 프로토콜 구간 조회 커맨드를 파싱하여 NVMe 구간 조회 커맨드를 획득하고;
    상기 NVMe 구간 조회 커맨드의 응답 정보를 생성하고 - 상기 NVMe 구간 조회 커맨드의 응답 정보는 상기 제어 노드에 대응하는 액세스 구간 정보를 포함함 -, 상기 NVMe 구간 조회 커맨드를 상기 외부 네트워크의 프로토콜로 캡슐화하여 외부 네트워크 프로토콜 구간 조회 커맨드를 획득하고;
    상기 외부 네트워크 프로토콜 구간 조회 커맨드를 상기 호스트에 보고하도록 구성되는,
    제어 노드.
  53. 제52항에 있어서,
    상기 제어 노드는 경로 상태 보고 모듈을 더 포함하며,
    상기 경로 상태 보고 모듈은,
    외부 네트워크 프로토콜 상태 조회 커맨드를 수신하고, 상기 외부 네트워크 프로토콜 상태 조회 커맨드를 파싱하여 상기 비휘발성 메모리 익스프레스 NVMe 상태 조회 커맨드를 획득하고 - 상기 NVMe 상태 조회 커맨드는 상기 제어 노드에, 상기 제어 노드에 대응하는 경로 상태를 보고하도록 명령하는 데 사용됨 -;
    상기 NVMe 상태 조회 커맨드의 응답 정보를 생성하고, 상기 명칭 공간이 액세스 구간을 포함하는 경우, 상기 명칭 공간이 상기 액세스 구간을 포함한다는 것을 지시하는 경로 상태를 상기 NVMe 상태 조회 커맨드의 응답 정보에 추가하고;
    상기 NVMe 상태 조회 커맨드를 캡슐화하여 상기 외부 네트워크 프로토콜 상태 조회 커맨드의 응답 정보를 획득하고, 상기 외부 네트워크 프로토콜 상태 조회 커맨드의 응답 정보를 상기 호스트에 보고하도록 구성되는, 제어 노드.
KR1020207014420A 2018-07-17 2018-07-17 I/o 요청 처리 방법 및 기기 KR102342607B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/095992 WO2020014869A1 (zh) 2018-07-17 2018-07-17 处理i/o请求的方法及设备

Publications (2)

Publication Number Publication Date
KR20200070349A true KR20200070349A (ko) 2020-06-17
KR102342607B1 KR102342607B1 (ko) 2021-12-22

Family

ID=69164173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207014420A KR102342607B1 (ko) 2018-07-17 2018-07-17 I/o 요청 처리 방법 및 기기

Country Status (6)

Country Link
US (1) US11249663B2 (ko)
EP (1) EP3796149B1 (ko)
JP (1) JP7094364B2 (ko)
KR (1) KR102342607B1 (ko)
CN (2) CN111767008A (ko)
WO (1) WO2020014869A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023075070A1 (ko) * 2021-10-29 2023-05-04 삼성전자 주식회사 스트림 데이터를 송신하고 수신하기 위한 서버, 전자 장치 및 그 동작 방법
US11936535B2 (en) 2021-10-29 2024-03-19 Samsung Electronics Co., Ltd. Server and electronic device for transmitting and receiving stream data and method for operating the same

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093352B2 (en) * 2019-09-11 2021-08-17 Hewlett Packard Enterprise Development Lp Fault management in NVMe systems
CN112684978B (zh) * 2020-12-23 2024-02-13 北京浪潮数据技术有限公司 一种存储设备的存储路径选择方法、系统及装置
US11494091B2 (en) * 2021-01-19 2022-11-08 EMC IP Holding Company LLC Using checksums for mining storage device access data
US11656795B2 (en) * 2021-01-21 2023-05-23 EMC IP Holding Company LLC Indicating optimized and non-optimized paths to hosts using NVMe-oF in a metro cluster storage system
US20230112007A1 (en) * 2021-10-08 2023-04-13 Advanced Micro Devices, Inc. Global addressing for switch fabric
CN115495023B (zh) * 2022-11-16 2023-03-14 苏州浪潮智能科技有限公司 一种数据请求方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120094375A (ko) * 2011-02-16 2012-08-24 에스케이텔레콤 주식회사 이종의 네트워크에서 경로 보호를 위한 시스템, 이를 위한 장치 및 이를 위한 방법
US20150012735A1 (en) * 2013-07-08 2015-01-08 Eliezer Tamir Techniques to Initialize from a Remotely Accessible Storage Device
WO2017040706A1 (en) * 2015-09-02 2017-03-09 Cnex Labs, Inc. Nvm express controller for remote access of memory and i/o over ethernet-type networks
KR20170134704A (ko) * 2015-04-23 2017-12-06 후아웨이 테크놀러지 컴퍼니 리미티드 확장 메모리에 대한 액세스 방법, 디바이스 및 시스템
WO2018108072A1 (zh) * 2016-12-14 2018-06-21 华为技术有限公司 访问磁盘的方法和主机

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3992427B2 (ja) * 2000-08-01 2007-10-17 株式会社日立製作所 ファイルシステム
JP2005326935A (ja) * 2004-05-12 2005-11-24 Hitachi Ltd 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法
EP1949214B1 (en) * 2005-10-28 2012-12-19 Network Appliance, Inc. System and method for optimizing multi-pathing support in a distributed storage system environment
JP2007316995A (ja) * 2006-05-26 2007-12-06 Hitachi Ltd 記憶システム及びデータ管理方法
JP5224706B2 (ja) * 2007-03-23 2013-07-03 キヤノン株式会社 記憶装置及び記憶装置の制御方法
JP2009043055A (ja) * 2007-08-09 2009-02-26 Hitachi Ltd 計算機システム、ストレージ装置及びデータ管理方法
EP2388961A1 (en) * 2009-01-13 2011-11-23 Hitachi, Ltd. Communication system, subscriber accommodating apparatus and communication method
WO2010109675A1 (en) * 2009-03-24 2010-09-30 Hitachi, Ltd. Storage system
CN102968422B (zh) * 2011-08-31 2015-06-17 中国航天科工集团第二研究院七0六所 流数据存储控制系统及其方法
CN102650932A (zh) 2012-04-05 2012-08-29 华为技术有限公司 数据的访问方法、设备和系统
JP2014013459A (ja) * 2012-07-03 2014-01-23 Fujitsu Ltd 制御装置、ストレージ装置および制御装置の制御方法
CN103019622B (zh) * 2012-12-04 2016-06-29 华为技术有限公司 一种数据的存储控制方法、控制器、物理硬盘,及系统
US9658897B2 (en) 2014-06-23 2017-05-23 International Business Machines Corporation Flexible deployment and migration of virtual machines
US10296429B2 (en) * 2014-07-25 2019-05-21 Hitachi, Ltd. Storage device
CN105138292A (zh) * 2015-09-07 2015-12-09 四川神琥科技有限公司 磁盘数据读取方法
CN105677703A (zh) * 2015-12-25 2016-06-15 曙光云计算技术有限公司 Nas文件系统及其访问方法和装置
WO2017131724A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Host devices and non-volatile memory subsystem controllers
US10346041B2 (en) * 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
CN107665091B (zh) 2016-07-28 2021-03-02 深圳大心电子科技有限公司 数据读取方法、数据写入方法及其存储控制器
CN106815338A (zh) * 2016-12-25 2017-06-09 北京中海投资管理有限公司 一种大数据的实时存储、处理和查询系统
CN107329859B (zh) 2017-06-29 2020-06-30 杭州宏杉科技股份有限公司 一种数据保护方法及存储设备
US11226753B2 (en) * 2018-05-18 2022-01-18 Ovh Us Llc Adaptive namespaces for multipath redundancy in cluster based computing systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120094375A (ko) * 2011-02-16 2012-08-24 에스케이텔레콤 주식회사 이종의 네트워크에서 경로 보호를 위한 시스템, 이를 위한 장치 및 이를 위한 방법
US20150012735A1 (en) * 2013-07-08 2015-01-08 Eliezer Tamir Techniques to Initialize from a Remotely Accessible Storage Device
KR20170134704A (ko) * 2015-04-23 2017-12-06 후아웨이 테크놀러지 컴퍼니 리미티드 확장 메모리에 대한 액세스 방법, 디바이스 및 시스템
WO2017040706A1 (en) * 2015-09-02 2017-03-09 Cnex Labs, Inc. Nvm express controller for remote access of memory and i/o over ethernet-type networks
WO2018108072A1 (zh) * 2016-12-14 2018-06-21 华为技术有限公司 访问磁盘的方法和主机

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023075070A1 (ko) * 2021-10-29 2023-05-04 삼성전자 주식회사 스트림 데이터를 송신하고 수신하기 위한 서버, 전자 장치 및 그 동작 방법
US11936535B2 (en) 2021-10-29 2024-03-19 Samsung Electronics Co., Ltd. Server and electronic device for transmitting and receiving stream data and method for operating the same

Also Published As

Publication number Publication date
CN110914796A (zh) 2020-03-24
US11249663B2 (en) 2022-02-15
US20210004171A1 (en) 2021-01-07
JP2021510215A (ja) 2021-04-15
EP3796149A1 (en) 2021-03-24
EP3796149B1 (en) 2024-02-21
CN111767008A (zh) 2020-10-13
CN110914796B (zh) 2021-11-19
EP3796149A4 (en) 2021-06-16
KR102342607B1 (ko) 2021-12-22
JP7094364B2 (ja) 2022-07-01
WO2020014869A1 (zh) 2020-01-23

Similar Documents

Publication Publication Date Title
KR102342607B1 (ko) I/o 요청 처리 방법 및 기기
JP3895677B2 (ja) ライブラリ分割を利用して可動媒体ライブラリを管理するシステム
US9990140B2 (en) Methods of providing access to I/O devices
TWI497316B (zh) 透過小型計算機系統介面輸入/輸出(scsi i/o)指示提供多重路徑之方法、電腦可讀取媒體及系統
US6950914B2 (en) Storage system
JP4667707B2 (ja) 複数のパーティションを利用する可動媒体ライブラリとの通信を仲介する方法
US8504770B2 (en) System and method for representation of target devices in a storage router
CN106164898B (zh) 数据处理方法和装置
US10523753B2 (en) Broadcast data operations in distributed file systems
US9424892B2 (en) Storage device to which memory device are connectable in multiple stages
JP2016116184A (ja) 網監視装置および仮想ネットワーク管理方法
US10200462B2 (en) Memory system including plurality of server nodes sharing storage array and operating method of memory system
JP5280342B2 (ja) 小型コンピューター用周辺機器インターフェース入出力リファラルのスケーリング
CN107544746B (zh) 存储设备的异构处理方法、异构处理装置及系统
WO2019209625A1 (en) Methods for managing group objects with different service level objectives for an application and devices thereof
JP7313458B2 (ja) ストレージシステム、ストレージノード及びデータ記憶方法
CN112714910B (zh) 分布式存储系统及计算机程序产品

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant