KR20200008483A - PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법 - Google Patents

PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법 Download PDF

Info

Publication number
KR20200008483A
KR20200008483A KR1020180101058A KR20180101058A KR20200008483A KR 20200008483 A KR20200008483 A KR 20200008483A KR 1020180101058 A KR1020180101058 A KR 1020180101058A KR 20180101058 A KR20180101058 A KR 20180101058A KR 20200008483 A KR20200008483 A KR 20200008483A
Authority
KR
South Korea
Prior art keywords
dual line
ssd device
line ssd
network interface
pcie
Prior art date
Application number
KR1020180101058A
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 삼성전자주식회사
Publication of KR20200008483A publication Critical patent/KR20200008483A/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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/0613Improving I/O performance in relation to throughput
    • 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

네트워크 인터페이스(network interface)와 PCIe EP 중 적어도 하나를 통해 동시에 듀얼 라인(dual line) SSD 장치에 액세스하는 방법이 설명된다. 상기 방법은 듀얼 라인 SSD에 의해서, 네트워크 인터페이스를 통해 원격 서버에 대한 접속을 설정하는 단계, 원격 서버에 의해서, 듀얼 라인 SSD 장치에 대한 관리 큐를 설정하는 단계, 원격 서버에 의해서, 데이터의 전송을 개시하기 위해 네트워크 인터페이스를 통해 관리 큐에 명령을 게시하는 것에 의해서 듀얼 라인 SSD 장치에 대한 입력/출력 큐를 설정하는 단계, 듀얼 라인 SSD 장치에 의해서, PCIe EP를 통해 로컬 서버에 대한 접속을 설정하는 단계, 로컬 서버에 의해서, PCIe EP를 통해 관리 큐를 설정하는 단계, 및 로컬 서버에 의해서, 데이터의 전송을 개시하기 위해 PCIe EP를 통해 관리 큐에 명령을 게시하는 것에 의해서 입력/출력 큐를 설정하는 단계를 포함한다.

Description

PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법{METHOD OF ACCESSING A DUAL LINE SSD DEVICE THROUGH PCIe EP AND NETWORK INTERFACE SIMULTANEOUSLY}
본 발명은 일반적으로 비-휘발성 메모리 장치에 관한 것으로, 특히 솔리드 스테이트 드라이브(solid state drive; SSD) 장치의 듀얼 라인 인터페이스를 사용하는 것에 의하여 원격 서버(remote server) 및 로컬 서버(local server)에 동시에 액세스하는 SSD(solid state drive) 장치에 관한 것이다.
일반적으로, 중앙 처리 장치(central processing unit; CPU)는 네트워크 프로토콜을 사용하는 것에 의하여 네트워크를 통해 원격 스토리지(remote storage) 또는 I/O 장치에 액세스할 수 있다. 원격 스토리지 또는 I/O 장치에 액세스하기 위한, 하나의 일반적인 접근 방법은 인터넷 소규모 컴퓨터 시스템 인터페이스(internet small computer system interface; iSCSI) 스토리지를 사용하는 것이다. 이 접근 방법은 CPU의 상당한 처리 주기(processing cycle)를 사용하고, 이는 총 액세스 지연(latency)을 증가시킨다. iSCSI 스토리지를 통해 원격 스토리지 또는 I/O 장치에 액세스하는 것은 보통 로컬 스토리지 또는 I/O 장치의 다이렉트 액세스(direct access)보다 몇배나 긴 지연을 갖는다. 이로 인해 네트워크를 통한 원격 저장소 또는 I/O 장치 액세스가 필요한 시스템의 성능과 처리량이 크게 저하된다.
로컬 비-휘발성 메모리 액세스를 다루는 비교적 새로운 인터페이스 표준은 NVMe(NVM Express)이며, 이는 종종 비-휘발성 메모리 호스트 제어기 인터페이스 사양(non-volatile memory host controller interface specification) 이라고 불린다. NVMe는 호스트 소프트웨어가 비-휘발성 메모리 하위 시스템과 통신하는 것을 허락하는 레지스터-레벨(register-lever) 인터페이스이다. 이 인터페이스는 엔터프라이즈(enterprise) 및 클라이언트 SSD들에 최적화되어 있고, 일반적으로 PCIe(peripheral component interconnect Express) 인터페이스에 접속된다. NVMe는 로컬 비-휘발성 메모리에 다이렉스(direct) I/O 액세스를 제공한다. NVMe를 사용하면, 시리얼(serial) 소형 컴퓨터 시스템 인터페이스(serial small computer system interface; SCSI) 또는 시리얼(serial) ATA(SATA)와 같은, 기존 I/O 인터페이스를 통해 접속하는 것에 비해 읽기 및 쓰기 작업의 지연이 감소된다.
그러나, NVMe에는 이더넷 스위치들(Ethernet switches) 또는 다른 유형의 네트워크들을 통한 데이터의 전송에 관련된 제한이 있다. 일반적으로, NVMe는 로컬 SSD들에 액세스하도록 설계되었으며 네트워크를 통해 원격 스토리지에 액세스하는 측면에서 정의되지 않았다. 최근에 정의된 NVMeoF(non-volatile memory express over fabrics)와 같은 새로운 표준은, 네트워크를 통해 다중(multiple) 서버 CPU들에 의해서 다중 원격 SSD들에 액세스하는 것을 위한 솔루션들을 제공한다. 그러나, 종래의 SSD(NVMe 또는 NVMeoF SSD)들은 다음과 같은 단점을 가지고 있다.
1. NVMe SSD 데이터 보호: PCIe Endpoint (EP)가 다운되는 경우, NVMe SSD 내의 데이터에 액세스할 수 없다.
2. NVMeoF SSD 데이터 보호: 이더넷이 다운되는 경우, NVMeoF SSD 내의 데이터에 액세스할 수 없다.
3. 국부적으로 부착된(locally attached) 경우, NVMe SSD의 과소-사용(under-utilization).
4. 종래의 NVMeoF SSD는 단지 스토리지 타겟(Storage target)으로서만 동작하고, 스토리지를 제공하는 것뿐만 아니라 RNIC 종류의 기능들을 동시에 제공하기 위해서 네트워크 타겟(Network target) 및 네트워크 개시자(Network initiator) 모두로서 동시에 동작하지 않을 것이다.
도 1은 종래의 기술에 따른, PCIe EP(106)가 다운되는 경우에, 종래의 PCIe 기반 SSD 디바이스(104)에서 데이터의 액세스불가능성(inaccessibility)을 나타내는 개략도이다. 이러한 종래의 기술에 따르면, 종래의 PCIe 기반 SSD 장치(104)는 PCIe EP(106), NVMe 제어기(108), 플래시 변환 계층(flash translation layer; FTL)(110), 및 플래시(112)를 포함한다. 종래의 PCIe 기반 SSD 장치(104)와 로컬 서버(102) 사이의 접속은 PCIe EP (106)를 통해 설정된다. 도 1은 PCIe EP (106)가 다운되거나 오작동하는 시나리오를 도시한다. 이때, 종래의 PCIe 기반 SSD 장치(104)와 로컬 서버(102) 사이의 접속이 끊어지고, 종래의 PCIe 기반 SSD 장치(104) 내의 데이터에 접근할 수 없다. 따라서, 상기 데이터의 전송 및 액세스를 인에이블(enable)하기 위해서, 네트워크를 통해 종래의 PCIe 기반 SSD 장치(104)에 대한 접속을 설정하기 위한 네트워크 인터페이스에 대한 필요가 존재한다.
도 2는 종래의 기술에 따른, 네트워크 인터페이스(206)가 다운된 경우에, 종래의 NVMeoF(non-volatile memory express over fabrics) 기반의 이더넷(Ethernet) SSD 장치(204)에서 데이터의 액세스불가능성(inaccessibility)을 나타내는 개략도이다. 이러한 종래의 기술에 따르면, 종래의 NVMeoF 기반 이더넷 SSD 장치(204)는 네트워크 인터페이스(206), NVMeoF 제어기(208), 플래시 변환 계층(FTL) (210), 및 플래시(212)를 포함한다. 네트워크 인터페이스(206)는 데이터의 전송을 위해 원격 서버(202)에 대한 접속을 인에이블하도록 구성된다.
도 2는 네트워크 인터페이스(206)가 다운되거나 오작동하는 시나리오를 나타낸다. 이때, 종래의 NVMeoF 기반 이더넷 SSD 장치(204)와 원격 서버 (202) 사이의 접속이 끊어지고, 종래의 NVMeoF 기반 이더넷 SSD 장치(204) 내의 데이터에 접근할 수 없다. 따라서, PCIe EP를 통한 데이터의 전송의 액세스를 인에이블하기 위해서 종래의 NVMeoF 기반 이더넷 SSD 디바이스(204)를 갖는 PCIe EP에 대한 필요가 존재한다.
전술한 바와 같이, 원격 서버로의 효율적인 액세스를 제공하기 위해 네트워크 인터페이스(예를 들어, 이더넷 네트워크)를 통해 개시자 및 타겟 모두의 역할을 할 수 있는 SSD에 대한 필요가 존재한다.
도 3은 종래의 기술에 따른, 종래의 PCIe 기반 SSD 디바이스의 과소-사용(under-utilization)을 나타내는 개략도이다. 이러한 종래의 기술에 따르면, 종래의 PCIe 기반 SSD 장치(304)는 PCIe EP(306), NVMe(non-volatile memory express) 제어기(308), FTL(310), 및 플래시(312)를 포함한다. 종래의 PCIe 기반 SSD 장치(304)와 로컬 서버(302) 사이의 접속은 PCIe EP(306)를 통해 설정된다. 도 3은 로컬 서버(302)가 장치의 저장 용량 및 대역폭면에서 종래의 PCIe 기반 SSD 장치(304)를 이용하지 않는 시나리오를 나타낸다. 따라서, 종래의 PCIe 기반 SSD의 저장 용량 및 대역폭을 효율적으로 활용하기위한 시스템 및 방법에 대한 필요가 존재한다.
전술한 문제점들은 본 명세서에서 다루어지며, 다음의 명세서를 읽고 연구함으로써 이해될 것이다.
본원은 데이터 전송 및 데이터 보호를 위해서, PCIe EP(peripheral component interconnect express end point) 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 디바이스에 액세스하는 방법을 제공한다.
본원의 다양한 실시예들은 네트워크 인터페이스(network interface) 및 PCIe EP(peripheral component interconnect express end point) 중 적어도 하나를 통해 동시에 듀얼 라인 SSD(Solid-State Drive) 장치에 액세스하는 방법을 나타낸다. 일 실시예에 따르면, 상기 방법은 다음의 단계들을 포함한다: 원격 서버(remote server)에 의해서, 복수의 네트워크 수송(transport) 큐(queue) 쌍들을 생성하는 것에 의해서 상기 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치에 대한 제1 접속을 설정하는 단계; 상기 원격 서버에 의해서, 상기 복수의 네트워크 수송 큐 쌍들을 통해 NVMeoF(non-volatile memory express over fabric)을 사용하여 상기 듀얼 라인 SSD 장치에 대한 관리 큐(admin queue)를 설정하는 단계; 상기 원격 서버에 의해서, 상기 복수의 네트워크 수송 큐 쌍들을 통해, 상기 네트워크 인터페이스를 통해 상기 관리 큐에 명령을 게시하는 것에 의해서 상기 듀얼 라인 SSD 장치에 대한 입력/출력 큐를 설정하는 단계; 로컬 서버에 의해서, 상기 PCIe EP를 통한 상기 듀얼 라인 SSD 디바이스에 대한 제2 접속을 설정하는 단계; 상기 로컬 서버에 의해서, 원격 다이렉트 메모리 액세스(remote direct memory access; RDMA)를 통한 NVMeoF 프로토콜을 이용하여, 상기 PCIe EP를 통해 상기 관리 큐를 설정하는 단계; 상기 로컬 서버에 의해서, 상기 PCIe EP를 통해 상기 관리 큐에 상기 명령을 게시하는 것에 의해서 상기 입력/출력 큐를 설정하는 단계; NVMe(non-volatile memory express) 제어기에 의해서, 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에 상기 제2 접속이 설정되는 경우, 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터를 전송하는 단계; 및 상기 NVMe 타겟(target) 제어기에 의해서, 상기 원격 서버와 상기 듀얼 라인 SSD 장치 사이에서 상기 제1 접속이 설정되는 경우, 상기 원격 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터를 전송하는 단계를 포함한다.
일 실시예에 따르면, 상기 복수의 네트워크 수송 큐 쌍들은 복수의 타겟(target) 네트워크 수송 큐들 및 복수의 개시자(initiator) 네트워크 수송 큐들을 포함한다.
일 실시예에 따르면, 상기 방법은 상기 듀얼 라인 SSD 장치를 상기 네트워크 인터페이스를 통한 저장 장치로서 인에이블(enable)하는 단계, 상기 듀얼 라인 SSD 장치를 상기 PCIe EP를 통한 저장 장치로서 인에이블하는 단계, 상기 듀얼 라인 SSD 장치를 상기 네트워크 인터페이스를 통해 상기 원격 서버와 통신하기 위한 원격 네트워크 인터페이스 제어기(remote network interface controller; RNIC)로서 인에이블하는 단계, 및 상기 듀얼 라인 SSD 장치를 (a) 상기 네트워크 인터페이스를 통한 상기 저장 장치로서, (b) 상기 PCIe EP를 통한 저장 장치로서, 그리고 (c) 상기 네트워크 인터페이스를 통한 상기 원격 네트워크 인터페이스 제어기(remote network interface controller; RNIC)로서 동시에 인에이블하는 단계를 더 포함한다.
일 실시예에 따르면, 상기 듀얼 라인 SSD 장치는 상기 듀얼 라인 SSD 장치가 상기 로컬 서버에 의해 상기 네트워크 인터페이스를 통한 RNIC로서 인에이블되는 경우에, 개시자 장치로서 기능하고, 상기 듀얼 라인 SSD 장치가 상기 원격 서버에 의해 상기 네트워크 인터페이스를 통한 저장 장치로서 인에이블되는 경우에, 타겟 장치로서 기능하고, 상기 네트워크 인터페이스를 통한 RNIC 개시자 장치(RNIC initiator device) 및 저장 장치 타겟(storage device target)으로서 동시에 기능한다.
일 실시예에 따르면, PCIe EP(peripheral component interconnect express end point)의 실패에 따라 듀얼 라인 SSD 장치로부터의 데이터 전송을 인에이블(enable)하는 방법은, 서버에 의해서, 복수의 네트워크 수송 큐(queue) 쌍들을 생성하는 것에 의해서 네트워크 인터페이스를 통해 듀얼 라인 SSD 장치에 대한 접속을 설정하는 단계; 상기 서버에 의해서, 데이터의 전송을 개시하기 위해 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치에 명령을 트리거(trigger)하는 단계로서, 상기 데이터는, PCIe EP 접속 실패 이전에, 상기 PCIe를 통해 상기 서버에 의해 저장되는, 트리거하는 단계; 및, 상기 네트워크 인터페이스를 통해 상기 서버와 상기 듀얼 라인 SSD 장치 사이에서 상기 데이터를 전송하는 단계를 포함한다.
일 실시예에 따르면, 듀얼 라인 SSD 장치 상의 씬 프로비전(thin provision)을 인에이블(enable)하는 방법은, 로컬 서버에 의해서, PCIe EP를 통해 상기 듀얼 라인 SSD 장치의 로컬 스토리지에 액세스하는 단계; 원격 서버에 의해서, 상기 듀얼 라인 SSD 장치로부터의 데이터에 액세스하기 위해 디스커버리 로그(discovery log)를 통해 상기 로컬 스토리지 이용에 대한 정보를 추출하는 단계; 및 상기 원격 서버에 의해서, 상기 듀얼 라인 SSD 장치가 상기 로컬 서버에 의해서 과소-이용(under-utilized)되는 경우에, 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치로부터의 데이터에 액세스하는 단계를 포함한다.
일 실시예에 따르면, 상기 방법은 상기 듀얼 라인 SSD 장치에 의해서, 상기 원격 서버에 대해 할당된 저장 공간을 다시 로컬 서버로 재요청(reclaim)하기 위해 원격 서버에 벤더(vender) 명령을 전송하는 단계를 더 포함한다.
일 실시예에 따르면, 네트워크 인터페이스의 실패에 따라 듀얼 라인 SSD 장치로부터의 데이터 전송을 인에이블(enable)하기 위한 방법은, 서버에 의해서, I/O 큐 쌍들 및 관리 큐 속성(admin queue attribute)들을 생성하는 것에 의해서 PCIe EP를 통해 상기 듀얼 라인 SSD 장치와 상기 서버 사이의 접속을 설정하는 단계, 상기 PCIe EP를 통한 상기 서버에 의해서, 데이터의 전송을 개시하기 위해 상기 듀얼 라인 SSD 장치에 명령을 트리거하는 단계로서, 상기 데이터는, 네트워크 인터페이스 접속 실패 이전에, 상기 네트워크 인터페이스를 통해 상기 서버에 의해 저장되는, 상기 트리거하는 단계, 및, 상기 PCIe EP를 통해 상기 듀얼 라인 SSD 장치와 상기 서버 사이에 상기 데이터를 전송하는 단계를 포함한다.
일 실시예에 따르면, 네트워크 인터페이스 및 PCIe EP(peripheral component interconnect express end point) 중 적어도 하나를 통해 동시에 듀얼 라인 SSD(Solid-State Drive) 장치에 액세스하는 시스템이 설명된다. 상기 시스템은 상기 듀얼 라인 SSD 장치를 포함한다. 상기 듀얼 라인 SSD 장치는 네트워크 인터페이스, PCIe EP, NVMe(non-volatile memory express) 제어기, 및, NVMeoF(non-volatile memory express over fabrics) 타겟 제어기를 포함한다. 상기 네트워크 인터페이스는 복수의 네트워크 수송 큐(queue) 쌍들을 생성하는 것에 의해서, 상기 듀얼 라인 SSD 장치에 대한 제1 접속을 설정하기 위해 원격 서버(remote server)에 의해 이용된다. 상기 PCIe EP는 상기 듀얼 라인 SSD 장치에 대한 제2 접속을 설정하기 위해 로컬 서버(local server)에 의해 이용된다. NVMe(non-volatile memory express) 제어기는 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에 상기 제2 접속이 설정되는 경우에, 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터 전송을 설정하기 위한 것이다. NVMeoF(non-volatile memory express over fabrics) 타겟(target) 제어기는 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에 상기 제1 접속이 설정되는 경우, 상기 원격 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터 전송을 설정하기 위한 것이다.
일 실시예에 따르면, 상기 듀얼 라인 SSD 장치는 어플리케이션 제어기를 더 포함한다. 상기 어플리케이션 제어기는 상기 NVMe 제어기에 의해 트리거되는 경우에, 상기 복수의 네트워크 수송 큐 쌍들을 생성하는 것에 의해서 NVMeoF 개시자 제어기를 통하여 상기 원격 서버(408)에 대한 상기 제1 접속을 생성하기 위한 것이다.
일 실시예에 따르면, 상기 시스템은 (ⅰ) (a) 상기 PCIe EP가 오작동하는 경우 및 (b) 상기 PCIe EP의 접속 실패가 발생하는 경우 중 하나의 경우에, 상기 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치로부터의 데이터의 전송을 인에이블 하는 것; (ⅱ) (a) 상기 네트워크 인터페이스가 오작동하는 경우 및 (b) 상기 네트워크 인터페이스의 접속 실패가 발생하는 경우 중 하나의 경우에, 상기 PCIe EP를 통해 상기 듀얼 라인 SSD 장치로부터의 데이터의 전송을 인에이블 하는 것; (ⅲ) 상기 네트워크 인터페이스 및 상기 PCIe EP를 통해 동시에 상기 듀얼 라인 SSD 장치로부터의 데이터의 전송을 인에이블하는 것; 및 (ⅳ)상기 듀얼 라인 SSD 장치가 상기 로컬 서버에 의해서 과소-이용(under-utilized)되는 경우에, 상기 원격 서버에 의한 액세스를 인에이블하는 것을 통해 듀얼 라인 SSD 장치 상의 씬 프로비전(thin provision)을 인에이블하는 것 중 적어도 하나를 수행하기 위한 것이다.
전술한 내용은, 일반적으로, 본원의 다양한 실시예들을 개략적으로 설명하고, 아래에 이어지는 발명의 설명을 보다 완벽히 이해하기 위한 도움을 제공하기 위한 것이다. 이와 관련하여, 본원은 여기에 설명되고 도시된 방법 또는 응용에 한정되지 않는다는 것은 명백하게 이해될 것이다. 본원에 포함된 상세한 설명 또는 예시로부터 명백하거나 명백해지는 본 발명의 어떠한 장점들 또는 물체들은 본원의 범위 내에 있는 것으로 의도된다.
다른 목적, 특징, 및 이점들은 바람직한 실시예 및 첨부 도면에 대한 다음의 설명으로부터 당업자에게 이해될 것이다.
도 1은 종래의 기술에 따른, PCIe EP가 다운 되는 경우에, 종래의 PCIe 기반 SSD 디바이스에서 데이터의 액세스불가능성(inaccessibility)을 나타내는 개략도이다.
도 2는 종래의 기술에 따른, 네트워크 인터페이스가 다운된 경우에, 종래의 NVMeoF(non-volatile memory express over fabrics) 기반의 이더넷(Ethernet) SSD 장치에서 데이터의 액세스불가능성(inaccessibility)을 나타내는 개략도이다.
도 3은 종래의 기술에 따른, 종래의 PCIe 기반 SSD 디바이스의 과소-사용(under-utilization)을 나타내는 개략도이다.
도 4는 본원의 일 실시예에 따른, PCIe EP(peripheral component interconnect express end point)의 실패에 따라 듀얼 라인 SSD 디바이스와 서버 사이의 데이터 전송을 인에이블(enable)하기 위한 방법을 나타낸다.
도 5는 본원의 일 실시예에 따른, 네트워크 인터페이스의 실패에 따라 듀얼 라인 SSD 장치와 서버 사이의 데이터 전송을 인에이블(enable)하기 위한 방법을 나타낸다.
도 6은 본원의 일 실시예에 따른, PCIe EP를 통한 로컬 서버에 의한 듀얼 라인 SSD 장치의 과소-사용(under-utilization)이 있는 경우에, 원격 서버에 의한 듀얼 라인 SSD 장치로의 액세스를 인에이블(enable)하기 위한 방법을 나타낸다.
도 7은 본원의 일 실시예에 따른, 네트워크 인터페이스 및 PCIe EP(peripheral component interconnect express end point)를 통해 동시에 듀얼 라인 SSD(solid-state drive) 장치에 액세스하기 위한 방법을 나타낸다.
본원의 특정 특징들이 일부 도면에 도시되어 있고, 다른 도면에 도시되지는 않더라도, 이는 단지 편의를 위한 것이며, 각각의 특징은 본원에 따른 다른 특징 중 임의의 것 또는 모든 특징들과 결합될 수 있다.
본원은 데이터 전송 및 데이터 보호를 위한 PCIe EP(peripheral component interconnect express end point) 및 네트워크 인터페이스를 통해 듀얼 라인 SSD 디바이스에 액세스하는 방법을 제공한다. 본원의 실시예들에 대한 다음의 상세한 설명에서, 본원의 부분을 형성하는 도면들이 참조되며, 이러한 도면들은 본원의 실시될 수도 있는 특정 실시예들을 나타내기 위해 도시된다. 이러한 실시예들은 당업자가 본원을 실시할 수 있도록 충분히 상세하게 설명되어 있으며, 또한 다른 실시예들이 이용될 수도 있고, 본원의 범위를 벗어나지 않는 범위에서 변화가 있을 수도 있다는 점은 이해되어야 한다. 따라서, 이하의 발명의 설명은 제한적인 의미로 해석되지 않고, 본원의 범위는 청구 범위에 의해서만 정의된다.
본원은 여러 위치에서 "일", "하나"또는 "일부" 실시예(들)를 참조할 수도 있다. 이는 각각의 참조가 동일한 실시예(들)을 가리키는 것, 또는 특징이 단일 실시예에만 적용된다는 것을 필요적으로 의미하는 것은 아니다. 상이한 실시예들의 단일 특징들은 또한 다른 실시예들을 제공하기 위해 결합될 수도 있다.
본원에 사용된 것과 같이, 단수 형태의 기재는 달리 명시되지 않는 한, 복수 형태를 포함한다. 본원에서 사용되는 경우, "가지다", "포함하다", "가지는" 및/또는 "포함하는"이라는 용어는 명시된 특징, 숫자, 단계, 동작, 원소 및/또는 구성 요소의 존재를 특정하고, 하나 이상의 다른 특징, 숫자, 단계, 동작, 원소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다. 본원에서 사용된 것과 같이, "및/또는"이라는 용어는 하나 이상의 관련하여 나열된 항목들의 임의의 조합 및 배열을 모두 포함한다.
달리 정의되지 않는 한, 본원에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 당업자가 이해하는 것과 동일한 의미를 갖는다. 또한, 통상적으로 사용되는 사전들에서 정의된 것과 같은 용어들은 관련 기술의 맥락에서 그들의 의미와 일치하는 의미를 갖는 것으로 해석 되어야 하고, 본원에 명시적으로 정의되지 않는 한, 이상적이거나 지나치게 형식적인 의미로 해석되지 않아야 한다.
본원의 실시예들 및 이들의 다양한 특징 및 유리한 세부 사항들은 첨부 도면에 도시되고, 아래의 상세한 설명의 비제한적인 실시예들을 참조하여 보다 완벽히 설명된다. 공지된 구성 요소 및 처리 기술의 설명은 본원의 실시예들을 불필요하게 불명료하게 하지 않기 위해 생략된다. 본원에서 사용된 예시들은 본원의 실시예들이 실행될 수 있는 방법들에 대한 이해를 용이하게 하고, 또한 당업자가 본원의 실시예들을 실시할 수 있도록 하기 위한 것이다. 따라서, 예시들은 본원의 실시예들의 범위를 제한하는 것으로 해석되어서는 안 된다.
도 4는 본원의 일 실시예에 따른, PCIe EP(peripheral component interconnect express end point)(406)의 실패에 따라, 듀얼 라인 SSD 장치(404)와 원격 서버(408) 사이의 데이터 전송을 인에이블하는 방법을 나타낸다. 이러한 실시예에 따르면, 원격 서버(408)는 복수의 네트워크 전송 큐 쌍들을 생성하는 것에 의해서 네트워크 인터페이스(412)를 통해 듀얼 라인 SSD 장치(404)에 대한 접속을 설정한다. 그후, 원격 서버(408)는 데이터 전송을 개시하기 위해 네트워크 인터페이스(412)를 통해 듀얼 라인 SSD 디바이스(404)에 명령을 트리거하고, 상기 데이터는 PCIe EP(406)의 접속 실패가 발생하기 전에 PCIe EP(406)를 통해 로컬 서버(402)에 의해 저장된다. PCIe EP(406)의 접속 실패는 (도 4에 도시된 것과 같이) (a) PCIe EP(406)와 로컬 서버(402) 사이의 접속 실패, (b) PCIe EP(406)와 어플리케이션 제어기(420) 사이의 접속 실패, 및 (c) PCIe EP(406)와 NVMe 제어기(418) 사이의 접속 실패를 포함한다. (도 4에서 실선 경로로 도시된 것과 같이) PCIe Ep(406)가 다운되는 경우 또는 듀얼 라인 SSD 장치(404)에 액세스하는 것이 실패된 경우, 데이터 전송은 네트워크 인터페이스(412)를 통해 듀얼 라인 SSD 장치(404)와 원격 서버(408) 사이에서 인에이블 된다.
도 5는 본원의 일 실시예에 따른, 네트워크 인터페이스(412)의 실패에 따라, 듀얼 라인 SSD 장치(404)와 로컬 서버(402) 사이의 데이터 전송을 인에이블하기 위한 방법을 나타낸다. 이 실시예에 따르면, 로컬 서버(402)는 PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)에 대한 접속을 설정한다. 그후, 로컬 서버(402)는 데이터의 전송을 개시하기 위해 PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)에 명령을 트리거하고, 상기 데이터는 네트워크 인터페이스(412)의 접속 실패가 발생하기 전에 네트워크 인터페이스(412)를 통해 원격 서버 (408)에 의해 저장된다. 네트워크 인터페이스(412)의 접속 실패는 (도 5에 도시된 것과 같이) (a) 네트워크 인터페이스(412)와 원격 서버(408) 사이의 접속 실패, (b) 네트워크 인터페이스(412)와 RoCE/iWARP(414) 사이의 접속 실패, (c) 네트워크 인터페이스(412)와 NVMeoF 타겟 제어기(416) 사이의 접속 실패, 및 (d) NVMeoF 타겟 제어기(416)와 NVMe 제어기(418) 사이의 접속 실패를 포함한다. (도 5의 실선 경로로 도시된 것과 같이) 데이터 전송은 네트워크 인터페이스(412)가 오작동하는 경우 또는 이중 라인 SSD 장치(404)에 액세스하는 것이 실패된 경우에, PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)와 로컬 서버 사이에서 인에이블 된다.
도 6은 본원의 일 실시예에 따른, PCIe EP(406)를 통한 로컬 서버(402)에 의한 듀얼 라인 SSD 장치(404)의 과소-이용(under-utilization)이 있는 경우에, 원격 서버(408)에 의한 듀얼 라인 SSD 장치(404)로의 액세스를 인에이블하는 방법을 나타낸다. 이 실시예에 따르면, 로컬 서버(402)는 PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)에 대한 접속을 설정한다(경로 1(PATH 1)). 로컬 서버(402)가 듀얼 라인 SSD 장치(404)를 과소-이용(under-utilization)하는 경우에, 원격 서버(408)는 네트워크 인터페이스(412)를 통해 듀얼 라인 SSD 장치(404)에 액세스한다 (도 6에서 실선으로 도시된 경로 2(PATH 2)).
도 7은 본원의 일 실시예에 따른, 네트워크 인터페이스(412) 및 PCIe EP(peripheral component interconnect express end point)(406)를 통해 동시에 듀얼 라인 SSD(solid-state device) 장치(404)에 액세스하는 방법을 나타낸다. 이러한 실시예에 따르면, 듀얼 라인 SSD 장치(404)는 PCIe EP(406) 및 네트워크 인터페이스(412) 각각을 통해 로컬 서버(402) 및 원격 서버(408)에 대한 접속을 설정한다. 로컬 서버(402)와 듀얼 라인 SSD 장치(404)가 사이의 접속은 PCIe EP(406)를 통해 로컬 서버(402)로부터 듀얼 라인 SSD 디바이스(404)로 복수의 NVMe(non-volatile memory express) 큐들을 전송하는 것에 의해 설정된다. 로컬 서버(402)는 RDMA를 통해 NVMeoF 프로토콜과 관리 큐의 속성들을 사용하여 듀얼 라인 SSD 장치(404)에 대한 관리 큐를 설정한다. 로컬 서버(402)는 또한 NVMe(non-volatile memory express) 제어기(418)에 관리 큐 내의 명령을 게시하는 것에 의해 입력/출력 큐를 설정한다. 도 7에서 경로 1(PATH 1)은 플래시 변환 계층(flash translation layer; FTL)(424)을 통해 듀얼 라인 SSD 장치(404)의 플래시(426)와 로컬 서버(402) 사이의 데이터 전송을 나타낸다.
원격 서버(408)와 듀얼 라인 SSD 장치(404) 사이의 접속은 복수의 네트워크 전송 큐 쌍들을 생성하는 것에 의해서 네트워크 인터페이스(412)를 통해 설정된다. 원격 서버(408)는 복수의 네트워크 전송 큐들을 통해 NVMeoF(non-volatile memory express over fabrics)를 사용하여 듀얼 라인 SSD 장치(404)에 대한 관리 큐(admin queue)를 설정한다. 원격 서버(408)는 복수의 네트워크 전송 큐 쌍들을 통해 관리 큐 내에서 NVMeoF 타겟 제어기(416)에 대한 명령을 게시하는 것에 의해서 듀얼 라인 SSD 장치(404)에 대한 입력/출력 큐를 설정한다. 도 7에서 경로 2(PATH 2)는 플래시 변환 계층(flash translation layer; FTL)(424)을 통해 듀얼 라인 SSD 장치(404)의 플래시(426)와 원격 서버 (408) 사이의 데이터 전송을 나타낸다.
듀얼 라인 SSD 장치(404)를 통한 로컬 서버(402)와 네트워크 내의 임의의 원격 네트워크 노드 사이의 접속은 도 7에서 경로 3(PATH 3)으로 도시된다. 이러한 경로 3(PATH 3)에서, 듀얼 라인 SSD 장치(404)는 네트워크 인터페이스(412)를 통한 개시자(initiator)로서 기능한다. 듀얼 라인 SSD 장치(404)는 경로 3(PATH 3) 및 경로 2(PATH 2)가 병렬로 동작하는 경우에, 동시에 타겟 및 개시자(initiator) 모두로서 동작한다. 도 7에서, 경로 3(PATH 3)은 로컬 서버(402)에 대한 듀얼 라인 SSD 장치(404)의 RNIC 기능을 인에이블한다.
또한, (경로 4(PATH 4)에서 도시된 것과 같이) NVMe 제어기(418)가 어플리케이션 제어기(420)를 원격 서버(408)와 듀얼 라인 SSD 장치(404) 사이의 데이터 전송을 개시하기 위한 개시자로서 기능하도록 트리거하는 경우에, 듀얼 라인 SSD 장치(404)는 네트워크 개시자(initiator)로서 기능한다.
로컬 서버(402)는 PCIe EP(406), 플래시 변환 계층(flash, translation layer; FTL)(424) 및 플래시(426)를 통해 듀얼 라인 SSD 장치(404)의 로컬 스토리지에 액세스하는 것에 의해서, 이중 라인 SSD 장치(404)를 로컬 저장 장치로서 사용한다. 로컬 서버(402)는 원격 네트워크 인터페이스 제어기(remote network interface controller; RNIC)로서 듀얼 라인 SSD 장치를 인에이블하기 위해, PCIe EP(406), 어플리케이션 제어기(420), NVMeoF initiator 제어기(422), RoCE/iWARP(remote direct memory access over converged ethernet/an Internet Wide-area RDMA Protocol)(414) 및 네트워크 상의 네트워크 인터페이스(412)를 통해, 원격 서버(408)와 통신한다. 일 실시예에서, 네트워크는 유선 네트워크 및 무선 네트워크 중 적어도 하나를 포함한다.
일 실시예에서, 원격 서버(408)와 듀얼 라인 SSD 장치(404) 사이에 접속이 설정되는 경우에, 듀얼 라인 SSD 장치(404)는 네트워크 인터페이스(412)를 통해 저장 장치로서 작동된다. 일 실시예에서, 로컬 서버 (402)와 듀얼 라인 SSD 장치(404) 사이에 접속이 설정되는 경우에, 듀얼 라인 SSD 장치(404)는 PCIe EP(406)를 통해 저장 장치로서 작동된다. 일 실시예에서, 듀얼 라인 SSD 장치(404)는 네트워크 인터페이스(412)를 통해 로컬 서버 (402)로부터 원격 서버(408)와 통신하기 위해 원격 네트워크 인터페이스 제어기(remote network interface controller; RNIC)로서 인에이블된다. 일 실시예에서, 듀얼 라인 SSD 디바이스(404)는 (a) PCIe EP(406) 및 네트워크 인터페이스(412)를 통한 저장 장치, 및 (b) PCIe EP(406)를 통해, 로컬 서버(402)에 의해, 네트워크 인터페이스(412)를 통해 동시에 원격 네트워크 인터페이스 제어기(remote network interface controller; RNIC)로서 인에이블된다.
듀얼 라인 SSD 장치(404)가 로컬 서버 (402)에 의해 네트워크 인터페이스 (412)를 통한 RNIC로서 인에이블되는 경우에, 듀얼 라인 SSD 장치(404)는 개시자(initiator)로서 기능한다. 듀얼 라인 SSD 장치가 원격 서버(408)에 의해 네트워크 인터페이스(412)를 통한 저장 장치로서 인에이블되는 경우에, 듀얼 라인 SSD 장치는 또한 타겟(target)으로서 기능한다. 듀얼 라인 SSD 장치(404)는 네트워크 인터페이스(412)를 통한 RNIC 개시자 및 저장 장치 타겟(storage device target)으로서 동시에 기능한다.
일 실시예에서, 방법은 듀얼 라인 SSD 장치(404) 상의 씬 프로비전(thin provision)을 인에이블하는 것을 허락한다. 이러한 실시예에 따르면, 로컬 서버(402)는 PCIe EP(406)를 통해 듀얼 라인 SSD 디바이스(404)의 로컬 스토리지에 액세스한다. PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)에 액세스하는 것은 듀얼 라인 SSD 장치(404)의 과소-이용(under-utilization)을 유발한다. 듀얼 라인 SSD 장치(404) 상의 씬 프로비전(thin provision)은, 네트워크 인터페이스(412)를 통해 원격 서버(408)에 의해 로컬 스토리지로부터의 데이터에 액세스하는 것에 의해 인에이블된다. 과소-이용(under-utilization)된 듀얼 라인 SSD 장치(404) 상에서 씬 프로비전(thin provision)을 인에이블 하기 위해서, 원격 서버(408)는 디스커버리 로그(discovery log)를 통해 로컬 스토리지 이용에 대한 정보를 추출하는 것에 의해서 로컬 스토리지로부터의 데이터에 액세스한다. 과소-사용된 듀얼 라인 SSD 장치(404)는 원격 서버(408)에 할당된 저장 공간을 다시 로컬 서버(402)로 재요청(reclaim)하기 위해 원격 서버(408)로 벤더(vender) 명령으로 전송한다.
일 실시예에서, 방법은 네트워크 인터페이스(412)의 실패에 따라, 듀얼 라인 SSD 장치(404)와 로컬 서버(402) 사이에서 데이터의 전송을 인에이블하는 것을 허락한다. 이러한 실시예에 따르면, 로컬 서버(402)는 I/O 큐 쌍들 및 관리자 큐 속성들을 생성하는 것에 의해서 PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)에 대한 접속을 설정한다. 로컬 서버(402)는 듀얼 라인 SSD 장치 (404)로부터의 데이터의 전송을 개시하기 위해 듀얼 라인 SSD 장치(404)에 명령을 트리거하고, 상기 데이터는 네트워크 인터페이스(412) 접속 실패의 발생 이전에 네트워크 인터페이스(412)를 통해 로컬 서버(402)에 의해 저장된다. 데이터 전송은 PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)와 로컬 서버(402) 사이에서 인에이블된다.
일 실시예에서, 방법은 로컬 서버(402)에 의해 듀얼 라인 SSD 장치(404)로부터의 데이터를 리드(read)하는 것을 허락한다. 이 실시예에 따르면, 로컬 서버(402)는 PCIe EP(406)를 통해 이중 명령 SSD 장치(404)에 리드 명령을 전송한다. NVMe 제어기(418)는, 로컬 서버(402)로부터의 리드 명령을 수신하는 것에 따라, 복수의 네트워크 전송 큐 쌍들을 생성하는 것에 의해 원격 서버(408)에 대한 접속을 생성하기 위해, FTL(424)에 리드 명령을 게시하거나 또는 (경로 4(PATH 4)를 통해) 어플리케이션 제어기(420)를 트리거한다. NVMe 제어기(418)는 리드 명령이 로컬 스토리지 타겟에 도달하는 경우에 FTL(424)을 통한 데이터의 전송을 완료한다. NVMe 제어기(418)는 리드 명령이 로컬 스토리지 타겟을 놓치는 경우에, 의도된 원격 타겟(intended remote target)에 대한 리드 명령을 트리거한다.
일 실시예에서, 방법은 로컬 서버(402)에 의해 듀얼 라인 SSD 장치(404)에 데이터를 기록(write)하는 것을 허락한다. 이 실시예에 따르면, 로컬 서버(402)는 PCIe EP(406)를 통해 듀얼 라인 SSD 장치(404)에 기록 명령을 전송한다. NVMe 제어기(418)는, 로컬 서버(402)로부터의 기록 명령의 수신에 따라, 캐시 기록 방식에 기초하여 복수의 네트워크 수송 큐 쌍들을 생성하는 것에 의해서 원격 서버(408)에 대한 접속을 생성하기 위해, FTL(424)에 기록 명령을 게시하거나 또는 경로 4(PATH 4)를 통해 어플리케이션 제어기(420)를 트리거한다. NVMe 제어기(418)는 캐시 기록 방식에 기초하여 로컬 스토리지 및 원격 스토리지에서 기록 명령이 완료되는 경우에, 데이터의 전송을 완료한다.
본 명세서는 본원의 특정 실시예들과 함께 상세히 설명되었지만, 당업자가 전술한 내용을 이해하는 경우에, 위의 실시예들에 대한 변경, 변형, 및 균등물 또한 쉽게 인식될 수도 있다는 것은 이해되어야 한다. 본원에 대한 이러한 실시예 그리고 다른 변형 및 변경은 본원의 범위를 벗어나지 않고 당업자에 의해 실시될 수도 있다. 또한, 당업자는 전술한 설명은 단지 예시적인 것에 불과하며, 본원을 제한하는 것이 아니라는 것을 이해할 것이다. 따라서, 본원은 이러한 변경 및 변형을 포괄하기 위한 것으로 의도된다.
104: 종래의 PCIe 기반 SSD 장치
204: 종래의 NVMeoF 기반 이더넷(Ethernet) SSD 장치
304: 종래의 PCIe 기반 SSD 장치
404: 듀얼 라인 SSD 장치

Claims (11)

  1. 네트워크 인터페이스(network interface)와 PCIe EP(peripheral component interconnect express end point) 중 적어도 하나를 통해 동시에 듀얼 라인(dual line) SSD(solid-state drive) 장치에 액세스하는 방법으로서,
    원격 서버(remote server)에 의해서, 복수의 네트워크 수송(transport) 큐(queue) 쌍들을 생성하는 것에 의해서 상기 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치에 대한 제1 접속을 설정하는 단계;
    상기 원격 서버에 의해서, 상기 복수의 네트워크 수송 큐 쌍들을 통해 NVMeoF(non-volatile memory express over fabric)을 사용하여 상기 듀얼 라인 SSD 장치에 대한 관리 큐(admin queue)를 설정하는 단계;
    상기 원격 서버에 의해서, 상기 복수의 네트워크 수송 큐 쌍들을 통해, 상기 네트워크 인터페이스를 통해 상기 관리 큐에 명령을 게시하는 것에 의해서 상기 듀얼 라인 SSD 장치에 대한 입력 또는 출력 큐를 설정하는 단계;
    로컬 서버에 의해서, 상기 PCIe EP를 통한 상기 듀얼 라인 SSD 디바이스에 대한 제2 접속을 설정하는 단계;
    상기 로컬 서버에 의해서, 원격 다이렉트 메모리 액세스(remote direct memory access; RDMA)를 통한 NVMeoF 프로토콜을 이용하여, 상기 PCIe EP를 통해 상기 관리 큐를 설정하는 단계;
    상기 로컬 서버에 의해서, 상기 PCIe EP를 통해 상기 관리 큐에 상기 명령을 게시하는 것에 의해서 상기 입력 또는 출력 큐를 설정하는 단계;
    NVMe(non-volatile memory express) 제어기에 의해서, 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에 상기 제2 접속이 설정되는 경우, 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터를 전송하는 단계; 및
    상기 NVMe 타겟(target) 제어기에 의해서, 상기 원격 서버와 상기 듀얼 라인 SSD 장치 사이에서 상기 제1 접속이 설정되는 경우, 상기 원격 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터를 전송하는 단계를 포함하는, 듀얼 라인 SSD 장치에 액세스하는 방법.
  2. 제1 항에 있어서,
    상기 복수의 네트워크 수송 큐 쌍들은 복수의 타겟(target) 네트워크 수송 큐 쌍들 및 복수의 개시자(initiator) 네트워크 수송 큐 쌍들을 포함하는, 듀얼 라인 SSD 장치에 액세스하는 방법.
  3. 제1 항에 있어서,
    상기 듀얼 라인 SSD 장치를 상기 네트워크 인터페이스를 통한 저장 장치로서 인에이블(enable)하는 단계;
    상기 듀얼 라인 SSD 장치를 상기 PCIe EP를 통한 저장 장치로서 인에이블 하는 단계;
    상기 듀얼 라인 SSD 장치를 상기 네트워크 인터페이스를 통해 상기 원격 서버와 통신하기 위한 원격 네트워크 인터페이스 제어기(remote network interface controller; RNIC)로서 인에이블 하는 단계; 및
    상기 듀얼 라인 SSD 장치를 (a) 상기 네트워크 인터페이스를 통한 상기 저장 장치로서, (b) 상기 PCIe EP를 통한 저장 장치로서, 그리고 (c) 상기 네트워크 인터페이스를 통한 상기 원격 네트워크 인터페이스 제어기(remote network interface controller; RNIC)로서 동시에 인에이블 하는 단계를 더 포함하는, 듀얼 라인 SSD 장치에 액세스하는 방법.
  4. 제3 항에 있어서,
    상기 듀얼 라인 SSD 장치는
    상기 듀얼 라인 SSD 장치가 상기 로컬 서버에 의해 상기 네트워크 인터페이스를 통한 RNIC로서 인에이블되는 경우에, 개시자 장치로서 기능하고,
    상기 듀얼 라인 SSD 장치가 상기 원격 서버에 의해 상기 네트워크 인터페이스를 통한 저장 장치로서 인에이블되는 경우에, 타겟 장치로서 기능하고,
    상기 네트워크 인터페이스를 통한 RNIC 개시자 장치(RNIC initiator device) 및 저장 장치 타겟(storage device target)으로서 동시에 기능하는, 듀얼 라인 SSD 장치에 액세스하는 방법.
  5. PCIe EP(peripheral component interconnect express end point)의 실패에 따라 듀얼 라인 SSD 장치로부터의 데이터 전송을 인에이블(enable)하는 방법으로서,
    서버에 의해서, 복수의 네트워크 수송 큐(queue) 쌍들을 생성하는 것에 의해서 네트워크 인터페이스를 통해 듀얼 라인 SSD 장치에 대한 접속을 설정하는 단계;
    상기 서버에 의해서, 데이터의 전송을 개시하기 위해 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치에 명령을 트리거(trigger)하는 단계로서, 상기 데이터는, PCIe EP 접속 실패 이전에, 상기 PCIe를 통해 상기 서버에 의해 저장되는, 트리거하는 단계; 및
    상기 네트워크 인터페이스를 통해 상기 서버와 상기 듀얼 라인 SSD 장치 사이에서 상기 데이터를 전송하는 단계를 포함하는, 데이터 전송을 인에이블하는 방법.
  6. 듀얼 라인 SSD 장치 상의 씬 프로비전(thin provision)을 인에이블(enable)하는 방법으로서,
    로컬 서버에 의해서, PCIe EP를 통해 상기 듀얼 라인 SSD 장치의 로컬 스토리지에 액세스하는 단계;
    원격 서버에 의해서, 상기 듀얼 라인 SSD 장치로부터의 데이터에 액세스하기 위해 디스커버리 로그(discovery log)를 통해 상기 로컬 스토리지 이용에 대한 정보를 추출하는 단계; 및
    상기 원격 서버에 의해서, 상기 듀얼 라인 SSD 장치가 상기 로컬 서버에 의해서 과소-이용(under-utilized)되는 경우에, 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치로부터의 데이터에 액세스하는 단계를 포함하는, 인에이블하는 방법.
  7. 제6 항에 있어서,
    상기 듀얼 라인 SSD 장치에 의해서, 상기 원격 서버에 대해 할당된 저장 공간을 다시 로컬 서버로 재요청(reclaim)하기 위해 원격 서버에 벤더(vender) 명령을 전송하는 단계를 더 포함하는, 인에이블 하는 방법.
  8. 네트워크 인터페이스의 실패에 따라 듀얼 라인 SSD 장치로부터의 데이터 전송을 인에이블(enable)하기 위한 방법으로서,
    서버에 의해서, 입력 또는 출력 큐 쌍들 및 관리 큐 속성(admin queue attribute)들을 생성하는 것에 의해서 PCIe EP를 통해 상기 듀얼 라인 SSD 장치와 상기 서버 사이의 접속을 설정하는 단계;
    상기 PCIe EP를 통한 상기 서버에 의해서, 데이터의 전송을 개시하기 위해 상기 듀얼 라인 SSD 장치에 명령을 트리거하는 단계로서, 상기 데이터는, 네트워크 인터페이스 접속 실패 이전에, 상기 네트워크 인터페이스를 통해 상기 서버에 의해 저장되는, 상기 트리거하는 단계; 및
    상기 PCIe EP를 통해 상기 듀얼 라인 SSD 장치와 상기 서버 사이에 상기 데이터를 전송하는 단계를 포함하는, 듀얼 라인 SSD 장치로부터의 데이터 전송을 인에이블하기 위한 방법.
  9. 네트워크 인터페이스 및 PCIe EP(peripheral component interconnect express end point) 중 적어도 하나를 통해 동시에 듀얼 라인 SSD(Solid-State Drive) 장치에 액세스하는 시스템에 있어서,
    상기 듀얼 라인 SSD 장치는
    복수의 네트워크 수송 큐(queue) 쌍들을 생성하는 것에 의해서, 상기 듀얼 라인 SSD 장치에 대한 제1 접속을 설정하기 위해 원격 서버(remote server)에 의해 이용되는 상기 네트워크 인터페이스;
    상기 듀얼 라인 SSD 장치에 대한 제2 접속을 설정하기 위해 로컬 서버(local server)에 의해 이용되는 상기 PCIe EP;
    상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에 상기 제2 접속이 설정되는 경우에, 상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터 전송을 설정하기 위한 NVMe(non-volatile memory express) 제어기; 및
    상기 로컬 서버와 상기 듀얼 라인 SSD 장치 사이에 상기 제1 접속이 설정되는 경우, 상기 원격 서버와 상기 듀얼 라인 SSD 장치 사이에서 데이터 전송을 설정하기 위한 NVMeoF(non-volatile memory express over fabrics) 타겟(target) 제어기를 포함하는,
    듀얼 라인 SSD 장치에 액세스하는 시스템.
  10. 제9 항에 있어서,
    상기 듀얼 라인 SSD 장치는,
    상기 NVMe 제어기에 의해 트리거되는 경우에, 상기 복수의 네트워크 수송 큐 쌍들을 생성하는 것에 의해서 NVMeoF 개시자 제어기를 통하여 상기 원격 서버에 대한 상기 제1 접속을 생성하기 위한 어플리케이션 제어기를 더 포함하는, 듀얼 라인 SSD 장치에 액세스하는 시스템.
  11. 제9 항에 있어서, 상기 시스템은
    (a) 상기 PCIe EP가 오작동하는 경우 및 (b) 상기 PCIe EP의 접속 실패가 발생하는 경우 중 하나의 경우에, 상기 네트워크 인터페이스를 통해 상기 듀얼 라인 SSD 장치로부터의 데이터의 전송을 인에이블 하는 것;
    (a) 상기 네트워크 인터페이스가 오작동하는 경우 및 (b) 상기 네트워크 인터페이스의 접속 실패가 발생하는 경우 중 하나의 경우에, 상기 PCIe EP를 통해 상기 듀얼 라인 SSD 장치로부터의 데이터의 전송을 인에이블 하는 것;
    상기 네트워크 인터페이스 및 상기 PCIe EP를 통해 동시에 상기 듀얼 라인 SSD 장치로부터의 데이터의 전송을 인에이블하는 것; 및
    상기 듀얼 라인 SSD 장치가 상기 로컬 서버에 의해서 과소-이용(under-utilized)되는 경우에, 상기 원격 서버에 의한 액세스를 인에이블하는 것을 통해 듀얼 라인 SSD 장치 상의 씬 프로비전(thin provision)을 인에이블하는 것
    중 적어도 하나를 수행하기 위한, 듀얼 라인 SSD 장치에 액세스하는 시스템.
KR1020180101058A 2018-07-16 2018-08-28 PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법 KR20200008483A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201841026535 2018-07-16
IN201841026535 2018-07-16

Publications (1)

Publication Number Publication Date
KR20200008483A true KR20200008483A (ko) 2020-01-28

Family

ID=69138206

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180101058A KR20200008483A (ko) 2018-07-16 2018-08-28 PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법

Country Status (3)

Country Link
US (1) US11194743B2 (ko)
KR (1) KR20200008483A (ko)
CN (1) CN110727617B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10893105B1 (en) * 2019-08-07 2021-01-12 EMC IP Holding Company LLC Utilization of networking protocol for seamless integration of compute nodes with software-defined storage nodes
WO2022115364A1 (en) * 2020-11-25 2022-06-02 Intel Corporation Remote direct memory access (rdma) in next generation cellular networks
US20230030168A1 (en) * 2021-07-27 2023-02-02 Dell Products L.P. Protection of i/o paths against network partitioning and component failures in nvme-of environments
US11733912B2 (en) 2022-01-19 2023-08-22 Dell Products L.P. Intelligent target routing in a distributed storage system
US11829602B2 (en) 2022-03-16 2023-11-28 Dell Products L.P. Intelligent path selection in a distributed storage system
US11907537B2 (en) 2022-04-06 2024-02-20 Dell Products L.P. Storage system with multiple target controllers supporting different service level objectives
US11762595B1 (en) 2022-04-08 2023-09-19 Dell Products L.P. Host-based locality determination for logical volumes stored across multiple nodes of a distributed storage system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104246742B (zh) * 2012-01-17 2017-11-10 英特尔公司 用于远程客户端访问存储设备的命令验证的技术
US9430412B2 (en) * 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US9696942B2 (en) * 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
CN104951252B (zh) * 2015-06-12 2018-10-16 北京联想核芯科技有限公司 一种数据访问方法及PCIe存储设备
US10860511B1 (en) * 2015-12-28 2020-12-08 Western Digital Technologies, Inc. Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer
WO2017131751A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Remote direct memory access
CN107430494B (zh) * 2016-01-29 2020-09-15 慧与发展有限责任合伙企业 用于远程直接存储器访问的系统、方法和介质
US10331600B1 (en) * 2016-03-31 2019-06-25 EMC IP Holding Company LLC Virtual I/O queuing
US10007443B1 (en) * 2016-03-31 2018-06-26 EMC IP Holding Company LLC Host to device I/O flow
US20170357610A1 (en) * 2016-06-14 2017-12-14 Kazan Networks Corporation Split nvme ssd implementation using nvme over fabrics protocol
US10372659B2 (en) * 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US10735513B2 (en) * 2016-09-08 2020-08-04 Toshiba Memory Corporation Remote NVMe activation
US20180131633A1 (en) * 2016-11-08 2018-05-10 Alibaba Group Holding Limited Capacity management of cabinet-scale resource pools
KR102429904B1 (ko) * 2017-09-08 2022-08-05 삼성전자주식회사 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
US10764180B1 (en) * 2018-02-20 2020-09-01 Toshiba Memory Corporation System and method for storing data using software defined networks
US10635598B2 (en) * 2018-03-30 2020-04-28 Intel Corporation Memory-addressed maps for persistent storage device

Also Published As

Publication number Publication date
US20200019521A1 (en) 2020-01-16
CN110727617A (zh) 2020-01-24
US11194743B2 (en) 2021-12-07
CN110727617B (zh) 2024-05-07

Similar Documents

Publication Publication Date Title
KR20200008483A (ko) PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법
US9720598B2 (en) Storage array having multiple controllers
US8959307B1 (en) Reduced latency memory read transactions in storage devices
US10540307B1 (en) Providing an active/active front end by coupled controllers in a storage system
US20170102952A1 (en) Accessing data stored in a remote target using a baseboard management controler (bmc) independently of the status of the remote target's operating system (os)
US10423332B2 (en) Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands
US11086813B1 (en) Modular non-volatile memory express storage appliance and method therefor
WO2017162175A1 (zh) 一种数据传输方法及装置
US11606429B2 (en) Direct response to IO request in storage system having an intermediary target apparatus
US11157204B2 (en) Method of NVMe over fabric RAID implementation for read command execution
US9734115B2 (en) Memory mapping method and memory mapping system
US20110082949A1 (en) Presenting multi-function devices behind a switch hierarchy as a single function device
US10873543B2 (en) Fiber channel fabric login/logout system
US10564847B1 (en) Data movement bulk copy operation
CN110471627B (zh) 一种共享存储的方法、系统及装置
US20160283134A1 (en) Data replication across host systems via storage controller
US11991208B2 (en) Secure fibre channel/NVMe fabric communication system
US11061838B1 (en) System and method for graphics processing unit management infrastructure for real time data collection
US10860334B2 (en) System and method for centralized boot storage in an access switch shared by multiple servers
US9253276B2 (en) Multi-protocol bridge with integrated performance accelerating cache
WO2022267909A1 (zh) 一种数据读写方法以及相关装置
US9501290B1 (en) Techniques for generating unique identifiers
US9723079B2 (en) System and method for automatic link detection and link initialization in a storage system
US11435918B2 (en) Module mounted in server to share block-level storage and resource
US11690108B2 (en) High speed wireless data communication to solid state drive

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal