KR102527151B1 - 복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치 - Google Patents

복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치 Download PDF

Info

Publication number
KR102527151B1
KR102527151B1 KR1020170173110A KR20170173110A KR102527151B1 KR 102527151 B1 KR102527151 B1 KR 102527151B1 KR 1020170173110 A KR1020170173110 A KR 1020170173110A KR 20170173110 A KR20170173110 A KR 20170173110A KR 102527151 B1 KR102527151 B1 KR 102527151B1
Authority
KR
South Korea
Prior art keywords
storage device
storage
data
controller
switch
Prior art date
Application number
KR1020170173110A
Other languages
English (en)
Other versions
KR20180086124A (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 KR20180086124A publication Critical patent/KR20180086124A/ko
Application granted granted Critical
Publication of KR102527151B1 publication Critical patent/KR102527151B1/ko

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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
    • G06F11/1469Backup restoration techniques
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2012Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant and using different communication protocols
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0683Plurality of storage devices
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)

Abstract

복수의 스토리지 장치에 걸쳐서 소거 코드 보호를 제공하기 위한 시스템 및 방법이 제공된다. 스토리지 시스템의 데이터 스위치는 복수의 스토리지 장치를 리모트 호스트에 연결한다. 각각의 스토리지 장치는 또한 예를 들어, 베이스 보드 관리 컨트롤러와 같은 컨트롤러에 연결된다. 정상 작동 중에, 리모트 호스트로부터의 판독 및 기록 명령들은 데이터 스위치를 통해 각각의 스토리지 장치들로 전송된다. 기록 명령이 실행될 때, 명령을 실행하는 스토리지 장치는 데이터의 복사본을 컨트롤러에 보내고, 컨트롤러는 예를 들어 소거 코드들을 소거 코드들만 전용으로 저장하며, 리모트 호스트에 보이지 않는 스토리지 장치에 생성 및 저장한다. 장치가 고장나거나 제거되면 컨트롤러는 데이터 스위치를 재구성하여 고장 또는 부재의 스토리지 장치로 보내진 모든 트래픽을 컨트롤러로 다시 보내고, 컨트롤러는 대신 호스트 명령에 응답한다.

Description

