KR20180123427A - 스토리지 오프로드 엔진 내부의 패브릭 스위칭 - Google Patents

스토리지 오프로드 엔진 내부의 패브릭 스위칭 Download PDF

Info

Publication number
KR20180123427A
KR20180123427A KR1020180034451A KR20180034451A KR20180123427A KR 20180123427 A KR20180123427 A KR 20180123427A KR 1020180034451 A KR1020180034451 A KR 1020180034451A KR 20180034451 A KR20180034451 A KR 20180034451A KR 20180123427 A KR20180123427 A KR 20180123427A
Authority
KR
South Korea
Prior art keywords
ssd
storage
data
command
offload engine
Prior art date
Application number
KR1020180034451A
Other languages
English (en)
Other versions
KR102295497B1 (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 KR20180123427A publication Critical patent/KR20180123427A/ko
Application granted granted Critical
Publication of KR102295497B1 publication Critical patent/KR102295497B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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
    • 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/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
    • 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
    • H04L49/00Packet switching elements
    • H04L49/40Constructional details, e.g. power supply, mechanical construction or backplane
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Programmable Controllers (AREA)
  • Information Transfer Systems (AREA)

Abstract

개시된 일 실시 예에 따른 이더넷 SSD(eSSD) 시스템 및 대응하는 방법에 의해, 스토리지 기능과 관련된 향상된 대기 시간 및 처리량이 제공될 수 있다. eSSD 시스템에는 적어도 하나의 1차 SSD, 적어도 하나의 2차 SSD, 이더넷 스위치, 및 스토리지-오프로드 엔진(SoE) 컨트롤러가 포함된다. 스토리지-오프로드 엔진 컨트롤러는 복제 모드 및/또는 삭제-코딩 모드로 동작할 수 있다. 어느 모드에서나 SoE 컨트롤러는 원격 장치에서 적어도 하나의 기본 SSD로 전송된 제1 쓰기 명령을 수신할 수 있다. 복제 모드에서, 스토리지-오프로드 엔진 컨트롤러는 적어도 하나의 제 2 SSD 데이터에서 제 1 쓰기 명령과 관련된 데이터를 복제하기 위해 적어도 하나의 제 2 SSD로 제 2 쓰기 명령을 전송한다. 삭제-코딩 모드에서, SoE는 제 1 쓰기 명령과 관련된 삭제 코드를 결정하고 쓰기 데이터 및 관련된 삭제 코드들의 분배를 관리한다.

Description

스토리지 오프로드 엔진 내부의 패브릭 스위칭{STORAGE OFFLOAD ENGINE(SoE) INSIDE FABRIC SWITCHING}
본 발명은 스토리지 시스템에 관한 것으로, 더 상세하게는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템에서 스토리지 기능을 제공하는 시스템 및 방법에 관한 것이다.
컴퓨팅 노드가 이더넷/패브릭 스위치를 포함하도록 발전함에 따라, 컴퓨팅 노드와 관련된 계산 기능(예 : 복제의 제어, 삭제 코딩(erasure coding), 데이터 이동, 파일 복제, 입출력(IO) 결정 등)이 호스트/초기화 장치 또는 타겟 스토리지 장치로 이동하는 추세이다. 증가된 기능성이 원격 호스트 또는 관리자에게 시프트되면, 증가된 기능의 부하는 원격 호스트 및/또는 관리자의 추가적인 기능적 부담을 유발할 수 있고 및/또는 타겟 스토리지 장치에 계산상의 복잡성을 부가할 수 있어 비용이 증가될 수 있다. 또한, 타겟 스토리지 장치는 통상적으로 슬레이브 타입의 장치이고, 읽기/쓰기/관리 요청들과 같은 스토리지 요청들은 슬레이브 타입의 장치에 의해 정상적으로 개시되지 않을 수 있다. 따라서, 타겟 스토리지 장치는, 다양한 오프로드(offload) 기능들을 위한 개시자로서의 역할을 하기 위해, 호스트와 유사하게 마스터 타입의 장치가 될 필요가 있다.
또한, 기존의 비 휘발성 메모리 익스프레스/비 휘발성 메모리 익스프레스 오버 패브릭(NVMe/NVMe oF) 및/또는 다른 스토리지 프로토콜은 마스터 개시자(SSD가 제공하는 스토리지 오프로드 또는 스토리지 가속 기능의 직접 구현을 제한하는)로서 동작하는 타겟 스토리지 장치의 개념을 기본적으로 및/또는 깨끗하게 지원하지 못한다. 또한, 원격 호스트 이니시에이터가 제 1 타겟 SSD와 통신하는 제1이니시에이터인 경우, 다른 원격 호스트 이니시에이터(또는 스토리지 오프로드 기능을 지원하는 또 다른 제 2 SSD)는 상기 제1타겟 SSD가 상기 전송 기능 및 커넥션을 클로즈(close) 할 때까지 전송 타입 동작 또는 제1타겟 SSD 로의 다른 어떠한 통신도 개시할 수 없다.
또한, 원격 호스트 제어 및 데이터 트래픽이 가장 낮은 수준에서 공유될 필요가 있는 스토리지-오프로드 기능 제어 및 데이터 트래픽을 방해하기 때문에, 증가된 스토리지 기능을 제공하는 드라이브 중심 솔루션으로 트래픽을 증가시키고 대역폭을 감소시킬 수 있다.
이더넷 솔리드 스테이트 드라이브(eSSD) 시스템에서 스토리지 기능을 제공하는 시스템 및 방법이 제공될 수 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따른 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템은 적어도 하나의 1차 SSD, 적어도 하나의 2차 SSD, 이더넷 스위치,및 스토리지-오프로드 엔진(storage-offload engine) 컨트롤러를 포함한다. 상기 이더넷 스위치는 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 2차 SSD에 결합될 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 상기 이더넷 스위치에 결합될 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 원격 장치로부터 상기 적어도 하나의 1차 SSD로 전송된 제 1 쓰기 명령을 수신할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는 제2쓰기 명령을 상기 적어도 하나의 2차 SSD로 전송하여 상기 제 1 쓰기 명령과 관련된 데이터를 상기 적어도 하나의 2차 SSD에서 복제하고, 상기 제 2 쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전일 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 삭제-코딩 모드에서, 상기 제 1 쓰기 명령에 응답하여 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 1차 SSD의 삭제-코딩 그룹 피어들에게 제 1 읽기 명령을 전송할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 상기 제 1 읽기 명령에 대한 응답들에 기초하여 새로운 스트라이프 데이터 및 새로운 삭제 코딩 데이터를 결정하고, 상기 새로운 삭제 코딩과 관련된 제 2 쓰기 명령을 상기 적어도 하나의 1 차 SSD 및 상기 적어도 하나의 1 차 SSD의 삭제-코딩 피어들로 전송할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 1차 SSD로 전송된 데이터 복제 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 1차 SSD에서 상기 데이터 복제 명령과 관련된 데이터의 복제를 제어할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 1차 SSD로 전송된 데이터 이동 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 1차 SSD에서 상기 데이터 이동 명령과 관련된 데이터의 이동을 제어할 수 있다.
일 실시 예에 따른 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템은, 적어도 하나의 1차 SSD, 적어도 하나의 2차 SSD, 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 2차 SSD에 결합되는 이더넷 스위치, 및 상기 이더넷 스위치, 상기 적어도 하나의 1차 SSD, 및 적어도 하나의 2차 SSD 에 결합되는 스토리지-오프로드 엔진(SoE) 컨트롤러를 포함하고, 상기 스토리지-오프로드 엔진 컨트롤러는, 복제 모드, 삭제-코딩 모드, 또는 이들의 조합에서 동작하고, 상기 스토리지-오프로드 엔진 컨트롤러는 원격 장치로부터 상기 적어도 하나의 1차 SSD로 전송되는 제1쓰기 명령을 수신하고, 상기 스토리지-오프로드 엔진 컨트롤러가 상기 복제 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여, 제 2 쓰기 명령을 상기 적어도 하나의 2차 SSD 로 전송함으로써 상기 제 1 쓰기 명령과 관련된 데이터를 상기 적어도 하나의 2 차 SSD에 복제하는 동작을 수행하고, 상기 제 2 쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전이고, 상기 스토리지-오프로드 엔진 컨트롤러가 상기 삭제-코딩 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여, 상기 적어도 하나의 1 차 SSD와 상기 적어도 하나의 1차 SSD의 삭제-코딩 피어들로 제1읽기 명령을 전송하고, 상기 제1읽기 명령에 응답하여 저장 데이터를 수신하고 상기 제 1 쓰기 명령에 기초하여 새로운 삭제 코딩을 결정하고, 상기 새로운 삭제 코딩과 관련된 제 3 쓰기 명령을 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 1차 SSD의 삭제-코딩 피어들로 전송할 수 있다.
일 실시 예에 따른 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템에서 스토리지 오프로드 기능을 제공하는 방법은, 원격 장치로부터 상기 이더넷 솔리드 스테이트 드라이브 시스템의 적어도 하나의 1차 SSD로 전송되는 제 1 쓰기 명령을 상기 이더넷 솔리드 스테이트 드라이브 시스템의 스토리지-오프로드 엔진(SoE) 컨트롤러에서 수신하는 단계, 상기 이더넷 솔리드 스테이트 드라이브 시스템은 상기 적어도 하나의 1차 SSD, 적어도 하나의 2차 SSD, 및 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 2차 SSD와 결합된 이더넷 스위치를 포함하고, 상기 제1쓰기 명령은 상기 적어도 하나의 1차 SSD에 데이터를 저장하기 위한 것이고, 상기 스토리지-오프로드 엔진 컨트롤러에 의해, 상기 적어도 하나의 2차 SSD에 제 2 쓰기 명령을 전송하여, 상기 제 1 쓰기 명령과 관련된 데이터를 상기 적어도 하나의 2차 SSD에서 복제하고, 상기 제2쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전일 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러가 삭제-코딩 모드인 경우, 상기 스토리지-오프로드 엔진 컨트롤러에 의해 상기 적어도 하나의 1 차 SSD 및 상기 적어도 하나의 1 차 SSD의 삭제-코딩 피어들로 제 1 읽기 명령을 전송하는 단계, 상기 제 1 읽기 명령에 응답하여 상기 저장 데이터와 상기 저장 데이터와 관련된 삭제 코딩을 상기 스토리지-오프로드 엔진 컨트롤러에서 수신하는 단계, 상기 제 1 쓰기 명령에 기초하여 새로운 삭제 코딩을 결정하는 단계, 및 상기 새로운 삭제 코딩과 관련된 제 3 쓰기 명령을 상기 적어도 하나의 1 차 SSD 및 상기 적어도 하나의 1 차 SSD의 삭제-코딩 피어들로 스토리지-오프로드 엔진 컨트롤러에 의해 전송하는 단계를 더 포함할 수 있다.
일 실시 예에 따른 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템은 적어도 하나의 SSD, 이더넷 스위치, 및 스토리지-오프로드 엔진(SoE) 컨트롤러를 포함할 수 있다. 상기 적어도 하나의 SSD는 제1스토리지 영역과 제2스토리지 영역을 포함할 수 있다. 상기 이더넷 스위치는 상기 적어도 하나의 SSD 와 결합될 수 있다. 상기 스토리지-오프로드 엔진(SoE) 컨트롤러는 상기 이더넷 스위치 및 상기 적어도 하나의 SSD에 결합될 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 원격 장치로부터 상기 적어도 하나의 SSD전송된 제 1 쓰기 명령을 수신하여 상기 제1 스토리지 영역에 데이터를 저장하고, 상기 적어도 하나의 SSD로 제 2 쓰기 명령을 전송하여 상기 제 1 쓰기 명령과 관련된 데이터를 상기 제 2 스토리지 영역 내에서 복제하고, 상기 제2쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전일 수 있다. 삭제-코딩 모드에서, 상기 제 1 쓰기 명령에 응답하여, 상기 스토리지-오프로드 엔진 컨트롤러는, 제1읽기 명령을 상기 적어도 하나의 SSD 로 전송할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 상기 제 1 읽기 명령에 대한 응답에 기초하여 새로운 스트라이프 데이터 및 새로운 삭제 코딩 데이터를 결정할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는, 상기 새로운 삭제 코딩과 관련된 제 2 쓰기 명령을 상기 적어도 하나의 SSD 로 전송할 수 있다.
일 실시 예에 따른 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템은, 적어도 하나의 SSD, 이더넷 스위치, 및 스토리지-오프로드 엔진(SoE) 컨트롤러를 포함할 수 있다. 상기 적어도 하나의 SSD는 제1스토리지 영역과 제2스토리지 영역을 포함할 수 있다. 상기 이더넷 스위치는 상기 적어도 하나의 SSD 와 결합될 수 있다. 상기 스토리지-오프로드 엔진(SoE) 컨트롤러는 상기 이더넷 스위치 및 상기 적어도 하나의 SSD에 결합될 수 있다. 상기 스토리지-오프로드 엔진(SoE) 컨트롤러는, 복제 모드, 삭제-코딩 모드, 또는 이들의 조합에서 동작할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는 원격 장치로부터 상기 적어도 하나의 SSD로 전송되는 제 1 쓰기 명령을 수신할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러가 상기 복제 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여 상기 적어도 하나의 SSD로 제 2 쓰기 명령을 전송함으로써 상기 적어도 하나의 SSD의 상기 제 2 저장 영역에 상기 제 1 쓰기 명령과 관련된 데이터를 복제하고, 상기 제 2 쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전일 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러가 상기 삭제-코딩 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여, 제1읽기 명령을 상기 적어도 하나의 SSD 로 전송할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 읽기 명령에 응답하여 저장 데이터를 수신하고 상기 제 1 쓰기 명령에 기초하여 새로운 삭제 코딩을 결정할 수 있다. 상기 스토리지-오프로드 엔진 컨트롤러는 상기 새로운 삭제 코딩과 관련된 제 3 쓰기 명령을 상기 적어도 하나의 SSD로 전송할 수 있다.
일 실시 예에 따른 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템에서 스토리지 오프로드 기능을 제공하는 방법은, 원격 장치로부터 상기 이더넷 솔리드 스테이트 드라이브 시스템의 적어도 하나의 SSD으로 전송된 제1쓰기 명령을 상기 이더넷 솔리드 스테이트 드라이브 시스템의 스토리지-오프로드 엔진(SoE) 컨트롤러에서 수신하는 단계, 및 상기 스토리지-오프로드 엔진 컨트롤러에 의해, 상기 적어도 하나의 SSD에 제 2 쓰기 명령을 전송함으로써, 상기 제 1 쓰기 명령과 관련된 데이터를 상기 적어도 하나의 SSD의 제2 스토리지 영역에 복제하는 단계를 포함하고, 상기 이더넷 솔리드 스테이트 드라이브 시스템은 상기 적어도 하나의 SSD 및 상기 적어도 하나의 SSD와 결합된 이더넷 스위치를 포함하고, 상기 적어도 하나의 SSD는 제1스토리지 영역과 상기 제2스토리지 영역을 포함하고, 상기 제1쓰기 명령은 상기 적어도 하나의 SSD에 데이터를 저장하기 위한 것이고, 상기 제2쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전일 수 있다.
다음 섹션에서, 본 명세서에 개시된 주제의 양태는 도면에 도시된 예시적인 실시 예를 참조하여 설명될 것이다.
도1은 본 명세서에 개시된 실시 예에 따른 스토리지-오프로드 엔진을 포함하는 시스템의 예시적인 실시 예의 블록도를 도시한다.
도2는 시스템의 스토리지-오프로드 엔진 컨트롤러가 본 명세서에 개시된 주제에 따라 복제 모드에 있는 경우, 쓰기 명령에 응답하는 도 1의 예시적인 시스템의 예시적인 흐름도를 나타낸다.
도3은 시스템의 스토리지-오프로드 엔진 컨트롤러가 본 명세서에 개시된 주제에 따라 삭제-코딩 모드에 있는 경우, 쓰기 명령에 응답하는 도 1의 예시적인 시스템의 예시적인 흐름도를 나타낸다.
도4는 시스템의 스토리지-오프로드 엔진 컨트롤러가 본 명세서에 개시된 주제에 따라 삭제-코딩 모드에 있는 경우, 읽기 명령에 응답하는 도 1의 예시적인 시스템의 예시적인 흐름도를 나타낸다.
이하의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나, 당업자는 개시된 실시 예들이 이러한 특정 세부 사항들 없이 실시될 수 있음을 이해할 것이다. 다른 예들에서, 공지된 방법들, 절차들, 구성 요소들 및 회로들은 개시된 주제를 불명료하게 하지 않기 위해 상세히 설명되지 않았다.
본 명세서 전체에 걸쳐 "일 실시 예" 또는 "실시 예"는 본 실시 예와 관련하여 설명된 특정한 특징, 구조 또는 특성이 본 명세서에 개시된 적어도 하나의 실시 예에 포함될 수 있다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 "일 실시 예에서" 또는 "실시 예에서" 또는 "일 실시 예에 따라"(또는 유사한 뜻을 갖는 다른 구문들)의 표현은 모두 반드시 동일한 실시 예를 지칭하지는 않는다. 또한, 특정 피처(feature), 구조 또는 특성은 하나 이상의 실시 예에서 임의의 적절한 방식으로 결합될 수 있다. 이와 관련하여, 본 명세서에 사용된 바와 같이, "예시적인"이라는 단어는 "예시, 실례 또는 예시를 제공함"을 의미한다. "예시적인"것으로 기재된 본 명세서에 기재된 임의의 실시 예는 반드시 다른 실시 예보다 반드시 바람직하거나 유리한 것으로 해석되어서는 안된다. 또한, 개시된 문맥에 따라, 단수는 대응하는 복수 형태를 포함할 수 있고, 복수 용어는 대응하는 단수 형태를 포함할 수 있다. 본 명세서에 도시되고 논의된 다양한 도면(구성 요소도 포함)은 단지 예시적인 목적을 위한 것이며, 실제 척도로 그려진 것은 아니라는 점에 유의하여야 한다. 마찬가지로, 다양한 파형 및 타이밍 다이어그램들이 단지 예시적인 목적을 위해 도시될 수 있다. 예를 들어, 일부 요소의 치수는 명확성을 위해 다른 요소에 비해 과장될 수 있다. 또한, 적절한 것으로 고려되는 경우, 참조 부호는 상응하는 및/또는 유사한 요소를 나타내기 위해 도면들 사이에서 반복될 수 있다.
본 명세서에서 사용된 용어는 단지 특정의 예시적인 실시 예를 설명하기 위한 것이지 청구된 주제를 한정하려는 것은 아니다. 본원에서 사용된 단수 형태는 문맥상 다르게 지시하지 않는 한 복수 형태를 포함할 수 있다. 본 명세서에서 사용되는 용어 "포함한다" 및/또는 "포함하는"은 명시된 특징, 정수, 단계, 동작, 구성 요소 및/또는 컴포넌트의 존재를 나타내지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 구성 요소, 컴포넌트 및/또는 그룹의 존재 또는 추가를 존재를 배제하지는 않는다는 것을 의미할 수 있다. 여기에 사용된 "제1", "제2" 등의 용어는 앞에 명시된 명사의 레이블(lable)로 사용되며 명시적으로 정의되지 않은 한 모든 유형의 순서(예 : 공간적, 시간적, 논리적 등)를 암시하는 않는다. 또한, 동일하거나 유사한 기능을 갖는 부품, 컴포넌트, 블록, 회로, 유닛 또는 모듈을 지칭하기 위해 두 개 이상의 도면에 걸쳐 동일한 참조 번호가 사용될 수 있다. 그러나, 이러한 사용법은 설명의 간소화 및 논의의 용이함을 위해서만 사용되며, 그러한 구성 요소 또는 유닛의 구성 또는 구조적 세부 사항이 모든 실시 예에 걸쳐 동일하다는 것을 의미하지 않으며, 공통으로 참조된 부품/모듈이 본 명세서에 개시된 특정 실시 예의 교시를 구현하는 유일한 방법이라는 것을 의미하지는 않는다
달리 정의되지 않는 한, 본 명세서에서 사용된 모든 용어(기술 용어 및 과학 용어 포함)는 이 주제가 속하는 기술 분야의 당업자가 일반적으로 이해하는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에서 정의 된 용어와 동일한 용어는 관련 기술의 맥락에서의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 명시적으로 여기에서 정의되지 않는 한 이상적인 또는 지나치게 형식적인 의미로 해석되지 않는다.
본 명세서에 사용된 바와 같이, "모듈"이라는 용어는 모듈과 관련하여 여기에 기술된 기능을 제공하도록 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합을 지칭할 수 있다. 본 명세서에서 설명된 임의의 구현에 적용되는 "소프트웨어"라는 용어는 소프트웨어 패키지, 코드 및/또는 명령 세트 또는 명령들로 구현될 수 있다. 본 명세서에서 설명된 임의의 구현에 적용되는 "하드웨어"라는 용어는 예를 들어, 단일 회로 또는 임의의 조합으로, 배선 회로, 프로그램 가능한 회로, 상태 머신 회로, 및/또는 프로그램 가능한 회로에 의해 실행되는 명령들을 저장하는 펌웨어를 포함할 수 있다. 모듈은 집합적으로 또는 개별적으로, 집적 회로(IC), 시스템 온 칩(SoC) 등과 같은 더 큰 시스템의 일부를 형성하는 소프트웨어, 펌웨어 및/또는 하드웨어로서 구현될 수 있다.
본 명세서에 개시된 주제는 스토리지 기능과 관련될 수 있는 컴퓨팅 태스크를 제공하는 스토리지-오프로드 엔진을 포함할 수 있는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템을 제공한다. 일 실시 예에서, 스토리지-오프로드 엔진은 비 휘발성 메모리 익스프레스(non-volatile memory express, NVMe) 패킷들을 디코딩할 수 있으며, 디코딩에 응답하여 복제를 위한 준비 및/또는 삭제 코딩(또는, 이레이져 코딩(erasure coding))과 같은, 그러나 이에 제한되지 않는 SSD 외부에서 가장 잘 수행되는 특정 태스크들을 수행할 수 있다. 스토리지-오프로드 엔진이 복제를 준비하도록 함으로써, 개시자로서의 역할을 하는 SSD의 제한이 제거되고, 또한 SSD들 중 하나가 복수의 SSD들에 대한 복제를 관리하는 시스템에 비해 대역폭이 보다 효율적으로 이용될 수 있다. 삭제 코딩과 관련하여, 드라이브들간에 전송 될 필요가 있는 데이터의 양 또한, 하나의 드라이브가 쓰기를 수신하고, 삭제-코드 부분들을 전개(develop)한 다음, 삭제-코드 부분을 다른 드라이브들에 분배하는 시스템과 비교하여, 상당히 감소될 것이다. 따라서, 본 명세서에 개시된 일 실시 예에 따른 시스템은, 복제 트래픽 및/또는 피어(peer)들로부터의 삭제-코딩 트래픽에 의해 악영향을 받지 않는 시스템 내의 임의의 SSD에 대한 쓰기 스루풋(write throughput)을 제공할 수 있다. 일 실시 예에서, 본 명세서에 개시된 일 실시 예에 따른 스토리지-오프로드 엔진은 스토리지-오프로드 소프트웨어를 실행하고, 복제를 위한 준비 및/또는 삭제 코딩(이에 한정되는 것은 아님)과 같은 기능을 제공하는 이더넷 스위치에 내장된 프로세서를 포함할 수 있다. 더욱이, 본 명세서에 개시된 일 실시 예에 따른 시스템은 IO 결정론(determinism)을 증가시키고, 로컬 재구성 코드(local reconstruction code, LRC) 삭제 코딩, 데이터 이동 동작, 및 파일 복제와 같은, 그러나 이에 제한되지 않는 다른 스토리지 기능들과 관련된 대기 시간 및 처리량을 향상시킬 수 있다.
도 1은 본 명세서에 개시된 실시 예에 따른 스토리지-오프로드 엔진을 포함하는 시스템(100)의 예시적인 실시 예의 블록도를 도시한다. 시스템(100)은 이더넷 스위치(101), 베이스 보드 관리 컨트롤러(BMC) 장치(102), 하나 이상의 스토리지-오프로드 엔진(SoE) 컨트롤러들(103), PCIe(peripheral component interconnect express) 스위치(104), 미드-플레인(105), 및 복수의 eSSD들(106)을 포함할 수 있다.
단지 하나의 이더넷 스위치(101), 하나의 SoE 컨트롤러(103), 및 하나의 PCIe 스위치(104)를 포함하는 시스템(100)이 도1에 도시되어 있지만, 시스템(100)은 복수의 이더넷 스위치들(101), 복수의 SoE 컨트롤러들(103) 및/또는 복수의 PCIe 스위치들(104)을 포함할 수 있음을 이해하여야 한다. 또한, 시스템(100)을 구성하는 컴포넌트들(즉, 이더넷 스위치(101), BMC 장치(102), SoE 컨트롤러(103), PCIe 스위치(104), eSSD 등)은 별도의 구성 요소 또는 별도의 모듈들로 구현될 수 있다. 대안적으로, 시스템(100)을 구성하는 두 개 이상의 구성 요소들 또는 모듈들은 서로 일체형일 수 있다.
시스템(100)은 하나 이상의 eSSD들(106)이 시스템(100)에 대해 국부적으로 배치될 수 있는 섀시 또는 랙 유닛(rack unit)으로서 물리적으로 구현될 수 있다. 하나 이상의 추가적인 eSSD들(106)(미도시)은 시스템(100)에 대해 원격으로 위치할 수 있다. 일 실시 예에서, eSSD들(106)은 eSSD들의 1차 그룹(또는, 주요 그룹)(즉, eSSD0-eSSD23) 및 eSSD들의 2차 그룹(또는, 보조 그룹)(즉, eSSD24- eSSD47)에 배치될 수 있다. 1차 그룹의 eSSD들은 1 차 스토리지 리소스로 사용될 수 있고, 2차 그룹의 eSSD들은 복제 스토리지 리소스가 될 수 있다. 도 1 은 모든 1차eSSD들(eSSD0-eSSD23) 및 모든 2차 eSSD들(eSSD24-eSSD47)을 구체적으로 도시하지 않는다. 다른 실시 예에서, 시스템(100)은 1 차 저장 영역 및 2 차 저장 영역을 포함하도록 분할된 적어도 하나의 eSSD들(106)을 포함할 수 있다. 다른 실시 예에서, 시스템(106)은 하나 이상의 eSSD들(106)이 1 차 eSSD들로 취급되고 하나 이상의 eSSD들(106)이 2차eSSD들로 취급되고및/또는 하나 이상의 eSSD들(106) 각각은 1 차 스토리지 영역 및 2 차 스토리지 영역을 포함하도록 분할될 수 있는 복수의 eSSD들(106)을 포함할 수 있다.
일 실시 예에서, 시스템(100)은 48개의 eSSD들(106)을 포함할 수 있다. 다른 실시 예에서, 시스템(100)은 임의의 개수의 eSSD들(106)을 포함할 수 있다. 일 실시 예에서, eSSD들(106)은 하나 이상의 서브 세트로 논리적으로 조직화될 수 있다. 각각의 서브 세트는, 서브 세트에 적용되는 하나 이상의 관리 정책들을 포함할 수 있다.
이더넷 스위치(101)는 복수의 업 링크 이더넷 포트들(107)을 포함할 수 있으며, 그 중 단지 세 개의 업 링크 포트(107)만이 도 1에 도시된다. 업 링크 포트들(107)은 이더넷 스위치(101)를 이더넷 링크(108)를 통해 하나 이상의 원격 호스트들(150)에 연결할 수 있으며 그중 하나의 호스트(150)만이 도시된다. 원격 호스트(150)에 접속하는 이더넷 스위치(101)의 업 링크 포트(107)는 고 대역폭 링크일 수 있다. 일 실시 예에서, 이더넷 스위치(101)의 업 링크 포트들(107)은 복수의 25 Gbit/s, 40 Gbit/s, 100 Gbit/s 및/또는 더 높은 용량의 링크들을 포함할 수 있다. 이더넷 스위치(101)는 미드 플레인(105)을 통해 eSSD들(106)에 접속하는 복수의 다운 링크 이더넷 포트들(109)을 포함할 수 있다. eSSD들(106) 각각은 이더넷 접속을 통해 이더넷 스위치(101)에 통신적으로 결합될 수 있다. 즉, eSSD들(106) 각각은 이더넷 포트(110)를 포함할 수 있다.
일 실시 예에서, BMC 장치(102)는 시스템(100)의 일부인 메인 스위치 보드에 위치할 수 있다. 다른 실시 예에서, BMC 장치(102) 및 이더넷 스위치(101)는 서로 일체형일 수 있다. BMC 장치(102)는 eSSD들(106) 각각의 발견, 구성, 동작 상태, 및 수명 모니터링과 같은(이에 한정되지 않음) 관리 기능들을 제공하도록 구성될 수 있다.
시스템(100)의 일 실시 예에서, BMC 장치(102)와 eSSD들(106) 사이에 BMC 장치(102)에 의해 제공되는 관리 기능을 위해 사용될 수 있는 세 개의 통신 경로들이 존재할 수 있다. 제 1 통신 경로는 이더넷 스위치(101)를 통한 이더넷 네트워크(111)를 통해 이루어질 수 있다. 제 2 통신 경로는 PCIe 스위치(104) 및 미드 플레인(105)을 통해 PCIe 링크 또는 버스(112)를 통해 이루어질 수 있다. 도1은 미드 플레인(105)과 하나의 eSSD(106) 사이의 PCIe 링크를 구체적으로 도시하지는 않는다. 제3통신 경로는 BMC 장치(102)와 eSSD들(106) 사이에 연결된 시스템 관리 버스(SMBus)(113)를 통한 것일 수 있다. 시스템 SMBus(113)은, 미드 플레인(105)을 통과하거나 eSSD들(106)에 연결될 수 있다; SMBus 연결은 eSSD(106)와 BMC 장치(102) 및/또는 미드 플레인(105) 사이에서와 같이 도 1에 구체적으로 도시되지 않았다.
또한, BMC 장치(102)는 관리 포트(114)를 포함할 수 있다. 관리자(사용자)에 의해 운영되는 관리 서버(160)는 관리 포트(114)를 통해 BMC장치(102)와 통신하고 그것을 제어할 수 있다. 관리 서버(160)는 eSSD 제어 플랫폼(100)에 근접하거나 또는 멀리 떨어져 위치할 수 있다. BMC 장치(102)는 하나 이상의 eSSD들(106)을 제어하고 관리하기 위해 사용될 수 있는 하나 이상의 eSSD들(106)에 관한 관리 정보를 관리 서버(160)로부터 수신할 수 있다.
SoE 컨트롤러(103)는 이더넷 스위치(101)에 입력되는 이더넷 링크들(107)에 결합될 수 있다. 일 실시 예에서, 시스템(100)은 이더넷 스위치에 입력되는 각각의 이더넷 링크(107)와 결합되는 SoE컨트롤러(103)를 포함할 수 있다. 시스템(100)은 이더넷 스위치(101)의 각 이더넷 링크(107)에 대한 각각의 이더넷 링크(107)마다 SoE 컨트롤러(103)를 포함할 수 있다. 다른 실시 예에서, 시스템(100)은, 이더넷 스위치(101)에 입력되는 모든 이더넷 링크들(107)과 결합되는 하나의 SoE 컨트롤러(103)를 포함할 수 있다. 특별히 도시되지는 않았지만, SoE 컨트롤러(103)는 PCIe 스위치(104) 및/또는 SMBus(113)를 통해 eSSD들(106)과 통신적으로 결합될 수 있다.
일 실시 예에서, SoE 컨트롤러(103)는 NVMe-oF 패킷들을 디코딩할 수 있는 하나 이상의 특수 목적의 FPGA(field-programmable gate array) 및/또는 ASIC(application specific integrated circuits)을 포함할 수 있으며, 복제 및/또는 삭제 코딩(EC)을 준비 및 수행하는 것과 같은, 그러나 이에 제한되지 않는 특정 태스크를 수행할 수 있다. 일 실시 예에서, SoE 컨트롤러(103)는 복제 모드, EC 모드 및/또는 임의의 다른 스토리지-오프로드 기능 모드로 동작할 수 있다. 즉, SoE 컨트롤러(103)는 시스템(100)과 원격 호스트(150) 사이의 이더넷 트래픽에 포함될 수 있는 NVMe-oF 패킷들을 디코딩하고, 복제 모드 및/또는 EC 모드 기능을 제공할 수 있다. 복제 모드에서, SoE 컨트롤러(103)는 하나 이상의 1 차 SSD에 쓰여진 데이터를 복제하는 기능을 대응하는 하나 이상의 2 차 SSD 상에 제공할 수 있다. 이러한 복제 모드 기능은, 데이터 이동 및 파일 복제를 포함할 수 있지만 이에 제한되지 않는다. EC 모드에서, SoE 컨트롤러(103)는 하나 이상의 1 차 SSD에 쓰여진 데이터에 대한 EC 코드를 결정하고 읽기 명령에 응답하여 데이터에 대한 EC 코드에 기초하여 데이터를 어셈블링하는 기능을 제공할 수 있다. 또한, SoE 컨트롤러(103)는 결합된 복제/EC 모드로도 동작할 수 있다.
일 실시 예에서, SoE 컨트롤러(103)는 1 차 eSSD를 지원하는 복제된 또는 보조적인 2 차 eSSD들의 관리 기능을 제공할 수 있다. 대안적인 실시 예에서, SoE 컨트롤러(103)는, 복제를 위한 준비 및/또는 EC에 대한 준비와 같은, 그러나 이에 제한되지 않는 기능을 제공하는 스토리지-오프로드 소프트웨어를 실행하는 범용 또는 특수 프로세서를 포함할 수 있다. 일 실시 예에서, BMC 장치(102)는 2 차 eSSD들의 관리 기능의 일부 또는 전부를 제공할 수 있다. 관리 기능은 복제를 위한 1 차 및 2 차 eSSD들을 표시하거나 EC 모드에서 EC 피어 노드들을 표시하는 것을 포함할 수 있다. 일 실시 예에서, SoE 컨트롤러(103) 및 BMC 장치(102)는 서로 통합될 수 있다. 일 실시 예에서, 이더넷 스위치(101)의 디스커버리 서비스 로그는 SoE 컨트롤러(103)에 의해 채워지고 유지될 수 있다. eSSD들에 대한 초기화 명령은 SoE 컨트롤러(103)에 의해 수행될 수 있고, SoE 컨트롤러(103)는 명령의 상태를 실제 시간(즉, 실행 중("in flight"))으로 유지시킬 수 있다. 또한, SoE 컨트롤러(103)는 EC 그룹(즉, 데이터 노드들 및 EC 노드들) 및 실행 중 명령들의 상태를 유지할 수 있다.
일 실시 예에서, 원격 호스트(150)와 시스템(100) 간의 이더넷 트래픽은 NVMe-oF 사양에 기초하는 프로토콜을 사용하여 읽기/쓰기 IO 명령들을 eSSD들(106)에 전송할 수 있다. 도 1의 115에 표시된 바와 같이, 일 실시 예에서, SoE 컨트롤러(103)는 이더넷 프로토콜, 인터넷 프로토콜(IP)에 기초한 프로토콜, 전송 제어 프로토콜(TCP)에 기초한 프로토콜, UDP(user datagram protocol)에 기초한 프로토콜, 원격 직접 메모리 액세스(RDMA) 프로토콜에 기초한 프로토콜 및 NVMe-oF 프로토콜에 기초한 프로토콜, 또는 이들의 조합에 기초한 통신 프로토콜을 디코딩할 수 있다. 일 실시 예에서, SoE 컨트롤러(103)는 시스템(100)과 원격 호스트들(150) 간의 이더넷 트래픽에 포함된 NVMe-oF캡슐들을 수신하고 디코딩할 수 있다. 즉, SoE 컨트롤러(103)는 수신된 패킷을 처리하여 시스템(100) 및 eSSD들(106)의 스토리지 기능과 관련된 계산/기능 태스크들을 제공할 수 있다.
도2는 SoE 컨트롤러(103)가 본 명세서에 개시된 내용에 따라 복제 모드에 있는 경우, 쓰기 명령에 응답하는 시스템(100)의 예시적인 흐름도(200)를 나타낸다. 도 2에 도시된 예시적인 흐름도(200)에 대해, 시스템(100)은 하나 이상의 1차 SSD들과 하나 이상의 2차 SSD들을 포함하도록 구성될 수 있다. 도 2의 단계 201에서, NVMe-oF 쓰기 명령을 포함하는 RDMA_Send 메시지는 원격 호스트(150)와 같은 원격 이니시에이터로 부터 예를 들어 eSSD0(1차(primary)) 로 전송된다. 단계 202에서, SoE 컨트롤러(103)는, SoE 컨트롤러(103)가 eSSD24와 같은 복제 eSSD에 NVMe-oF 쓰기 명령을 포함하는 RDMA_Send 메시지의 "복제"를 개시하고 전송하도록 트리거하거나 야기하는 NVMe-oF 쓰기 명령을 수신하여 디코딩할 수 있다. "복제본" NVMe-oF 쓰기 명령은, 복제 기능을 활성화 및/또는 향상시키기 위해 NVMe-oF 명령의 일부 필드 및 매개 변수가 수정될 수 있으므로 원본 쓰기 명령의 정확한 사본이 아닐 수 있다. 단계 203에서, 1차eSSD0은 RDMA_Read 메시지를 원격 호스트(150)에 전송함으로써 수신된 RDMA_Send 메시지에 응답한다. 단계 204에서, 복제 eSSD24는 또한 SoE 컨트롤러(103)에 전송되는 자체 RDMA_Read 메시지로 응답한다. 단계 205에서, 단계 203에서 전송된 RDMA_Read 메시지에 응답하여, 원격 호스트(150)는 RDMA_Read_Rsp 메시지를 1 차 eSSD0에 전송한다. 단계 206에서, SoE 컨트롤러(103)는 RDMA_Read_Rsp를 수신하고 디코딩하여, SoE 컨트롤러(103)가 RDMA_Read_Rsp 캡슐의 복제본을 복제 eSSD24에 개시하고 전송하도록 트리거하거나 야기할 수 있다. 일 실시 예에서, RDMA_Read_Rsp 캡슐의 복제본은 원격 호스트(150)로부터 수신된 원래의 RDMA_Read_Rsp 메시지의 정확한 복사본이 아닐 수 있다. 단계 207에서, 1 차 eSSD0은 RDMA_Send를 사용하여 NVMe-oF 쓰기 응답 메시지로 응답하고, 단계 208에서 독립적으로, 복제 eSSD24는 자체 RDMA_Send 쓰기 응답 메시지로 응답할 수 있다.
시스템(100)이 복제 모드에 있다면, 1차 eSSD(예를 들어, eSSD0)에 대한 읽기는 정상적인 방식으로 수행될 수 있다. 1 차 eSSD의 실패의 경우, BMC 장치(102)는 SoE 컨트롤러(103)에 실패를 표시할 수 있고, SoE 컨트롤러(103)는 하나 이상의 2 차 eSSD들(예를 들어, eSSD24에 복제 됨)에 읽기 요청들을 전송하고 이니시에이터에게 데이터를 반환할 수 있다.
1 차 스토리지 영역 및 2 차 스토리지 영역을 갖도록 분할된 하나 이상의 SSD들을 포함하도록 구성된 시스템(100)에 대해, SoE 컨트롤러(103)가 원격 호스트로부터 수신된 명령의 복제본(또는, 수정된 버전)을 2 차 SSD들로 전송하는 대신에, SoE 컨트롤러(103)가 원격 호스트로부터 수신된 명령의 복제본(또는 수정된 버전)을 하나 이상의 SSD들의 2차 영역들의 쓰기 데이터로 전송하는 것을 제외하고는, 흐름은 도 2에 도시된 흐름과 유사할 수 있다.
도 3은 개시된 일 실시 예에 따라, SoE 컨트롤러(103)가 EC 모드인 경우 쓰기 명령에 응답하는 도1의 시스템(100)의 예시적인 흐름도(300)를 도시한다. 도 3에 도시된 예시적인 흐름도(300)에 나타난 바와 같이, 시스템(100)은 하나 이상의 1 차 SSD 및 하나 이상의 2 차 SSD를 포함하도록 구성될 수 있다. 도 3의 단계301에서, NVMe-oF 쓰기 명령을 포함하는 RDMA_Send 메시지는 원격 호스트(150)와 같은 원격 이니시에이터로부터 예를 들어 eSSD0으로 전송될 수 있다. 단계 302에서, SoE 컨트롤러(103)는, SoE 컨트롤러(103)가 NVMe-oF 읽기 명령을 포함하는 RDMA_Send 메시지를 eSSD0와 eSSD0의EC그룹 피어들로 개시하고 전송하도록 트리거시키거나 유발할 수 있는 NVMe-oF 쓰기 명령을 수신하고 디코딩함으로써, 단계 301에서 수신된 NVMe-oF 쓰기 명령에 의해 영향을 받게될 데이터를 획득할 수 있다. 단계 303에서, eSSD0은 RDMA_Send 메시지에 응답하여 RDMA_Read 메시지를 원격 호스트(150)로 전송할 수 있다. 단계 304에서, eSSD0 및 EC 피어들은 RDMA_Wr 메시지를SoE컨트롤러(103) 로 전송할 수 있다. 단계 305에서, 원격 호스트(150)는 eSSD0에 기록될 새로운 데이터를 포함하는 RDMA_Read_Rsp 메시지를 전송하지만, eSSD0는 SoE 컨트롤러(103)가 결정할 새로운 EC 데이터를 대기할 수 있다.
단계 305에서 SoE 컨트롤러(103)에 의해 수신되어 디코딩 된 RDMA_Read_Rsp 메시지와 단계 304에서SoE 컨트롤러(103)에 의해 수신되고 디코딩 된 RDMA_Wr 메시지는, 단계 306에서 SoE 컨트롤러(103)가 NVMe-oF 쓰기 명령들을 포함하는 RDMA_Send 메시지를 eSSD0 및 EC 피어들에게 전송하도록 트리거시키거나 야기할 수 있다. 단계 307 이후에, eSSD0 및 EC 그룹 피어들은 SoE 컨트롤러(103)에 RDMA_Read 메시지를 전송하여 쓰기 데이터를 획득할 수 있다. 단계 308에서, SoE 컨트롤러(103)는 eSSD0에 대한 갱신된 쓰기 데이터를 결정하고, EC 데이터를 포함하는 데이터를 EC 그룹 피어들에 스트라이프(stripe)함으로써, 단계 301에서 수신된 제 1 NVMe-oF 쓰기 명령에 대한 EC 스토리지-오프로드 기능을 구현할 수 있다. 단계 309에서, SoE 컨트롤러(103)는 RDMA_Read_Rsp 메시지를 eSSD0으로 전송하고, EC 그룹은 업데이트 된 쓰기 데이터 및 업데이트 된 EC 코드를 피어링한다. 단계 310에서, eSSD0은 NVMe-oF 쓰기 응답 캡슐을 포함하는 RDMA_Send 메시지를 원격 호스트(150)에게 전송할 수 있다.
1 차 스토리지 영역 및 2 차 스토리지 영역을 갖도록 분할된 하나 이상의 SSD들을 포함하도록 구성된 시스템(100)에 대해, 흐름은 SoE 컨트롤러(103)가 원격 호스트로부터 수신된 명령의 복제본(또는 수정된 버전)을 2 차 SSD로 전송하는 대신에, 원격 호스트로부터 수신된 명령의 복제본(또는 수정된 버전)을 하나 이상의 SSD들의 1 차 및 2 차 영역에 있는 쓰기 및 읽기 데이터에 전송하는 것을 제외하고는 도3에 도시된 흐름과 유사할 것이다.
도 4는 개시된 일 실시 예에 따라, SoE 컨트롤러(103)가 EC 모드인 경우 읽기 명령에 응답하는 도1의 시스템(100)의 예시적인 흐름도(400)를 도시한다. 도4에 도시된 예시적인 흐름도(400)에 나타난 바와 같이, 시스템(100)은 하나 이상의 1 차 SSD 및 하나 이상의 2 차 SSD를 포함하도록 구성될 수 있다. 도 4의 단계401에서, NVMe-oF 읽기 명령을 포함하는 RDMA_Send 메시지는 원격 호스트(150)와 같은 원격 이니시에이터로부터 예를 들어 eSSD0으로 전송될 수 있다. 단계402에서, SoE 컨트롤러(103)는, SoE 컨트롤러(103)가 NVMe-oF 읽기 명령을 포함하는 RDMA_Send 메시지를 eSSD0와 eSSD0의EC그룹 피어들로 개시하고 전송하도록 트리거시키거나 또는 야기시킬 수 있는 NVMe-oF 읽기 명령을 수신하고 디코딩함으로써 단계 401에서 요청된 데이터를 어셈블링하기 위해 사용될 데이터와 EC 코드들을 획득할 수 있다. 단계 403에서, eSSD0은 SoE 컨트롤러(103)에게 RDMA_Write 메시지를 전송한다. 단계 404에서, eSSD0은 NVMe-oF 읽기 응답 캡슐을 포함하는 RDMA_Send 메시지로 SoE 컨트롤러(103)에 응답할 수 있다. 단계 405에서, eSSD0 및 EC 피어들은 데이터를 갖는 RDMA_Wr 메시지를 SoE 컨트롤러(103)에 전송할 수 있다. 단계 406에서, 읽기 응답은 RDMA_Send 메시지로 eSSD0 및 EC 피어로부터 전송된다. 단계 407에서, SoE 컨트롤러(103)는 요청된 데이터를 어셈블링한다. 단계 408에서, SoE 컨트롤러(103)는 어셈블링된 읽기 데이터를 포함하는 RDMA_Wr 메시지를 원격 호스트로 전송할 수 있다. SoE 컨트롤러(103)가 모든 EC 피어들이 응답하기 전에 요청된 데이터를 어셈블링 할 수 있는 상황에서, SoE 컨트롤러(103)는 요청된 데이터를 원격 호스트(150)로 전송할 수 있다. 단계 409에서 SoE 컨트롤러(103)는 NVMe-oF 읽기 응답 캡슐을 포함하는 RDMA_Send 메시지를 원격 호스트(150)로 전송할 수 있다.(단계 409아래의 코멘트를 NVMe-oF Read Rsp capsule로 변경하라)
1 차 스토리지 영역 및 2 차 스토리지 영역을 갖도록 분할된 하나 이상의 SSD를 포함하도록 구성된 시스템(100)에 대해, SoE 컨트롤러(103)가 원격 호스트로부터 수신된 명령의 복제본(또는, 수정된 버전)을 2 차 SSD들로 전송하는 대신에, 원격 호스트로부터 수신된 명령의 복제본(또는, 수정된 버전)을 하나 이상의 SSD들의 1 차 및 2 차 영역에 있는 쓰기 및 읽기 데이터에 전송하는 것을 제외하고는 도 4에 도시된 흐름과 유사할 것이다.
일 실시 예에서, 시스템(100)은 데이터 복제 모드 및 삭제-코딩 모드의 조합으로 동작할 수 있으며, 이러한 경우 시스템(100)은 원격 호스트로부터 수신된 특정한 명령에 따라 적어도 도2내지 4에 도시된 동작들을 수행할 수 있다.
도 3 및 도 4의 예시적인 흐름도는 하나의 예로서 RDMA 프로토콜을 사용하는 것으로 도시되지만, 스토리지-오프로드 기능들 및 흐름들은 예를 들어 NVMe TCP 프로토콜 또는 NVMe 워킹 그룹에 의해 승인될 수 있는 임의의 다른 프로토콜을 사용하여 패브릭 스위치 및 eSSD에서 채택되고 구현될 수 있다.
당업자가 인식할 수 있는 바와 같이, 여기서 설명된 혁신적인 개념은 광범위한 응용 분야에 걸쳐 수정되고 변경될 수 있다. 따라서, 청구된 주제의 범위는 상술한 특정 예시적인 교시 중 어느 하나에 한정되어서는 안되며, 다음의 청구 범위에 의해 정의될 수 있다.

Claims (17)

  1. 적어도 하나의 1차 SSD;
    적어도 하나의 2차 SSD;
    상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 2차 SSD에 결합된 이더넷 스위치; 및
    상기 이더넷 스위치에 결합된 스토리지-오프로드 엔진(storage-offload engine) 컨트롤러를 포함하고,
    상기 스토리지-오프로드 엔진 컨트롤러는 원격 장치로부터 상기 적어도 하나의 1차 SSD로 전송된 제 1 쓰기 명령을 수신하고, 상기 스토리지-오프로드 엔진 컨트롤러는 제 2 쓰기 명령을 상기 적어도 하나의 2차 SSD로 전송하여 상기 제 1 쓰기 명령과 관련된 데이터를 상기 적어도 하나의 2차 SSD에 복제하고,
    상기 제 2 쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전인 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  2. 제 1 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 삭제-코딩 모드에서,
    상기 제 1 쓰기 명령에 응답하여 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 1차 SSD의 삭제-코딩 그룹 피어들에게 제 1 읽기 명령을 전송하고, 상기 제 1 읽기 명령에 대한 응답들에 기초하여 새로운 스트라이프 데이터 및 새로운 삭제 코딩 데이터를 결정하고, 상기 새로운 삭제 코딩과 관련된 제 2 쓰기 명령을 상기 적어도 하나의 1 차 SSD 및 상기 적어도 하나의 1 차 SSD의 삭제-코딩 피어들로 전송하는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  3. 제 2 항에 있어서,
    상기 삭제-코딩 모드에서, 상기 스토리지-오프로드 엔진 컨트롤러는,
    상기 원격 장치로부터 상기 적어도 하나의 1차 SSD로 전송된 제 2 읽기 명령을 수신하고, 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 1차 SSD의 삭제-코딩 피어들로 제 3 읽기 명령을 전송하고, 상기 제 3 읽기 명령에 응답하여 저장된 데이터를 수신하고 상기 제 2 읽기 명령을 위한 상기 수신된 데이터를 어셈블링하고, 상기 어셈블링된 데이터를 상기 원격 장치로 전송하는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  4. 제 1 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 1차 SSD로 전송된 데이터 복제 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 1차 SSD에서 상기 데이터 복제 명령과 관련된 데이터의 복제를 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  5. 제 1 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 1차 SSD로 전송된 데이터 이동 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 1차 SSD에서 상기 데이터 이동 명령과 관련된 데이터의 이동을 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  6. 적어도 하나의 1차 SSD;
    적어도 하나의 2차 SSD;
    상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 2차 SSD에 결합되는 이더넷 스위치; 및
    상기 이더넷 스위치, 상기 적어도 하나의 1차 SSD, 및 적어도 하나의 2차 SSD 에 결합되는 스토리지-오프로드 엔진(SoE) 컨트롤러를 포함하고,
    상기 스토리지-오프로드 엔진 컨트롤러는, 복제 모드, 삭제-코딩 모드, 또는 이들의 조합에서 동작하고, 상기 스토리지-오프로드 엔진 컨트롤러는 원격 장치로부터 상기 적어도 하나의 1차 SSD로 전송되는 제 1 쓰기 명령을 수신하고,
    상기 스토리지-오프로드 엔진 컨트롤러가 상기 복제 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여, 제 2 쓰기 명령을 상기 적어도 하나의 2차 SSD 로 전송함으로써 상기 제 1 쓰기 명령과 관련된 데이터를 상기 적어도 하나의 2 차 SSD에 복제하고, 상기 제 2 쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전이고,
    상기 스토리지-오프로드 엔진 컨트롤러가 상기 삭제-코딩 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여, 상기 적어도 하나의 1 차 SSD와 상기 적어도 하나의 1차 SSD의 삭제-코딩 피어들로 제1읽기 명령을 전송하고, 상기 제1읽기 명령에 응답하여 저장 데이터를 수신하고 상기 제 1 쓰기 명령에 기초하여 새로운 삭제 코딩을 결정하고, 상기 새로운 삭제 코딩과 관련된 제 3 쓰기 명령을 상기 적어도 하나의 1차 SSD 및 상기 적어도 하나의 1차 SSD의 삭제-코딩 피어들로 전송하는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  7. 제 6 항에 있어서,
    상기 삭제-코딩 모드에서, 상기 스토리지-오프로드 엔진 컨트롤러는,
    상기 원격 장치로부터 상기 적어도 하나의 1차 SSD로 전송된 제 2 읽기 명령을 수신하고, 상기 저장 데이터와 상기 제 2 읽기 명령과 관련된 상기 저장 데이터와 관련된 삭제 코딩을 수신하고, 상기 수신된 데이터 및 상기 수신된 데이터와 관련된 상기 수신된 삭제 코딩을 어셈블링하고, 상기 어셈블링된 데이터를 상기 제 2 읽기 명령을 위해 상기 원격 장치로 전송하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  8. 제 6 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 1차 SSD로 전송된 데이터 복제 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 1차 SSD에서 상기 데이터 복제 명령과 관련된 데이터의 복제를 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  9. 제 6 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 1차 SSD로 전송된 데이터 이동 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 1차 SSD에서 상기 데이터 이동 명령과 관련된 데이터의 이동을 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  10. 제1스토리지 영역과 제2스토리지 영역을 포함하는 적어도 하나의 SSD;
    상기 적어도 하나의 SSD 와 결합되는 이더넷 스위치; 및
    상기 이더넷 스위치 및 상기 적어도 하나의 SSD에 결합된 스토리지-오프로드 엔진(SoE) 컨트롤러를 포함하고,
    상기 스토리지-오프로드 엔진 컨트롤러는, 원격 장치로부터 상기 적어도 하나의 SSD전송된 제 1 쓰기 명령을 수신하여 상기 제1 스토리지 영역에 데이터를 저장하고,
    상기 적어도 하나의 SSD로 제 2 쓰기 명령을 전송하여 상기 제 1 쓰기 명령과 관련된 데이터를 상기 제 2 스토리지 영역에 복제하고,
    상기 제 2 쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전인 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  11. 제10항에 있어서,
    삭제-코딩 모드에서, 상기 제 1 쓰기 명령에 응답하여,
    상기 스토리지-오프로드 엔진 컨트롤러는, 제 1 읽기 명령을 상기 적어도 하나의 SSD 로 전송하고, 상기 제 1 읽기 명령에 대한 응답에 기초하여 새로운 스트라이프 데이터 및 새로운 삭제 코딩 데이터를 결정하고, 상기 새로운 삭제 코딩과 관련된 제 2 쓰기 명령을 상기 적어도 하나의 SSD 로 전송하는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  12. 제10항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 SSD에 전송된 데이터 복제 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 SSD에서 상기 데이터 복제 명령과 관련된 데이터의 복제를 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  13. 제 10 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 SSD로 전송된 데이터 이동 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 SSD에서 상기 데이터 이동 명령과 관련된 데이터의 이동을 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  14. 제 1 스토리지 영역과 제 2 스토리지 영역을 포함하는 적어도 하나의 SSD;
    상기 적어도 하나의 SSD 와 결합되는 이더넷 스위치; 및
    상기 이더넷 스위치 및 상기 적어도 하나의 SSD에 결합된 스토리지-오프로드 엔진(SoE) 컨트롤러를 포함하고,
    상기 스토리지-오프로드 엔진(SoE) 컨트롤러는, 복제 모드, 삭제-코딩 모드, 또는 이들의 조합에서 동작하고, 상기 스토리지-오프로드 엔진 컨트롤러는 원격 장치로부터 상기 적어도 하나의 SSD로 전송되는 제 1 쓰기 명령을 수신하고,
    상기 스토리지-오프로드 엔진 컨트롤러가 상기 복제 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여 상기 적어도 하나의 SSD로 제 2 쓰기 명령을 전송함으로써 상기 적어도 하나의 SSD의 상기 제 2 스토리지 영역에 상기 제 1 쓰기 명령과 관련된 데이터를 복제하고, 상기 제 2 쓰기 명령은 상기 제 1 쓰기 명령의 복제본 또는 수정된 버전이고,
    상기 스토리지-오프로드 엔진 컨트롤러가 상기 삭제-코딩 모드 또는 상기 복제 모드와 상기 삭제-코딩 모드의 조합에서 동작하는 경우, 상기 스토리지-오프로드 엔진 컨트롤러는 상기 제 1 쓰기 명령에 응답하여, 제 1 읽기 명령을 상기 적어도 하나의 SSD 로 전송하고, 상기 제 1 읽기 명령에 응답하여 저장 데이터를 수신하고 상기 제 1 쓰기 명령에 기초하여 새로운 삭제 코딩을 결정하고, 상기 새로운 삭제 코딩과 관련된 제 3 쓰기 명령을 상기 적어도 하나의 SSD로 전송하는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  15. 제 14 항에 있어서,
    상기 삭제-코딩 모드에서, 상기 스토리지-오프로드 엔진 컨트롤러는,
    상기 원격 장치로부터 상기 적어도 하나의 SSD로 전송된 제 2 읽기 명령을 수신하고, 저장된 데이터와 상기 제 2 읽기 명령과 관련된 상기 저장 데이터와 관련된 삭제 코딩을 수신하고, 상기 수신된 데이터와 상기 수신된 데이터와 관련된 상기 수신된 삭제 코딩을 어셈블링하고, 상기 어셈블링된 데이터를 상기 제2읽기 명령을 위해 상기 원격 장치로 전송하는 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  16. 제 14 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 SSD로 전송된 데이터 복제 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 SSD에서 상기 데이터 복제 명령과 관련된 데이터의 복제를 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
  17. 제 14 항에 있어서,
    상기 스토리지-오프로드 엔진 컨트롤러는, 상기 적어도 하나의 SSD로 전송된 데이터 이동 명령을 상기 원격 장치로부터 더 수신하고, 상기 적어도 하나의 SSD에서 상기 데이터 이동 명령과 관련된 데이터의 이동을 제어하기 위한 이더넷 솔리드 스테이트 드라이브(eSSD) 시스템.
KR1020180034451A 2017-05-08 2018-03-26 스토리지 오프로드 엔진 내부의 패브릭 스위칭 KR102295497B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762503319P 2017-05-08 2017-05-08
US62/503,319 2017-05-08
US15/654,493 2017-07-19
US15/654,493 US10275180B2 (en) 2017-05-08 2017-07-19 Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch

Publications (2)

Publication Number Publication Date
KR20180123427A true KR20180123427A (ko) 2018-11-16
KR102295497B1 KR102295497B1 (ko) 2021-08-31

Family

ID=64014127

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180034451A KR102295497B1 (ko) 2017-05-08 2018-03-26 스토리지 오프로드 엔진 내부의 패브릭 스위칭

Country Status (3)

Country Link
US (1) US10275180B2 (ko)
KR (1) KR102295497B1 (ko)
CN (1) CN108874307B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951181A (zh) * 2017-02-21 2017-07-14 深圳大普微电子科技有限公司 一种数据存储系统的控制装置
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
TWI636366B (zh) * 2017-11-22 2018-09-21 緯穎科技服務股份有限公司 資料冗餘的處理方法及其相關電腦系統
US10635609B2 (en) * 2018-03-02 2020-04-28 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US10990554B2 (en) 2018-03-02 2021-04-27 Samsung Electronics Co., Ltd. Mechanism to identify FPGA and SSD pairing in a multi-device environment
US11157356B2 (en) * 2018-03-05 2021-10-26 Samsung Electronics Co., Ltd. System and method for supporting data protection across FPGA SSDs
US10795612B2 (en) * 2018-07-31 2020-10-06 EMC IP Holding Company LLC Offload processing using storage device slots
US11366610B2 (en) 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11003539B2 (en) 2019-01-15 2021-05-11 EMC IP Holding Company LLC Offload processing using a storage slot
EP3938881A2 (en) 2019-03-14 2022-01-19 Marvell Asia Pte, Ltd. Termination of non-volatile memory networking messages at the drive level
CN113767361A (zh) * 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 启用以太网的固态驱动器(ssd)
CN113924766A (zh) 2019-03-14 2022-01-11 马维尔亚洲私人有限公司 经由固态驱动器(ssd)之间的连接在ssd之间传输数据
CN110908600B (zh) * 2019-10-18 2021-07-20 华为技术有限公司 数据访问方法、装置和第一计算设备
KR20210087628A (ko) 2020-01-03 2021-07-13 삼성전자주식회사 네트워크 기반 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
US11210002B2 (en) * 2020-01-29 2021-12-28 Samsung Electronics Co., Ltd. Offloaded device-driven erasure coding
US11770271B2 (en) 2020-08-21 2023-09-26 Samsung Electronics Co., Ltd. Data center
US20210294702A1 (en) * 2021-06-04 2021-09-23 Intel Corporation High-availability memory replication in one or more network devices
KR20240001414A (ko) * 2022-06-27 2024-01-03 삼성전자주식회사 복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160094619A1 (en) * 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6917987B2 (en) 2001-03-26 2005-07-12 Intel Corporation Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US7200716B1 (en) * 2004-04-30 2007-04-03 Network Appliance, Inc. Method and apparatus to offload operations in a networked storage system
US7840765B2 (en) 2006-10-31 2010-11-23 Hewlett-Packard Development Company, L.P. RDMA copy-on-write
US8880937B2 (en) 2011-07-07 2014-11-04 International Business Machines Corporation Reducing impact of a repair action in a switch fabric
US9565050B1 (en) 2011-12-07 2017-02-07 Cisco Technology, Inc. Fibre channel peer zoning
US8799746B2 (en) * 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
CA2904659C (en) * 2013-03-12 2021-07-20 Forrest Lawrence Pierson Indefinitely expandable high-capacity data switch
US20150378640A1 (en) * 2013-06-26 2015-12-31 Cnex Labs, Inc. Nvm express controller for remote access of memory and i/o over ethernet-type networks
US10628353B2 (en) * 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US9887008B2 (en) 2014-03-10 2018-02-06 Futurewei Technologies, Inc. DDR4-SSD dual-port DIMM device
KR101533340B1 (ko) * 2014-04-09 2015-07-06 인하대학교 산학협력단 클라우드 스토리지 시스템에서 데이터 접근빈도와 소거 코드를 이용한 데이터 복제 방법
US9606915B2 (en) * 2015-08-11 2017-03-28 Toshiba Corporation Pool level garbage collection and wear leveling of solid state devices
US20170357610A1 (en) * 2016-06-14 2017-12-14 Kazan Networks Corporation Split nvme ssd implementation using nvme over fabrics protocol
US10387353B2 (en) * 2016-07-26 2019-08-20 Samsung Electronics Co., Ltd. System architecture for supporting active pass-through board for multi-mode NMVE over fabrics devices
US10146527B2 (en) * 2016-10-12 2018-12-04 Samsung Electronics Co., Ltd. Method and apparatus for using BMC as proxy for NVME over fabrics device firmware upgrade
CN108228082B (zh) * 2016-12-21 2021-04-02 伊姆西Ip控股有限责任公司 存储系统和用于存储控制的方法
US10255134B2 (en) * 2017-01-20 2019-04-09 Samsung Electronics Co., Ltd. Control plane method and apparatus for providing erasure code protection across multiple storage devices
US11543967B2 (en) * 2017-02-23 2023-01-03 Samsung Electronics Co., Ltd. Method for controlling BW SLA in NVME-of ethernet SSD storage systems
US10866912B2 (en) * 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US10691368B2 (en) * 2017-03-31 2020-06-23 Samsung Electronics Co., Ltd. System and method for providing data replication in NVMe-oF ethernet SSD

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160094619A1 (en) * 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch

Also Published As

Publication number Publication date
CN108874307B (zh) 2023-06-30
KR102295497B1 (ko) 2021-08-31
US20180321876A1 (en) 2018-11-08
US10275180B2 (en) 2019-04-30
CN108874307A (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
KR20180123427A (ko) 스토리지 오프로드 엔진 내부의 패브릭 스위칭
KR102457091B1 (ko) Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법
US10353732B2 (en) Software-defined computing system remote support
US20200183591A1 (en) Packet forwarding method, device, and system in nvme over fabric
US20070174517A1 (en) Managing management controller communications
US11874922B2 (en) System and method for detecting malicious software in NVMe over fabrics devices
KR20190074962A (ko) 스토리지 장치용 로컬 매니지먼트 콘솔
US8843689B2 (en) Concurrent repair of the PCIe switch units in a tightly-coupled, multi-switch, multi-adapter, multi-host distributed system
US20050114464A1 (en) Virtualization switch and method for performing virtualization in the data-path
US9390034B1 (en) Unified SCSI target management for performing a delayed shutdown of a service daemon in a deduplication appliance
US20220179812A1 (en) Method for Improving Reliability of Storage System, and Related Apparatus
US8065133B1 (en) Method for testing a storage network including port level data handling
EP3876089A1 (en) Methods and systems for peer-to-peer data channels for storage devices
CN111684765A (zh) 服务器系统
JP2013105483A (ja) プリブート実行可能な環境のオペレーティング・システムのインストールを、スケーラブルな直接接続された記憶環境中のスイッチを使用して、可能にするための方法およびシステム
US10880168B2 (en) Switch configuration
US20190037013A1 (en) Methods for managing workload throughput in a storage system and devices thereof
US9378160B1 (en) Unified SCSI target management for shutting down and de-configuring a service daemon in a deduplication appliance
US20190028542A1 (en) Method and device for transmitting data
US9836364B2 (en) In-band recovery mechanism for I/O modules in a data storage system
US12010170B2 (en) Methods and apparatus for peer-to-peer data channels for storage devices
WO2016204777A1 (en) Network communications
US9378180B1 (en) Unified SCSI target management for starting and configuring a service daemon in a deduplication appliance

Legal Events

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