KR20180111483A - Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법 - Google Patents

Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180111483A
KR20180111483A KR1020180001859A KR20180001859A KR20180111483A KR 20180111483 A KR20180111483 A KR 20180111483A KR 1020180001859 A KR1020180001859 A KR 1020180001859A KR 20180001859 A KR20180001859 A KR 20180001859A KR 20180111483 A KR20180111483 A KR 20180111483A
Authority
KR
South Korea
Prior art keywords
essd
essds
passive
active
host
Prior art date
Application number
KR1020180001859A
Other languages
English (en)
Other versions
KR102457091B1 (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 KR20180111483A publication Critical patent/KR20180111483A/ko
Application granted granted Critical
Publication of KR102457091B1 publication Critical patent/KR102457091B1/ko

Links

Images

Classifications

    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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]
    • 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

Abstract

데이터 복제 시스템은 복수의 eSSD들, 패브릭 스위치 및 베이스보드 관리 컨트롤러(BMC)를 포함하는 섀시를 포함한다. 상기 BMC는 상기 복수의 eSSD들 중 하나를 액티브 eSSD로 구성하고, 상기 복수의 eSSD들 중 하나 이상을 패시브 eSSD들로 구성한다. 상기 섀시의 상기 패브릭 스위치는 상기 액티브 eSSD로 향하는 패킷들을 상기 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들 모두로 전송하도록 프로그램되며, 상기 액티브 eSSD는 호스트 데이터를 저장하고, 상기 호스트 데이터에 대응하는 어드레스 및 명령을 하나 이상의 패시브 eSSD들로 전송한다. 하나 이상의 패시브 eSSD들 각각은 상기 호스트로부터 수신된 상기 어드레스와 상기 명령 그리고 상기 패브릭 스위치에 의해 전송된 패킷들에서 수신된 상기 호스트 데이터를 사용하여 상기 호스트 데이터의 복사본을 저장한다.

Description