복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치{CONTROL PLANE METHOD AND APPARATUS FOR PROVIDING ERASURE CODE PROTECTION ACROSS MULTIPLE STORAGE DEVICES}
본 발명에 따른 실시예들의 하나 이상의 측면들은 데이터 스토리지 장치에 관한 것으로, 보다 구체적으로 소거 코드 보호(erasure code protection)를 제공하는 컨트롤러를 갖춘 스토리지 시스템에 관한 것이다.
비 휘발성 메모리 익스프레스(nonvolatile memory express, NVMe) 오버 패브릭(NVM-f) 구성들, 예를 들어, 이더넷 부착형 NVMe 솔리드 스테이트 드라이브(solid state drive, SSD)들을 이용하는 구성들로 이더넷 및 SSD 비용 및 성능을 개선시키는 것은 어려울 수 있다. 예를 들어, 50G / 100G 기술의 등장으로 이더넷 속도는 증가된 반면, SSD 성능은 PCI 익스프레스(Peripheral Component Interconnect Express, PCIe) 인터페이스 및 NANDs 기술에 따라 달라질 수 있다. 패브릭 부착형 SSD들은 각 장치가 지점 간 연결을 제공 할 수 있기 때문에, 소거 코드 데이터 보호를 지원하기 위한 고유한 설계 문제가 추가로 나타날 수 있다. 데이터 보호를 제공하기 위해 RAID 온 칩(redundant array of inexpensive disk on chip, ROC) 주문형 반도체(application specific integrated circuit, ASIC)가 사용될 수 있으나, 대기 시간 및 비용이 증가하고, 성능이 저하될 수 있다.
따라서, 복수의 스토리지 장치들에 데이터를 저장하기 위한 개선된 시스템 및 방법이 요구된다.
본 발명은 복수의 스토리지 장치에 걸쳐서 소거 코드 보호를 제공하기 위한 시스템 및 방법을 제공하는 것을 목적으로 한다.
본 발명의 일 실시예에 따른 측면들은 복수의 스토리지 장치들에 걸쳐 소거 코드 보호를 제공하는 시스템 및 방법에 관한 것이다. 스토리지 시스템의 데이터 스위치는 복수의 스토리지 장치들을 리모트 호스트에 연결할 수 있다. 각각의 스토리지 장치는 또한, 컨트롤러, 예를 들어, 베이스보드 관리 컨트롤러, 에 연결될 수 있다. 정상 작동 중에 리모트 호스트로부터의 판독 및 기록 명령들은 데이터 스위치를 통해 각각의 스토리지 장치로 전송된다. 기록 명령이 실행될 때, 명령을 실행하는 스토리지 장치는 데이터의 복사본을 컨트롤러에 보내고, 컨트롤러는 예를 들어 소거 코드를 전용으로 저장하고 리모트 호스트에 보이지 않는 스토리지 장치 상에 소거 코드를 생성 및 저장한다. 장치가 고장나거나 제거되면 컨트롤러는 스위치를 재구성하여 고정 또는 부재의 스토리지 장치로 보내진 모든 트래픽을 컨트롤러로 다시 보내고, 컨트롤러는 만약 존재하고 제대로 작동하였으면 장애가 발생되었거나 존재하지 않는 스토리지 장치가 전송했을 것과 동일한 명령 응답으로 호스트 명령들에 응답한다.
본 발명의 일 실시예에 따르면 스토리지 인터페이스를 포함하는 스토리지 시스템에서, 상기 시스템은 복수의 스토리지 장치들 중 어느 하나에 저장된 데이터를 다른 스토리지 장치들의 데이터로부터 복구하기에 충분한 소거 코드들을 저장하도록 구성된 상기 복수의 스토리지 장치들, 정상 작동 중에 각각의 스토리지 명령들의 각각의 어드레스에 따라, 상기 스토리지 인터페이스를 통해 수신된 상기 스토리지 명령들을 상기 복수의 스토리지 장치들 각각으로 전송하는 데이터 스위, 및 컨트롤러를 포함하고, 상기 컨트롤러는 상기 복수의 스토리지 장치들 중 어느 스토리지 장치가 고장 또는 부재의 경우에 상기 데이터 스위치를 재구성하여 상기 고장 또는 부재의 스토리지 장치로 보내진 스토리지 명령들을 상기 컨트롤러로 전송하고, 수신된 각 스토리지 명령에 응답하여, 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 만약 존재하고 제대로 작동하였으면 장애가 발생되었거나 존재하지 않는 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송할 수 있다.
일 실시예에서, 상기 스토리지 장치들 각각은 정상 동작 동안, 데이터 블록을 포함하는 기록 명령을 수신하면, 상기 데이터 블록을 저장하고, 상기 데이터 블록의 복사본을 상기 컨트롤러로 전송할 수 있다.
일 실시예에서, 상기 컨트롤러는 상기 복수의 스토리지 장치들 중 제1 스토리지 장치로부터 데이터 블록의 복사본을 수신하면, 상기 데이터 블록을 충분히 복구할 수 있는 소거 코드들을 생성하고, 상기 소거 코드들을 상기 복수의 스토리지 장치들 중으로부터 상기 제1 스토리지 장치와 다른 하나 이상의 스토리지 장치들에 저장할 수 있다.
일 실시예에서, 상기 복수의 스토리지 장치들 중 제1 스토리지 장치는 정상 동작 중에 데이터 블록을 포함하는 기록 명령을 수신하면, 상기 데이터 블록을 저장하고, 상기 데이터 블록을 충분히 복구할 수 있는 소거 코드들을 생성하고, 상기 소거 코드들을 상기 복수의 스토리지 장치들 중으로부터 상기 제1 스토리지 장치와 다른 하나 이상의 스토리지 장치들에 저장할 수 있다.
일 실시예에서, 상기 복수의 스토리지 장치들 중 제1 스토리지 장치는 소거 코드들을 저장하고, 상기 데이터 스위치는 정상 동작 중에 상기 스토리지 인터페이스를 통해 수신된 각 스토리지 명령을 상기 스토리지 명령의 각 어드레스에 따라 상기 복수의 스토리지 장치들 중 부분 집합의 각 스토리지 장치에 전송하고, 상기 제1 스토리지 장치는 상기 부분 집합에 포함되지 않는다.
일 실시예에서, 상기 컨트롤러는, 상기 복수의 스토리지 장치들 중 어느 스토리지 장치가 고장 또는 부재의 경우에, 데이터 블록을 요청하는 수신된 판독 명령에 응답하여, 상기 복수의 스토리지 장치들의 존재하고 정상 작동하는 스토리지 장치들로부터 소거 코드들을 판독하고, 상기 데이터 블록을 복구하고, 명령 응답의 일부로써 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 복구된 데이터 블록을 전송할 수 있다.
일 실시예에서, 상기 스토리지 장치들 각각은 존재 핀을 포함하는 커넥터를 포함하고, 상기 존재 핀은 상기 컨트롤러의 각각의 센싱 핀과 연결되고, 상기 컨트롤러는 상기 각각의 센싱 핀의 전압 또는 전류의 변화에 의해 상기 스토리지 장치들 중 어느 하나의 제거를 검출할 수 있다.
일 실시예에서, 상기 데이터 스위치는 이더넷 스위치이다.
일 실시예에서, 상기 데이터 스위치는 상기 컨트롤러의 포트에 연결된 PCIe 컨트롤 포트를 포함하고, 상기 데이터 스위치는 상기 PCIe 컨트롤 포트를 통해 상기 컨트롤러로부터 구성 명령들을 수신할 수 있다.
일 실시예에서, 시스템은 PCIe 스위치를 포함하고, 상기 복수의 스토리지 장치들 각각은 상기 PCIe 스위치를 통해 상기 컨트롤러와 연결될 수 있다.
일 실시예에서, 상기 컨트롤러는 베이스 보드 관리 컨트롤러이다.
본 발명의 일 실시예에서, 스토리지 인터페이스를 가지며, 복수의 스토리지 장치들, 데이터 스위치 및 컨트롤러를 포함하는 스토리지 시스템을 동작시키는 방법이 제공되고, 상기 방법은 정상 작동 중에, 상기 스토리지 인터페이스를 통해 수신된 스토리지 명령들을 각 스토리지 명령의 각각의 어드레스에 따라 상기 복수의 스토리지 장치들 각각으로 전송하는 단계, 및 상기 복수의 스토리지 장치들 중 어느 스토리지 장치가 고장 또는 부재의 경우에 상기 컨트롤러가 상기 데이터 스위치를 재구성하여 상기 고장 또는 부재의 스토리지 장치로 보내진 스토리지 명령들을 상기 컨트롤러로 전송하는 단계, 및 상기 컨트롤러를 이용하여 각각의 수신된 각 스토리지 명령에 응답하여 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 만약 존재하고 제대로 작동하였으면 장애가 발생되었거나 존재하지 않는 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 방법은 정상 작동 중에, 상기 복수의 스토리지 장치들의 스토리지 장치에 의해 상기 데이터 블록을 포함하는 기록 명령이 수신되면, 상기 스토리지 장치를 이용하여 상기 데이터 블록을 저장하는 단계, 및 상기 스토리지 장치를 이용하여 상기 데이터 블록의 복사본을 상기 컨트롤러로 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 방법은 상기 컨트롤러를 이용하여 상기 복수의 스토리지 장치들의 제1 스토리지 장치로부터 데이터 블록의 복사본이 수신되면, 상기 컨트롤러를 이용하여 상기 데이터 블록을 충분히 복구 가능한 소거 코드들을 생성하는 단계, 및 상기 컨트롤러를 이용하여 상기 소거 코드들을 상기 복수의 스토리지 장치들 중 상기 제1 스토리지 장치와 다른 하나 이상의 스토리지 장치들에 저장하는 단계를 포함할 수 있다.
일 실시예에서, 상기 방법은 정상 작동 동안, 상기 복수의 스토리지 장치들 중 제1 스토리지 장치에 데이터 블록을 포함하는 기록 명령이 수신되면, 상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 저장하는 단계, 상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 복구하기에 충분한 소거 코드들이 생성하는 단계, 및 상기 제1 스토리지 장치를 이용하여 상기 복수의 스토리지 장치들 중 상기 제1 스토리지 장치와 다른 하나 이상의 스토리지 장치에 상기 소거 코드들을 저장하는 단계를 포함할 수 있다.
일 실시예에서, 복수의 스토리지 장치들 중 제1 스토리지 장치는 소거 코드들을 저장하고, 상기 방법은, 정상 작동 중에 상기 스토리지 인터페이스를 통해 수신된 각 스토리지 명령을 상기 스토리지 명령의 각 어드레스에 따라, 상기 복수의 스토리지 장치들의 부분 집합의 스토리지 장치들 각각으로 전송하는 단계를 포함하고, 상기 제1 스토리지 장치는 상기 부분 집합이 아닐 수 있다.
일 실시예에서, 상기 방법은, 상기 복수의 스토리지 장치들 중 어느 스토리지 장치가 고장 또는 부재의 경우에, 상기 컨트롤러가 데이터 블록을 요청하는 판독 명령을 수신하는 것에 응답하여, 상기 컨트롤러가 상기 복수의 스토리지 장치들의 존재하고 정상 작동하는 스토리지 장치들로부터 소거 코드들을 상기 PCIe 스위치를 통해 판독하는 단계, 상기 컨트롤러를 이용하여 상기 데이터 블록을 복구하는 단계, 및 상기 컨트롤러를 이용하여 명령 응답의 일부로서 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 복구된 데이터 블록을 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 스토리지 장치들 각각은 상기 컨트롤러의 각각의 센싱 핀에 연결되는 존재 핀을 포함하고, 상기 방법은, 상기 컨트롤러가 상기 각각의 센싱 핀의 전압 또는 전류의 변화에 의해 상기 스토리지 장치들 중 어느 하나의 제거를 검출하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따르면 스토리지 인터페이스를 포함하는 스토리지 시스템이 제공되고, 상기 시스템은 어느 하나의 스토리지 장치에 저장된 데이터를 다른 스토리지 장치들의 데이터로부터 복구하기에 충분한 소거 코드들을 저장하도록 구성된 복수의 스토리지 장치들, 정상 작동 중에 각각의 스토리지 명령들의 각각의 어드레스에 따라, 상기 스토리지 인터페이스를 통해 수신된 상기 스토리지 명령들을 상기 복수의 스토리지 장치들 각각으로 전송하는 데이터 스위치, 및 제어 수단들을 포함하고, 상기 복수의 스토리지 장치들 중 어느 스토리지 장치의 고장 또는 부재의 경우에, 상기 제어 수단들은 상기 데이터 스위치를 재구성하여 상기 고장 또는 부재의 스토리지 장치로 보내진 스토리지 명령들을 상기 제어 수단들로 전송하고, 수신된 각 스토리지 명령에 응답하여, 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 만약 존재하고 제대로 작동하였으면 장애가 발생되었거나 존재하지 않는 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송할 수 있다.
일 실시예에서, 상기 스토리지 장치들 각각은 정상 작동 동안 데이터 블록을 포함하는 기록 명령의 수신 시에 상기 데이터 블록을 저장하고, 상기 제어 수단들에 상기 데이터 블록의 복사본을 전송할 수 있다.
본 발명의 실시예에 따르면, 소거 코드들은 스토리지 장치들 중 하나가 고장나거나 제거된 경우에 저장된 데이터를 보호하기 위해 스토리지 시스템에서 사용될 수 있다. 소거 코드들은 일반적으로 보호하는 데이터와는 별도의 스토리지 장치에 저장 될 수 있고, 따라서 어느 스토리지 장치의 고장 또는 제거로 인해 데이터가 손실되지 않을 수 있다. 소거 코드들을 저장하는 디스크가 고장나거나 제거되면, 데이터는 영향을 받지 않고, 또한 데이터를 저장한 디스크가 고장나거나 제거되면, 데이터는 소거 코드들로부터 복구될 수 있다.
또한, 이더넷 스위치는 소거 코드를 저장하는 스토리지 장치들을 리모트 호스트로부터 숨기도록 구성되어, 리모트 호스트에 보이지 않게 할 수 있다. 이러한 구성에서, 리모트 호스트의 관점에서, 스토리지 시스템은 물리적 스토리지 장치에 존재하는 것보다 적은 스토리지 장치를 포함하는 것처럼 보일 수 있고, 스토리지 장치의 신뢰성은 소거 코드를 저장하는 스토리지 장치들에 의해 제공된 소거 코드 보호에 의해 향상될 수 있다.
본 발명의 이들 및 다른 특징들 및 이점들은 명세서, 청구 범위들 및 첨부된 도면들을 참조하여 이해될 수 있을 것이다.
도 1a는 본 발명의 일 실시예에 따른 리모트 호스트에 연결된 스토리지 시스템의 블록도이다.
도 1b는 본 발명의 일 실시예에 따른 스토리지 시스템에 연결된 리모트 호스트의 블록도이다.
도 1c는 본 발명의 일 실시예에 따른 스토리지 시스템에 연결된 리모트 호스트의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 스토리지 시스템을 동작시키기 위한 방법에 대한 플로우 차트이다.
도 3은 본 발명의 일 실시예에 따른 스토리지 시스템을 동작시키기 위한 방법에 대한 플로우 차트이다.
첨부된 도면과 관련하여 이하에 설명되는 상세한 설명은 본 발명에 따라 제공되는 복수의 스토리지 장치들에 걸쳐 소거 코드 보호를 제공하는 제어 평면 방법 및 장치의 예시적인 실시예의 설명으로서 의도된 것이고, 본 발명이 구성되거나 이용될 수 있는 유일한 형태를 나타내는 것은 아니다. 설명은 예시 된 실시 예와 관련하여 본 발명의 특징을 설명한다. 그러나, 본 발명의 사상 및 범위 내에 포함되도록 의도된 다른 실시 예들에 의해 동일하거나 균등한 기능들 및 구조들이 이뤄질 수 있음을 이해해야 한다. 본 명세서의 다른 곳에서 언급 된 바와 같이, 동일한 요소 번호는 동일한 요소 또는 특징을 나타내기 위한 것이다.
제어 평면은 예를 들어 라우터에서 아래와 같이 데이터 평면과 구별될 수 있다. 제어 평면은 트래픽(예를 들어, 데이터 트래픽)이 전송되는 장소에 관한 결정들을 내릴 수 있다. 제어 평면 기능들은 전송 테이블 정보의 시스템 구성, 관리 및 교환을 포함할 수 있다. 제어 평면은 네트워크의 시그널링(signaling)일 수 있다. 제어 기능들은 도착하는 각각의 개별 데이터 패킷에 대해 수행되지 않을 수 있기 때문에, 엄격한 속도 제약을 갖지 않을 수 있고, 데이터 평면의 기능들보다 시간에 덜 민감할 수 있다. 포워딩 평면(forwarding plane)이라고도 하는 데이터 평면은 제어 평면 로직에 따라 선택된 목적지 네트위크의 경로를 따라 트래픽을 다음 홉(hop)으로 전송할 수 있다. 데이터 평면 패킷들은 라우터를 통과할 수 있다. 라우터들/스위치들은 입력 및 출력 프레임들 및 패킷들을 처리하기 위해 제어 평면이 구축한 것을 사용한다. 스토리지 시스템에서, 스토리지 시스템의 제어 평면과 스토리지 시스템의 데이터 평면 사이에 유사한 차이가 만들어 질 수 있다. 예를 들어, NVMF 기반의 시스템 또는 섀시에서, 모든 이더넷 포트들은 이더넷 SSD(eSSD)들과 로컬 이더넷 스위치 사이에서 물리적으로 분할되어 데이터 평면이 될 수 있고, PCI-e레인들은 eSSD들을 연결하는데 사용될 수 있고, PCIe 스위치 및 컨트롤러(이하에서 상세히 설명 됨)를 통해 제어 평면이 될 수 있다.
도 1a는 본 발명의 일 실시예에 따른 리모트 호스트에 연결된 스토리지 시스템의 블록도이다. 시스템은 이더넷 스위치(110), PCIe 스위치(120), 복수의 스토리지 장치들(105) 및 컨트롤러(115)(예를 들어, 베이스보드 관리 컨트롤러, baseboard management controller, BMC)를 포함한다. 여기서, 복수의 스토리지 장치들(105)은 이더넷 스위치(110) 및 PCIe 스위치(120)와 통신하고, PCIe 스위치(120)는 컨트롤러(115)와 통신할 수 있다. 스토리지 시스템은 리모트 호스트(100)에 연결될 수 있다. 이더넷 스위치(110)와 컨트롤러(115) 사이에 추가적인 연결들이 생성되어, 소거 코드 보호 기능이 향상될 수 있다.
보다 구체적으로, 도 1b는 일부 실시 예들에 따른 스토리지 시스템의 스토리지 인터페이스(예를 들어, 이더넷 인터페이스)에 연결된 리모트 호스트(100)의 블록도이다. 복수의 스토리지 장치들(105)은 이더넷 스위치(110)를 통해 리모트 호스트(100)에 연결된다. 스토리지 장치들(105) 각각은 영구 스토리지(persistent storage)를 제공할 수 있고, 다시 말해 전력이 일시적으로 손실되는 경우에도 데이터의 저장을 계속적으로 제공 할 수 있다. 각 스토리지 장치(105)는 솔리드 스테이트 드라이브(solid state drive, SSD), 예를 들어, 이더넷 SSD(eSSD)일 수 있다. 정상 작동 시에 리모트 호스트(100)는 각각이 하나 이상의 스토리지 장치들(105)로 보내진 스토리지 명령들을 스토리지 장치들(105)로 전송할 수 있고, 스토리지 장치들(105)은 리모트 호스트(100)로 명령 응답들을 전송할 수 있다. 스토리지 명령들은 기록 명령들 및/또는 판독 명령들일 수 있다. 예를 들어, 데이터를 스토리지 장치(105)에 저장하기 위해, 리모트 호스트(100)는 기록 명령을 스토리지 장치(105)로 전송할 수 있다(예를 들어, 스토리지 장치(105)의 이더넷 어드레스를 사용하여 스토리지 장치(105)로 보내진다).
각각의 기록 명령은 스토리지 장치(105)에 기록 될 데이터의 양(또는 "데이터 블록") 및 호스트가 미래의 판독 명령에서 동일한 데이터를 참조할 수 있도록 하는 논리 블록 어드레스(logical block address, LBA)를 포함 할 수 있다. 이에 대응하여, 스토리지 장치(105)는 데이터를 저장할 수 있고, 저장 동작이 일단 완료되면, 스토리지 장치(105)는 명령 응답(예를 들어, 명령 완료)을 리모트 호스트(100)로 전달하여, 저장 동작이 성공적으로 완료되었다는 신호를 보낼 수 있다. 본 명세서에 사용되는 바와 같이 "데이터 블록"은 스토리지 명령 또는 명령 응답의 데이터 페이로드(payload), 예를 들어, 기록 명령에 의해 영구 스토리지에 기록될 데이터 또는 판독 명령에 의해 영구 스토리지로로부터 판독된 데이터일 수 있다.
스토리지 장치(105)로부터 데이터를 판독하기 위해, 리모트 호스트(100)는 스토리지 장치(105)로부터 데이터를 요청하는 판독 명령을 스토리지 장치(105)로 전송할 수 있다. 이에 응답하여, 스토리지 장치(105)는 스토리지 장치(105) 내부의 비휘발성 메모리(nonvolatile memory)로부터 데이터를 판독할 수 있고, 판독 동작이 완료되면, 명령 응답(예를 들어, 명령 완료)을 스토리지로부터 판독된 데이터 블록을 포함하는 리모트 호스트(100)로 전송하고, 판독 동작이 성공적으로 완료되었다는 신호를 보낼 수 있다.
소거 코드들은 스토리지 장치들(105) 중 하나가 고장나거나 제거된 경우에 저장된 데이터를 보호하기 위해 스토리지 시스템에서 사용될 수 있다. 데이터 블록에 대한 소거 코드들은 데이터의 일부가 소실된 경우 데이터 블록 안의 데이터를 재건하는데 사용되는 중복 추가 정보를 포함(예를 들어, 구성)할 수 있다. 소거 코드들은 일반적으로 보호하는 데이터와는 별도의 스토리지 장치(105)에 저장 될 수 있고, 따라서 어느 스토리지 장치의 고장 또는 제거로 인해 데이터가 손실되지 않을 수 있다. 소거 코드들을 저장하는 디스크가 고장나거나 제거되면, 데이터는 영향을 받지 않고, 또한 데이터를 저장한 디스크가 고장나거나 제거되면, 데이터는 소거 코드들로부터 복구될 수 있다.
일부 실시 예들에서, 하나 이상의 스토리지 장치들(105)은 소거 코드들만을 저장하는데 전용된다. 이 경우, 이더넷 스위치(110)는 이들 스토리지 장치들(105)을 리모트 호스트(100)로부터 숨기도록 구성되어, 이들 스토리지 장치들(105)이 리모트 호스트(100)에 보이지 않게 할 수 있다. 이러한 구성에서, 리모트 호스트(100)의 관점에서, 스토리지 시스템은 물리적 스토리지 장치에 존재하는 것보다 적은 스토리지 장치(105)를 포함하는 것처럼 보일 수 있고, 스토리지 장치의 신뢰성은 소거 코드들만을 전용으로 저장하는 스토리지 장치들(105)에 의해 제공된 소거 코드 보호에 의해 향상될 수 있다. 다른 실시예들에서 소거 코드들은 소거 코드들만 전용으로 저장하는 스토리지 장치들(105)에만 저장되는 것이 아니고, 다른 데이터 또한 저장하는 드라이브들에 저장된다.
소거 코드들은 컨트롤러(115)에 의해 생성될 수 있다. 컨트롤러(115)는 스토리지 장치들(105) 각각과 PCIe 스위치(120)를 통해 연결될 수 있다. 컨트롤러(115), PCIe 스위치(120) 및 스토리지 장치들(105)로의 컨트롤러(115) 및 PCIe 스위치(120)의 연결들은 제어 평면을 형성할 수 있고, 이더넷 스위치(110) 및 스토리지 장치들(105)로의 이더넷 스위치(110)의 연결은 데이터 평면을 형성할 수 있다. 동작 시, 스토리지 장치(105)가 기록 명령을 이더넷 스위치(110)를 통해 수신하면, 스토리지 장치(105) 내부의 비 휘발성 메모리에 데이터(즉, 기록 명령에 포함 된 데이터 블록의 데이터)를 저장하고, 논리 블록 어드레스뿐만 아니라 데이터의 복사본을 컨트롤러(115)로 전송한다. 컨트롤러(115)는 소거 코드들을 생성하고, 소거 코드 데이터를 저장하는 스토리지 장치(105)에 PCIe 스위치를 통해 쓰기 명령을 전송함으로써, 소거 코드들을 예를 들어, 기록 명령을 수신한 것과 다른 스토리지 장치(105)에 저장한다. 컨트롤러(115)는 소거 코드들을 저장하기 위한 논리 블록 어드레스 및 소거 코드들의 각각의 위치들을 열거한 테이블을 유지할 수 있다. 정상 작동 시에, 컨트롤러(115)는 리모트 호스트(100) 및 스토리지 장치(105) 사이의 데이터 경로에서 인식되지 않을 수 있다. 예를 들어, 데이터는 컨트롤러(115)를 통하지 않고 리모트 호스트(100)와 스토리지 장치(105) 사이에서 직접 이동할 수 있다.
각각의 스토리지 장치(105)(예를 들어, SSD)는 스토리지 인터페이스 커넥터를 포함할 수 있고, 이는 U.2 커넥터일 수 있다. U.2 커넥터의 복수의 핀들은 PCIe 스위치(120)와의 통신을 위해 PCIe 링크(예를 들어, 1x4 PCIe 레인들 또는 2x2 PCIe 레인들)를 제공하도록 할당될 수 있다. U.2 커넥터의 다른 핀들은 이더넷 스위치(110)에 이더넷 연결을 제공하도록 할당 될 수 있다. U.2 커넥터의 또 다른 핀(125)은 컨트롤러(115)가 스토리지 장치(105)의 존재 여부를 검출 할 수 있게 하는 "존재 핀(presence pin)"으로서 사용될 수 있다. 예를 들어, 각각의 스토리지 장치(105)는 존재 핀(125)으로 세트 전압을 공급하거나, 존재 핀(125)을 통해 세트 전류를 구동할 수 있다. 각각의 스토리지 장치(105)의 존재 핀(125)은 컨트롤러(115)의 각각의 센싱 핀에 연결될 수 있고, 컨트롤러(115)는 센싱 핀들 중 하나에서 세트 전압 또는 세트 전류가 검출하는 것이 중단되면, 대응하는 스토리지 장치(105)가 더 이상 존재하지 않는 것으로 추론할 수 있다.
다른 실시예들에서 스토리지 장치(105)와 컨트롤러(115) 사이의 NVMe 관리 인터페이스(NVMe management interface, NVMe-MI) 연결은 동일한 목적으로 사용될 수 있다. 예를 들어, 각각의 스토리지 장치(105)의 복수의 핀들은 NVMe 관리 인터페이스에 대한 물리적 연결을 제공하고, 존재 핀들로써 역할을 할 수 있다.
각각의 스토리지 장치(105)는 복수(예를 들어, 24)의 U.2 커넥터를 갖고, 대응하는 복수의 스토리지 장치들(105)을 수용하는 인쇄 회로 기판일 수 있는 미드 평면(130)에 연결 될 수 있다. 미드 평면(130)은 스토리지 장치들(105)에 연결된 커넥터들 및 이에 대응하는 PCIe 스위치(120)의 스토리지 장치 측 상의 복수의 커넥터들(예를 들어, 24 커넥터들)사이의 연결들을 제공하는 전도성 트레이스들을 포함할 수 있다. 미드 평면(130)은 스토리지 장치들(105)의 존재 핀들 및 이에 대응하는 컨트롤러(115)의 센싱 핀들 사이 및 스토리지 장치들(105)의 이더넷 핀들 및 이에 대응하는 이더넷 스위치(110)의 스토리지 장치 측 상의 커넥터들의 핀들 사이의 연결들을 제공할 수 있다.
각각의 스토리지 장치 (105)는 복수의 비휘발성 메모리(예를 들어, 플래시 메모리) 칩들 및 이하에서 상세히 설명되는 프로세싱 회로이거나 프로세싱 회로를 포함하는 스토리지 장치 컨트롤러(예를 들어, 스토리지 시스템의 컨트롤러(115)와 분리 및 구별되는 SSD 컨트롤러)를 포함할 수 있다. 컨트롤러(115) 또한 프로세싱 회로이거나, 프로세싱 회로를 포함할 수 있다. 컨트롤러(115)는 예를 들어, 베이스 보드 관리 컨트롤러 외부에 있고 베이스 보드 관리 컨트롤러의 해당 핀에 연결된 온도 센서를 통해 스토리지 시스템에 대한 온도 모니터링 및 제어를 수행하는 기능들 및/또는 I2C 인터페이스 또는 SMBus를 통한 팬 제어 기능을 포함하는 베이스 보드 관리 컨트롤러(baseboard management controller, BMC)일 수 있다. 본 명세서에 사용 된 바와 같이, "컨트롤 수단들"은 최소한 본 명세서에 개시되고 청구된 특징들을 갖는 컨트롤러(115)를 구현하는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 지칭하며, 전적으로 하드웨어로 구현되거나, 범용 처리 회로(예를 들어, 범용 CPU)상에서 실행되는 소프트웨어로 구현 될 수 있다.
스토리지 장치(105)가 고장이 나거나 제거되면(도 1c에서 점선으로 도시됨), 컨트롤러(115)는 전술한 바와 같이 컨트롤러(115)의 감지 핀들에서의 변화들의 결과를 통해 부재 또는 고장을 인지하거나, 컨트롤러(115)는 이더넷 스위치(110)를 통해 스토리지 장치들(105) 중 하나로 전송된 스토리지 명령들이 명령 응답들을 발생시키지 않았음을 통지 받을 수 있다.
아래에서 더 상세히 설명되는 바와 같이, 일부 실시 예들에서는 정상 작동 시에 기록 명령이 실행될 때, 저장될 데이터는 하나 이상의 스토리지 장치들(105)에 기록되고, 소거 코드가 생성되고, 또한 하나 이상의 스토리지 장치들(105)에 기록되고, 예를 들어, 소거 코드가 보호하는 데이터와 다른 스토리지 장치(105)에 기록된 저장된 소거 코드들을 사용하여, 어느 한 스토리지 장치의 고장으로 인해 일반적으로 복구 불가능한 데이터 손실이 발생하지 않는다. 스토리지 장치(105)가 고장 나면, 컨트롤러(115)는 이더넷 스위치(110)를 재구성하여 고장난 스토리지 장치(105)로 보내진 임의의 기록 또는 판독 명령들을 컨트롤러로 다시 보낼 수 있고, 컨트롤러(115)는 성능 저하(예를 들어, 속도)를 제외하고, 스토리지 장치(105)의 장애가 리모트 호스트(100)에 감지되지 않도록 스토리지 장치(105)의 동작을 모방할 수 있다.
스토리지 시스템은 각각의 스토리지 장치(105)의 존재 핀들(125)과 컨트롤러(115) 사이에 연결된 복합 프로그램 가능 논리 소자(complex programmable logic device, CPLD)(도 1b 및 도 1c에 도시되지 않음)를 포함할 수 있다. 존재 핀들 중 적어도 하나의 어떤 변화를 검출 한 후, CPLD는 인터럽트를 통해 컨트롤러(115)에 통지 할 수 있다. 컨트롤러(115)는 그 후 CPLD의 일부 레지스터를 집어넣기(예를 들어, 기록 또는 판독)하여 어떤 드라이브(또는 어떤 드라이브들)가 제거되었거나 설치되었는지 찾아낼 수 있다. 이를 통해 BMC(예를 들어, 컨트롤러(115))는 특정 포트를 활성화하거나 비활성화하여 이더넷 스위치를 재구성하는 등의 적절한 변경 작업을 수행 할 수 있다.
일부 실시 예들에서, 컨트롤러(115)는 이더넷 스위치(110)를 재구성하여 고장나거나 또는 부재하는 스토리지 장치(105)로 보내진 모든 이더넷 트래픽이 컨트롤러(115)로 대신 향하도록 다시 보낼(redirect) 수 있다. 컨트롤러(115)는 스토리지 장치(105)가 고장 또는 제거되지 않았다면 가졌을 것과 동일한 명령 응답을 리모트 호스트(100)가 수신하도록 리모트 호스트(100)로부터 스토리지 명령을 처리하고 명령 응답을 전송한다.
예를 들어, 고장 또는 부재의 스토리지 장치(105)로 보내지고 컨트롤러(115)로 다시 보내진 리모트 호스트(100)로부터의 판독 명령에 응답하여, 컨트롤러(115)는 하나 이상의 다른 스토리지 장치들(105)에 저장된 소거 코드들(예를 들어, 소거 패리티(erasure parity) 및 데이터 코드들)로부터 여전히 존재하고 올바르게 작동되었더라면 고장 또는 부재의 스토리지 장치(105)로부터 판독되었을 데이터(예를 들어, 데이터는 XOR 동작에 의해 재생성 되어, 고장/부재 스토리지 장치(105)로부터의 데이터를 양호하게 복구 할 수 있음)를 복구할 수 있고, 컨트롤러(115)는 복구 데이터를 포함하는 명령 응답을 리모트 호스트(100)로 전송할 수 있다.
고장 또는 부재의 스토리지 장치(105)로 보내지고 컨트롤러(115)로 다시 보내진 리모트 호스트(100)로부터의 기록 명령에 응답하여, 컨트롤러(115)는 고장 또는 부재된 스토리지 장치(105)가 여전히 존재하고, 정확하게 동작하는 경우에 저장되는 소거 코드들과 동일한 소거 코드들을 생성 및 저장할 수 있고, 고장 또는 부재된 스토리지 장치(105)가 여전히 존재하고, 정확하게 동작하는 경우에 고장 또는 부재된 스토리지 장치(105)가 전송하는 동일한 명령 응답을 리모트 호스트(100)로 전송할 수 있다. 일부 실시예들에서, 스토리지 장치(105)가 고장난 후에, 시스템의 동작이 계속되는 동안 컨트롤러(115)는 모든 데이터가 소거 코드들에 의해 보호되고 각각의 소거 코드는 보호하는 데이터와 다른 스토리지 장치들(105) 상에 저장 될 때까지 스토리지 장치(105)가 고장 났을 때, 손실된 것을 대체하기 위해 새로운 데이터 및 소거 코드들을 생성하고, 새로운 데이터 및 소거 코드들을 하나 이상의 나머지 스토리지 장치(105) 상에 저장하고, 나머지 스토리지 장치들(105) 사이에서 데이터(및 소거 코드들)를 이동시킴으로써 하나 적은 드라이브로 동작하도록 시스템을 재구성한다. 스토리지 장치(105)가 제거(고장 나는 대신)되면, 컨트롤러는 동일한 동작들을 취할 수 있다.
대체 드라이브가 이후에 설치될 때, 컨트롤러(115)는 시스템의 계속된 동작 동안, 고장 또는 부재의 스토리지 장치(105)를 대신하여 계속하여 응답하면서, 대체 드라이브를 재구축할 수 있다. 즉, 컨트롤러(115)는 고장 또는 부재의 스토리지 장치(105)에 저장되어 있던 데이터를 복구하여 대체 드라이브에 저장할 수 있다. 일단 대체 드라이브가 재구축되면, 컨트롤러(115)는 정상 동작을 위해 이더넷 스위치(110)를 재구성 할 수 있다.
도 2는 본 발명의 일 실시예에 따른 스토리지 시스템의 시작 시퀀스에 대한 플로우 차트이다. 컨트롤러(115)(예를 들어, BMC)는 자신 및 원하는 RAID 구성마다 모든 데이터 스토리지 장치들(105)(예를 들어, SSD들)의 전제조건들을 초기화한다(단계 205). 컨트롤러(115)는 스토리지 장치들(105)의 일부를 데이터 스토리지 장치들로, 스토리지 장치들(105)의 일부를 소거 코드 스토리지 장치들로 지정한다(단계 210). 이는 모든 스토리지 장치들(105) 및 명령들에 대한 초기화 시에 행해지거나, 명령 단위로 행해질 수 있다. 컨트롤러(115)는 SSD들 각각의 용량이 다르면 SSD들을 정규화하고(단계 215), 컨트롤러(115)는 상술한 바와 같이 어떤 호스트로에게도 소거 코드 스토리지 장치들이 보이지 않는 것처럼 표시(mark)한다(단계 220).
도 3은 컨트롤러(115) 대신 스토리지 장치(105)가 소거 코드들 생성하는 스토리지 시스템의 동작에 대한 플로우 차트이다. 시스템 내의 각각의 스토리지 장치(105)는 컨트롤러(115)로부터 슬롯 번호 또는 할당 번호와 같은 고유한 배열 부재 식별(array member identification)을 갖는다. 데이터 스토리지 장치들 각각은 호스트 또는 개시 프로그램(initiator)과의 정상적인 NVMe 오버 패브릭(NVMf) 트랜잭션의 실행을 계속하고(단계 305), 데이터 스토리지 장치들 각각은 정상적인 디스커버리 서비스들을 수행하고 트랜잭션 (예를 들어, 스토리지 명령들에 대한 처리 및 응답)의 실행을 시작한다(단계 310). 호스트는 데이터 스토리지 장치들 중 하나에 데이터를 기록한다(단계 315). 단계 315에서 호스트는 소거 코드들을 생성하지 않는다. 데이터 스토리지 장치는 기록될 데이터를 수신하고, 이를 데이터 스토리지 장치 내부의 비 휘발성 메모리에 저장한다(단계 320). 데이터 스토리지 장치는 또한 소거 코드들을 생성하고, 소거 코드들을 (복수의 스토리지 장치들의) 하나 이상의 소거 코드 스토리지 장치들에 기록한다(단계 320).
예를 들어, 임의의 기록들에 대해, 기록 데이터는 목표 스토리지 장치 안의 포스트(post)된 기록 버퍼에 일시적으로 저장될 수 있다. 동시에, 목표 스토리지 장치는 제어 평면(예를 들어, PCIe 제어 평면)을 통해 기록 데이터를 컨트롤러(115)로 전송할 수 있다. 기록 데이터를 수신한 후, 컨트롤러(115)는 동일한 LBA를 공유하는 해당 데이터를 다른 스토리지 장치들로부터 판독하여 패리티 생성을 수행 할 수 있다. 컨트롤러(115)는 하나 이상의 적절한 배타적 논리합(XOR) 연산을 수행하여 새로운 패리티를 패리티 스토리지 장치에 기록 할 수 있다. 컨트롤러(115)는 원래의 목표 스토리지 장치로 메시지를 전송할 수 있고, 포스트된 기록 버퍼가 플러시(flush)될 수 있다.
일부 실시예들에서, 몇몇 스토리지 장치들(105)은 소거 코드들을 저장한다. 소거 코드 스토리지 장치들은 소거 코드들을 수신하고, 이를 소거 코드 스토리지 장치들의 내부의 비휘발성 메모리에 저장하고, 데이터 스토리지 장치로 커밋 메시지(commit message)를 전송한다(단계 325). 데이터 스토리지 장치 및 소거 코드 스토리지 장치들 사이의 통신은 PCIe 스위치(120)를 통해 이루어질 수 있다.
앞서 언급한 바와 같이, 일부 실시예들은 복수의 스토리지 장치에 걸쳐 소거 코드 보호를 제공하기 위한 시스템 및 방법을 제공한다. 스토리지 시스템 안의 데이터 스위치는 복수의 스토리지 장치들을 리모트 호스트에 연결한다. 각 스토리지 장치들은 또한 컨트롤러(예를 들어, 베이스 보드 관리 컨트롤러)에 연결된다. 정상 작동 중에, 리모트 호스트로부터의 판독 및 기록 명령들은 데이터 스위치를 통해 각각의 스토리지 장치들로 전송된다. 기록 명령이 실행되면, 이 명령을 실행하는 스토리지 장치는 컨트롤러로 데이터의 복사본을 보내고, 컨트롤러는 소거 코드들을 생성하고 이들을 예를 들어, 소거 코드들을 저장하기 위해 전용되는 스토리지 장치에 저장하고, 리모트 호스트에 보이지 않도록 한다. 장치가 고장나거나 제거되면, 컨트롤러는 데이터 스위치를 다시 구성하여 고장 또는 부재의 스토리지 장치로 보내진 모든 트래픽을 컨트롤러로 다시 보내고, 컨트롤러는 만약 존재하고 제대로 작동하였으면 장애가 발생되었거나 존재하지 않는 스토리지 장치가 전송했을 것과 동일한 명령 응답들로 호스트 명령들에 응답한다.
"프로세싱 회로"라는 용어는 본 명세서에서 데이터 또는 디지털 신호들을 처리하는데 사용되는 하드웨어, 펌웨어 및 소프트웨어의 모든 조합을 의미하기 위해 사용된다. 프로세싱 회로 하드웨어는 예를 들면, 주문형 집적 회로 (application specific integrated circuits, ASIC)들, 범용 또는 특수 용도의 중앙 처리 장치(central processing unit, CPU)들, 디지털 신호 프로세서 (digital signal processor, DSP)들, 그래픽 처리 장치 (graphics processing unit, GPU)들 및 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA)들과 같은 프로그래머블 논리 장치들을 포함할 수 있다. 본 명세서에서 사용되는 프로세싱 회로에서의 각 기능은 그 기능을 수행하기 위해 구성된 하드 웨어, 즉, 고정 배선(hard-wired)나 비 일시적인 저장 매체에 저장된 명령들을 실행하도록 구성된 CPU와 같은 범용 하드웨어로 수행될 수 있다. 프로세싱 회로는 하나의 인쇄 회로 기판 위에 제조된 것일 수도 있고, 여러 개의 상호 연결된 인쇄 회로 기판들에 분산된 것일 수도 있다. 프로세싱 회로는 다른 프로세싱 회로를 포함할 수 있다. 예를 들어, 프로세싱 회로는 인쇄 회로 기판 위에서 상호 연결된 두 개의 프로세싱 회로들, FPGA, 및 CPU를 포함할 수 있다.
"제 1", "2", "3"등의 용어는 본 명세서에서는 다양한 요소들, 구성 요소들, 영역들, 층들 및/또는 섹션들을 설명하는 데 사용 될 수 있으나, 이 요소들, 구성 요소들, 영역들, 층들 및/또는 섹션들은 이러한 용어에 의해 한정되는 것은 아니다. 이 용어들은 요소, 구성 요소, 영역, 층 또는 섹션을 다른 요소, 구성 요소, 영역, 층 또는 섹션과 구별하기 위해서만 사용된다. 따라서 본 명세서의 제 1 요소, 구성 요소, 영역, 층 또는 섹션은 본 발명의 개념의 사상 및 범위를 벗어나지 않는 범위 내에서 제 2 요소, 구성 요소, 영역, 층 또는 섹션이라고 지칭될 수 있다.
본 명세서에서 사용하는 용어는 특정 실시 예만을 설명하기 위한 것이며, 본 발명의 개념을 한정하는 것은 아니다. 본 명세서에서 사용되는 "실질적으로", "약" 및 이와 유사한 용어는 근사 용어로 사용되는 것이며, 학위 용어로 사용되지 않으며, 당업자가 인식 할 수 있는 측정 또는 계산 된 값의 고유 편차를 설명하기 위한 것이다.
본 명세서에 사용된, 단수 형태는 문맥 상 달리 명시하지 않는 한 복수 형태를 포함하는 것으로 의도된다. 본 명세서에서 사용되는 "포함하다" 및/ 또는 "갖다"와 같은 용어는 명시된 특징, 정수, 단계, 동작, 구성 요소 및/또는 구성 요소의 존재를 나타내지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다. 본 명세서에 사용 된, "및/또는"이라는 용어는 하나 이상의 열거된 항목의 임의 및 모든 조합들을 포함한다. "적어도 하나"와 같은 표현이 요소들의 리스트 앞에 있을 때, 요소들의 리스트 전체를 한정하거나, 리스트의 개별 요소들을 한정하지 않는다. 또한, 본 발명의 개념의 실시 예를 설명 할 때 "할 수 있다"를 사용하는 것은 "본 발명의 하나 이상의 실시 예"를 의미한다. 또한, "예시적인"이라는 용어는 예 또는 설명을 의미한다. 본 명세서에 사용 된 용어 "사용"은 "이용"과 동의어로 간주 될 수 있다.
요소 또는 층이 다른 요소 또는 층의 "위에", "연결된", "결합 된" 또는 "인접한"으로 언급 될 때, 이는 직접적으로 위에 있거나, 연결되거나, 또는 그에 인접하거나, 또는 하나 이상의 개입하는 요소 또는 층이 존재할 수 있다. 대조적으로, 요소 또는 층이 다른 요소 또는 층에 "직접적으로 위에", "직접 연결된", "직접 결합된" 또는 "바로 인접한"으로 언급 될 때, 개재하는 요소 또는 층은 존재하지 않는다.
본 명세서에 열거 된 임의의 수치 범위는 열거 된 범위 내에 포함되는 동일한 수치 정밀도의 모든 부분 범위를 포함하는 것으로 의도된다. 예를 들어, "1.0에서 10.0"의 범위는 최소 1.0과 최대 10.0 사이의 모든 부분 범위를 포함하도록 의도되었으며, 즉 최소가 1.0 이상이고, 10.0 이하의 최대 값, 예를 들면, 2.4~7.6을 포함할 수 있다. 여기에 열거 된 최대 수치 제한은 여기에 포함되는 더 낮은 모든 수치 제한을 포함하도록 의도되며, 본 명세서에 인용 된 임의의 최소 수치 제한은 여기에 포함되는 모든 더 높은 수치 제한을 포함 한다.
복수의 스토리지 장치들에 걸쳐 소거 코드 보호를 제공하는 제어 평면 방법 및 장치의 예시적인 실시 예가 본 명세서에 구체적으로 설명되고 예시되었지만, 많은 변형 및 변경이 당업자에게 명백할 것이다. 따라서, 본 발명의 원리에 따라 구성된 다수의 스토리지 장치에 걸쳐서 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치는 여기에 구체적으로 기술 된 것 이외의 다른 실시 예가 구현 될 수 있음을 이해되어야 한다. 본 발명은 또한 다음의 특허 청구 범위 및 그 등가물에서 정의된다.
100: 리모트 호스트 105: 스토리지 장치들
110: 이더넷 스위치 115: 컨트롤러
120: PCIe 스위치 125: 존재 핀
130: 미드 평면

