KR102527151B1 - 복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치 - Google Patents
복수의 스토리지 장치들에 걸친 소거 코드 보호를 제공하기 위한 제어 평면 방법 및 장치 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1084—Degraded mode, e.g. caused by single or multiple storage removals or disk failures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1096—Parity calculation or recalculation after configuration or reconfiguration of the system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2002—Error 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/2007—Error 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/201—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2002—Error 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/2012—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI 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
본 발명에 따른 실시예들의 하나 이상의 측면들은 데이터 스토리지 장치에 관한 것으로, 보다 구체적으로 소거 코드 보호(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은 본 발명의 일 실시예에 따른 스토리지 시스템을 동작시키기 위한 방법에 대한 플로우 차트이다.
도 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: 미드 평면
110: 이더넷 스위치 115: 컨트롤러
120: PCIe 스위치 125: 존재 핀
130: 미드 평면
Claims (20)
- 스토리지 인터페이스를 포함하는 스토리지 시스템에서, 상기 시스템은,
제1 스토리지 장치 및 상기 제1 스토리지 장치와는 다른 제2 스토리지 장치를 포함하는 복수의 스토리지 장치들;
정상 작동 중에 각각의 스토리지 명령들의 각각의 어드레스에 따라, 상기 스토리지 인터페이스를 통해 수신된 상기 스토리지 명령들을 상기 제1 스토리지 장치로 전송하는 데이터 스위치; 및
컨트롤러를 포함하되,
상기 제2 스토리지 장치는, 상기 제2 스토리지 장치의 데이터로부터 상기 제1 스토리지 장치에 저장된 데이터를 복구하기 위한 소거 코드들을 저장하도록 구성되고,
상기 제2 스토리지 장치가 상기 소거 코드들을 저장하는 경우, 상기 데이터 스위치는 외부의 리모트 호스트가 인식하지 못하도록 상기 제2 스토리지 장치를 숨기도록 구성되고,
상기 제1 스토리지 장치가 고장 또는 부재의 경우에, 상기 컨트롤러는:
상기 제1 스토리지 장치로 보내진 스토리지 명령들을 상기 컨트롤러로 전송하도록 상기 데이터 스위치를 재구성하고; 그리고
수신된 각 스토리지 명령에 응답하여, 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 제1 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송하는 시스템. - 제1 항에 있어서,
상기 제1 스토리지 장치는 정상 동작 동안, 데이터 블록을 포함하는 기록 명령을 수신하면, 상기 데이터 블록을 저장하고, 상기 데이터 블록의 복사본을 상기 컨트롤러로 전송하는 시스템. - 제2 항에 있어서,
상기 컨트롤러는 상기 제1 스토리지로부터 데이터 블록의 복사본을 수신하면, 상기 데이터 블록을 복구하는 있는 소거 코드들을 생성하고, 상기 소거 코드들을 상기 제2 스토리지 장치에 저장하는 시스템. - 제1 항에 있어서,
상기 제1 스토리지 장치는 정상 동작 중에 데이터 블록을 포함하는 기록 명령을 수신하면,
상기 데이터 블록을 저장하고,
상기 데이터 블록을 복구하는 소거 코드들을 생성하고,
상기 소거 코드들을 상기 제2 스토리지 장치에 저장하는 시스템. - 제1 항에 있어서,
상기 제2 스토리지 장치는 소거 코드들을 저장하고,
상기 데이터 스위치는 정상 동작 중에 상기 스토리지 인터페이스를 통해 수신된 각 스토리지 명령을 상기 스토리지 명령의 각 어드레스에 따라 상기 복수의 스토리지 장치들 중 부분 집합의 각 스토리지 장치에 전송하고, 상기 제2 스토리지 장치는 상기 부분 집합에 포함되지 않는 시스템. - 제1 항에 있어서,
상기 컨트롤러는, 상기 제1 스토리지 장치가 고장 또는 부재의 경우에, 데이터 블록을 요청하는 수신된 판독 명령에 응답하여,
상기 제2 스토리지 장치로부터 소거 코드들을 판독하고,
상기 데이터 블록을 복구하고,
명령 응답의 일부로써 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 복구된 데이터 블록을 전송하는 시스템. - 제1 항에 있어서,
상기 스토리지 장치들 각각은 존재 핀을 포함하는 커넥터를 포함하고, 상기 존재 핀은 상기 컨트롤러의 각각의 센싱 핀과 연결되고,
상기 컨트롤러는 상기 각각의 센싱 핀의 전압 또는 전류의 변화에 의해 상기 제1 스토리지 장치의 제거를 검출하는 시스템. - 제1 항에 있어서,
상기 데이터 스위치는 이더넷 스위치인 시스템. - 제1 항에 있어서,
상기 데이터 스위치는 상기 컨트롤러의 포트에 연결된 PCIe 컨트롤 포트를 포함하고, 상기 데이터 스위치는 상기 PCIe 컨트롤 포트를 통해 상기 컨트롤러로부터 구성 명령들을 수신하는 시스템. - 제1 항에 있어서,
PCIe 스위치를 더 포함하고, 상기 복수의 스토리지 장치들 각각은 상기 PCIe 스위치를 통해 상기 컨트롤러와 연결된 시스템. - 제1 항에 있어서,
상기 컨트롤러는 베이스 보드 관리 컨트롤러인 시스템. - 스토리지 인터페이스를 가지며, 제1 스토리지 장치 및 상기 제1 스토리지 장치와는 다른 제2 스토리지 장치를 포함하는 복수의 스토리지 장치들, 데이터 스위치 및 컨트롤러를 포함하는 스토리지 시스템을 동작시키는 방법에 있어서, 상기 방법은,
정상 작동 중에, 상기 스토리지 인터페이스를 통해 수신된 스토리지 명령들을 각 스토리지 명령의 각각의 어드레스에 따라 상기 제1 스토리지 장치로 전송하는 단계; 및
상기 제1 스토리지 장치가 고장 또는 부재의 경우에
상기 컨트롤러가 제1 스토리지 장치로 보내진 스토리지 명령들을 상기 컨트롤러로 전송하도록 상기 데이터 스위치를 재구성하는 단계; 및
상기 컨트롤러를 이용하여 각각의 수신된 각 스토리지 명령에 응답하여 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 제1 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송하는 단계를 포함하되,
상기 제2 스토리지 장치는, 상기 제2 스토리지 장치의 데이터로부터 상기 제1 스토리지 장치들에 저장된 데이터를 복구하기 위한 소거 코드들을 저장하도록 구성되고,
상기 제2 스토리지 장치가 상기 소거 코드들을 저장하는 경우, 상기 데이터 스위치는 외부의 리모트 호스트가 인식하지 못하도록 상기 제2 스토리지 장치를 숨기도록 구성되는 방법. - 제12 항에 있어서,
정상 작동 중에, 상기 제1 스토리지 장치에 의해 데이터 블록을 포함하는 기록 명령이 수신되면,
상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 저장하는 단계; 및
상기 제1 스토리지 장치를 이용하여 상기 데이터 블록의 복사본을 상기 컨트롤러로 전송하는 단계를 더 포함하는 방법. - 제13 항에 있어서,
상기 컨트롤러를 이용하여 상기 제1 스토리지 장치로부터 데이터 블록의 복사본이 수신되면,
상기 컨트롤러를 이용하여 상기 데이터 블록을 복구 가능한 상기 소거 코드들을 생성하는 단계; 및
상기 컨트롤러를 이용하여 상기 소거 코드들을 상기 제2 스토리지 장치에 저장하는 단계를 더 포함하는 방법. - 제12 항에 있어서,
정상 작동 동안, 상기 제1 스토리지 장치에 데이터 블록을 포함하는 기록 명령이 수신되면,
상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 저장하는 단계;
상기 제1 스토리지 장치를 이용하여 상기 데이터 블록을 복구 가능한 상기 소거 코드들이 생성하는 단계; 및
상기 제1 스토리지 장치를 이용하여 상기 제2 스토리지 장치에 상기 소거 코드들을 저장하는 단계를 더 포함하는 방법. - 제12 항에 있어서,
상기 제2 스토리지 장치는 상기 소거 코드들을 저장하고,
상기 방법은, 정상 작동 중에 상기 스토리지 인터페이스를 통해 수신된 각 스토리지 명령을 상기 스토리지 명령의 각 어드레스에 따라, 상기 복수의 스토리지 장치들의 부분 집합의 스토리지 장치들 각각으로 전송하는 단계를 포함하고, 상기 제2 스토리지 장치는 상기 부분 집합이 아닌 방법. - 제12 항에 있어서,
상기 시스템은 PCIe 스위치를 더 포함하고, 상기 컨트롤러는 상기 PCIe 스위치를 통해 상기 스토리지 장치들과 연결되고,
상기 방법은, 상기 제1 스토리지 장치가 고장 또는 부재의 경우에, 상기 컨트롤러가 데이터 블록을 요청하는 판독 명령을 수신하는 것에 응답하여:
상기 컨트롤러가 상기 제2 스토리지 장치로부터 상기 소거 코드들을 상기 PCIe 스위치를 통해 판독하는 단계;
상기 컨트롤러를 이용하여 상기 데이터 블록을 복구하는 단계; 및
상기 컨트롤러를 이용하여 명령 응답의 일부로서 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 복구된 데이터 블록을 전송하는 단계를 더 포함하는 방법. - 제17 항에 있어서,
상기 스토리지 장치들 각각은 상기 컨트롤러의 각각의 센싱 핀에 연결되는 존재 핀을 포함하고,
상기 방법은, 상기 컨트롤러가 상기 각각의 센싱 핀의 전압 또는 전류의 변화에 의해 상기 제1 스토리지 장치의 제거를 검출하는 단계를 더 포함하는 방법. - 스토리지 인터페이스를 포함하는 스토리지 시스템에서, 상기 시스템은,
제1 스토리지 장치 및 상기 제1 스토리지 장치와는 다른 제2 스토리지 장치를 포함하는 복수의 스토리지 장치들;
정상 작동 중에 각각의 스토리지 명령들의 각각의 어드레스에 따라, 상기 스토리지 인터페이스를 통해 수신된 상기 스토리지 명령들을 상기 제1 스토리지 장치로 전송하는 데이터 스위치; 및
제어 수단들을 포함하되,
상기 제2 스토리지 장치는, 상기 제2 스토리지 장치의 데이터로부터 상기 제1 스토리지 장치에 저장된 데이터를 복구하기 위한 소거 코드들을 저장하도록 구성되고,
상기 제2 스토리지 장치가 상기 소거 코드들을 저장하는 경우, 상기 데이터 스위치는 외부의 리모트 호스트가 인식하지 못하도록 상기 제2 스토리지 장치를 숨기도록 구성되고,
상기 제1 스토리지 장치의 고장 또는 부재의 경우에, 상기 제어 수단들은:
상기 제1 스토리지 장치로 보내진 스토리지 명령들을 상기 제어 수단들로 전송하도록 상기 데이터 스위치를 재구성하고; 그리고
수신된 각 스토리지 명령에 응답하여, 상기 데이터 스위치 및 상기 스토리지 인터페이스를 통해 상기 제1 스토리지 장치가 전송했을 것과 동일한 명령 응답을 전송하는 시스템. - 제19 항에 있어서,
상기 제1 스토리지 장치는 정상 작동 동안 데이터 블록을 포함하는 기록 명령의 수신 시에 상기 데이터 블록을 저장하고, 상기 제어 수단들에 상기 데이터 블록의 복사본을 전송하는 시스템.
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)
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)
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 |
-
2017
- 2017-03-27 US US15/470,774 patent/US10255134B2/en active Active
- 2017-12-15 KR KR1020170173110A patent/KR102527151B1/ko active IP Right Grant
-
2018
- 2018-01-16 TW TW107101465A patent/TWI764973B/zh active
- 2018-01-16 TW TW111114166A patent/TWI780016B/zh active
- 2018-01-17 JP JP2018005598A patent/JP7002346B2/ja active Active
- 2018-01-19 CN CN201810056894.4A patent/CN108334285B/zh active Active
-
2019
- 2019-02-28 US US16/289,257 patent/US11042442B2/en active Active
-
2021
- 2021-06-04 US US17/339,772 patent/US11429487B2/en active Active
-
2022
- 2022-08-29 US US17/898,328 patent/US20220413964A1/en active Pending
Non-Patent Citations (4)
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 |