NVME-OF 이더넷 SSD에서 데이터 복제를 제공하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR PROVIDING DATA REPLICATION IN NVME-OF ETHERNET SSD}
본 발명은 데이터 복제에 관한 것으로, 좀 더 구체적으로는 SSD(solid-state drive)들에서 데이터 복제를 제공하는 시스템 및 방법에 관한 것이다.
SSD들(solid-state drives)은 종래의 하드 디스크 드라이브들(hard disk drives, HDDs)를 대체하는 현대 정보 기술(information technology, IT) 인프라들의 주요 저장 요소들이 되고 있다. SSD들은 낮은 레이턴시(latency), 높은 데이터 읽기/쓰기 처리량 및 믿을만한 사용자 데이터 저장을 제공한다. NVMe-oF(non-volatile memory express over fabrics)는 수백 및 수천 개의 NVMe-호환 SSD들을 이더넷(Ethernet)과 같은 네트워크 패브릭(network fabric)을 통해 연결할 수 있게 해주는 신기술이다. 이더넷 연결을 통해 NVMe-oF 표준과 호환되는 SSD는 이더넷-연결(Ethernet-attached) SSD 또는 간단히 말하면 eSSD라고 한다.
NVMe-oF 프로토콜은 다수의 eSSD가 네트워크 패브릭을 통해 원격 호스트에 연결될 수 있게 하는 rDAS(remote direct-attached storage) 프로토콜을 지원한다. NVMe-oF 프로토콜은 네트워크 패브릭을 통해 원격 호스트와 eSSD들 간에 NVMe 명령들, 데이터 및 응답들을 전달할 수 있는 신뢰성 있는 전송 서비스를 제공하기 위해 RDMA(remote direct memory access) 프로토콜을 지원한다. RDMA 서비스들을 제공 할 수 있는 전송 프로토콜들의 예로 InfiniBand, iWARP, RoCE v1 및 RoCE v2가 있다.
사용자 데이터에 대한 신뢰성 있는 액세스는 데이터 스토리지 시스템의 가장 중요한 요구 사항들 중 하나이다. 신뢰성 및 데이터 가용성을 필요한 정도로 달성하기 위해 데이터 스토리지 시스템의 다양한 지점들에서 다양한 기술들 및 방법들이 사용되고 있다. 예를 들어, 스토리지 장치에 기입된 데이터는 스토리지 장치를 사용할 수 없게 될 때 백업 스토리지 장치로서 하나 이상의 다른 스토리지 장치에 복제된다. 이 데이터 복제 스킴은 종종 미러링(mirroring) 또는 백업(back-up)이라고 한다.
복수의 eSSD들이 접속되는 섀시(chassis)에서, 각 eSSD는 이더넷을 통해 호스트에 직접 연결될 수 있다. 호스트는 데이터 미러링을 위해 두 개 이상의 eSSD들에 대해 데이터 복제를 수행할 수 있다. 그러나, 호스트에 의한 데이터 복제 기능의 구현은 호스트 및 시스템 소프트웨어에 부담을 가중시키고, 결과적으로 데이터 입/출력(I/O) 동작들에 부가적인 레이턴시(latency)를 추가하고, 데이터 스토리지 시스템에 대한 전체 비용을 증가시킨다.
대안적으로, 인라인(inline) RAID(redundant array of independent disks) 컨트롤러는 호스트에 대해 투명한 방식으로 데이터 복제를 수행하기 위해 SSD에 내장될 수 있다. 그러나 RAID 컨트롤러는 일반적으로 비싸고 부가적인 레이턴시를 추가하여 I/O 성능을 저하시킬 수 있다. 또한 RAID 컨트롤러가 내장된 SSD는 많은 부하 또는 최대의 초당 입출력 동작들(input/output operations per second, IOPS)에서 최대 전력 예산 또는 그와 비슷한 전력을 소비할 수 있고, NVMe-oF의 표준에 따른 eSSD의 전력 소비 요구 사항을 충족시키지 못한다. 그러므로 eSSD에 내장된 RAID 컨트롤러에 의한 데이터 복제는 NVMe-oF-호한 데이터 스토리지 시스템에 대한 적합한 솔루션이 아닐 수 있다.
본 발명의 목적은 SSDs(solid-state drives)에서 데이터 복제를 제공하는 시스템 및 방법을 제공하는데 있다.
일 실시 예에 따르면, 방법은: 섀시에 포함된 복수의 솔리드 스테이트 드라이브(eSSD)들을 포함하는 데이터 복제 시스템을 제공하고, 상기 섀시는 상기 복수의 eSSD들 각각에 다운링크를 제공하기 위한 패브릭 스위치 및 상기 패브릭 스위치와 상기 복수의 eSSD들을 제어하기 위한 베이스보드 관리 컨트롤러(BMC)를 포함하며; 상기 BMC를 사용하여, 상기 복수의 eSSD들 중 하나를 액티브 eSSD로 구성하고; 상기 BMC를 사용하여, 상기 복수의 eSSD들 중 하나 이상을 패시브 eSSD들로 구성하고; 상기 BMC를 사용하여, 상기 패브릭 스위치를 프로그램해서 상기 액티브 eSSD로 향하는 패킷들을 상기 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들 모두로 전송하고; 상기 액티브 eSSD에서, 상기 호스트로부터의 호스트 데이터 쓰기 명령을 수신하고; 상기 액티브 eSSD로부터의 상기 호스트 데이터에 대응하는 어드레스 및 명령을 상기 하나 이상의 패시브 eSSD들로 전송하고; 상기 액티브 eSSD에 상기 호스트 데이터를 저장하고; 그리고 상기 액티브 eSSD로부터 수신된 어드레스 및 명령 그리고 상기 패브릭 스위치에 의해 전송된 패킷들에서 수신된 상기 호스트 데이터를 사용하여 상기 하나 이상의 패시브 eSSD들에 상기 호스트 데이터의 복사본을 저장하는 것을 포함한다.
본 발명의 다른 실시예에 따르면, 데이터 복제 시스템은, 복수의 eSSD들, 패브릭 스위치 및 베이스보드 관리 컨트롤러(BMC)를 포함하는 섀시를 포함한다. 상기 패브릭 스위치는 상기 복수의 eSSD들 각각에 다운링크를 제공하도록 구성되고, 상기 BMC는 상기 패브릭 스위치 및 상기 복수의 eSSD들을 제어하도록 구성된다. 상기 BMC는 상기 복수의 eSSD들 중 하나를 액티브 eSSD로 구성하고, 상기 복수의 eSSD들 중 하나 이상을 패시브 eSSD들로 구성하고, 상기 패브릭 스위치를 프로그램해서 상기 액티브 eSSD로 향하는 패킷들을 상기 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들 모두로 전송한다. 상기 액티브 eSSD는 상기 호스트로부터의 호스트 데이터 쓰기 명령에 응답해서 호스트 데이터를 저장하도록 구성된다. 상기 액티브 eSSD는 상기 호스트 데이터에 대응하는 어드레스 및 명령을 상기 하나 이상의 패시브 eSSD들로 전송하도록 더 구성된다. 상기 하나 이상의 패시브 eSSD들 각각은 상기 액티브 eSSD로부터 수신된 어드레스 및 명령 그리고 상기 패브릭 스위치에 의해 전송된 패킷들에서 수신된 상기 호스트 데이터를 사용하여 상기 호스트 데이터의 복사본을 저장하도록 구성된다.
구현 및 이벤트들의 조합의 다양한 신규한 세부 사항을 포함하는 상기 및 다른 바람직한 특징들은 첨부된 도면들을 참조하여 보다 구체적으로 설명될 것이며 청구 범위에 기재될 것이다. 여기에 기술된 특정 시스템들 및 방법들은 단지 예시로서 도시된 것이며, 이에 제한되지 않음이 이해할 것이다. 당업자가 이해할 수 있는 바와 같이, 본 명세서에 설명된 원리들 및 특징들은 본 개시의 범위를 벗어나지 않고 다양하고 수많은 실시 예들에서 사용될 수 있다.
본 시스템 및 방법은 데이터 복제 특징이 주로 eSSD(즉, 액티브(active) eSSD 및 패시브(passive) eSSD) 및 섀시(chassis)의 이더넷 스위치로 구현되기 때문에 데이터 복제를 제공하기 위한 비용 효과적이고 효율적인 솔루션이다. 본 시스템 및 방법은 복잡한 시스템 소프트웨어 및 하드웨어에 대한 필요성을 없애고, 추가 연산, 저장 장치 및 전력을 위한 호스트 측의 부담 및 비용을 감소시킨다. 본 발명의 데이터 복제는 호스트 측의 최소한의 변경만으로 eSSD들 및 이더넷 스위치를 포함하는 섀시에 구현된다.
데이터 복제를 제공하는 본 시스템 및 방법은 액티브 및 관련된 패시브 eSSD들 간의 완벽한 일관성을 보장할 수 있고, 데이터 손실은 없다. 일부 데이터 손실을 허용할 수 있는 경우, 사용자 애플리케이션은 더 나은 레이턴시를 달성할 수 있다.
본 명세서의 일부로서 포함되는 첨부된 도면들은 현재 바람직한 실시예를 도시하고, 위에서 주어진 일반적인 설명 및 아래에 주어진 바람직한 실시예의 상세한 설명과 함께 본 명세서에 설명된 원리를 설명하고 교시하는 역할을 한다.
도 1은 일 실시예에 따른 예시적인 NVMe-oF 시스템의 예시적인 블록도이다.
도 2는 일 실시예에 따른 예시적인 NVMe-oF 시스템의 블록도이다.
도 3은 일 실시예에 따른 예시적인 NVMe-oF 시스템의 데이터 복제를 프로세스를 도시한다.
도 4는 일 실시예에 따른 섀시의 eSSD들 및 이더넷 스위치를 초기화 및 프로그래밍하여 데이터 복제를 구현하기 위한 플로우차트이다.
도 5는 일 실시예에 따른 액티브 eSSD에 의해서 호스트 명령들을 처리하기 위한 플로우차트이다.
도 6은 일 실시예에 따른 데이터 복제 프로세스를 예시적으로 도시한다.
도 7은 일 실시예에 따른 패시브 eSSD에 의해서 호스트 명령들을 처리하기 위한 플로우차트이다.
도 8은 일 실시예에 따른 액티브 eSSD로부터 패시브 eSSD로 LBA 및 명령들을 전달하기 위한 플로우차트이다.
도 9는 일 실시예에 따른 패시브 eSSD에 의한 데이터 복제 프로세스에 대한 플로우차트이다.
도 10은 일 실시예에 따른 장애 극복 동작에 대한 플로우차트이다.
도면은 반드시 축척대로 그려진 것은 아니며, 유사한 구조 또는 기능의 요소는 도면 전체에 걸쳐 예시적인 목적으로 유사한 참조 번호로 일반적으로 표시된다. 도면들은 본 명세서에 기재된 다양한 실시 예들의 설명을 용이하게 하기 위한 것이다. 도면은 본원에 개시된 교시의 모든 양상을 기술하지 않으며 청구항의 범위를 제한하지 않는다.
본 명세서에 개시된 각각의 특징 및 교시는 개별적으로 또는 다른 특징 및 교시와 함께 이용되어 이더넷 SSD에서 데이터 복제를 제공 할 수 있다. 개별적으로 및 조합하여, 많은 추가의 특징 및 교시를 이용하는 대표적인 예가 첨부된 도면을 참조하여 더욱 상세하게 설명된다. 이 상세한 설명은 본 발명의 양상을 실시하기 위한 상세한 설명을 당업자에게 교시하기 위한 것이며 청구항의 범위를 제한하려는 것이 아니다. 그러므로, 상세한 설명에서 개시된 특징들의 조합은 가장 넓은 의미에서의 교시를 수행하는데 필수적이지 않을 수 있으며, 단지 본 발명의 교시의 특히 대표적인 예들을 설명하기 위해 교시된다.
이하의 설명에서, 단지 설명의 목적으로, 특정 명칭이 본 개시의 완전한 이해를 제공하기 위해 제시된다. 그러나, 당업자에게는 이러한 특정 세부 사항들이 본 개시의 교시를 실행하기 위해 요구되지 않는다는 것이 명백할 것이다.
본 명세서의 상세한 설명의 일부분은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산들의 알고리즘들 및 심볼 표현들로 제공된다. 이러한 알고리즘 설명들 및 표현들은 데이터 처리 기술 분야들의 당업자가 그들의 작업 내용을 당업자에게 효과적으로 전달하기 위해 사용된다. 본 명세서의 알고리즘은 일반적으로 원하는 결과를 유도하는 단계들의 일관성 있는 시퀀스로 여겨진다. 단계들은 물리적 양을 물리적으로 조작해야 하는 단계들이다. 일반적으로 반드시 그런 것은 아니지만, 이러한 양은 저장, 전송, 결합, 비교 및 기타 조작이 가능한 전기 또는 자기 신호의 형태를 갖는다. 대개 신호들을 비트들, 값들, 엘리먼트들, 기호들, 문자들, 용어들, 숫자들 등으로 참조하여 일반적으로 사용하는 것이 편리하다고 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양과 관련되어 있고 단지 이들 양에 적용되는 편리한 라벨들일 뿐이라는 것을 염두에 두어야 한다. 이하의 설명으로부터 명백한 바와 같이, 특별히 언급하지 않는 한, 설명의 전체에 걸쳐 " "처리", "컴퓨팅", "계산", "결정", "디스플레이"와 같은 용어를 사용하는 논의는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 언급하며, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리(전자) 양으로 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 정보 스토리지 장치, 전송 장치 또는 디스플레이 장치 내에서 물리량으로 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 지칭한다.
여기에 제시된 알고리즘은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되어 있지 않다. 다양한 범용 시스템들, 컴퓨터 서버들 또는 퍼스널 컴퓨터들 본 명세서의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 요구된 방법 단계들을 수행하기 위해보다 전문화된 장치를 구성하는 것이 편리할 수도 있다. 이러한 다양한 시스템들에 필요한 구조는 아래 설명에서 나타난다. 본 명세서에 설명된 바와 같이 본 발명의 개시 내용을 구현하기 위해 다양한 프로그래밍 언어들이 사용될 수 있다는 것을 이해할 것이다.
또한, 대표 예들 및 종속항들의 다양한 특징들은 본 발명의 교시의 추가적인 유용한 실시예들을 제공하기 위해 구체적으로 및 명시적으로 열거되지 않은 방식으로 결합될 수 있다. 또한 모든 값의 범위들 또는 개체들의 그룹들은 청구된 주제를 제한하기 위한 목적뿐만 아니라 독창적인 공개 목적으로 모든 가능한 중간 값 또는 중간 개체를 개시한다는 점에 명시적으로 유의한다. 또한, 도면에 도시된 구성 요소의 치수 및 형상은 본 발명의 교시가 어떻게 수행되는지를 이해하도록 돕기 위해 설계된 것으로서, 실시예에 도시된 치수 및 형상을 제한하고자 하는 것은 아니라는 점을 명시적으로 언급한다.
본 개시는 NVMe-oF 표준들(본 명세서에서 이더넷 SSD들 또는 eSSD들이라고 함)과 호환 가능한 하나 이상의 SSD들을 사용하여 데이터 복제(data replication)를 제공하는 시스템 및 방법을 제공한다. 본 시스템 및 방법에 의해 사용되는 데이터 복제는 호스트 참여, 또는 CPU(central processing unit)나 RAID 컨트롤러와 같은 비싸고 성능에 영향을 미치는 외부 구성 요소들 없이 달성될 수 있다.
일 실시예에 따르면, 섀시(160) 내의 eSSD들(170) 각각은 액티브, 패시브, 및 노말의 3 가지 모드로 구성되고 동작할 수 있다. 섀시의 베이스 보드 관리 컨트롤러(baseboard management controller, BMC)는 섀시 내 eSSD들 중 하나를 액티브 eSSD로 프로그램하고, 나머지 eSSD들 중 하나 이상을 패시브 eSSD들로 프로그램할 수 있다. 액티브 eSSD로도 패시브 eSSD로도 구성되지 않은 eSSD는 노말 모드로 동작하고 표준 NVMe-oF SSD로써 동작 할 수 있다. 액티브 및 패시브 eSSD들 사이에서, 액티브 eSSD만 원격 호스트(remote host)에게 보여질 수 있으며(발견될 수 있으며), 원격 호스트와 NVMe-oF 프로토콜의 종료를 수행할 수 있다. 반면, 패시브 eSSD들은 원격 호스트에 에게 보여질 수(발견될 수) 없다. 네트워크 패브릭(예를 들면, 이더넷)에 위치하는 원격 호스트는 편의를 위해 간단히 호스트(host)라 칭한다.
액티브 eSSD는 호스트에 의해 발행된 명령들을 처리하고, 호스트로 그리고 호스트로부터의 데이터 전송을 수행하며, 호스트 명령들의 성공적인 완료 또는 실행 실패를 나타내기 위해 완료 큐(completion queue, CQ) 엔트리들(entries) 을 호스트에 전송할 수 있다. 섀시의 패시브 eSSD들은 호스트 명령들을 실행하지도 호스트 프로토콜에 참여하지도 않는다. 대신 패시브 eSSD들은 액티브 eSSD로 향하는 진입 트래픽 패킷들(ingress traffic packets)을 수동적으로 수신한다. 예를 들어, 섀시의 이더넷 스위치는 액티브 eSSD로 향하는 모든 진입 패킷들을 액티브 eSSD와 관련되도록 프로그램된 패시브 eSSD들로 복제하도록 프로그램된다.
일 실시예에 따르면, 패시브 eSSD들은 RDMA 읽기 응답(RDMA READ RESPONSE) 패킷들을 제외한 모든 복제된 진입 패킷들을 폐기한다. RDMA 읽기 응답 패킷들은 호스트 쓰기 데이터를 제공하고, 호스트 쓰기 데이터는 호스트의 FIFO 버퍼에 유지된다. FIFO 버퍼 내 호스트 쓰기 데이터는 액티브 eSSD에 의해서 페치(fetch)된다. 호스트 쓰기 데이터를 페칭한 후 액티브 eSSD는 명령(예를 들면, 쓰기 명령)과 연관된 LBA(logical block address) 그리고/또는 호스트 쓰기 데이터를 쓰기 위한 네임스페이스를 연관된 패시브 eSSD로 제공한다. 액티브 eSSD에 의해서 제공된 명령 및 LBA 그리고 복제된 RDMA 읽기 응답 패킷들로부터 수신된 데이터를 사용하여, 패시브 eSSD는 복제된 데이터를 자신의 비-휘발성 메모리에 기입할 수 있다. 패시브 eSSD의 비-휘발성 메모리는 플래시 메모리 또는 퍼시스턴트 메모리(persistent memory)일 수 있다. 구성에 따라서 하나 이상의 패시브 eSSD들이 호스트 쓰기 데이터를 복제할 수 있다.
일 실시예에 따르면, 액비트 eSSD가 관련된 패시브 eSSD들로 전송한 LBA/네임스페이스 그리고 쓰기 명령은 전송 큐 및 수신 큐를 포함하는 RDMA 큐 쌍(queue pair, QP) 내 세부 사항들을 포함할 수 있다. 액티브 eSSD와 패시브 eSSD들 사이에 설정된 경로 내 호스트에 의해서 인에이블된, QP들을 통해 추가 정보 교환을 요구할 수 있는 다수의 액티브 QP들이 있을 수 있다. 일 실시예에 따르면, 패시브 eSSD들은 모든 RDMA 읽기 응답에서 QP 및 데이터 시퀀싱과 같은 호스트 쓰기 연관에 관한 데이터 청크에 대한 추가적인 정보를 위해 RDMA 헤더를 살펴볼 수 있다.
일 실시예에 따르면, 액티브 eSSD는 호스트로부터 호스트 쓰기 요청을 수신한 후 하나 이상의 RDMA 읽기 요청들을 호스트로 전송하기 전에 쓰기 명령을 한 번 전송할 수 있다. 액티브 eSSD는 호스트 쓰기가 어떻게 하나 이상의 개별 RDMA 읽기 요청들로 분류되는지 그리고 연관된 데이터가 어떻게 세그먼트 분산 수집 리스트(segment scatter gather list, SGL)에서 수신되는 지를 미리 계산할 수 있다. 이것은 PCIe 버스 또는 네트워크 패브릭뿐만 아니라 전용 채널의 트래픽을 감소시킬 수 있으며, 따라서 다수의 QP 연결들이 다수의 데이터 복제 세트에 걸쳐 이루어질 때 I/O 성능을 향상시킨다. 또한 데이터가 인클로저들(enclosures), 랙들(racks), 데이터 센터들 및 여러 지역 위치들에 걸쳐 복제될 때 데이터 복제의 오버 헤드를 감소시킬 수 있다.
패시브 eSSD는 호스트 쓰기 데이터가 성공적으로 유지되었거나 또는 호스트 쓰기 데이터의 저장이 실패했음을 나타내는 확인을 액티브 eSSD에 전송하도록 구성될 수 있다. 액티브 eSSD는 완료 큐 엔트리를 호스트에 전송하기 전에 연관된 모든 패시브 eSSD들로부터의 확인을 기다릴 수 있다. 이러한 확인 메커니즘은 항상 호스트 쓰기 데이터의 데이터 지속성을 보호하고 보장할 수 있다.
본 시스템 및 방법은 데이터 복제 특징을 지원하기 위해 RAID-on-Chip (ROC)을 위한 타겟 측 x86 서버 또는 외부 ASIC(application-specific integrated circuit)을 필요로 하지 않는다. 본 시스템 및 방법은 호스트의 부가적인 하드웨어 및 소프트웨어 오버헤드를 제거 또는 감소시킴으로써 데이터 스토리지 성능을 향상시키면서 총소유비용(total cost of ownership, TCO)을 감소시킨다. 본 시스템 및 방법은 데이터 복제가 데이터 I/O 동작들과 동시에 수행되는 종래의 인-라인(in-line) 데이터 복제 솔루션들에 비해 향상된 I/O 레이턴시 및 대역폭 성능을 갖는다.
본 시스템 및 방법은 데이터 복제 특징이 주로 eSSD(즉, 액티브(active) eSSD 및 패시브(passive) eSSD) 및 섀시(chassis)의 이더넷 스위치로 구현되기 때문에 데이터 복제를 제공하기 위한 비용 효과적이고 효율적인 솔루션이다. 본 시스템 및 방법은 복잡한 시스템 소프트웨어 및 하드웨어에 대한 필요성을 없애고, 추가 연산, 저장 장치 및 전력을 위한 호스트 측의 부담 및 비용을 감소시킨다. 본 발명의 데이터 복제는 호스트 측의 최소한의 변경으로 또는 변경없이 eSSD들 및 이더넷 스위치를 포함하는 섀시에 구현된다.
도 1은 일 실시예에 따른 예시적인 NVMe-oF 시스템의 블록도를 도시한다. NVMe-oF 시스템(100)은 호스트(110) 및 하나 이상의 NVMe-oF- 호환 이더넷 SSD들(eSSD들)을 포함하는 섀시(160)(본 명세서에서 eSSD 섀시라고도 칭함)를 포함한다. 예를 들어, 섀시(160)는 24 또는 48 개의 eSSD들을 포함한다. 섀시(160) 내의 eSSD들은 각각 eSSD들(170a-170n)(본 명세서에서 집합적으로 eSSD들(170)로 칭함)로 표시된다. 호스트(110)는 애플리케이션(111), 오퍼레이팅 시스템(operating system, OS) 과 파일 시스템(file system, FS)(112) 및 NVMe-oF 드라이버(113)를 포함한다. 호스트(110)의 초기화기(initiator, 예를 들어, 애플리케이션(111))는 NVMe-oF 드라이버(113)를 사용하여 이더넷(150)을 통해 eSSD들(170)과의 연결을 설정할 수 있다. 섀시(160)는 이더넷 스위치(161), 베이스보드 관리 컨트롤러(baseboard management controller, BMC)(162) 및 PCIe 스위치(163)를 포함한다. 이더넷 스위치(161)는 미드플레인(midplane, 165)을 통해 eSSD들(170)에게 이더넷 연결을 제공하고, PCIe 스위치(163)는 미드플레인(165)을 통해 eSSD들(170)에 관리 인터페이스(164)를 제공한다. 이 예에서, eSSD들(170) 중 하나는 액티브 eSSD로서 구성될 수 있고, 다른 eSSD들은 패시브 eSSD로 구성될 수 있다. BMC(162)는 시스템 관리자에 의해 주어진 명령에 따라 eSSD들(170)을 프로그램할 수 있다.
이더넷 스위치(161)는 호스트(110)와 eSSD들(170) 사이에 네트워크 연결을 제공한다. 이더넷 스위치(161)는 하나 이상의 호스트들에 연결하기 위한 대-용량(예를 들어, 100 Gbps) 업링크들(uplinks)을 가질 수 있다. 또한 이더넷 스위치(161)는 eSSD들(170)에 연결하기 위한 다수의 저-용량(예를 들어, 25Gbps) 다운링크들(downlinks)을 갖는다. 예를 들어, 이더넷 스위치(161)는 100Gbps의 12 개의 업링크들 및 25Gbps의 24 또는 48 개의 다운링크들을 포함한다. 이더넷 스위치(161)는 BMC(162)에 대한 전용(special) 구성/관리 포트(미 도시됨)를 가질 수 있다.
BMC(162)는 이더넷 스위치(161), PCIe 스위치(163) 및 eSSD들(170)을 포함하는 섀시(160)의 내부 구성 요소들을 관리한다. BMC(162)는 시스템 관리를 위해 PCIe 및/또는 SMBus 인터페이스들을 지원할 수 있다. BMC(162)는 액티브 eSSD 및 패시브 eSSD들을 구성하고, 이더넷 스위치(161)를 프로그램할 수 있다. 액티브 eSSD가 실패하면, BMC(162)는 오류 해결 스위칭(failover switching)을 수행하고, 새로운 액티브 eSSD를 지정하고, 필요하다면 추가적인 패시브 eSSD들을 구성할 수 있다.
일 실시예에 따르면, 섀시(160) 내의 eSSD들(170)는 액티브, 패시브, 및 노말의 3 가지 모드들 중 하나로 동작할 수 있다. 액티브 eSSD 및 하나 이상의 패시브 eSSD들로 구성된 eSSD들(170)은 원하는 데이터 복제를 제공할 수 있다. 일부 실시예들에서, 섀시(160)는 다수의 액티브/패시브 eSSD 세트들을 포함할 수 있다. 주어진 eSSD에 대해 데이터 복제가 필요하지 않을 때, BMC(162)는 eSSD를 노말 모드로 구성할 수 있다. 노말 eSSD로 구성된 eSSD는 표준 NVMe-oF SSD로 동작한다.
도 2는 다른 실시예에 따른 예시적인 NVMe-oF 시스템의 블록도를 도시한다. NVMe-oF 시스템(200)은 호스트(210) 및 이더넷(250)을 통해 호스트(210)에 연결되는 복수의 eSSD 섀시들(260a-260m)(집합적으로 eSSD 섀시(260)로 칭함)을 포함한다. 호스트(210)는 애플리케이션(211), 오퍼레이팅 시스템(OS)과 파일 시스템(FS)(212) 및 이더넷(250)을 통해 랙(rack, 270) 내 eSSD 새시(260) 각각과 연결하기 위한 NVMe-oF 드라이버(213)를 포함한다. 랙(270)은 랙(270) 내 다수의 새시들(260) 사이에 연결성을 제공하는 TOR(top-of-rack) 스위치(271)를 포함한다. 유사하게, NVMe-oF 시스템(200)은 상이한 위치들에 위치될 수 있는 다수의 랙들(270)을 포함할 수 있다. 랙들(270)은 TOR 스위치들(271)을 통해 서로 연결될 수 있다. 다수의 랙들(270)의 TOR 스위치들(271)은 이더넷(250)을 통해 전용선들 또는 외부 스위치들을 통해 직접 서로 연결될 수 있다.
도 3은 일 실시예에 따른 예시적인 NVMe-oF 시스템의 데이터 복제 프로세스를 도시한다. NVMe-oF 시스템(300)은 호스트(310) 및 eSSD들(370a-370n)을 포함하는 다수의 eSSD들을 포함하는 섀시(360)를 포함한다. 예를 들어, 섀시(360)는 24 또는 48 개의 eSSD들을 포함할 수 있다. 호스트(310)는 애플리케이션(311), 오퍼레이팅 시스템(OS)과 파일 시스템(FS)(312) 및 NVMe-oF 드라이버(313)를 포함한다. 호스트(310)의 초기화기(initiator, 예를 들어, 애플리케이션(311))는 NVMe-oF 드라이버(313)를 이용하여 이더넷(350)을 통해 액티브 eSSD(370a)와 NVMe-oF 연결을 설정할 수 있다. 섀시(360)는 이더넷 스위치(361), BMC(362) 및 PCIe 스위치(363)를 포함한다. 이더넷 스위치(361)는 미드플레인(365)을 통해 eSSD들(370)에 이더넷 연결을 제공하고, PCIe 스위치(363)는 미드플레인(365)을 통해 eSSD들(370)에 관리 인터페이스(364)를 제공한다. BMC(362)는 다수의 eSSD들(370) 중 하나를 액티브 eSSD(370a)로 프로그램하고, 다른 eSSD들을 패시브 eSSD들로 프로그램할 수 있다. 예시의 편의상, 본 예시는 하나의 액티브 eSSD(370a) 및 하나의 패시브 eSSD(370b)를 도시한다; 그러나, eSSD들의 복제 그룹은 하나의 액티브 eSSD 및 하나 이상의 패시브 eSSD들을 포함하고, 본 개시의 범위를 벗어나지 않는 한 섀시 내에 하나 이상의 복제 그룹들이 존재할 수 있다. 패시브 eSSD(370b)는 액티브 eSSD(370a)와 연관되도록 구성된 다수의 패시브 eSSD들 중 하나를 나타낼 수 있다. 패시브 eSSD(370b)에 의해 수행되는 활동은 섀시(360) 내의 다른 패시브 eSSD들에 의해 동시에 수행될 수 있다. 예를 들어, NVMe-oF 시스템(300)이 이와 같이 구성된 경우 동일한 데이터가 2 개 이상의 패시브 eSSD들에 복제될 수 있다. 일부 실시예들에서, 섀시(360)는 하나 이상의 복제 그룹들을 포함할 수 있고, 각각의 복제 그룹들은 하나의 액티브 eSSD 및 복제 그룹 내의 액티브 eSSD와 함께 데이터 복제를 제공하도록 프로그램된 하나 이상의 패시브 eSSD들을 포함할 수 있다.
액티브 eSSD(370a)는 호스트(310)와의 모든 NVMe-oF 프로토콜 처리 및 종료를 처리할 수 있다. 호스트(310)와 액티브 eSSD(370a) 사이의 NVMe-oF 시스템(300)의 전송 프로토콜은 제출 큐(submission queue, SQ) 및 완료 큐(completion queue, CQ)로 구현된다. 호스트(310)에서 실행중인 애플리케이션(311)에 의해 호출되는 NVMe-oF 드라이버(313)에게 액티브 eSSD(370a)가 보여지도록, 액티브 eSSD(370a)의 위치 어드레스는 호스트(310)에 알려진다. 액티브 eSSD(370a)가 호스트 쓰기 데이터를 수신하면, 액티브 eSSD(370a)는 호스트 쓰기 데이터 및 필요한 명령과 관련된 하나 이상의 LBA들을 전용 통신 채널을 통해 관련 패시브 eSSD(370b)에 전송한다. 일 실시예에서, 액티브 eSSD(370a) 및 패시브 eSSD(370b)는 이더넷 스위치(361)를 통해 또는 섀시(360)의 PCIe 스위치(363)를 통해 전용의 낮은-대역폭 통신 채널을 형성할 수 있다.
패시브 eSSD(370b)는 액티브 eSSD에 기입된 호스트 데이터의 사본을 저장할 수 있다. BMC(362)는, 패시브 eSSD(370b)가 액티브 eSSD(370a)로 향하는 모든 인그레스 패킷들(ingress packets)의 사본을 수신할 수 있도록, 액티브 eSSD(370a)에 지정된 액티브 인그레스 트래픽(ingress traffic)을 패시브 eSSD(370b)에 복제하도록 이더넷 스위치(361)를 프로그램할 수 있다. 패시브 eSSD(370b)는 수신된 패킷을 필터링하고, 수신된 패킷들 중에서 RDMA 읽기 응답(RDMA READ RESPONSE) 패킷 만을 유지한다. 패시브 eSSD(370b)는 수신 된 RDMA 읽기 응답 패킷을 분석하고 RDMA 읽기 응답 패킷에 포함된 호스트 쓰기 데이터 청크들(chunks)을 추출한다. 또한 패시브 eSSD(370b)는 액티브 eSSD로부터 데이터 복제 명령 및 데이터 청크들에 대응하는 LBA들을 수신한다. 패시브 eSSD(370b)는 LBA 정보 및 RDMA 읽기 응답 패킷으로부터 수신된 데이터를 사용하여 호스트 데이터를 자신의 저장 매체에 유지한다. 일부 실시예들에서, 이더넷 스위치(361)는 인그레스 패킷들을 필터링하여 RDMA 읽기 응답 패킷들만을 패시브 eSSD들에 제공한다. 호스트 데이터가 유지된 후, 패시브 eSSD(370b)는 설정된 전용 통신 채널을 통해 액티브 eSSD(370a)에 확인(confirmation)을 전송할 수 있다.
BMC(362)는 스토리지 관리자의 안내에 따라 데이터 복제 특징을 설정하는 역할을 한다. 일 실시예에서, BMC(362)는 eSSD들(370)을 구성하기 위해 SMBus 또는 PCIe 버스를 통해 NVMe-MI 프로토콜을 사용한다. 먼저, BMC(362)는 eSSD를 식별하고 eSSD를 액티브 모드로 프로그램한다. 또한, BMC(362)는 하나 이상의 eSSD들을 선택하고 eSSD들을 패시브 eSSD들로 프로그램한다. BMC(362)에 의해 구성된 패시브 eSSD들의 수는 스토리지 관리자에 의해 지정된 데이터 복사본의 수에 종속될 수 있다. BMC(362)는 이러한 eSSD들을 패시브 모드로 프로그램한다.
액티브 및 패시브 eSSD들(370)이 적절하게 구성되면, BMC(362)는 이더넷 스위치(361)를 구성한다. 이더넷 스위치(361)는 액티브 eSSD(370a)에 대응하는 다운링크 포트로 향하는 인그레스 패킷을 패시브 eSSD(370b)에 대응하는 다운링크 포트들로 복제하고 전송할 수 있다. eSSD(370)들 및 이더넷 스위치(361)가 적절하게 구성된 후에, 저장 관리자 및/또는 BMC(362)는 eSSD(370)가 데이터 저장 및 복제를 위해 준비되었다는 것을 호스트(310)의 애플리케이션(311) 및 OS/파일 시스템(312)으로 알릴 수 있다.
도 4는 일 실시예에 따라 데이터 복제를 구현하기 위한 섀시의 eSSD들 및 이더넷 스위치를 초기화 및 프로그램에 대한 플로우차트이다. 초기화 프로세스는 스토리지 관리자에 의해 발행된 초기화 명령으로 시작(trigger)된다(400). 초기화 명령에 응답하여, 섀시의 BMC는 eSSD를 선택하고(401), 액티브 eSSD로 구성하도록 선택된 eSSD를 프로그램한다(402). 일 실시예에 따르면, 초기화 명령은 액티브 eSSD에 대한 고유 식별자(예를 들어, IP 어드레스, MAC 어드레스)를 포함 할 수 있고, BMC는 SMBus 또는 PCIe 버스를 통해 NVMe-MI 프로토콜을 이용하여 액티브 eSSD에 구성 명령을 전송해서 액티브 모드로 구성한다.
액티브 eSSD가 프로그램된 후, 섀시의 BMC는 하나 이상의 eSSD들을 선택하고(403), 선택된 eSSD들을 패시브 eSSD로 프로그램한다(404). 일 실시예에 따르면, 섀시의 BMC는 스토리지 관리자로부터 수신된 초기화 명령에서 지시된 바와 같이 패시브 eSSD를 선택하고 프로그래밍한다. 예를 들어, BMC에 대한 초기화 명령은 패시브 eSSD들의 식별자들(예를 들면, IP 어드레스들, MAC 어드레스들)을 포함할 수 있으며, BMC는 NVMe-MI 프로토콜을 사용하여 SMBus 또는 PCIe 버스를 통해 각각의 패시브 eSSD들에 구성 명령을 전송해서 패시브 eSSD들을 패시브 모드로 구성한다.
일 실시예에 따르면, 액티브 eSSD 및 패시브 eSSD들의 선택 및 프로그래밍은 동시에 또는 반대 순서로 수행될 수 있다. 즉, BMC는 먼저 패시브 eSSD들을 선택하여 프로그램하고, 액티브 eSSD를 선택 및 프로그램하거나 또는 액티브 eSSD와 패시브 eSSD들을 동시에 구성할 수 있다.
eSSD들이 프로그램된 후에, BMC는 섀시의 이더넷 스위치를 프로그램한다(405). 예를 들어, 이더넷 스위치는 액티브 eSSD와 패시브 eSSD들 간의 연관성을 제공하는 매핑 테이블을 생성한다. 프로그램된 후, 이더넷 스위치는 액티브 eSSD로 향하는 인그레스 패킷들을 연관된 패시브 eSSD들로 복제한다. 일 실시예에서, 이더넷 스위치는 인그레스 패킷들을 필터링하고 RDMA 읽기 응답 패킷들만을 패시브 eSSD들에 전송할 수 있다.
액티브 eSSD는 호스트에 의해 발견 가능하고 호스트에서 실행중인 NVMe-oF 드라이버와 통신할 수 있다. 호스트는 NVMe-oF 프로토콜을 사용하여 액티브 eSSD에 호스트 명령들을 보낼 수 있다. 액티브 eSSD는 모든 호스트 명령들을 실행하고, 필요한 모든 데이터 전송들을 수행하며, 그리고 명령 완료 큐 엔트리들을 호스트에 보낸다. 즉, 액티브 eSSD는 NVMe-oF 프로토콜 처리를 수행하고 노말 eSSD에 의해 수행되는 것처럼 호스트 명령들을 실행한다. 또한 액티브 eSSD는 하나 이상의 패시브 eSSD들과 함께 데이터 복제를 지원한다. 데이터 복제는 주로 호스트 쓰기 명령들과 관련이 있다. 호스트 읽기 명령들의 경우, 액티브 eSSD는 특정 기능들을 지원할 필요가 없을 수 있다.
호스트 쓰기 명령들에 대해, 액티브 eSSD는 호스트로부터 데이터를 페치(fetch)하는 역할을한다. 일 실시예에 따르면, 액티브 eSSD는 RDMA 읽기(RDMA READ) 요청들을 호스트에 발행하여 호스트 데이터를 페치한다. 응답으로, 호스트는 하나 이상의 RDMA 읽기 응답(RDMA READ RESPONSE) 패킷들을 사용하여 데이터 청크들을 보낸다. 액티브 eSSD는 RDMA 읽기 응답 패킷들로 수신된 호스트 데이터 청크들을 내부 플래시 메모리에 저장하거나 호스트 데이터를 전력 손실 방지 버퍼(power-loss-protected buffer)에 유지한다.
RDMA 읽기 응답 패킷들로 수신된 호스트 데이터의 모든 데이터 청크들에 대해, 액티브 eSSD는 관련된 네임스페이스(NAMESPACE) 및 LBA 정보를 쓰기 명령과 함께 관련된 하나 이상의 패시브 eSSD들 각각에 전송한다. 이러한 통신은 액티브 및 패시브 eSSD들 사이에 설정된 전용 통신 채널을 통해 수행될 수 있다. 전용 통신 채널은 섀시의 이더넷 스위치 또는 PCIe 스위치를 통해 형성될 수 있다. 액티브 eSSD가 동작하지 않게 되거나 액티브 eSSD가 수신된 데이터 청크들을 쓰기에 실패한 경우, 액티브 eSSD는 패시브 eSSD들에 폐기 명령을 전송하여 데이터 청크들을 폐기한다.
일단 호스트 데이터가 국부적으로 유지되고, NAMESPACE.LBA 정보가 패시브 eSSD들로 보내지면, 액티브 eSSD는 일관성 모드에 근거해서 호스트로 명령 완료(command completion)를 전송할 수 있다. 일 실시예에 따르면, 액티브 eSSD는 데이터 지속성에 관한 패시브 eSSD들로부터의 응답을 기다리지 않고 즉시 호스트로 명령 완료를 보낼 수 있다. 본 명세서에서 거의-완벽한 일관성 모드(almost-perfect consistency mode)라고 불리는 즉시 명령-완성-응답(immediate command-completion-response)은 백업 복사본이 충실하게 유지되지 않을 위험을 담보로 약간 더 나은 레이턴시 성능을 제공할 수 있다. 이러한 에러 케이스들이 발생할 확률은 작을 수 있으며 소량의 데이터 손실을 허용하는 애플리케이션들이 있을 수 있다. 이러한 에러 케이스들에 대한 상세한 분석은 이하에서 상세히 논의 될 것이다.
다른 실시예에 따르면, 액티브 eSSD는 패시브 eSSD들로부터 데이터 지속성의 확인을 기다릴 수 있다. 하나 이상의 복제본이 복제되는 경우, 액티브 eSSD는 명령 완료 엔트리를 호스트에 보내기 전에 하나부터 모든 관련된 패시브 eSSD들까지 확인을 기다릴 수 있다. 데이터 복제는 메인 데이터 경로(예를 들면, 액티브 eSSD로의) 내 호스트 데이터의 스토리지와 병렬로 발생할 수 있으므로, 패시브 eSSD들로부터의 확인을 기다리는 것은 호스트에서 실행중인 응용 프로그램이 수용 할 수도 있고 수용할 수 없는 적당한 레이턴시를 추가할 수 있다. 즉시 명령-완료-응답을 사용하는 거의-완벽한 일관성 모드와는 달리, 완벽한 일관성 모드(perfect consistency mode)라 불리는, 모든 관련된 패시브 eSSD들로부터의 응답을 기다리는 이 동작 모드는 데이터 손실없이 충실한 데이터 일관성을 보장한다.
일 실시예에 따르면, NVMe-oF 시스템의 일관성 모드는 다양한 사용자 QoS(quality of service) 정책을 사용하여 BMC에 의해 설정될 수 있다. 일관성과 레이턴시 사이의 트레이드-오프는 애플리케이션에 의존적일 수 있으며, BMC는 스토리지 관리자의 지시에 따라 다양한 정책들을 구현할 수 있다. 액티브 및 패시브 eSSD가 데이터 일관성 관점에서 동기화되지 않은 경우, 복구되거나 동일한 동기화 레벨이 되게 해야 한다. 이러한 복구 기능은 BMC에 의해서 관리될 수 있다. 복구 작업을 용이하게 하기 위해, 액티브 eSSD는 마지막 "n"번의 성공적인 쓰기 동작들 로그를 유지한다. 예를 들어, 로그는 NAMESPACE.LBA와 특정 쓰기 동작을 나타내는 표시자(marker)를 포함한다.
또한 액티브 eSSD는 데이터 복제 프로세스를 용이하게 하기 위해 연관된 패시브 eSSD들에 일부 관리 명령들을 전송할 수도 있다. 이러한 관리 명령들의 예로는 생성/삭제 네임스페이스(NAMESPACE) 및 트림(Trim) 명령들 등이 있으나, 이에 한정되지 않는다. 관리 명령들을 실행한 후 패시브 eSSD들은 확인을 다시 액티브 eSSD로 보낼 수 있다.
도 5는 일 실시예에 따른 액티브 eSSD에 의한 호스트 명령들을 처리하기 위한 플로우차트이다. 패시브 eSSD로 구성된 모든 eSSD는 액티브 eSSD와 연관성을 갖는다. 액티브 eSSD와 패시브 eSSD 사이의 연관성은 도 4에 도시된 초기화의 일부로서 BMC에 의해 설정될 수 있다. 패시브 eSSD의 주요 기능들 중 하나는 호스트 데이터를 복제하는 것이다. 일 실시예에서, 패시브 eSSD는 2 개의 병렬 FIFO 큐들을 유지하는 것에 의해서 호스트 데이터의 데이터 복제를 수행할 수 있으며, 2 개의 병렬 FIFO 큐들 하나는 호스트 데이터를 저장하기 위한 것(이하, "수신 메시지 FIFO"라고 칭함)이고, 다른 하나는 쓰기 어드레스 및 명령을 저장하기 위한 것(이하, "LBA 및 명령 FIFO"라고 칭함)이다. 패시브 eSSD는 호스트 데이터가 액티브 eSSD에 기록 될 때 두 개의 FIFO들을 사용하여 호스트 데이터를 유지한다.
액티브 eSSD는 호스트로부터 호스트 명령들을 수신하고 수신된 호스트 명령들이 수신되는 대로 제출 큐(submission queue, SQ)에 배치한다(500). 액티브 eSSD는 제출 큐 내 엔트리들을 중재하고(501), 제출 큐로부터 실행을 위한 호스트 명령을 선택한다(502). 호스트 명령은 호스트 쓰기 명령(503), 관리 명령(510) 또는 노말 명령(516) 중 어느 하나일 수 있다.
선택된 호스트 명령이 호스트 쓰기 명령이면(503), 호스트 쓰기 명령은 액티브 eSSD의 내부 스토리지 장치에 쓰기 위한 호스트 데이터를 포함한다. 액티브 eSSD는 예를 들어, 스토리지 장치의 스토리지 유닛(예를 들어, 페이지 크기 또는 플래시 메모리의 블록 크기)에 따라 호스트 데이터를 데이터 청크들로 분할(segment)한다(504). 액티브 eSSD는 호스트 쓰기 명령과 관련된 모든 데이터 청크들이 페치되는 지를 검사한다(505). 분할된 데이터 청크들 중 페치할 적어도 하나의 데이터 청크가 남아 있으면, 액티브 eSSD는 호스트에 RDMA 읽기 요청을 발행하여 나머지 데이터 청크를 페치한다(506). 각 데이터 청크에 대해 액티브 eSSD는 NAMESPACE.LBA 및 명령을 관련된 패시브 eSSD 각각에 전송한다(507). RDMA 읽기 요청을 호스트에 발행하고, NAMESPACE.LBA 및 명령을 패시브 eSSD들에 발행하는 것은 동시에 수행될 수 있다. 데이터 청크에 대한 RDMA 읽기 요청 패킷이 수신 된 후에, 액티브 eSSD는 내부 스토리지 장치(예를 들어, 플래시 메모리)에 데이터 청크를 유지시킨다(509). 페치된 데이터 청크는 액티브 eSSD의 데이터 버퍼에 일시적으로 저장될 수 있으며, 단일 호스트 쓰기 명령과 연관된 모든 데이터 청크들은 동시에 유지될 수 있다.
일단 모든 데이터 청크들이 페치되고 유지되면, 액티브 eSSD는 일관성 모드를 체크한다(513). 일 실시예에 따르면, 일관성 모드는 "완벽(perfect) " 또는 "거의 완벽(almost perfect)" 중 하나로 설정될 수 있다. 만일 액티브 eSSD의 일관성 모드가 "완벽"으로 설정되면, 액티브 eSSD는 액티브 eSSD와 관련된 모든 패시브 eSSD들로부터의 확인을 기다리고(514), 완료 큐 엔트리를 호스트로 전송한다(515). 만일 액티브 eSSD의 일관성 모드가 "거의 완벽"으로 설정된 경우, 액티브 eSSD는 연관된 패시브 eSSD들로부터의 확인을 기다리지 않고 완료 큐 엔트리를 호스트로 전송한다(515).
만일 수신된 호스트 명령이 네임 스페이스 생성 명령을 포함하는 관리 명령 또는 하나 이상의 연관된 패시브 eSSD들과 관련된 트림 명령인 경우(510), 액티브 eSSD는 수신된 명령을 실행하고(511), 명령을 해당 패시브 eSSD들에 전송한다(512). 일관성 모드에 따라서(513), 액티브 eSSD는 연관된 패시브 eSSD들로부터의 확인을 기다리거나 또는 기다리지 않고 완료 큐 엔트리를 호스트에 전송한다(515). 만일 수신된 호스트 명령이 호스트 쓰기 명령도 관리 명령도 아니면, 액티브 eSSD는 수신된 명령이 데이터 복제와 관련되지 않은 노말 명령인 것으로 취급하고, 그에 따라 노말 명령을 실행한다(516).
도 6은 일 실시예에 따른 예시적인 데이터 복제 프로세스를 도시한다. 섀시(660)의 이더넷 스위치(661)는 이더넷 연결을 통해 호스트로부터 호스트 명령들을 수신하고 수신된 호스트 명령들을 액티브 eSSD(670a)로 전송한다. 수신 된 호스트 명령들은 액티브 eSSD(670a)의 제출 큐들(SQs)에 배치될 수 있다. 제출 큐에 배치된 호스트 명령들은 호스트 쓰기 명령들, 관리자 명령들(예를 들면, 네임 스페이스 생성) 및 노말 명령들(예를 들면, 로그 페이지 가져 오기)을 포함할 수 있다.
제출 큐 내의 수신된 호스트 명령들 중에서 호스트 쓰기 명령을 처리할 때, 액티브 eSSD(670a)는 호스트에 RDMA 읽기 요청을 발행하여 호스트 쓰기 명령과 연관된 데이터를 페치한다. 액티브 eSSD(670a)는 호스트 쓰기 명령과 관련된 호스트 쓰기 데이터의 데이터 청크들 각각에 대한 일련의 RDMA 읽기 요청을 발행 할 수 있다. 각 데이터 청크에 대해, 액티브 eSSD(670a)는 데이터를 패시브 eSSD(670b)에 저장하기 위해 NAMESPACE.LBA 및 명령을 전송한다. 한편, 이더넷 스위치(661)는 액티브 eSSD(670a)로 향하는 인그레스 트래픽을 패시브 eSSD(670b)에 복제하도록 프로그램된다.
도 7은 일 실시예에 따라 패시브 eSSD에 의해서 호스트 명령들을 처리하는 플로우차트이다. 패시브 eSSD는 액티브 eSSD(701)로 향하는 모든 인그레스 트래픽을 수신한다(701). 인그레스 트래픽은 주로 호스트 명령들을 전달하는 RDMA 전송(RDMA SEND) 패킷들과 호스트 쓰기 명령들을 위한 호스트 데이터를 전달하는 RDMA 읽기 응답(RDMA READ RESPONSE) 패킷들을 포함한다. RDMA 패킷들 외에도 인그레스 트래픽은 다른 네트워크 트래픽을 더 포함할 수 있다. 패시브 eSSD는 수신된 인그레스 패킷들을 분석한다(702). 패시브 eSSD는 RDMA 읽기 응답 패킷들만을 유지하기 위해 패킷 필터 로직을 사용하여 수신된 모든 패킷들을 필터링한다(703). 패시브 eSSD는 RDMA 읽기 응답 패킷 이외의 인그레스 패킷들을 폐기한다(706). 패시브 eSSD는 RDMA 읽기 응답 패킷들을 RDMA 데이터 메시지들로 조합(assemble)하고(704), RDMA 읽기 응답 패킷들에 포함된 호스트 쓰기 데이터를 추출한다(705).
도 6을 참조하면, 패시브 eSSD는 RDMA 읽기 응답 패킷들을 RDMA 데이터 메시지들로 조합하고, 이들을 수신된 메시지 FIFO(672)에 배치한다. 수신된 메시지 FIFO(672)는 호스트 데이터 청크들을 패시브 eSSD(670b)의 스토리지 매체에 저장하기 전에 이들을 일시적으로 저장한다. 또한, 패시브 eSSD(670b)는 액티브 eSSD(670a)로부터 수신된 NAMESPACE.LBA 및 명령을 별도의 버퍼, (여기서는 LBA 및 명령 FIFO(671)이라 칭하는) 에 저장한다. LBA 및 명령 FIFO(671)에 저장된 NAMEPSACE.LBA 및 명령은 식별자(identifier) 또는 표시자(marker)를 사용하여 수신된 메시지 FIFO(672)에 배치된 대응하는 호스트 데이터를 가리킬 수 있다. 패시브 eSSD(670b)는 명령(예를 들어, 쓰기)과 대응하는 데이터 청크들을 사용하는 어드레스에 기초하여 호스트 데이터를 자체 스토리지 매체에 유지한다. 호스트 데이터가 유지된 후, 패시브 eSSD(670b)는 전용 통신 채널을 통해 액티브 eSSD(670a)에 확인을 전송할 수 있다.
도 8은 일 실시예에 따라 액티브 eSSD로부터 패시브 eSSD로 LBA 및 명령을 전달하기 위한 플로우차트이다. 수신된 각각의 데이터 청크에 대해, 액티브 eSSD는 관련된 LBA 및 명령을 연관된 패시브 eSSD 각각에 전송하고, 패시브 eSSD는 LBA 및 명령을 LBA 및 명령 FIFO에 배치한다(801). 패시브 eSSD는 수신된 인그레스 패킷들을 분석하여 RDMA 읽기 응답 패킷들에 포함된 호스트 쓰기 데이터만 수신된 메시지 FIFO에 배치한다(802). 액티브 eSSD로부터 수신된 LBA 및 명령을 사용하여, 패시브 eSSD는 스토리지 매체에 호스트 데이터를 유지시킨다(803). 패시브 eSSD는 액티브 eSSD에 의해서 명령된대로 데이터를 복제하는 프로세스를 반복한다.
액티브 eSSD에 의한 명령은 일반적으로 패시브 eSSD가 대응하는 데이터 청크를 제공된 NAMESPACE.LBA에 저장하도록 지시하는 "쓰기(Write)"이다. 액티브 eSSD에 데이터 청크를 쓰지 못하는 경우는 거의 없다. 이 경우 액티브 eSSD는 패시브 eSSD에 "폐기(Discard)"명령을 보낼 수 있다. 패시브 eSSD가 "폐기" 명령에 맞닥뜨리면 패시브 eSSD는 단순히 해당 데이터 청크를 팽개친다(throw). 액티브 eSSD가 패시브 eSSD로 전송할 수 있는 다른 명령들이 있을 수 있다. 이러한 명령들은 호스트 또는 액티브 eSSD 및 패시브 eSSD를 포함하는 섀시의 이더넷 스위치, BMC 또는 PCIe 스위치로부터 액티브 eSSD가 수신하는 네임스페이스 관리 명령(예를 들면, 네임스페이스 생성) 및 트림 명령과 같은 관리 명령일 수 있다. 관리 명령들에 대한 프로토콜은 본 개시의 범위를 벗어나지 않는 한 다른 호스트 명령들을 포함하도록 확장될 수 있다. 패시브 eSSD가 LBA 및 명령 FIFO에서 비-데이터(non-data) 명령을 만날 때, 패시브 eSSD는 수신된 메시지 FIFO에 영향을 주지 않고 비-데이터 명령을 실행할 수 있다.
명령들이 패시브 eSSD에 의해서 실행될 때, 패시브 eSSD는 선택적으로 액티브 eSSD에 완료 확인(completion confirmation)을 전송할 수 있다. 이 모드에서, 액티브 eSSD는 원래 호스트 명령에 대한 완료 큐 엔트리를 호스트에 보내기 전에 연관된 하나 이상의 패시브 eSSD들로부터 확인들을 기다린다. 이 동작 모드는 액티브 및 패시브 eSSD들이 항상 서로 일관되도록 한다.
데이터 청크 쓰기에 실패하거나, 명령을 실행하는 것이 실패하는 경우는 드물기 때문에, 액티브 eSSD는 연관된 패시브 eSSD(들)로부터의 확인을 기다리지 않을 수도 있다. 관련된 패시브 eSSD 중 어느 것이 데이터 쓰기에 실패하거나 명령을 실행할 수 없는 경우, 연관된 패시브 eSSD들 중 하나에서 오류가 발생할 수 있다. 일 실시예에 따르면, 패시브 eSSD는 액티브 eSSD에 의해 명령된대로 호스트 데이터를 복제하는 것에 대한 오류를 섀시의 BMC에 보고할 수 있다. BMC는 예외 처리 및 일관성 상태 복구를 위해 적절한 조치를 취할 수 있다.
도 9는 일 실시예에 따른 패시브 eSSD에 의한 데이터 복제를 처리하기 위한 플로우차트이다. BMC는 액티브 eSSD를 구성하고, 액티브 eSSD에 하나 이상의 패시브 eSSD를 연관시킨다.
패시브 eSSD는 LBA 및 명령 FIFO 내 엔트리들을 검사하고(900), LBA 및 명령 FIFO로부터 다음 명령을 가져온다(901). 명령이 쓰기 명령이면(902), 패시브 eSSD는 NAMESPACE.LBA에 근거하여 쓰기 명령과 관련된 데이터 청크를 유지한다(903). 명령이 쓰기 명령이 아니면(902), 패시브 eSSD는 명령이 폐기 명령인지를 판별한다(906). 패시브 eSSD는 폐기 명령에 응답하여 데이터 청크를 폐기한다(907). 명령이 폐기 명령이 아닌 경우(906), 패시브 eSSD는 명령이 관리 명령(909)인지 좀 더 판별하고, 관리 명령을 실행한다(910). 명령이 관리 명령이 아니면(909), 패시브 eSSD는 BMC(911)에게 경고하고, 에러 상태를 보고한다(912).
패시브 eSSD의 일관성 모드가 완벽(perfect) 모드이면(904), 패시브 eSSD는 확인을 액티브 eSSD에 전송한다(905). 패시브 eSSD의 일관성 모드가 거의 완벽한((almost-perfect) 모드(904)이면 패시브 eSSD는 에러가 있는지 확인한다(908). 에러가 발생하면 패시브 eSSD는 에러를 BMC에 보고한다(911). 에러가 없다면, 패시브 eSSD는 LBA 및 명령 FIFO을 검사하고(900), LBA 및 명령 FIFO에서 다음 명령을 실행한다(901).
일 실시예에 따르면, BMC는 액티브 eSSD 및 패시브 eSSD의 건강 상태(health status)를 주기적으로 모니터링 할 수 있다. 예를 들어, BMC는 건강 상태 모니터링을 위해 NVMe-MI 프로토콜과 특히 NVMe-MI "Health Status Poll" 명령을 사용한다. BMC는 관리 목적으로 PCIe 인터페이스 또는 SMBus 인터페이스를 사용할 수 있다. 액티브 eSSD 또는 패시브 eSSD 중 하나인 eSSD는 여러 가지 이유로 섀시에서 빠져 나올 수 있다. BMC는 주기적으로 섀시 내 각 eSSD로부터 "현재(Present)" 신호를 수신한다. eSSD가 빠져 나가는 경우, BMC는 이 경우에 대한 보고서를 수신한다.
BMC가 현재의 액티브 eSSD가 실패했거나 섀시에 더 이상 존재하지 않는다고 판별하면, BMC는 오류 해결(failover) 동작을 개시할 수 있다. 우선, BMC는 액티브 모드에서 섀시의 패시브 eSSD 또는 노말 eSSD 중 하나를 프로그램한다. 필요한 경우, BMC는 섀시에 있는 다른 eSSD를 새로운 패시브 eSSD로 선택할 수 있다. BMC는 이더넷 스위치를 다시 프로그램하여 새로운 액티브 eSSD의 인그레스 트래픽을 복제한다.
도 10은 일 실시예에 따른, 오류 해결 동작을 위한 플로우차트이다. BMC는 액티브 eSSD가 실패했거나 섀시로부터 빠졌는지를 검출할 수 있다(1000). BMC는 섀시로부터 새로운 액티브 eSSD)를 선택한다(1001). 일 실시예에 따르면, 섀시 내의 패시브 eSSD들 중 하나 또는 노말 eSSD가 새로운 액티브 eSSD로 변환될 수 있다. 그런 다음 BMC는 새로운 패시브 eSSD가 필요한 지의 여부를 판별한다(1002). 새로운 패시브 eSSD가 요구되면(1002), BMC는 섀시에서 eSSD를 선택하고(1005), eSSD를 패시브 eSSD로 프로그램하며, 그리고 eSSD를 새로운 액티브 eSSD와 연관시킨다(1006). 패시브 eSSD가 새로운 액티브 eSSD로 변환되면 호스트 데이터의 사본(copies) 수가 줄어들 수 있다. 따라서 새로운 패시브 eSSD는 섀시 내 존재하는 노말 eSSD 중 하나로부터 구성될 수 있다. 대안으로, 다른 액티브 eSSD와 연관된 패시브 eSSD는 액티브 eSSD로 변환될 수 있다. BMC는 섀시의 이더넷 스위치를 프로그램하고(1003), 새로운 액티브 eSSD를 프로그램한다(1004).
데이터 복제 셋업(setup)에서, 복제된 데이터 복사본을 일관성 있게 유지하는 것이 중요하다. 즉, eSSD들의 세트(액티브 eSSD 및 관련된 패시브 eSSD들)는 서로 일관되어야 한다. 일관되지 않으면, 어떤 데이터 복사본이 올바른지 판단할 수 없고, 이러한 상황이 발생하면 데이터가 손실 될 수 있다. 일부 사용 케이스들은 특정 데이터 손실 이벤트를 허용하지만, 대부분의 사용 케이스들은 데이터 손실을 예상하지 않는다.
일 실시예에 따르면, 데이터 복제를 제공하는 본 시스템 및 방법은 액티브 eSSD 및 관련된 패시브 eSSD들 간의 완벽한 일관성을 보장할 수 있고, 데이터 손실은 없다. 경우에 따라, 드문 일이지만 일부 데이터 손실을 허용할 수 있는 경우, 사용자 애플리케이션은 더 나은 레이턴시를 달성할 수 있다. 그러한 데이터 손실의 가능성은 매우 낮을 수 있다.
사용 케이스에 기초하여, BMC는 데이터 복제의 일관성 모드를 복제 설정의 일부로서 완벽한 일관성 모드 또는 거의-완벽한 일관성 모드로 설정할 수 있다. 완벽한 일관성 모드에서 액티브 eSSD는 완료 큐 엔트리를 호스트에 보내기 전에 연관된 모든 패시브 eSSD들로부터의 확인을 기다린다. 완벽한 일관성 모드에서 사용자 데이터의 사본을 유지한 후, 액티브 eSSD는 모든 패시브 eSSD들이 호스트 데이터를 성공적으로 유지하는 것을 보장하기 위해 호스트 명령 완료 큐 엔트리를 즉시 보내지 않을 수 있다. 패시브 eSSD들로부터 확인을 기다리는 것은 호스트 쓰기 액세스들에 약간의 레이턴시를 추가할 수 있다. 액티브 및 패시브 eSSD들은 동시에 사용자 데이터를 수신하므로, 패시브 eSSD로부터의 확인으로 인한 추가 레이턴시는 중요하지 않다. 지연은 주로 패시브 eSSD 확인이 액티브 eSSD에 도달하는 데 걸리는 시간에 대응할 수 있다. 액티브 eSSD와 패시브 eSSD 사이의 전용 통신 채널은 로컬이고 전용이며, 따라서 이러한 eSSD 사이의 통신 시간은 최소화될 것이다.
액티브 eSSD가 빠져나가거나 갑자기 비-동작 상태로 되면, 제출 큐에 일부 호스트 쓰기 명령들이 있을 수 있다. 이 경우, 액티브 eSSD는 부분 쓰기 명령들에 대한 명령 완료 큐 엔트리들을 전송하지 않을 수 있다. 따라서 호스트 관점에서 데이터 무결성을 유지할 수 있다. 호스트는 실패한 쓰기 명령들을 다른 스토리지 유닛으로 재발행하거나 오류 해결 스위칭을 기다린다.
거의-완벽한 일관성 모드에서, 액티브 eSSD는 연관된 패시브 eSSD들로부터의 확인을 기다리지 않는다. 액티브 eSSD가 자체 쓰기 데이터 사본을 유지하자 마자, 액티브 eSSD는 명령 완료를 호스트에 전송한다. 그 결과, 완벽한 일관성 모드와 비교할 때 호스트에 대한 레이턴시가 향상된다. 이 모드에 있는 동안 액티브 eSSD가 빠져나가거나 비-동작 상태로 되면, 일부 호스트 쓰기 명령들이 실행 중일 수 있다. 명령 완료들이 이미 전송되지 않은 모든 호스트 쓰기 명령들에 대해서 데이터 무결성을 유지할 수 있다. 호스트는 대체 스토리지 유닛에 쓰기 명령들을 다시 발행할 수 있다. 하나의 특수한 경우는 액티브 eSSD가 호스트에 쓰기 명령 완료를 성공적으로 보냈지만, 어떤 이유로 패시브 eSSD가 그 데이터를 유지하지 못하는 것이다. 이 특수한 경우, 호스트는 그 데이터가 성공적으로 쓰기 되었지만 데이터의 액티브 복사본을 더 이상 사용할 수 없으며, 데이터의 패시브 복사본의 유지는 실패한 것으로 판별한다. 쓰기 명령 완료를 전송한 직후에 액티브 eSSD가 빠져나가거나 비-동작 상태로 되고 패시브 eSSD가 해당 시점에 연관된 쓰기 데이터를 유지시키지 못할 확률은 매우 적다. 거의-완벽한 일관성 모드가 약간 더 나은 레이턴시를 제공하지만 작은 데이터 손실 위험이 있다. 이러한 상황을 용인할 수 있는 애플리케이션의 경우, 거의-완벽한 일관성 모드가 실행 가능한 옵션이 될 수 있다.
일 실시 예에 따르면, 방법은: 섀시에 포함된 복수의 솔리드 스테이트 드라이브(eSSD)들을 포함하는 데이터 복제 시스템을 제공하고, 상기 섀시는 상기 복수의 eSSD들 각각에 다운링크를 제공하기 위한 패브릭 스위치 및 상기 패브릭 스위치와 상기 복수의 eSSD들을 제어하기 위한 베이스보드 관리 컨트롤러(BMC)를 포함하며; 상기 BMC를 사용하여, 상기 복수의 eSSD들 중 하나를 액티브 eSSD로 구성하고; 상기 BMC를 사용하여, 상기 복수의 eSSD들 중 하나 이상을 패시브 eSSD들로 구성하고; 상기 BMC를 사용하여, 상기 패브릭 스위치를 프로그램해서 상기 액티브 eSSD로 향하는 패킷들을 상기 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들 모두로 전송하고; 상기 액티브 eSSD에서, 상기 호스트로부터의 호스트 데이터 쓰기 명령을 수신하고; 상기 액티브 eSSD로부터의 상기 호스트 데이터에 대응하는 어드레스 및 명령을 상기 하나 이상의 패시브 eSSD들로 전송하고; 상기 액티브 eSSD에 상기 호스트 데이터를 저장하고; 그리고 상기 액티브 eSSD로부터 수신된 어드레스 및 명령 그리고 상기 패브릭 스위치에 의해 전송된 패킷들에서 수신된 상기 호스트 데이터를 사용하여 상기 하나 이상의 패시브 eSSD들에 상기 호스트 데이터의 복사본을 저장하는 것을 포함한다.
상기 액티브 eSSD는 상기 호스트에 의해서 발견 가능하고, 상기 하나 이상의 패시브 eSSD들은 상기 호스트에 의해서 발견 가능하지 않을 수 있다.
상기 방법은, 상기 액티브 eSSD와 상기 하나 이상의 패시브 eSSD들 사이의 전용 통신 채널을 설정하여 상기 액티브 eSSD로부터의 상기 어드레스 및 상기 명령을 상기 하나 이상의 패시브 eSSD들로 전송하는 것을 더 포함한다.
상기 전용 통신 채널은 상기 섀시 내 상기 패브릭 스위치 또는 PCIe 스위치를 통해 설정될 수 있다.
상기 방법은: 상기 액티브 eSSD를 사용하여, 상기 호스트 데이터 쓰기 명령에 응답해서 RDMA(remote direct memory access) 읽기 요청을 상기 호스트로 발행하는 것; 및 상기 호스트로부터의 상기 호스트 데이터를 하나 이상의 RDMA 읽기 응답 패킷들로 수신하는 것을 더 포함할 수 있다.
상기 RDMA 읽기 응답 패킷들은 상기 호스트 데이터의 데이터 청크들을 포함할 수 있다.
상기 하나 이상의 패시브 eSSD들 각각은 상기 패브릭 스위치로부터 수신된 패킷들 중 상기 RDMA 읽기 응답 패킷들을 제외한 나머지 패킷들을 폐기할 수 있다.
상기 방법은, 일관성 모드에 근거해서 상기 하나 이상의 패시브 eSSD들로부터 응답들 수신한 후 또는 상기 하나 이상의 패시브 eSSD들로부터의 응답을 수신하지 않고 상기 호스트 데이터를 상기 액티브 eSSD에 저장한 후 완료 큐 엔트리를 상기 호스트로 전송하는 것을 더 포함할 수 있다.
상기 하나 이상의 패시브 eSSD들 각각은 상기 어드레스 및 상기 명령을 저장하기 위한 제1 버퍼 및 상기 호스트 데이터의 데이터 청크들을 저장하기 위한 제2 버퍼를 포함할 수 있다.
상기 방법은, 상기 액티브 eSSD와 관련된 에러를 검출하고; 상기 섀시 내 상기 복수의 eSSD들 중 하나의 eSSD를 선택하고; 상기 선택된 eSSD를 새로운 액티브 eSSD로 구성하고; 새로운 패시브 eSSD가 필요한지 판별하고; 상기 새로운 패시브 eSSD를 구성하고; 그리고 상기 새로운 액티브 eSSD 및 상기 적어도 하나의 패시브 eSSD들을 연관 짓도록 패브릭 스위치를 프로그램하는 것을 더 포함할 수 있다.
다른 실시예에 따르면, 데이터 복제 시스템은 복수의 eSSD들, 패브릭 스위치 및 베이스보드 관리 컨트롤러(BMC)를 포함하는 섀시를 포함한다. 상기 패브릭 스위치는 상기 복수의 eSSD들 각각에 다운링크를 제공하도록 구성되고, 상기 BMC는 상기 패브릭 스위치 및 상기 복수의 eSSD들을 제어하도록 구성된다. 상기 BMC는 상기 복수의 eSSD들 중 하나를 액티브 eSSD로 구성하고, 상기 복수의 eSSD들 중 하나 이상을 패시브 eSSD들로 구성하고, 상기 패브릭 스위치를 프로그램해서 상기 액티브 eSSD로 향하는 패킷들을 상기 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들 모두로 전송한다. 상기 액티브 eSSD는 상기 호스트로부터 수신된 호스트 데이터 쓰기 명령에 응답해서 호스트 데이터를 저장하도록 구성된다. 상기 액티브 eSSD는 상기 호스트 데이터에 대응하는 어드레스 및 명령을 상기 하나 이상의 패시브 eSSD들로 전송하도록 더 구성된다. 상기 하나 이상의 패시브 eSSD들 각각은 상기 액티브 eSSD로부터 수신된 어드레스 및 명령 그리고 상기 패브릭 스위치에 의해 전송된 패킷들에서 수신된 상기 호스트 데이터를 사용하여 상기 호스트 데이터의 복사본을 저장하도록 구성된다.
상기 액티브 eSSD는 상기 호스트에 의해서 발견 가능하고, 상기 하나 이상의 패시브 eSSD들은 상기 호스트에 의해서 발견 가능하지 않을 수 있다.
상기 어드레스 및 상기 명령을 전송하기 위해 상기 액티브 eSSD와 상기 하나 이상의 패시브 eSSD들 사이에 전용 통신 채널이 형성될 수 있다.
상기 전용 통신 채널은 상기 섀시 내 상기 패브릭 스위치 또는 PCIe 스위치를 통해 설정될 수 있다.
상기 액티브 eSSD는, 상기 호스트 데이터 쓰기 명령에 응답해서 RDMA(remote direct memory access) 읽기 요청을 상기 호스트로 발행하고, 그리고 상기 호스트로부터의 상기 호스트 데이터를 하나 이상의 RDMA 읽기 응답 패킷들로 수신하도록 더 구성될 수 있다.
상기 RDMA 읽기 응답 패킷들은 상기 호스트 데이터의 데이터 청크들을 포함한다.
상기 하나 이상의 패시브 eSSD들 각각은 상기 패브릭 스위치로부터 수신된 패킷들 중 상기 RDMA 읽기 응답 패킷들을 제외한 나머지 패킷들을 폐기할 수 있다.
상기 액티브 eSSD는, 일관성 모드에 근거해서 상기 하나 이상의 패시브 eSSD들로부터 응답들 수신한 후 또는 상기 하나 이상의 패시브 eSSD들로부터의 응답을 수신하지 않고 상기 호스트 데이터를 상기 액티브 eSSD에 저장한 후 완료 큐 엔트리를 상기 호스트로 전송하도록 더 구성될 수 있다.
상기 하나 이상의 패시브 eSSD들 각각은 상기 어드레스 및 상기 명령을 저장하기 위한 제1 버퍼 및 상기 호스트 데이터의 데이터 청크들을 저장하기 위한 제2 버퍼를 포함할 수 있다.
상기 BMC는, 상기 액티브 eSSD와 관련된 에러를 검출하고, 상기 섀시 내 상기 복수의 eSSD들 중 하나의 eSSD를 선택하고, 상기 선택된 eSSD를 새로운 액티브 eSSD로 구성하고, 새로운 패시브 eSSD가 필요한지 판별하고, 상기 새로운 패시브 eSSD를 구성하고, 그리고 상기 새로운 액티브 eSSD, 하나 이상의 패시브 eSSD들 및 상기 새로운 패시브 eSSD가 연관되도록 패브릭 스위치를 프로그램하도록 구성될 수 있다.
상기 예시적인 실시예들은 이더넷 SSD에서 데이터 복제를 제공하기 위한 시스템 및 방법을 구현하는 다양한 실시예들을 설명하기 위해 설명되었다. 개시된 예시적인 실시예들로부터의 다양한 변형들 및 수정들은 당업자에 의해 행해질 수 있다. 본 발명의 사상 및 범위는 첨부된 청구범위에 의해 나타내어 져야 한다.
100: NVMe-oF 시스템
110: 호스트
150: 이더넷
160: 섀시
161: 이더넷 스위치
162: 베이스보드 관리 컨트롤러(BMC)
163: PCIe 스위치
164: 관리 인터페이스
165: 미드플레인
170: eSSD들

Claims (20)

  1. 섀시에 포함된 복수의 솔리드 스테이트 드라이브(eSSD)들을 포함하는 데이터 복제 시스템을 제공하는 단계;
    상기 섀시는 상기 복수의 eSSD들 각각에 다운링크를 제공하기 위한 패브릭 스위치 및 상기 패브릭 스위치와 상기 복수의 eSSD들을 제어하기 위한 베이스보드 관리 컨트롤러(BMC)를 포함하며;
    상기 BMC를 사용하여, 상기 복수의 eSSD들 중 하나를 액티브 eSSD로 구성하는 단계;
    상기 BMC를 사용하여, 상기 복수의 eSSD들 중 하나 이상을 하나 이상의 패시브 eSSD들로 구성하는 단계;
    상기 BMC를 사용하여, 상기 패브릭 스위치를 프로그램해서 상기 액티브 eSSD로 향하는 패킷들을 상기 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들 모두에게로 전송하는 단계;
    상기 액티브 eSSD에서, 호스트로부터의 호스트 데이터 쓰기 명령을 수신하는 단계;
    상기 액티브 eSSD로부터의 호스트 데이터에 대응하는 어드레스 및 명령을 상기 하나 이상의 패시브 eSSD들로 전송하는 단계;
    상기 액티브 eSSD에 상기 호스트 데이터를 저장하는 단계; 그리고
    상기 액티브 eSSD로부터 수신된 어드레스 및 명령 그리고 상기 패브릭 스위치에 의해 전송된 패킷들에서 수신된 상기 호스트 데이터를 사용하여 상기 하나 이상의 패시브 eSSD들에 상기 호스트 데이터의 복사본을 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 액티브 eSSD는 상기 호스트에 의해서 발견 가능하고, 상기 하나 이상의 패시브 eSSD들은 상기 호스트에 의해서 발견 가능하지 않은 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 액티브 eSSD와 상기 하나 이상의 패시브 eSSD들 사이의 전용 통신 채널을 설정하여 상기 액티브 eSSD로부터의 상기 어드레스 및 상기 명령을 상기 하나 이상의 패시브 eSSD들로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 3 항에 있어서,
    상기 전용 통신 채널은 상기 섀시 내 상기 패브릭 스위치 또는 PCIe 스위치를 통해 설정되는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서,
    상기 액티브 eSSD를 사용하여, 상기 호스트 데이터 쓰기 명령에 응답해서 RDMA(remote direct memory access) 읽기 요청을 상기 호스트로 발행하는 단계; 및
    상기 호스트로부터의 상기 호스트 데이터를 하나 이상의 RDMA 읽기 응답 패킷들로 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서,
    상기 RDMA 읽기 응답 패킷들은 상기 호스트 데이터의 데이터 청크들을 포함하는 것을 특징으로 하는 방법.
  7. 제 5 항에 있어서,
    상기 하나 이상의 패시브 eSSD들 각각은 상기 패브릭 스위치로부터 수신된 패킷들 중 상기 RDMA 읽기 응답 패킷들을 제외한 나머지 패킷들을 폐기하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서,
    일관성 모드에 근거해서 상기 하나 이상의 패시브 eSSD들로부터 응답들 수신한 후 또는 상기 하나 이상의 패시브 eSSD들로부터의 응답을 수신하지 않고 상기 호스트 데이터를 상기 액티브 eSSD에 저장한 후 완료 큐 엔트리를 상기 호스트로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서,
    상기 하나 이상의 패시브 eSSD들 각각은 상기 어드레스 및 상기 명령을 저장하기 위한 제1 버퍼 및 상기 호스트 데이터의 데이터 청크들을 저장하기 위한 제2 버퍼를 포함하는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서,
    상기 액티브 eSSD와 관련된 에러를 검출하는 단계;
    상기 섀시 내 상기 복수의 eSSD들 중 하나의 eSSD를 선택하는 단계;
    상기 선택된 eSSD를 새로운 액티브 eSSD로 구성하는 단계;
    새로운 패시브 eSSD가 필요한지 판별하는 단계;
    상기 새로운 패시브 eSSD를 구성하는 단계; 및
    상기 새로운 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들을 연관 짓도록 패브릭 스위치를 프로그램하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 복수의 eSSD들, 패브릭 스위치 및 베이스보드 관리 컨트롤러(BMC)를 포함하는 섀시를 포함하되,
    상기 패브릭 스위치는 상기 복수의 eSSD들 각각에 다운링크를 제공하도록 구성되고, 상기 BMC는 상기 패브릭 스위치 및 상기 복수의 eSSD들을 제어하도록 구성되며,
    상기 BMC는 상기 복수의 eSSD들 중 하나를 액티브 eSSD로 구성하고, 상기 복수의 eSSD들 중 하나 이상을 하나 이상의 패시브 eSSD들로 구성하고, 상기 패브릭 스위치를 프로그램해서 상기 액티브 eSSD로 향하는 패킷들을 상기 액티브 eSSD 및 상기 하나 이상의 패시브 eSSD들 모두에게로 전송하며,
    상기 액티브 eSSD는 호스트로부터 수신된 호스트 데이터 쓰기 명령에 응답해서 호스트 데이터를 저장하도록 구성되고,
    상기 액티브 eSSD는 상기 호스트 데이터에 대응하는 어드레스 및 명령을 상기 하나 이상의 패시브 eSSD들로 전송하도록 더 구성되며,
    상기 하나 이상의 패시브 eSSD들 각각은 상기 액티브 eSSD로부터 수신된 어드레스 및 명령 그리고 상기 패브릭 스위치에 의해 전송된 패킷들에서 수신된 상기 호스트 데이터를 사용하여 상기 호스트 데이터의 복사본을 저장하도록 구성되는 것을 특징으로 하는 데이터 복제 시스템.
  12. 제 11 항에 있어서,
    상기 액티브 eSSD는 상기 호스트에 의해서 발견 가능하고, 상기 하나 이상의 패시브 eSSD들은 상기 호스트에 의해서 발견 가능하지 않은 것을 특징으로 하는 데이터 복제 시스템.
  13. 제 11 항에 있어서,
    상기 어드레스 및 상기 명령을 전송하기 위해 상기 액티브 eSSD와 상기 하나 이상의 패시브 eSSD들 사이에 전용 통신 채널이 형성되는 것을 특징으로 하는 데이터 복제 시스템.
  14. 제 13 항에 있어서,
    상기 전용 통신 채널은 상기 섀시 내 상기 패브릭 스위치 또는 PCIe 스위치를 통해 설정되는 것을 특징으로 하는 데이터 복제 시스템.
  15. 제 11 항에 있어서,
    상기 액티브 eSSD는, 상기 호스트 데이터 쓰기 명령에 응답해서 RDMA(remote direct memory access) 읽기 요청을 상기 호스트로 발행하고, 그리고
    상기 호스트로부터의 상기 호스트 데이터를 하나 이상의 RDMA 읽기 응답 패킷들로 수신하도록 더 구성되는 것을 특징으로 데이터 복제 시스템.
  16. 제 15 항에 있어서,
    상기 RDMA 읽기 응답 패킷들은 상기 호스트 데이터의 데이터 청크들을 포함하는 것을 특징으로 하는 데이터 복제 시스템.
  17. 제 15 항에 있어서,
    상기 하나 이상의 패시브 eSSD들 각각은 상기 패브릭 스위치로부터 수신된 패킷들 중 상기 RDMA 읽기 응답 패킷들을 제외한 나머지 패킷들을 폐기하는 것을 특징으로 하는 데이터 복제 시스템.
  18. 제 11 항에 있어서,
    상기 액티브 eSSD는, 일관성 모드에 근거해서 상기 하나 이상의 패시브 eSSD들로부터 응답들 수신한 후 또는 상기 하나 이상의 패시브 eSSD들로부터의 응답을 수신하지 않고 상기 호스트 데이터를 상기 액티브 eSSD에 저장한 후 완료 큐 엔트리를 상기 호스트로 전송하도록 더 구성되는 것을 특징으로 하는 데이터 복제 시스템.
  19. 제 11 항에 있어서,
    상기 하나 이상의 패시브 eSSD들 각각은 상기 어드레스 및 상기 명령을 저장하기 위한 제1 버퍼 및 상기 호스트 데이터의 데이터 청크들을 저장하기 위한 제2 버퍼를 포함하는 것을 특징으로 하는 데이터 복제 시스템.
  20. 제 11 항에 있어서,
    상기 BMC는,
    상기 액티브 eSSD와 관련된 에러를 검출하고,
    상기 섀시 내 상기 복수의 eSSD들 중 하나의 eSSD를 선택하고,
    상기 선택된 eSSD를 새로운 액티브 eSSD로 구성하고,
    새로운 패시브 eSSD가 필요한지 판별하고,
    상기 새로운 패시브 eSSD를 구성하고, 그리고
    상기 새로운 액티브 eSSD, 적어도 하나의 패시브 eSSD들 및 상기 새로운 패시브 eSSD를 연관시키도록 패브릭 스위치를 프로그램하도록 더 구성되는 것을 특징으로 하는 데이터 복제 시스템.
KR1020180001859A 2017-03-31 2018-01-05 Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법 KR102457091B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762480113P 2017-03-31 2017-03-31
US62/480,113 2017-03-31
US15/617,925 2017-06-08
US15/617,925 US10691368B2 (en) 2017-03-31 2017-06-08 System and method for providing data replication in NVMe-oF ethernet SSD

Publications (2)

Publication Number Publication Date
KR20180111483A true KR20180111483A (ko) 2018-10-11
KR102457091B1 KR102457091B1 (ko) 2022-10-20

Family

ID=63670633

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180001859A KR102457091B1 (ko) 2017-03-31 2018-01-05 Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US10691368B2 (ko)
JP (1) JP6955466B2 (ko)
KR (1) KR102457091B1 (ko)
CN (1) CN108696569B (ko)
TW (1) TWI734890B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10764180B1 (en) * 2018-02-20 2020-09-01 Toshiba Memory Corporation System and method for storing data using software defined networks
US10607712B1 (en) 2018-09-28 2020-03-31 Toshiba Memory Corporation Media error reporting improvements for storage drives
US10635355B1 (en) * 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives
US11366610B2 (en) * 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11409678B2 (en) * 2019-02-04 2022-08-09 American Megatrends International, Llc Auto-provisioning and auto-installation of server SAN target
EP3938880A1 (en) * 2019-03-14 2022-01-19 Marvell Asia Pte, Ltd. Ethernet enabled solid state drive (ssd)
CN113767360A (zh) 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 在驱动器级别处对非易失性存储器联网消息的终止
US11200193B2 (en) 2019-03-14 2021-12-14 Marvell Asia Pte, Ltd. Transferring data between solid state drives (SSDs) via a connection between the SSDs
US11762798B2 (en) 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US11768613B2 (en) 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US10942846B2 (en) * 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
JP7347157B2 (ja) 2019-11-22 2023-09-20 富士通株式会社 情報処理システム、ストレージ制御プログラム、及び、ストレージ制御装置
US20210294702A1 (en) * 2021-06-04 2021-09-23 Intel Corporation High-availability memory replication in one or more network devices
US11726880B1 (en) * 2022-02-18 2023-08-15 Dell Products L.P. Fault tolerance and debug analysis during a boot process

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246423A1 (en) * 2011-03-23 2012-09-27 Christopher John Farey Method and System for Data Replication
US20130117621A1 (en) * 2004-02-13 2013-05-09 Nakul Pratap Saraiya Scsi transport for servers
KR20150047785A (ko) * 2013-10-25 2015-05-06 삼성전자주식회사 서버 시스템 및 스토리지 시스템
US20150261720A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Accessing remote storage devices using a local bus protocol
US20160299704A1 (en) * 2015-04-09 2016-10-13 Sandisk Enterprise Ip Llc Multi-Package Segmented Data Transfer Protocol for Solid-State Drive Applications

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337788A (ja) * 2000-05-24 2001-12-07 Hitachi Ltd 記憶装置の2重化方式及び記憶装置の2重化での障害回復方法
US10572188B2 (en) 2008-01-12 2020-02-25 Hewlett Packard Enterprise Development Lp Server-embedded distributed storage system
CN101520742B (zh) * 2009-03-26 2011-12-21 成都市华为赛门铁克科技有限公司 固态硬盘数据备份方法、系统和相应的固态硬盘
JP2011209892A (ja) * 2010-03-29 2011-10-20 Fujitsu Ltd ストレージシステム、ストレージシステムの制御方法、スイッチ装置およびストレージ装置
US9104326B2 (en) * 2010-11-15 2015-08-11 Emc Corporation Scalable block data storage using content addressing
US20120254508A1 (en) * 2011-04-04 2012-10-04 International Business Machines Corporation Using the Short Stroked Portion of Hard Disk Drives for a Mirrored Copy of Solid State Drives
US8942139B2 (en) * 2011-12-07 2015-01-27 International Business Machines Corporation Support for converged traffic over ethernet link aggregation (LAG)
US9015525B2 (en) * 2012-06-19 2015-04-21 Lsi Corporation Smart active-active high availability DAS systems
US9986028B2 (en) * 2013-07-08 2018-05-29 Intel Corporation Techniques to replicate data between storage servers
US9471259B2 (en) 2014-01-28 2016-10-18 Netapp, Inc. Shared storage architecture
CN103777905B (zh) * 2014-02-14 2017-04-12 华中科技大学 一种软件定义的固态盘融合存储方法
JP2017512350A (ja) * 2014-03-08 2017-05-18 ディアマンティ インコーポレイテッド 集中型ネットワーキング及びストレージのための方法及びシステム
US9811677B2 (en) * 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9760314B2 (en) 2015-05-29 2017-09-12 Netapp, Inc. Methods for sharing NVM SSD across a cluster group and devices thereof
KR102403489B1 (ko) * 2015-07-10 2022-05-27 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
CN106339343B (zh) * 2015-07-10 2021-03-26 爱思开海力士有限公司 快速外设组件互联卡
KR102387973B1 (ko) * 2015-12-01 2022-04-19 삼성전자주식회사 이중화 저장 장치, 그것을 포함한 서버 시스템 및 그것의 동작 방법
CN206039500U (zh) * 2016-07-23 2017-03-22 西安飞铭电子科技有限公司 一种多用户实时网络仿真系统
US10326613B2 (en) * 2017-04-18 2019-06-18 Arista Networks, Inc. Method and system for processing spanning tree protocol (STP) state in a multichassis link aggregation (MLAG) domain

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117621A1 (en) * 2004-02-13 2013-05-09 Nakul Pratap Saraiya Scsi transport for servers
US20120246423A1 (en) * 2011-03-23 2012-09-27 Christopher John Farey Method and System for Data Replication
KR20150047785A (ko) * 2013-10-25 2015-05-06 삼성전자주식회사 서버 시스템 및 스토리지 시스템
US20150261720A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Accessing remote storage devices using a local bus protocol
US20160299704A1 (en) * 2015-04-09 2016-10-13 Sandisk Enterprise Ip Llc Multi-Package Segmented Data Transfer Protocol for Solid-State Drive Applications

Also Published As

Publication number Publication date
TWI734890B (zh) 2021-08-01
US20180284989A1 (en) 2018-10-04
US10691368B2 (en) 2020-06-23
CN108696569A (zh) 2018-10-23
CN108696569B (zh) 2022-01-11
JP2018173949A (ja) 2018-11-08
KR102457091B1 (ko) 2022-10-20
JP6955466B2 (ja) 2021-10-27
TW201840149A (zh) 2018-11-01

Similar Documents

Publication Publication Date Title
KR102457091B1 (ko) Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법
US11249857B2 (en) Methods for managing clusters of a storage system using a cloud resident orchestrator and devices thereof
US10162567B2 (en) Computer system
US10423332B2 (en) Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands
US9465547B2 (en) Processing input/output requests using proxy and owner storage systems
JP2007207007A (ja) ストレージシステム、ストレージコントローラ及び計算機システム
JP2007072571A (ja) 計算機システム及び管理計算機ならびにアクセスパス管理方法
US20160217049A1 (en) Fibre Channel Failover Based on Fabric Connectivity
US11606429B2 (en) Direct response to IO request in storage system having an intermediary target apparatus
JP2017010390A (ja) ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
US9940019B2 (en) Online migration of a logical volume between storage systems
US10782889B2 (en) Fibre channel scale-out with physical path discovery and volume move
US11531498B2 (en) Peer storage device messaging over control bus
US20230393772A1 (en) Data Migration via Data Storage Device Peer Channel
WO2021012169A1 (zh) 一种提高存储系统可靠性的方法和相关装置
US20200226097A1 (en) Sand timer algorithm for tracking in-flight data storage requests for data replication
US20160154608A1 (en) Unit attention processing in proxy and owner storage systems
US10855522B2 (en) Dual port storage device emulation
US10235317B1 (en) Fabric management system and method
US10503678B1 (en) Fabric management system and method
US9524115B2 (en) Impersonating SCSI ports through an intermediate proxy
WO2022267909A1 (zh) 一种数据读写方法以及相关装置
US10324880B1 (en) Fabric management system and method
US10235316B1 (en) Fabric management system and method
JP2010033379A (ja) 仮想化システム及び仮想化の復旧方法

Legal Events

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