Claims (20)

  1. 스토리지 인터페이스를 포함하는 스토리지 시스템에서, 상기 시스템은,
    제1 스토리지 장치 및 상기 제1 스토리지 장치와는 다른 제2 스토리지 장치를 포함하는 복수의 스토리지 장치들;
    정상 작동 중에 각각의 스토리지 명령들의 각각의 어드레스에 따라, 상기 스토리지 인터페이스를 통해 수신된 상기 스토리지 명령들을 상기 제1 스토리지 장치로 전송하는 데이터 스위치; 및
    컨트롤러를 포함하되,
    상기 제2 스토리지 장치는, 상기 제2 스토리지 장치의 데이터로부터 상기 제1 스토리지 장치에 저장된 데이터를 복구하기 위한 소거 코드들을 저장하도록 구성되고,
    상기 제2 스토리지 장치가 상기 소거 코드들을 저장하는 경우, 상기 데이터 스위치는 외부의 리모트 호스트가 인식하지 못하도록 상기 제2 스토리지 장치를 숨기도록 구성되고,
    상기 제1 스토리지 장치가 고장 또는 부재의 경우에, 상기 컨트롤러는:
    상기 제1 스토리지 장치로 보내진 스토리지 명령들을 상기 컨트롤러로 전송하도록 상기 데이터 스위치를 재구성하고; 그리고
    수신된 각 스토리지 명령에 응답하여, 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 제1 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송하는 시스템.
  2. 제1 항에 있어서,
    상기 제1 스토리지 장치는 정상 동작 동안, 데이터 블록을 포함하는 기록 명령을 수신하면, 상기 데이터 블록을 저장하고, 상기 데이터 블록의 복사본을 상기 컨트롤러로 전송하는 시스템.
  3. 제2 항에 있어서,
    상기 컨트롤러는 상기 제1 스토리지로부터 데이터 블록의 복사본을 수신하면, 상기 데이터 블록을 복구하는 있는 소거 코드들을 생성하고, 상기 소거 코드들을 상기 제2 스토리지 장치에 저장하는 시스템.
  4. 제1 항에 있어서,
    상기 제1 스토리지 장치는 정상 동작 중에 데이터 블록을 포함하는 기록 명령을 수신하면,
    상기 데이터 블록을 저장하고,
    상기 데이터 블록을 복구하는 소거 코드들을 생성하고,
    상기 소거 코드들을 상기 제2 스토리지 장치에 저장하는 시스템.
  5. 제1 항에 있어서,
    상기 제2 스토리지 장치는 소거 코드들을 저장하고,
    상기 데이터 스위치는 정상 동작 중에 상기 스토리지 인터페이스를 통해 수신된 각 스토리지 명령을 상기 스토리지 명령의 각 어드레스에 따라 상기 복수의 스토리지 장치들 중 부분 집합의 각 스토리지 장치에 전송하고, 상기 제2 스토리지 장치는 상기 부분 집합에 포함되지 않는 시스템.
  6. 제1 항에 있어서,
    상기 컨트롤러는, 상기 제1 스토리지 장치가 고장 또는 부재의 경우에, 데이터 블록을 요청하는 수신된 판독 명령에 응답하여,
    상기 제2 스토리지 장치로부터 소거 코드들을 판독하고,
    상기 데이터 블록을 복구하고,
    명령 응답의 일부로써 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 복구된 데이터 블록을 전송하는 시스템.
  7. 제1 항에 있어서,
    상기 스토리지 장치들 각각은 존재 핀을 포함하는 커넥터를 포함하고, 상기 존재 핀은 상기 컨트롤러의 각각의 센싱 핀과 연결되고,
    상기 컨트롤러는 상기 각각의 센싱 핀의 전압 또는 전류의 변화에 의해 상기 제1 스토리지 장치의 제거를 검출하는 시스템.
  8. 제1 항에 있어서,
    상기 데이터 스위치는 이더넷 스위치인 시스템.
  9. 제1 항에 있어서,
    상기 데이터 스위치는 상기 컨트롤러의 포트에 연결된 PCIe 컨트롤 포트를 포함하고, 상기 데이터 스위치는 상기 PCIe 컨트롤 포트를 통해 상기 컨트롤러로부터 구성 명령들을 수신하는 시스템.
  10. 제1 항에 있어서,
    PCIe 스위치를 더 포함하고, 상기 복수의 스토리지 장치들 각각은 상기 PCIe 스위치를 통해 상기 컨트롤러와 연결된 시스템.
  11. 제1 항에 있어서,
    상기 컨트롤러는 베이스 보드 관리 컨트롤러인 시스템.
  12. 스토리지 인터페이스를 가지며, 제1 스토리지 장치 및 상기 제1 스토리지 장치와는 다른 제2 스토리지 장치를 포함하는 복수의 스토리지 장치들, 데이터 스위치 및 컨트롤러를 포함하는 스토리지 시스템을 동작시키는 방법에 있어서, 상기 방법은,
    정상 작동 중에, 상기 스토리지 인터페이스를 통해 수신된 스토리지 명령들을 각 스토리지 명령의 각각의 어드레스에 따라 상기 제1 스토리지 장치로 전송하는 단계; 및
    상기 제1 스토리지 장치가 고장 또는 부재의 경우에
    상기 컨트롤러가 제1 스토리지 장치로 보내진 스토리지 명령들을 상기 컨트롤러로 전송하도록 상기 데이터 스위치를 재구성하는 단계; 및
    상기 컨트롤러를 이용하여 각각의 수신된 각 스토리지 명령에 응답하여 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 제1 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송하는 단계를 포함하되,
    상기 제2 스토리지 장치는, 상기 제2 스토리지 장치의 데이터로부터 상기 제1 스토리지 장치들에 저장된 데이터를 복구하기 위한 소거 코드들을 저장하도록 구성되고,
    상기 제2 스토리지 장치가 상기 소거 코드들을 저장하는 경우, 상기 데이터 스위치는 외부의 리모트 호스트가 인식하지 못하도록 상기 제2 스토리지 장치를 숨기도록 구성되는 방법.
  13. 제12 항에 있어서,
    정상 작동 중에, 상기 제1 스토리지 장치에 의해 데이터 블록을 포함하는 기록 명령이 수신되면,
    상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 저장하는 단계; 및
    상기 제1 스토리지 장치를 이용하여 상기 데이터 블록의 복사본을 상기 컨트롤러로 전송하는 단계를 더 포함하는 방법.
  14. 제13 항에 있어서,
    상기 컨트롤러를 이용하여 상기 제1 스토리지 장치로부터 데이터 블록의 복사본이 수신되면,
    상기 컨트롤러를 이용하여 상기 데이터 블록을 복구 가능한 상기 소거 코드들을 생성하는 단계; 및
    상기 컨트롤러를 이용하여 상기 소거 코드들을 상기 제2 스토리지 장치에 저장하는 단계를 더 포함하는 방법.
  15. 제12 항에 있어서,
    정상 작동 동안, 상기 제1 스토리지 장치에 데이터 블록을 포함하는 기록 명령이 수신되면,
    상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 저장하는 단계;
    상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 복구 가능한 상기 소거 코드들이 생성하는 단계; 및
    상기 제1 스토리지 장치를 이용하여 상기 제2 스토리지 장치에 상기 소거 코드들을 저장하는 단계를 더 포함하는 방법.
  16. 제12 항에 있어서,
    상기 제2 스토리지 장치는 상기 소거 코드들을 저장하고,
    상기 방법은, 정상 작동 중에 상기 스토리지 인터페이스를 통해 수신된 각 스토리지 명령을 상기 스토리지 명령의 각 어드레스에 따라, 상기 복수의 스토리지 장치들의 부분 집합의 스토리지 장치들 각각으로 전송하는 단계를 포함하고, 상기 제2 스토리지 장치는 상기 부분 집합이 아닌 방법.
  17. 제12 항에 있어서,
    상기 시스템은 PCIe 스위치를 더 포함하고, 상기 컨트롤러는 상기 PCIe 스위치를 통해 상기 스토리지 장치들과 연결되고,
    상기 방법은, 상기 제1 스토리지 장치가 고장 또는 부재의 경우에, 상기 컨트롤러가 데이터 블록을 요청하는 판독 명령을 수신하는 것에 응답하여:
    상기 컨트롤러가 상기 제2 스토리지 장치로부터 상기 소거 코드들을 상기 PCIe 스위치를 통해 판독하는 단계;
    상기 컨트롤러를 이용하여 상기 데이터 블록을 복구하는 단계; 및
    상기 컨트롤러를 이용하여 명령 응답의 일부로서 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 복구된 데이터 블록을 전송하는 단계를 더 포함하는 방법.
  18. 제17 항에 있어서,
    상기 스토리지 장치들 각각은 상기 컨트롤러의 각각의 센싱 핀에 연결되는 존재 핀을 포함하고,
    상기 방법은, 상기 컨트롤러가 상기 각각의 센싱 핀의 전압 또는 전류의 변화에 의해 상기 제1 스토리지 장치의 제거를 검출하는 단계를 더 포함하는 방법.
  19. 스토리지 인터페이스를 포함하는 스토리지 시스템에서, 상기 시스템은,
    제1 스토리지 장치 및 상기 제1 스토리지 장치와는 다른 제2 스토리지 장치를 포함하는 복수의 스토리지 장치들;
    정상 작동 중에 각각의 스토리지 명령들의 각각의 어드레스에 따라, 상기 스토리지 인터페이스를 통해 수신된 상기 스토리지 명령들을 상기 제1 스토리지 장치로 전송하는 데이터 스위치; 및
    제어 수단들을 포함하되,
    상기 제2 스토리지 장치는, 상기 제2 스토리지 장치의 데이터로부터 상기 제1 스토리지 장치에 저장된 데이터를 복구하기 위한 소거 코드들을 저장하도록 구성되고,
    상기 제2 스토리지 장치가 상기 소거 코드들을 저장하는 경우, 상기 데이터 스위치는 외부의 리모트 호스트가 인식하지 못하도록 상기 제2 스토리지 장치를 숨기도록 구성되고,
    상기 제1 스토리지 장치의 고장 또는 부재의 경우에, 상기 제어 수단들은:
    상기 제1 스토리지 장치로 보내진 스토리지 명령들을 상기 제어 수단들로 전송하도록 상기 데이터 스위치를 재구성하고; 그리고
    수신된 각 스토리지 명령에 응답하여, 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 제1 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송하는 시스템.
  20. 제19 항에 있어서,
    상기 제1 스토리지 장치는 정상 작동 동안 데이터 블록을 포함하는 기록 명령의 수신 시에 상기 데이터 블록을 저장하고, 상기 제어 수단들에 상기 데이터 블록의 복사본을 전송하는 시스템.


KR1020170173110A 2017-01-20 2017-12-15 복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치 KR102527151B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762448648P 2017-01-20 2017-01-20
US62/448,648 2017-01-20
US15/470,774 2017-03-27
US15/470,774 US10255134B2 (en) 2017-01-20 2017-03-27 Control plane method and apparatus for providing erasure code protection across multiple storage devices

Publications (2)

Publication Number Publication Date
KR20180086124A KR20180086124A (ko) 2018-07-30
KR102527151B1 true KR102527151B1 (ko) 2023-05-02

Family

ID=62906306

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170173110A KR102527151B1 (ko) 2017-01-20 2017-12-15 복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치

Country Status (5)

Country Link
US (4) US10255134B2 (ko)
JP (1) JP7002346B2 (ko)
KR (1) KR102527151B1 (ko)
CN (1) CN108334285B (ko)
TW (2) TWI764973B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
CN112214166B (zh) * 2017-09-05 2022-05-24 华为技术有限公司 用于传输数据处理请求的方法和装置
US20240095196A1 (en) * 2018-03-02 2024-03-21 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd
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
TWI791880B (zh) * 2018-10-12 2023-02-11 南韓商三星電子股份有限公司 電腦系統
KR102649169B1 (ko) * 2018-12-12 2024-03-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10795846B1 (en) * 2019-07-15 2020-10-06 Cisco Technology, Inc. Scalable NVMe storage management over system management bus
US11334434B2 (en) * 2020-02-19 2022-05-17 Seagate Technology Llc Multi-level erasure system with cooperative optimization
CN111931255A (zh) * 2020-04-02 2020-11-13 深圳云存科技有限公司 自动销毁与拷贝系统
TWI789020B (zh) * 2021-09-23 2023-01-01 宇瞻科技股份有限公司 儲存裝置之控制系統及控制方法
JP2023096958A (ja) * 2021-12-27 2023-07-07 株式会社日立製作所 ストレージシステム及びストレージシステム制御方法

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3184171B2 (ja) * 1998-02-26 2001-07-09 日本電気株式会社 ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体
US20030217305A1 (en) * 2002-05-14 2003-11-20 Krehbiel Stanley E. System, method, and computer program product within a data processing system for assigning an unused, unassigned storage device as a replacement device
ATE557349T1 (de) * 2002-10-31 2012-05-15 Parallel Iron Llc Speichersystem und verfahren für ein speichersystem
US7058762B2 (en) * 2003-06-09 2006-06-06 Hewlett-Packard Development Company, L.P. Method and apparatus for selecting among multiple data reconstruction techniques
US20050228943A1 (en) * 2004-04-02 2005-10-13 Decenzo David P Multipath redundant storage system architecture and method
US7353318B2 (en) * 2005-08-26 2008-04-01 International Business Machines Corporation Apparatus and method to assign addresses to plurality of information storage devices
US7827439B2 (en) 2007-09-28 2010-11-02 Symantec Corporation System and method of redundantly storing and retrieving data with cooperating storage devices
ES2528245T3 (es) * 2009-02-03 2015-02-05 Bittorrent, Inc. Almacenamiento distribuido de datos recuperables
US8234447B2 (en) * 2009-10-09 2012-07-31 Hitachi, Ltd. Storage control device for storage system provided with storage device coupled to switch network
JP5416843B2 (ja) * 2010-05-12 2014-02-12 株式会社日立製作所 ストレージ装置、及びストレージ装置の制御方法
CN104166441B (zh) 2010-06-18 2018-05-11 希捷科技有限公司 可扩展存储装置
US8812901B2 (en) * 2011-09-23 2014-08-19 Lsi Corporation Methods and apparatus for marking writes on a write-protected failed device to avoid reading stale data in a RAID storage system
US8930749B2 (en) * 2012-04-02 2015-01-06 International Business Machines Corporation Systems and methods for preventing data loss
TW201351126A (zh) * 2012-05-03 2013-12-16 Thomson Licensing 分佈式資料儲存系統內資料檔案之儲存方法和管理裝置以及故障儲存裝置之修理方法和修理管理裝置
US8799746B2 (en) 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
US8762353B2 (en) 2012-06-13 2014-06-24 Caringo, Inc. Elimination of duplicate objects in storage clusters
US9449040B2 (en) * 2012-11-26 2016-09-20 Amazon Technologies, Inc. Block restore ordering in a streaming restore system
JP6003610B2 (ja) 2012-12-17 2016-10-05 日本電気株式会社 情報処理装置
US9229854B1 (en) 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
WO2014118776A1 (en) * 2013-01-31 2014-08-07 Technion Research & Development Foundation Limited Management and recovery of distributed storage of replicas
JP2014154042A (ja) 2013-02-12 2014-08-25 Ricoh Co Ltd 情報処理装置及びその記憶装置の交換処理方法
US9026846B2 (en) * 2013-03-15 2015-05-05 Lsi Corporation Data recovery in a raid controller by offloading contents of DRAM to a flash module on an SAS switch
US10209904B2 (en) * 2013-04-09 2019-02-19 EMC IP Holding Company LLC Multiprocessor system with independent direct access to bulk solid state memory resources
US9354991B2 (en) * 2013-06-25 2016-05-31 Microsoft Technology Licensing, Llc Locally generated simple erasure codes
US9986028B2 (en) * 2013-07-08 2018-05-29 Intel Corporation Techniques to replicate data between storage servers
JP6213130B2 (ja) * 2013-10-09 2017-10-18 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム及びストレージ制御方法
US9887008B2 (en) 2014-03-10 2018-02-06 Futurewei Technologies, Inc. DDR4-SSD dual-port DIMM device
US9923970B2 (en) * 2014-08-22 2018-03-20 Nexenta Systems, Inc. Multicast collaborative erasure encoding and distributed parity protection
WO2016060675A1 (en) 2014-10-17 2016-04-21 Hitachi, Ltd. Method and apparatus for managing data recovery of distributed storage system
US9565269B2 (en) * 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9098451B1 (en) * 2014-11-21 2015-08-04 Igneous Systems, Inc. Shingled repair set for writing data
US9880750B1 (en) * 2014-12-05 2018-01-30 Vexata, Inc. Storage architecture for storage class memories
US9575669B2 (en) 2014-12-09 2017-02-21 Western Digital Technologies, Inc. Programmable solid state drive controller and method for scheduling commands utilizing a data structure
US9959274B2 (en) * 2014-12-19 2018-05-01 Amazon Technologies, Inc. Volume-level redundancy coding techniques for sequential transfer optimized storage devices
EP3262500A4 (en) 2015-02-26 2018-10-03 Agency For Science, Technology And Research Data stripping, allocation and reconstruction
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US10114778B2 (en) * 2015-05-08 2018-10-30 Samsung Electronics Co., Ltd. Multi-protocol IO infrastructure for a flexible storage platform
US9792179B1 (en) * 2015-07-06 2017-10-17 Amazon Technologies, Inc. Eventually durable redundancy encoded data storage
US9785495B1 (en) * 2015-12-14 2017-10-10 Amazon Technologies, Inc. Techniques and systems for detecting anomalous operational data
US10452279B1 (en) * 2016-07-26 2019-10-22 Pavilion Data Systems, Inc. Architecture for flash storage server
US10229000B2 (en) * 2016-08-09 2019-03-12 Seagate Llc Erasure codes to prevent lower page corruption in flash memory
US10268538B2 (en) * 2016-11-28 2019-04-23 Alibaba Group Holding Limited Efficient and enhanced distributed storage clusters
US10459795B2 (en) * 2017-01-19 2019-10-29 International Business Machines Corporation RAID systems and methods for improved data recovery performance
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

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
일본공개특허 제2014-119948호(2014.06.30.) 1부.*
한국공개특허 제10-2010-0072067호(2010.06.29.) 1부.*
한국공개특허 제10-2014-0107487호(2014.09.04.) 1부.*
한국공개특허 제10-2016-0131906호(2016.11.16.) 1부.*

Also Published As

Publication number Publication date
TWI780016B (zh) 2022-10-01
US20180210785A1 (en) 2018-07-26
CN108334285A (zh) 2018-07-27
TW201828073A (zh) 2018-08-01
US11429487B2 (en) 2022-08-30
US10255134B2 (en) 2019-04-09
US20190196909A1 (en) 2019-06-27
KR20180086124A (ko) 2018-07-30
CN108334285B (zh) 2023-04-18
US11042442B2 (en) 2021-06-22
TW202230147A (zh) 2022-08-01
US20210294699A1 (en) 2021-09-23
US20220413964A1 (en) 2022-12-29
JP7002346B2 (ja) 2022-01-20
TWI764973B (zh) 2022-05-21
JP2018116704A (ja) 2018-07-26

Similar Documents

Publication Publication Date Title
KR102527151B1 (ko) 복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치
US8074105B2 (en) High data availability SAS-based RAID system
US7356638B2 (en) Using out-of-band signaling to provide communication between storage controllers in a computer storage system
US11874922B2 (en) System and method for detecting malicious software in NVMe over fabrics devices
US9009556B2 (en) Error correction and recovery in chained memory architectures
KR102147629B1 (ko) 플렉시블 서버 시스템
US10027532B2 (en) Storage control apparatus and storage control method
KR20180111483A (ko) Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법
US7870417B2 (en) Apparatus, system, and method for adapter card failover
US9838110B2 (en) Dynamic link repair from lane failure with minimal link-down time while sparing fault channels
US9092398B2 (en) Restoring expander operations in a data storage switch
EP1556769A1 (en) Systems and methods of multiple access paths to single ported storage devices
JP4755050B2 (ja) データ処理装置、モード管理装置、及びモード管理方法
US20100211821A1 (en) Apparatus and method to manage redundant non-volatile storage backup in a multi-cluster data storage system
US10558598B2 (en) Logic circuit that provides verification of signals used to interrupt server operation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant