KR20140031112A - 스케일러블 스토리지 보호 - Google Patents
스케일러블 스토리지 보호 Download PDFInfo
- Publication number
- KR20140031112A KR20140031112A KR1020130100271A KR20130100271A KR20140031112A KR 20140031112 A KR20140031112 A KR 20140031112A KR 1020130100271 A KR1020130100271 A KR 1020130100271A KR 20130100271 A KR20130100271 A KR 20130100271A KR 20140031112 A KR20140031112 A KR 20140031112A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- node
- global
- disk
- local
- 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
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1803—Error detection or correction; Testing, e.g. of drop-outs by redundancy in data representation
-
- 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
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, i.e. distributed RAID systems with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Hardware Redundancy (AREA)
Abstract
본 개시 내용은 스케일러블 스토리지 시스템의 데이터를 보호하는 것에 관한 것이다. 스케일러블 스토리지 시스템은 복수의 노드를 포함하며, 각각의 상기 노드는 하나 이상의 하드-디스크 드라이브 및/또는 고체 상태 디스크 드라이브와 같은 직접-부착형 스토리지(DAS)를 갖는다. 노드들은 인터-노드 통신 네트워크를 통해 결합되며, 실질적 전체의 DAS는 각각의 노드에 의해 전역적으로 액세스가능하다. DAS는 노드들 중 한 노드에서 장애가 존재할 때 신뢰성 있고 전역적으로 액세스 가능한 DAS에 저장된 데이터를 유지하는 인트라-노드 보호를 이용하여 보호된다. DAS는 또한 노드들 중 적어도 한 노드가 장애인 경우 신뢰성있고 전역적으로 액세스가능한 DAS에 저장된 데이터를 유지하는 인터-노드 보호를 이용하여 보호된다.
Description
직접 부착형 디스크(directly attached disks)를 가진 스케일러블 스토리지 시스템은 데이터 보호를 위한 리던던시 메커니즘(redundancy mechanisms)을 필요로 한다. 단일 서버와 같은 단일 노드에서는 RAID-5, RAID-6, 다른 RAID 레벨, 또는 그의 변형과 같은 직접 부착형 스토리지(directly-attached storage (DAS))의 보호를 위한 다양한 기술이 사용된다. 대형 JBOD 콤플렉스와 같은 분산 시스템 또는 대규모 스토리지 시스템에서는 오류 정정 코딩(error-correction coding)을 복수의 디스크들에 걸쳐 분산시킴으로써 보호하는 소거-코딩 기술(erasure-coding techniques)이 사용된다. 그러나, 소거-코딩은 대량의 데이터의 수송(shipping)(즉, 송신 및 수신)을 필요로 한다. 일부 실시예에서, n개 드라이브 장애 중 r개를 다루기 위해 r개의 개별 디스크에서 데이터가 업데이트되어야 한다. 노드 장애에 대비하여 복원력을 겸비할 때, 전술한 시스템은 리던던시의 양에서 및/또는 업데이트 또는 복구를 위해 노드들 사이에서 수송될 데이터의 양에서 아주 비용이 많이드는 경향이 있다.
개시내용의 실시예는 서로 통신하는 복수의 프로세싱 노드를 포함하는 스토리지 시스템에 관련된다. 각각의 프로세싱 노드는 적어도 하나의 호스트와 통신하는 복수의 디스크들을 포함한다. 호스트는 데이터를 복수의 디스크들 중 선택된 디스크에 기록하기 위해 구성된다. 로컬 리던던시 계산 유닛은 호스트에 의한 선택된 디스크에 기록된 데이터를 이용하여 로컬 리던던트 데이터를 결정하기 위해 구성된다. 로컬 리던던시 계산 유닛은 또한 로컬 리던던트 데이터를 복수의 디스크들 중 적어도 하나의 디스크에 저장하기 위해 구성된다. 델타 계산 유닛은 호스트에 의한 선택된 디스크에 기록된 데이터를 이용하여 델타 데이터를 결정하기 위해 구성된다. 델타 계산 유닛은 또한 델타 데이터를 적어도 하나의 다른 프로세싱 노드에 송신하도록 구성된다. 글로벌 리던던시 계산 유닛은 적어도 하나의 다른 프로세싱 노드로부터 델타 데이터를 수신하기 위해 구성된다. 글로벌 리던던시 계산 유닛은 또한 다른 프로세싱 노드로부터 수신한 델타 데이터를 이용하여 글로벌 리던던트 데이터를 결정하고 글로벌 리던던트 데이터를 복수의 디스크들 중 적어도 하나의 디스크에 저장하기 위해 구성된다.
전술한 개괄적인 설명과 다음의 상세한 설명은 모두 반드시 개시 내용을 제한하는 것이 아님은 물론이다. 명세서의 일부에 포함되고 그 일부를 구성하는 첨부 도면은 개시 내용의 실시예를 예시한다.
개시 내용의 실시예는 첨부 도면을 참조함으로써 본 기술에서 통상의 지식을 가진 자들에게 보다 잘 이해될 수 있다.
도 1은 개시 내용의 실시예에 따라서 스케일러블 스토리지 시스템을 예시하는 블록도이다.
도 2는 개시 내용의 실시예에 따라서 호스트 데이터 기록을 처리하는 방법을 예시하는 흐름도이다.
도 3은 개시 내용의 실시예에 따라서 델타 데이터를 처리하는 방법을 예시하는 흐름도이다.
도 1은 개시 내용의 실시예에 따라서 스케일러블 스토리지 시스템을 예시하는 블록도이다.
도 2는 개시 내용의 실시예에 따라서 호스트 데이터 기록을 처리하는 방법을 예시하는 흐름도이다.
도 3은 개시 내용의 실시예에 따라서 델타 데이터를 처리하는 방법을 예시하는 흐름도이다.
이제 첨부 도면에 예시된 바와 같은 개시된 실시예가 상세히 설명될 것이다.
도 1 내지 도 3은 일반적으로 적어도 하나의 스케일러블 스토리지 시스템을 보호하기 위한 시스템 및 방법의 실시예를 예시한다. 스케일러블 스토리지 시스템에서의 몇 가지 과제는 모든 데이터로의 글로벌 액세스와, 디스크 장애로부터 복원력과, 하나 이상의 프로세싱 노드의 장애를 처리하는 메커니즘의 복합적인 것을 제공하는 것을 포함한다. 전술한 과제 중 적어도 일부는 하드 디스크 드라이브(HDD) 장애와 같은 인트라-노드(intra-node) 장애로부터 보호하는 인트라-노드 레벨에서 리던던시를 인트라-노드 보호의 장애와 같은 노드들 중 하나 이상의 노드의 장애로부터 보호하는 인터-노드 레벨에서 리던던시와 균형을 이루게 함으로써 달성된다. 일부 실시예에서, 노드들에서 분산 방식으로 캐싱하는 것은 노드 각각의 로컬 성능을 더욱 개선하여 주며 데이터 보호를 위해 사용된 기록들의 조기 확인응답(acknowledgement)을 가능하게 해줌으로써 스케일러블 스토리지 시스템의 시스템-레벨 성능을 개선한다.
도 1은 스케일러블 직접 부착형 스토리지(scalable directly-attached storage (DAS))와 같은 스토리지 시스템(100)의 실시예를 예시하지만, 이것으로 제한되지 않는다. 시스템(100)은 서버와 같은 복수의 프로세싱 노드(102)를 포함한다. 각각의 프로세싱 노드(102)는 (하나 이상의 프로세서 또는 CPU와 같은) 각자의 (즉, 로컬) 호스트(104) 및 복수의 디스크들 드라이브(106)와 같은 각자의 (즉, 로컬) DAS(106)를 포함한다. 여러 실시예에서, 로컬 DAS(106)는 각자의 하나 이상의 (즉, 로컬) I/O 컨트롤러(108)를 통해 로컬 호스트(104)와 통신가능하게 연결되어 있다. 실질적인 전체의, 이를 테면, 모든 스토리지(106A-106Z)는 프로세싱 노드(102) 모두에게 전역적으로 식별된다. 특정 프로세싱 노드(102A)의 DAS(106A-106C)는 제각기 프로세싱 노드(102)의 "로컬 스토리지(local storage)"라고 불리운다. 다른 프로세싱 노드(102B-102M)의 DAS(106D-106Z)는 제각기 특정 프로세싱 노드(102A)의 "외부 스토리지(foreign storage)"라고 불리운다. 프로세싱 노드(102)는 인터-노드 통신 네트워크(116), 이를 테면, 이것으로 제한되지 않지만, 직렬 부착형 소형 컴퓨터 시스템 인터페이스(serial attached small computer system interface (SAS)) 스위칭 인터커넥트를 통해 서로 통신한다. 프로세싱 노드(102)는 인터-노드 통신 네트워크(116)를 통해 실질적 전체의 스토리지(106A-106Z)에 액세스한다. 그러나, 일부 실시예에서, 특정 프로세싱 노드(102A)의 각각의 로컬 스토리지(106A-106C)는 각각의 외부 스토리지(106D-106Z)에 액세스하는 것 보다 더 빠르며/빠르거나 대역폭이 더 높다. 일부 실시예에서, 인터-노드 통신 네트워크(116)는 적어도 하나의 SAS 패브릭, 이더넷 네트워크, 인피니밴드 네트워크(InfiniBand network), PCIe(PCI-e(Peripheral Component Interconnect express) 상호접속 네트워크, 근거리 통신 네트워크(LAN), 광 대역 통신 네트워크(WAN), 사유 네트워크(proprietary network), 또는 이들의 어떤 조합을 포함하지만, 이것으로 제한되지 않는다.
일부 실시예에서, 시스템(100)은 스토리지(106)의 공유를 용이하게 해주는 로킹 및/또는 코히어런시 메커니즘을 더 포함한다. 예를 들면, 디렉토리-기반의 캐싱 메커니즘은 데이터의 소유권 및/또는 변경을 추적할 수 있게 해준다. 일부 실시예에서, 각각의 프로세싱 노드(102)는 자주 액세스되는 데이터를 저장하는 디스크 캐시와 같은 캐시를 포함한다. 여러 실시예에 따르면, 자주 액세스된 데이터의 일부는 프로세싱 노드에 대해 로컬이며/이거나 자주 액세스되는 데이터의 일부는 포린(foreign)이다. 일부 실시예에서, 디스크 캐시는 고체 상태 디스크 드라이브(SSD)를 포함하지만, 이것으로 제한되지 않는다.
멀티-노드 스토리지 시스템(100)에서 몇 가지 관심의 장애 시나리오는 다음과 같은 것을 포함한다.
- 프로세싱 노드(102)의 HDD 또는 SSD(106)와 같은 하나 이상의 입력/출력(I/O) 장치의 장애,
- 프로세싱 노드(102) 중 하나의 프로세싱 노드 내 I/O 장치(106) 중 하나 이상의 장치에 이르는 경로의 장애,
- 호스트(104) 또는 인트라-노드 통신 인프라스트럭처와 같은 프로세싱 노드(102)의 일부 또는 전부의 장애,
- 프로세싱 노드들(102)을 연결시키는 인터-노드 통신 네트워크(116)와 같은 상위 레벨 통신 인프라스트럭처의 장애.
이러한 장애는 인트라-노드 장애 또는 인터-노드 장애로 분류된다. 인트라-노드 장애는 프로세싱 노드(102)의 적어도 일부를 사용불능으로 만들지만 프로세싱 노드(102)에 대해 로컬인 데이터로의 글로벌 액세스를 포함하여 프로세싱 노드(102)의 지속적인 동작을 못하게 하지 않는 장애이다. 인터-노드 장애는 프로세싱 노드(102) 또는 프로세싱 노드(102)에 대해 로컬인 데이터의 적어도 일부를 사용불능으로 만드는 장애이다. 일부의 인트라-노드 장애는 장애가 일어난 프로세싱 노드(102)의 레벨에서 탄력적 대처가 가능하며, (가능한 성능 충격을 제외하고) 다른 프로세싱 노드(102)에 전역적으로 식별가능하지 않다.
장애는 또한 경(hard) 장애(예를 들면, 잘 풀리지 않는, 반복적인) 또는 연(soft) 장애 (예를 들면, 일회성, 일시적, 파워 사이클 후 사라짐)로서 특징지워진다. 많은 노드 장애는 소프트웨어 충돌과 같은 연 장애이며, 그래서 일시적이거나 지속기간이 짧다. 디스크 장애도 또한 연 장애 (예를 들면, 새로운 데이터를 기록함으로써 복구 가능한 일시적인 수정 불능 오류) 또는 경 장애(예를 들면, 헤드 충돌로 인한 디스크의 장애) 중 어느 하나이다. 장애 지속 기간, 그래서 경 장애 대 연 장애 분류는 얼마나 많은 각종 형태의 동시적인 에러가 고려되는지에 기반하여 장애의 가능성을 계산하는데 관련이 있다. 일부 실시예에서, 대부분의 프로세싱 노드 장애가 연 장애인 경우에 복수의 프로세싱 노드가 동시에 장애를 일으키는 확률은 대부분의 프로세싱 노드 장애가 경 장애인 경우에 복수의 프로세싱 노드가 동시에 장애를 일으키는 확률보다 적다.
시스템-레벨의 장애는 어느 프로세싱 노드(102)에 저장된 호스트-기록된(host-written) (즉, 논-리던던트(non-redundant)) 데이터 중 어느 데이터의 복구불능 손실 또는 프로세싱 노드(102)의 특정 개수보다 많은 손실과 같은 멀티-노드 스토리지 시스템의 장애이다. 일부 실시예에서, 시스템(100)은 적어도 부분적으로는 시스템-레벨 장애의 확률을 특정 값보다 적게 줄이도록 설계된다.
단순한 소거-코딩 해결책은 다량의 리던던시 및/또는 데이터 수송을 수반하는 경향이 있다. 예를 들면, 각기 n개 (HDD 또는 SSD와 같은) 디스크(106)를 포함하는 m개 노드(102)를 고려해보면, 총 m*n 개 디스크(106)이다. 어느 세개의 디스크(106)를 장애로부터 보호하기 위해, 적어도 세개의 디스크(106)가 리던던트 데이터를 포함하여야 한다. 다른 (m*n-3) 데이터(즉, 논-리던던트) 디스크(106) 중 어느 디스크에 기록하려면 3개의 리던던트 디스크(106)를 업데이트하는 것이 필요하다. 프로세서와 같은 호스트(104)가 데이터 디스크(106) 중 하나의 디스크에 작고 랜덤한 기록(예를 들면, 4KB 또는 8KB)을 수행할 때, 총 네 개의 유사한 크기의 기록이 수행되어야 하며, 네 개 중 세 개의 기록은 계산(즉, 호스트 기록 이전의 구 데이터(old data) 및 호스트에 의해 기록된 새로운 데이터(new data)에 기반하여 리던던트 데이터를 업데이트하는 것)을 수반한다. 더욱이, 만일 하나 이상의 노드 장애가 소거-코딩으로 처리된다면, 세 개의 리던던트 디스크(106)는 가급적이면 상이한 노드(102)에 배치되는 것이 더 좋다. 따라서, 호스트 기록은, 선택된 데이터 디스크(106A)를 포함하는 노드(102A)의 선택된 데이터 디스크로부터 구 데이터를 판독하기와, 새로운 데이터를 선택된 데이터 디스크(106A)에 기록함으로써 구 데이터를 호스트(104)에 의해 제공된 새로운 데이터로 교체하기와, 구 데이터와 새로운 데이터 간의 델타와 같은 함수를 계산하기와, 델타를 상이한 노드(102)에 배치될 수 있는 세개의 리던던트 디스크(106)로 수송하기와, 리던던트 디스크(106) 중 하나를 포함하는 각 노드(102) 상의 리던던트 데이터의 구 버전을 판독하기와, 델타를 이용하여 리던던트 데이터로에 대한 업데이트를 결정하기와, 리던던트 데이터의 새로운 버전으로 다시 기록하기를 필요로 한다. 델타를 복수의 노드(102)에 수송하는 것은 지연 시간과 전력을 둘 다 소모한다. 일부 실시예에서, 호스트 기록 데이터가 "안전(safe)"할 때까지 호스트 기록이 확인응답될 수 없기 때문에 또 다른 지연이 발생하며, 호스트 기록 데이터는 리던던트 데이터 기록이 완료될 때까지 안전하지 않다.
RAID와 같은 노드(102) 내의 장애에 대해 잘 작동하는 단일 보호 해결책(single protection solution)은 복수의 노드(102) 전체에는 적합하지 않을 수 있다. 전술한 예에서 예시된 소거-코딩과 같은 전역적 해결책은 노드(102) 사이에서 수송되는 데이터 량의 면에서 너무 비싸다. 더욱이, 각종 장애 시나리오마다 상이한 가능성을 갖는다. 전형적으로, 시스템 장애의 확률을 줄이는 것이 디스크 장애의 확률 또는 노드 장애의 확률을 개별적으로 줄이는 것보다 더욱 중요하다. 일부 실시예에서, 시스템(100)은, 노드들 사이에서 더 적은 데이터를 수송하기, 성능 더 높이기, 비용 더 낮추기(예를 들면, 소정의 시스템-레벨 장애 확률에 필요한 리던던시의 양을 낮추기), 전력을 더 낮추기, 지연을 더 낮추기, 및 다른 전력, 비용 및 성능 매트릭스 중 하나 이상을 성취하기 위해 구성된다. 예를 들면, 개개의 하드 디스크 드라이브(106)의 장애는 아주 그럴 수 있다. 그러므로, 일부 실시예에서, 그러므로, 시스템-장애의 확률은 더 많은 리던던시를 하드 디스크 드라이브 장애로부터 보호하는데 제공하고 노드 장애에 대해서는 더 적게 제공함으로써 줄어들며, 그럼으로써 성능을 과도하게 절충하지 않고 또는 높은 데이터 수송이나 리던던시 비용을 필요로 하지 않고 시스템-장애의 확률을 줄일 수 있다.
실시예(도 1 참조)에서, 시스템(100)은 노드(102) 내 I/O 장치(106)에 저장된 데이터를 보호하는 제1 형태의 보호(즉, "내부", "로컬", 또는 "인트라-노드" 보호) 및 하나 이상의 노드(102)의 장애로부터 보호하는 제2 형태의 보호(즉, "외부", "글로벌" 또는 "인터-노드" 보호)를 포함한다. 전술한 스케일러블 스토리지 보호 형태는 보호 및 복구를 위해 노드들(102) 사이에서 수송되어야 하는 데이터 량을 줄여준다. 더욱이, 델타-캐싱 메커니즘은 호스트 기록이 안전하게 저장되는 것을 확인응답하는 데 필요한 시간을 줄여준다.
일부 실시예에서, 시스템(100)은 로컬(즉, 인트라-노드) 대 글로벌(즉, 인터-노드) 장애로부터 보호하는 별개의 메커니즘(110, 114)을 포함한다. 다른 실시예에서, 로컬 보호 메커니즘(110) 및 글로벌 보호 메커니즘(114)은 각기 각자의 장애 확률을 줄이도록 선택됨으로써, 전체 시스템-레벨 장애 확률을 특정 레벨까지 줄일 수 있다. 여러 실시예에서, 로컬 보호 메커니즘(110) 및 글로벌 보호 메커니즘(110)는 각기 리던던트 데이터 저장 및 장애로부터 복구를 위해 노드(102) 사이에서 수송되는 데이터 량을 줄이도록 선택된다.
일부 실시예에서, 스케일러블 스토리지 보호를 갖춘 시스템(100)은 비용 면에서 장점을 제공한다. 예를 들면, 이전에 기술된 m개 노드(102)가 있고, 각 노드가기 n개 디스크(106)를 가지며 3개 디스크 장애로부터 보호하는 요건이 있으며, 또한 리던던트 디스크들(106)이 모두 상이한 노드(102) 상에 존재한다고 가정하는 단순 소거-코딩을 고려해보자. 단순 소거-코딩 접근법은 리던던시를 위해 데이터를 다른 노드(102)에 기록하는 것 만큼의 데이터를 3회에 걸쳐 수송하는 것이다. 스케일러블 스토리지 보호를 갖춘 시스템(100)에 의해 제안된 다층 보호는 융통성 있게 균형을 유지하여 준다. 예를 들면, 일부 실시예에서, 시스템(100)은 다양한 장애 확률(예를 들면, 경 장애 대 연 장애) 또는 비용이 드는 요인(예를 들면, 데이터를 수송하는 비용)을 기반으로 하여 설계된다.
전술한 단순 소거-코딩 접근법 대신 스케일러블 스토리지 보호를 갖춘 시스템(100)의 예시적인 실시예에서, 각각의 노드(102)에서 n개 디스크(106) 중 두 개의 디스크는 그 노드(102)의 리던던트 로컬 데이터를 포함하고 있으며, m 개 노드(102) 중 하나 이상의 노드(즉, 리던던트 노드)는 전역적으로 리던던트 데이터를 포함하고 있다. 하나의 리던던트 노드(102)를 가진 실시예에서, 호스트(104)가 데이터 디스크(106) 중 하나의 디스크에 대해 작고 랜덤한 기록(예를 들면, 4KB 또는 8KB 기록)을 수행할 때, 총 네 개의 더 작은 크기의 기록이 수행되어야 하지만, 유사한 크기의 기록 중 세 개(즉, 호스트 기록 데이터 및 두 로컬 리던던트 데이터 기록)는 로컬이다. 더 작은 크기의 기록 중 단지 하나의 기록만이 리던던트 노드(102)에 수송되어야 한다. 단순 소거-코딩과 비교하여 볼 때, 수송될 데이터 량은 줄어든다(예를 들면, 2/3 만큼). 전술한 예에서, 스케일러블 스토리지 보호를 갖춘 시스템(100)은 적어도 세개의 디스크 장애를 처리할 수 있다. 일부 실시예에서, 시스템(100)은 노드(102) 당 두개 디스크 장애를 처리하는 것이 가능해진다.
전술한 예에서, 한 개의 노드(102)에서 세개의 디스크 장애는 각 노드(102)의 두 리던던트 디스크(106)가 노드(102)에서 n 개 디스크(106) 중 두 디스크의 장애에 대해서 정정할 수 있을 뿐이기 때문에 노드(102)의 장애와 실질적으로 같거나 유사하다. 일부 실시예에서, 인트라-노드 보호의 장애 확률은 노드(102)의 장애 확률에 포함되며 적어도 부분적으로 인터-노드 보호의 요구된 레벨을 결정하는데 이용된다. 단순, 소거-코딩 접근법은 세 개의 노드 장애까지 다룰 수 있지만, 이 결과는 전역적으로 리던던트한 데이터를 처리하기 위해 더 높은 퍼센티지의 노드(102)들이 사용된다는 것이다. 만일 노드 장애 확률이 디스크 장애 확률과 비교해 적다면, 스케일러블 스토리지 보호의 대안은 대등하거나 또는 I/O 수송 및 리던던시 중 적어도 하나에서 더 낮은 비용으로 더 좋은 보호를 제공한다.
전술한 예들은 단순 소거-코딩 보호 시스템과 비교한 스케일러블 스토리지 보호를 갖춘 시스템(100)의 적어도 몇 가지 장점을 보여준다. 그러나, 이 예들은 어떤 형태로든 개시 내용을 제한하려는 것은 아니다. 여러 실시예에 따르면, 시스템(100)은 본 명세서에서 개요적으로 기술된 스케일러블 스토리지 보호 구성을 구현하는 선택된 파라미터 및 구성의 모든 조합을 포함한다. 실시예에서, 시스템(100)은 m개 노드(102)를 포함하고, 각 노드는 n개 디스크(106)를 갖는다. 시스템(100)은 k개 노드 장애(예를 들면, k=2)를 회생시키도록 구성된다. g개 디스크의 각 그룹은 디스크-레벨의 장애를 적절하게 다루는 적어도 h개 리던던트 디스크(106)를 포함한다(예를 들면, g=10 디스크(106) 중 h=3 이 리던던트 디스크이다).
일부 실시예에서, h를 적절히 스케일링함으로서 g=n 이 된다. 따라서, 시스템(100)은 총 m*n 디스크(106)를 포함하며 디스크(106) 중 h*m 개가 리던던트 데이터를 저장한다. m개 노드 장애 중 k개를 회생하기 위해, 하나의 코드워드(예를 들면, 하나의 보호 그룹) 내 리던던트 디스크(106)는 적어도 k개의 상이한 노드(102) 상에 있다. m개 노드(102)는 그 어느 노드도 동일한 코드워드에 의해 보호되는 리던던트 디스크(106) 중 h*m/k 보다 많이 가질 수 없다. 그렇지 않다면, k개 노드 장애가 회생되지 않을 수 있다. 그러므로, 실시예에서, n은 h*m/k 보다 크거나 또는 리던던트 데이터는 노드(102) 중 k개 보다 많은 노드에서 존재하여야 한다. 예를 들면, 만일 n=10, m=8, h=3, and k=2 이면, 80 중 24개 리던던트 디스크(106)가 필요하다. 그러나, 노드(102) 당 단지 10 개 디스크(106) 밖에 없고, 그래서 리던던트 디스크는 k가 2일뿐 일지라도 적어도 세개의 노드들에 분산되어 있어야 한다.
소거-코딩은 신뢰성 요건을 만족시킬 수 있지만, 다음과 같은 것을 포함하는 복수의 결점을 가지고 있다. g개 소거 코드 중 h개는 계산 상 비용이 든다. 만일 h가 k 보다 크면, 한 노드(102)는 복수의 소거 코드 업데이트를 처리하여야 하고 (이것은 균형이 맞지 않은 계산 노력을 가져온다) 또는 필요한 I/O 수송은 k 보다는 h에 비례한다. 만일 n 이 h*m/k 보다 작으면, I/O 수송은 k에 비례하는 것 보다 더 크다. 일반적으로 단일 디스크 장애로부터 복구하는 것 조차도 I/O 수송을 필요로 한다. 더욱이, 시스템-레벨 성능은 적어도 하나의 장애가 있는 디스크(106)를 갖는 것이 통상적이며 I/O 수송은 흔히 복구에 필요한 것이기 때문에 시스템-레벨의 성능은 전형적으로 열악하다.
스케일러블 스토리지 보호를 갖춘 시스템(100)은 로컬 리던던시를 이용하여 디스크 장애와 같은 인트라-노드 장애로부터 보호하는 인트라-노드 보호 메커니즘(110) 및 글로벌 리던던시를 이용하여 노드 장애와 같은 인터-노드 장애로부터 보호하는 인터-노드 보호 메커니즘(110)을 포함한다. 여러 실시예에 따르면, 시스템(100)은, I/O 수송은 선택된 개수의 회생 가능한 노드 장애에 기반하며 디스크 장애의 처리에 직교하고, 하드 디스크 장애는 인트라-노드 보호를 이용하여 복구 가능해지는 특정한 신뢰성 레벨까지 I/O 수송없이 국부적으로 복구가능하고, 특정 레벨의 시스템-장애 확률을 성취하기 위해 더 짧고 더 간단한 코딩 타입이 사용되어 하드웨어를 더욱 효율적이 되게 하며, 다른 성능, 효율 및 또는 스케일러빌리티적인 장점 중의 하나 이상을 포함하는 여러 장점을 제공한다.
인트라-노드 보호 메커니즘(110)은 한가지 이상의 코딩 타입, 이를 테면, RAID-1; RAID-2; RAID-3; RAID-4; RAID-5; RAID-6; 어느 다른 RAID 레벨; 리드-솔로몬 코드, 파운틴 코드(fountain code), 랩토 코드(Raptor code), 레이트리스-소거 코드(rate-less erasure code), 또는 온라인 코드(Online code)와 같은 소거 코드; 및 이들의 어떤 조합 중의 하나 이상을 포함한다. 인터-노드 보호 메커니즘(114)은 한가지 이상의 코딩 타입, 이를 테면, RAID-1; RAID-2; RAID-3; RAID-4; RAID-5; RAID-6; 어느 다른 RAID 레벨; 리드-솔로몬 코드, 파운틴 코드(fountain code), 랩토 코드(Raptor code), 레이트리스 소거 코드(rate-less erasure code), 또는 온라인 코드(Online code)와 같은 소거 코드; 및 이들의 어떤 조합 중의 하나 이상을 포함한다.
인트라-노드 보호 메커니즘(110) 또는 인터-노드 보호 메커니즘(110) 중 한 사례에 의해 보호된 복수의 디스크들(106)에 저장된 데이터는 코드워드라고 지칭된다. 예를 들면, 다섯 디스크 ◎이중 하나의 디스크는 RAID-5에서와 같이 리던던트임- 에 저장된 데이터는 개별적으로 판독가능하고 교정가능한 데이터의 셋별로 하나의 코드워드를 나타낸다. RAID-5는 바이트 레벨에서 동작가능하며, 반면에 많은 디스크는 데이터의 512B 섹터를 판독할 수 있을 뿐이며, 그래서 그러한 경우, 각각의 코드워드는 다섯 디스크 각각마다 하나의 섹터가 모인 복수의 512B 섹터일 것이다.
일부 실시예에서, 인트라-노드 보호 메커니즘(110) 및 인터-노드 보호 메커니즘(114)는 둘 다 동일한 코딩 타입을 위해 구성된다. 예를 들면, 여러 실시예에서, 인트라-노드 보호 메커니즘(110) 및 인터-노드 보호 메커니즘(114)은 둘 다 RAID-6와 같은 2-소거-정정 코드(two-erasure-correcting code)를 사용하거나, 또는 둘 다 RAID-5와 같은 1-소거-정정 코드(one-erasure-correcting code)를 사용할 수 있다. 다른 실시예에서, 인트라-노드 보호 메커니즘(110) 및 인터-노드 보호 메커니즘(114)은 상이한 코딩 타입을 사용한다. 예를 들면, 몇 몇 사용 시나리오에서, 인트라-노드 보호 메커니즘(110)은 2-소거-정정 코드를 사용하며 인터-노드 보호 메커니즘(114)은 RAID-5와 같이 1-소거-정정 코드를 사용한다.
인트라-노드 보호 메커니즘(110) 및 인터-노드 보호 메커니즘(114)의 계산은 각자의 코딩 타입을 따른다. 예를 들면, 1-소거-정정 RAID-5 코딩 타입은 XOR 계산을 필요로 하며, RAID-6 코딩 타입은 리드 솔로몬 코드와 같은 2-소거-정정 코드에 따른 계산을 필요로 한다.
시스템(100)의 복수의 프로세싱 노드(102)는 각기 각 노드(102)의 복수의 디스크들(106)과 통신하는 프로세서와 같은 적어도 하나의 호스트(104)를 포함한다. 일부 실시예에서, 호스트(104)는 적어도 하나의 싱글 코어 또는 멀티 코어 CPU를 포함하지만, 이것으로 제한되지 않는다. 일부 실시예에서, I/O 컨트롤러(108)는 디스크(106)를 호스트(104)에 결합하도록 구성된다. 각각의 노드(102)는 또한 캐시 메모리 및/또는 DRAM 메모리와 같은 로컬 메모리를 포함한다. 각각의 노드(102)는 또한 하드 디스크 드라이브 및/또는 고체 상태 디스크와 같은 각자 하나 이상의 디스크(106)의 셋을 더 포함한다. 각각의 노드(102)는 또한 네트워크 인터페이스 카드 또는 본 기술에서 공지된 네트워크형 프로세싱 시스템 내에 존재하는 어느 다른 컴포넌트넌트와 같은 인터-노드 통신 네트워크(116)를 통해 노드들과 통신가능하게 결합하는 인터-노드 통신 메커니즘을 포함한다.
일부 실시예에서, 호스트(104)는 하나 이상의 멀티 코어 x86-아키텍처 CPU 칩을 포함한다. 일부 실시예에서, I/O 컨트롤러(108)는 레이드-온-칩 컨트롤러(Raid-On-Chip controller (ROC))를 포함하며, 호스트(104)는 PCIe 인터커넥트를 통해 I/O 컨트롤러(108)에 결합된다. 일부 실시예에서, 하나 이상의 디스크 드라이브(106)는 하나 이상의 SAS 및/또는 SATA 하드 디스크 드라이브를 포함한다. 일부 실시예에서, 하나 이상의 디스크 드라이브(106)는 하나 이상의 고체 상태 디스크 드라이브를 포함한다. 일부 실시예에서, 인터-노드 통신 메커니즘은 I/O 컨트롤러(108) 내에 통합된다. 예를 들면, ROC는 로컬 디스크(106)와의 SAS 및/또는 SATA 연결성 및 SAS 패브릭을 통한 다른 프로세싱 노드(102)의 디스크(106)와의 SAS 및/또는 SATA 연결성을 제공한다.
각각의 프로세싱 노드(102)는 또한 노드(102)의 디스크(106)에 저장된 데이터의 보호를 위해 리던던트 데이터를 결정하도록 구성된 각자의 인트라-노드 리던던시 계산 유닛(110)을 포함한다. 각각의 프로세싱 노드(102)는 또한 인트라-노드 리던던시 계산 유닛(110)에 의해 국부적으로 사용된 및/또는 노드(102)의 디스크(106)에 저장된 데이터의 기록에 응답하여 다른 노드(102)에 송신된 델타 데이터를 결정하도록 구성된 각자의 델타 리던던시 계산 유닛(112)을 더 포함한다. 각각의 프로세싱 노드(102)는 또한 노드(102)의 디스크(106)에 저장된 데이터의 보호를 위해 리던던트 데이터를 결정하도록 구성된 인터-노드 리던던시 계산 유닛(114)을 포함한다.
일부 실시예에서, 리던던시 계산 유닛(110, 112 및 114) 중 하나 이상은 단일 메커니즘으로 결합되며/결합되거나 하나 이상의 컴포넌트를 공유한다. 예를 들면, 여러 실시예에 따르면, 리던던시 계산 유닛(110, 112 및 114)은 하나 이상의 전자 회로 또는 적어도 하나의 프로세서에 의해 캐리어 미디어로부터 실행된 프로그램 명령어와 같은 별개 또는 조합된 하드웨어, 소프트웨어 및/또는 펌웨어 모듈 로 구현된다. 일부 실시예에서, 컨트롤러(108)는 리던던시 계산 유닛(110, 112 및 114) 중 하나 이상을 포함하며/포함하거나 리던던시 계산 유닛(110, 112 및 114)의 하나 이상의 기능을 수행하도록 구성된다.
일부 실시예에서, 제1 인트라-노드 보호 메커니즘(예를 들면, RAID-5)은 제1 프로세싱 노드(102A)의 디스크(106)의 제1 서브셋을 보호하며, 제1 인트라-노드 보호 메커니즘과 상이한 제2 인트라-노드 보호 메커니즘(예를 들면, RAID-6)은 제1 프로세싱 노드(102A)의 디스크(106)의 제2 서브셋을 보호한다. 다른 실시예에서, 디스크(106)의 제1 서브셋은 디스크(106)의 제2 서브셋과 상이한 형태의 서브셋이다. 예를 들면, 디스크(106)의 제1 서브셋은 하나 이상의 HDD를 포함할 수 있으며, 디스크(106)의 제2 서브셋은 하나 이상의 SSD를 포함할 수 있다. 일부 실시예에서, 제1 인터-노드 보호 메커니즘은 디스크(106)의 제1 서브셋의 인터-노드 보호를 디스크(106)에 제공하며, (제1 인터-노드 보호 메커니즘과 상이한) 제2 인터-노드 보호 메커니즘은 디스크(106)의 제2 서브셋의 인터-노드 보호를 디스크(106)에 제공한다.
일부 실시예 및/또는 사용 시나리오에서, 프로세싱 노드(102) 중 한 노드의 둘 이상의 디스크(106)는 인터-노드 보호 메커니즘(114)의 동일한 코드워드에 의해 보호된다. 다른 실시예 및/또는 사용 시나리오에서, 프로세싱 노드(102) 중 어느 노드의 디스크(106) 중 하나 보다 많은 디스크는 그 어느 것도 인터-노드 보호 메커니즘(114)의 동일한 코드워드에 있지 않는다.
일부 실시예에서, 제1 프로세싱 노드(102A)의 호스트(104A)에 의한 제1 프로세싱 노드(104A)의 디스크(106) 중 한 디스크로의 데이터의 기록은 제1 프로세싱 노드(102A)의 다른 디스크(106)에 저장된 제1 로컬(즉, 인트라-노드) 리던던트 데이터의 업데이트를 유발한다. 호스트 데이터 기록 역시 제2 프로세싱 노드(102B)의 디스크(106) 중 적어도 일부의 디스크에 저장된 글로벌(즉, 인터-노드) 리던던트 데이터의 업데이트를 유발한다. 일부 실시예에서, 글로벌 리던던트 데이터의 업데이트는 제2 프로세싱 노드(102B)의 다른 디스크들에 저장된 제2 로컬 리던던트 데이터의 업데이트를 유발한다. 일부 실시예에서, 호스트 데이터 기록은 제1 프로세싱 노드(102A)가 장애일지라도 그 호스트 데이터 기록이 복구 가능할 때와 같이 안전 시점에 도달하는 글로벌 리던던트 데이터의 업데이트 이후 확인응답된다.
도 2 및 도 3은 스케일러블 스토리지 보호를 위해 각기 델타 기록을 처리하는 방법(200) 및 델타 데이터를 처리하는 방법(300)을 예시한다. 시스템(100)은 방법(200 및 300)의 시현예이며 시스템(100) 또는 방법(200 또는 300)의 실시예에 관해 기술된 모든 단계 또는 특징은 시스템(100) 및 방법(200 및 300) 둘 다에 적용할 수 있다. 그러나, 방법(200 또는 300)의 하나 이상의 단계는 본 기술에서 공지된 다른 수단을 통해 실행될 수 있음을 알아야 한다. 본 명세서에 기술된 시스템(100)의 실시예는 어떤 방식으로든 방법(200 또는 300)을 제한하는 것으로 해석되지 않아야 한다.
단계(202)에서, 데이터는 제1 프로세싱 노드(102A)의 호스트(104A)에 의해 선택된 논리 블록 어드레스(logical block address (LBA))에 기록된다. 단계(204)에서, 데이터를 선택된 LBA에 저장하는 제1 프로세싱 노드(102A)의 적어도 하나의 목적지 디스크(106) 및 목적지 디스크(106)를 위한 인트라-노드 보호 데이터를 저장하는 제1 프로세싱 노드(102A)의 하나 이상의 리던던트 디스크(106)가 결정된다. 일부의 실시예에서, 목적지 및 인트라-노드 리던던트 디스크(106)는 제1 프로세싱 노드(102A)의 호스트(104A) 및 컨트롤러(108A) 중 적어도 하나에 의해 결정된다. 예를 들면, 제1 프로세싱 노드(102A)의 호스트(104A)에서 실행하는 드라이버 소프트웨어는 목적지 디스크(106)를 결정하며, 컨트롤러(108A)는 리던던트 디스크(106)를 결정한다. 단계(206)에서, 목적지 디스크(106)를 위한 인트라-노드 보호 데이터를 저장하는 하나 이상의 리던던트 프로세싱 노드(102)는 제1 프로세싱 노드(102A)의 호스트(104A) 및 컨트롤러(108A) 중 적어도 하나에 의해 결정된다.
단계(208)에서, 구 데이터가 선택된 LBA에서 목적지 디스크(106)로부터 판독된다. 단계(212)에서, 호스트 데이터 기록의 새로운 데이터가 선택된 LBA에서 목적지 디스크(106)에 기록된다. 단계(210)에서, 제1 프로세싱 노드(102A)의 델타 계산 유닛(112A)은 신규 데이터 및 구 데이터를 이용하여 델타 데이터를 결정한다. 단계(214)에서, 제1프로세싱 노드(102A)의 인트라-노드 리던던시 계산 유닛(110A)은 델타 데이터에 따라서 제1 프로세싱 노드(102A)의 리던던트 디스크(106)에 저장된 제1 리던던트 데이터를 업데이트한다.
단계(216)에서, 제1 프로세싱 노드 (102A)는 델타 데이터를 적어도 하나의 리던던트 프로세싱 노드(102), 이를 테면, 제1 프로세싱 노드(102A)와 상이한 제2 프로세싱 노드(102B)에게 송신한다. 도 3을 참조하면, 단계(302)에서 제2 프로세싱 노드(102B)는 델타 데이터를 수신하며, 단계(304)에서 델타 데이터를 제2 프로세싱 노드(102B)의 디스크 캐시에 저장한다. 일단 델타 데이터가 디스크 캐시에 저장되면, 단계(306)에서, 제2 프로세싱 노드(102B)는 제1 프로세싱 노드(102A)에 델타 데이터 기록의 완료를 확인응답하도록 구성된다. 이때, 제1 프로세싱 노드(102A)가 장애가 있었다면, 제2 프로세싱 노드는 제1 프로세싱 노드(102A)의 호스트(104A)에 의한 선택된 LBA에 기록된 데이터의 복구에 참여할 수 있다. 단계(218)에서, 모든 리던던트 노드(102)가 델타 데이터 기록의 완료를 확인응답하였는지 판단된다. 단계(220)에서, 호스트 데이터 기록의 완료가 제1 프로세싱 노드(102A)의 호스트(104A)에게 확인응답된다.
단계(308)에서, 델타 데이터를 제2 프로세싱 노드(102B)의 디스크 캐시에 저장한 후, 델타 데이터는 선택적으로 디스크 캐시로부터 플러시(flush)된다. 디스크 캐시가 작은 경우의 일부 실시예에서, 플러시할 때를 판단하는데 최소 최근(least-recently) 사용된 알고리즘과 같은 알고리즘을 사용하는 큰 디스크 캐시를 갖는 다른 실시예와 비교하여 볼 때, 단계(308)는 비교적 신속하게 수행된다. 단계(310)에서, 델타 데이터를 디스크 캐시로부터 플러시하도록 하는 플러싱 또는 그렇게 플러시하도록 하는 결정에 응답하여, 델타 데이터에 대응하는 인트라-노드 보호 데이터를 저장하는 제2 프로세싱 노드(102B)의 하나 이상의 인터-노드 리던던시 디스크(106) 및 인터-노드 리던던시 디스크(106)를 위한 인트라-노드 보호 데이터를 저장하는 제2 프로세싱 노드(102B)의 하나 이상의 리던던트 디스크(106)는 제2 프로세싱 노드(102B)의 호스트(104B) 및 컨트롤러(108B) 중 적어도 하나에 의해 결정된다.
단계(312)에서, 제2 프로세싱 노드(102B)의 인터-노드 리던던시 계산 유닛(114B)은 델타 데이터에 따라서 제2 프로세싱 노드(102B)의 인터-노드 리던던시 디스크(106)에 저장된 글로벌 리던던트 데이터를 업데이트 한다. 단계(314)에서, 제2 프로세싱 노드(102B)의 인트라-노드 리던던시 계산 유닛(110B)은 인터-노드 노드 리던던시 디스크(106)의 업데이트에 따라서 제2 프로세싱 노드(102B)의 리던던트 디스크(106)에 저장된 제2 로컬 리던던트 데이터를 업데이트한다. 단계(316)에서, 델타 데이터는 제2 프로세싱 노드(102B)의 디스크 캐시로부터 제거된다. 디스크 캐시가 휘발성 캐시인 경우의 일부 실시예에서, 단계(306)는 델타 데이터가 비휘발성 데이터로 저장되는 것을 보장하기 위해 단계(312) 및/또는 단계(314) 중 하나 이상의 단계 이후까지 지연된다.
일부 실시예에서, 글로벌 리던던트 데이터의 계산을 위해 노드들(102) 사이에서 운송된 델타 데이터는 (호스트(104)에 의한 데이터의 기록 이전의) 구 데이터와 호스트(104)에 의해 기록된 신규 데이터와의 함수이다. 일부 실시예에서, 델타 데이터는 구 데이터 및 호스트(104)에 의해 기록된 신규 데이터와의 XOR 함수 또는 XNOR 함수를 이용하여 결정된다. 다른 실시예에서, 델타 데이터는 구 데이터 및 신규 데이터를 포함하며, 구 데이터 및 신규 데이터는 둘 다 노드들(102) 사이에서 운송된다. 일부 실시예에서, 델타 데이터는, 어느 노드가 델타 데이터를 생성하였는지와, 델타 데이터가 생성되게 만든 기록의 인터-노드 보호 코드워드 내 위치와, 델타 데이터의 원위치 및/또는 위치와 연관된 다른 정보 중의 적어도 하나를 더 포함한다.
일부 실시예에서, 인터-노드 리던던시 계산은 글로벌 리던던트 데이터의 일부를 저장하는 하나 이상의 노드(102)의 각각에서 독립적으로 수행된다. 예를 들면, 2-소거-정정 리드 솔로몬 코드를 이용하는 RAID-6 코딩 타입의 경우, 델타 데이터는 글로벌 리던던트 데이터의 일부를 저장하는 두 프로세싱 노드(102)의 각각으로 송신되며, 두 프로세싱 노드(102)는 각기 독립적으로 글로벌 리던던트 데이터의 일부를 업데이트한다. 2-소거-정정 리드 솔로몬 코드의 경우, 리드 솔로몬 코드의 코드워드 내 델타 데이터의 위치는 델타 데이터와 함께 송신되며, 두 프로세싱 노드(102)는 각기 코드워드 내 델타 데이터의 위치에 있는 데이터가 리드 솔로몬 코드의 생성 다항식에 의해 제산될 때 획득된 나머지 부분에 해당하는 업데이터를 결정함으로써 글로벌 리던던트 데이터의 일부에 대한 업데이트를 독립적으로 계산하도록 구성된다.
일부 실시예에서, 델타 데이터는 글로벌 리던던트 데이터의 계산을 위해 노드들 중 다른 노드에 수송되기 전에 감소 및/또는 국부적으로 조합된다. 제1의 일예에서, 프로세싱 노드들 중 제1 프로세싱 노드의 호스트에 의한 데이터의 제1 기록 및 제1 프로세싱 노드의 호스트에 의한 데이터의 제2 기록은 동일한 LBA에 대해 수행되며, 제1 기록 및 제2 기록의 둘 다에 해당하는 단일의 델타 데이터가 수송된다. 예를 들면, 함수가 XOR인 경우, 델타 데이터는 제2 기록의 제2 (최종) 데이터와 XOR 계산된 (제1 기록 이전의) 구 데이터에 해당한다. 제2의 일예에서, 인터-노드 보호 메커니즘의 코드워드는 프로세싱 노드들 중 제1 프로세싱 노드의 둘 이상의 디스크에 저장된 것에 해당하며, 둘 이상의 디스크 중 하나보다 많은 디스크에 기록은 그 기록에 대응하는 단일의 델타 데이터가 생성되게 한다. 인터-노드 보호 메커니즘의 코딩 타입 및 특정한 신뢰도에 따라, 델타 데이터의 크기는 둘 이상의 디스크 중 단지 하나의 디스크에 기록의 크기와 같다.
일부 실시예에서, 제1 프로세싱 노드(102A)의 호스트 데이터 기록은 복수의 상이한 델타 데이터를 생성하며, 각각의 델타 데이터는 글로벌 리던던트 데이터의 일부를 저장하는 대응하는 프로세싱 노드(102)에 송신된다. 다른 실시예에서, 제1 프로세싱 노드(102A)의 호스트 데이터 기록은 글로벌 리던던트 데이터의 일부를 저장하는 하나 이상의 프로세싱 노드(102)에 송신된 단일의 델타 데이터를 생성한다.
일부 실시예에서, 제1 프로세싱 노드(102A)의 호스트 데이터 기록은 제1 프로세싱 노드(102A)와 상이한 제2 프로세싱 노드(102B)의 디스크들(106) 중 한 디스크에 대해 수행(즉, "외부(foreign)" 데이터 기록)된다. 시스템(100)의 디스크(106)에 대해, 포린 기록은 로컬 기록과 유사하게 수행된다. 그러나, 포린 기록의 데이터는 제1 프로세싱 노드(102A)에서 국부적으로 머물기보다는 제2 프로세싱 노드(102B)에 수송된다. 일부 실시예에서, 또 다른 차이는 제2 프로세싱 노드(102B)가 포린 기록으로 인한 어느 인터-노드 리던던트 기록의 완료를 판단한 이후 포린 기록의 완료의 확인응답이 제2 프로세싱 노드(102B)에 의해 제1 프로세싱 노드(102A)에 리턴된다는 것이다.
일부 실시예에서, 프로세싱 노드(102) 중 적어도 일부는 캐시처럼 사용된 고체 상태 디스크와 같은 디스크 캐시를 포함한다. 디스크 캐시는, 프로세싱 노드(102)의 호스트(104)에 의해 액세스된 데이터(예를 들면, 스토리지)와, 다른 프로세싱 노드(102)의 호스트(104)에 의해 액세스된 데이터와, 프로세싱 노드(102)의 로컬 리던던트 데이터와, 프로세싱 노드(102)의 디스크(106)에 저장된 글로벌 리던던트 데이터와, 프로세싱 노드(102)에 의해 계산된 및/또는 다른 프로세싱 노드(102)로부터 수신된 델타 데이터, 및 다른 형식의 데이터 중 하나 이상을 저장한다. 일부 실시예에서, 다른 프로세싱 노드(102)로부터 수신된 델타 데이터를 디스크 캐시에 저장하는 것은 델타 데이터의 안전의 확인응답이 가능해 진 것이며, 그래서 대응하는 호스트 데이터 기록의 안전의 확인응답이 가능해지며, 그런 다음 글로벌 리던던트 데이터 및/또는 그 글로벌 리던던트 데이터를 보호하는 제2 로컬 리던던트 데이터를 업데이트할 수 있다.
일부 실시예에서, 프로세싱 노드(102)의 디스크 캐시는 프로세싱 노드(102)의 호스트(104)와, 프로세싱 노드의 ROC와 같은 I/O 컨트롤러(108)와, 전용의 관리 프로세서, 및 전술한 것들의 어떤 조합 중 하나 이상에 의해 관리된다.
일부 실시예에서, 디스크 캐시는 다른 형태의 데이터와 상이하게 델타 데이터를 태그(tag)한다. 일부 실시예에서, 델타 데이터는 더티(dirty)인 것으로 및 논-델타 데이터 더티 데이터(non-delta dirty data) 처럼 직접 저장될 수 있는 것과 반대인 델타 포맷으로서 태그된다. 델타 데이터를 제1 프로세싱 노드(102A)의 디스크 캐시로부터 플러시하기 위해, 제1 프로세싱 노드(102A)의 인터-노드 리던던시 계산 유닛(114A)은 델타 데이터에 따라서 제1 프로세싱 노드(102A)의 디스크(106)에 저장된 글로벌 리던던트 데이터를 업데이트한 다음, 델타 데이터가 디스크 캐시로부터 삭제 또는 제거되도록 구성된다. 일부 실시예에서, 제1 프로세싱 노드(102A)의 디스크(106)에 저장된 글로벌 리던던트 데이터를 업데이트하는 것은 글로벌 리던던트 데이터를 보호하는 인트라-노드 리던던트 데이터를 업데이트하는 것을 포함한다. 제1 프로세싱 노드(102A)의 다른 디스크에 저장된 인트라-노드 리던던트 데이터는 제1 프로세싱 노드(102A)의 인트라-노드 리던던시 계산 유닛(110A)을 통해 업데이트된다.
델타 데이터가 프로세싱 노드(102)의 디스크 캐시에 저장되는 일부 실시예에서, 델타 데이터를 수신하는 프로세싱 노드(102)는 델타 데이터를 디스크 캐시에 저장하기 전에 델타 데이터에 대해 적어도 일부의 인터-노드 리던던시 계산을 수행하고 변환된 버전의 델타 데이터를 디스크 캐시에 저장한다. 예를 들면, 다중-소거-정정 코드의 경우, 수신된 델타 데이터는 프로세싱 노드(102)에 저장된 글로벌 리던던트 데이터에 바로 조합될 수 있는 형태의 것은 아니다. 수신된 델타 데이터를 인터-노드 리던던시 계산 유닛(114)을 이용하여 변환함으로써, 변환된 델타 데이터가 XOR 함수와 같은 간단한 연산을 통해 나중에 글로벌 리던던트 데이터와 조합될 수 있다. 일부 실시예에서, 또한 변환된 버전의 델타 데이터를 디스크 캐시에 저장하면 나중에 수신한 델타 데이터를 변환된 버전의 델타 데이터에 조합하는 것이 가능해지며, 그럼으로써 유익하게 디스크 캐시의 공간을 절감할 수 있다. 예를 들면, 인터-노드 보호 코딩 타입과 같은 리드 솔로몬 코드의 경우, 델타 데이터는 리드 솔로몬 코드의 생성 다항식에 따라서 글로벌 리던던트 데이터로서 저장된 코드워드 나머지의 일부에 대한 업데이트로 (XOR를 통해) 변환된다.
일부 실시예에서, 캐시된 델타 데이터는 업데이트되거나 디스크 캐시에서 조합된다. 예를 들면, 제1 프로세싱 노드(102A)의 호스트(103A)에 의한 선택된 논리 블록 어드레스(LBA)에서 제1 기록에 대응하는 제1 델타 데이터는 제2 프로세싱 노드(102B)의 디스크 캐시에 저장되며, 선택된 LBA에서 제2 기록에 대응하는 제2 델타 데이터는 제2 프로세싱 노드(102B)에 의해 수신된다. 제2 프로세싱 노드(102B)의 디스크 캐시는 제2 프로세싱 노드(102B)의 디스크(106)에 저장된 글로벌 리던던트 데이터의 한번의 업데이트만이 제1 기록 및 제2 기록의 양쪽에 필요하도록 제2 델타 데이터에 따라서 제1 델타 데이터를 업데이트하도록 구성된다. 예를 들어, 만일 델타 데이터가 XOR 함수를 이용하여 제1 프로세싱 노드(102A)에서 계산되면, 제1 델타 데이터는 제2 델타 데이터와의 XOR 연산에 의해 업데이트된다.
일부 실시예에서, 제1 프로세싱 노드(102A)의 호스트(104A)에 의한 인터-노드 보호 코드워드에 의해 보호된 데이터에의 제1 기록에 대응하는 제1 델타 데이터는 제2 프로세싱 노드(102B)의 디스크 캐시에 저장되며, 인터-노드 보호 코드워드에 의해 보호된 데이터에의 제2 기록에 대응하는 제2 델타 데이터는 제2 프로세싱 노드(102B)에 의해 수신된다. 제2 프로세싱 노드(102B)의 디스크 캐시는 제1 기록 및 제2 기록 둘 다에게 제2 프로세싱 노드(102B)의 디스크(106)에 저장된 글로벌 리던던트 데이터의 한번의 업데이트가 필요하도록 제2 델타 데이터에 따라서 제1 델타 데이터를 업데이트하도록 구성된다.
일부 실시예에서, 로컬 리던던트 데이터는 결정된 방식, 이를 테면, CRUSH(Controlled Replication Under Scalable Hashing) 알고리즘 또는 다른 데이터 분배 알고리즘에 따라 프로세싱 노드(102)의 디스크들(106) 사이에 분배된다. 일부 실시예에서, 글로벌 리던던트 데이터는 CRUSH 알고리즘 또는 다른 데이터 분배 알고리즘과 같은 결정된 방식대로 프로세싱 노드들(102) 중 둘 이상의 노드의 디스크(106) 사이에서 분배된다. 예를 들면, 제1의 인터-노드 보호 코드워드는 프로세싱 노드(102)의 제1 서브셋 상의 디스크들(106)에 퍼져 있으며, 제2의 인터-노드 보호 코드워드는 제1 서브셋과 상이한 프로세싱 노드(102)의 제2 서브셋 상의 디스크들(106)에 퍼져있다. 일부 실시예에서, 제1 서브셋과 제2 서브셋은 중첩한다(예를 들면, 적어도 하나의 프로세싱 노드(102)를 공통으로 포함한다).
일부 실시예에서, 인트라-노드 리던던시 계산 유닛(110)은 하나 이상의 디스크(106)의 일부이며/이거나 그 하나 이상의 디스크에 통합된다. 예를 들면, 몇몇 SSD는 SSD의 비휘발성 메모리 칩에 저장된 데이터를 보호하는 RAID-5형 또는 RAID-6형 리던던시 메커니즘을 구현한다. SSD의 리던던시 메커니즘은 SSD에 저장된 데이터를 위한 인트라-노드 리던던시 계산 유닛(110)으로서 기능할 수 있다.
일부 실시예에서, 프로세싱 노드들(102)은 실질적으로 동일 또는 유사하게 구성될 수 있다. 다른 실시예에서, 프로세싱 노드들(102)은 모두 호스트(들)(104)의 개수 및/또는 구성, 로컬 메모리의 양, 디스크의 개수, 구성, 형태, 및/또는 용량, 또는 어느 다른 파라미터(들), 컴포넌트(들), 또는 구성(들) 면에서 모두 대칭적이지 않다.
일부 실시예에서, 프로세싱 노드(102) 중 적어도 일부는 제한된 또는 프로세싱 능력이 없으며, 사실상 "디스크-전용(disk-only)"이다. 디스크-전용 프로세싱 노드(102)는 글로벌 리던던시의 일부를 저장하는 것과 같은 글로벌 리던던시 계산에 참여한다. 일부 실시예에서, 프로세싱 노드(102) 중 하나의 노드는 디스크-전용 프로세싱 노드(102)의 적어도 일부 스토리지가 여전히 전역적으로 액세스 가능하다면, 각자의 호스트(104)의 충돌로 인해 디스크-전용이 된다. 따라서, 다른 프로세싱 노드(102)로부터 디스크-전용 프로세싱 노드(102)의 스토리지로의 포린 기록은 디스크-전용 프로세싱 노드(102)의 컨트롤러(108)(예를 들면, ROC)가 하는 것처럼 여전히 델타 데이터를 생성되게 할 수 있고 전송되게 할 수 있다.
일부 실시예에서, 복수의 인트라-노드 보호 메커니즘(110) 및/또는 인터-노드 보호 메커니즘(114)은, 보호되는 디스크(106)의 형태 및/또는 신뢰도와, 보호되는 디스크(106)에 저장된 데이터의 형태와, 선택된 인터-노드 보호 메커니즘(114)에 의해 보호된 노드(102)의 장애 확률, 및 기타 요인들 중 하나 이상에 따라서 사용된다.
일부 실시예에서 본 개시내용 전체에서 기술된 여러 단계들은 단일의 컴퓨팅 시스템 또는 다중 컴퓨팅 시스템에 의해 수행될 수 있다는 것을 인식하여야 한다. 컴퓨팅 시스템은 퍼스널 컴퓨팅 시스템, 메인프레임 컴퓨팅 시스템, 워크스테이션, 이미지 컴퓨터, 병렬 프로세서, 또는 본 기술에서 공지된 어느 다른 장치를 포함할 수 있지만, 이것으로 제한되지 않는다. 일반적으로, "컴퓨팅 시스템"이라는 용어는 메모리 매체로부터의 명령어를 실행하는 하나 이상의 프로세서를 갖는 모든 장치를 망라하는 것으로 넓게 정의된다.
본 명세서에서 기술된 실시예들에 의해 명시된 바와 같은 방법을 구현하는 프로그램 명령어는 캐리어 매체를 통해 전송 또는 캐리어 매체에 저장될 수 있다. 캐리어 매체는 전송 매체, 이를 테면, 와이어, 케이블 또는 와이어리스 전송 링크일 수 있지만, 이것으로 제한되지 않는다. 캐리어 매체는 또한 스토리지 매체, 이를 테면, 리드-온리 메모리, 랜덤 액세스 메모리, 자기 또는 광학 디스크, 또는 자기 테이프를 포함하지만, 이것으로 제한되지 않는다.
본 명세서에서 기술된 방법을 명시하는 실시예는 스토리지 매체에 저장하는 결과물을 포함할 수 있다. 그 결과물이 저장된 후, 그 결과물은 스토리지 메체에서 액세스가능하며 본 명세서에서 기술된 방법 또는 시스템 실시예의 어느 것에 의해 사용되며, 사용자에게 디스플레이하기 위해 포맷되고, 다른 소프트웨어 모듈, 방법 또는 시스템 등에 의해 사용된다. 더욱이, 그 결과물은 "영구적으로", "반영구적으로", "일시적으로", 또는 당분간 동안 저장될 수 있다. 예를 들면, 스토리지 매체는 랜덤 액세스 메모리(RAM)일 수 있으며, 결과물은 반드시 스토리지 매체 내에 무기한으로 지속되어 있지 않을 수 있다.
시스템 또는 방법으로서 상기 명시된 개시 내용의 어느 실시예도 본 명세서에서 기술된 어느 다른 실시예의 적어도 일부를 포함할 수 있음을 또한 주목하여야 한다. 본 기술에서 통상의 지식을 가진 자들이라면 본 명세서에서 기술된 시스템 및 방법에 영향을 미칠 수 있는 여러 실시예가 있으며, 그 구현은 개시 내용의 실시예가 배치된 상황에 따라 변할 수 있음을 인식할 것이다.
더욱이, 본 발명은 첨부의 특허청구범위에 의해 정의됨은 물론이다. 비록 본 발명의 실시예가 예시되었을지라도, 본 기술에서 통상의 지식을 가진 자들에 의해 개시 내용의 범주 및 정신을 일탈함이 없이 여러 변형 예가 이루어질 수 있음은 자명하다.
Claims (20)
- 서로 통신하는 복수의 프로세싱 노드들을 포함하는 스토리지 시스템으로서,
각각의 프로세싱 노드는,
복수의 디스크들과,
상기 복수의 디스크들 중 선택된 디스크에 데이터를 기록하도록 구성된 적어도 하나의 호스트와,
상기 적어도 하나의 호스트에 의해 상기 선택된 디스크에 기록된 상기 데이터를 이용하여 로컬 리던던트 데이터를 결정하도록 구성되는 로컬 리던던시 계산 유닛 - 상기 로컬 리던던시 계산 유닛은 또한 상기 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성됨 - 과,
상기 적어도 하나의 호스트에 의해 상기 선택된 디스크에 기록된 상기 데이터를 이용하여 델타 데이터를 결정하도록 구성되는 델타 계산 유닛 - 상기 델타 계산 유닛은 또한 상기 결정된 델타 데이터를 적어도 하나의 다른 프로세싱 노드에 송신하도록 구성됨 - 과,
상기 프로세싱 노드들 중 적어도 하나의 다른 노드로부터 델타 데이터를 수신하도록 구성되는 글로벌 리던던시 계산 유닛 - 상기 글로벌 리던던시 계산 유닛은 또한 상기 수신된 델타 데이터를 이용하여 글로벌 리던던트 데이터를 결정하도록 구성되며, 상기 글로벌 리던던시 계산 유닛은 또한 상기 글로벌 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성됨 - 을 포함하는
스토리지 시스템.
- 제1항에 있어서,
상기 로컬 리던던시 계산 유닛은 또한 상기 선택된 디스크가 장애(fail)일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하도록 구성된
스토리지 시스템.
- 제1항에 있어서,
상기 글로벌 리던던시 계산 유닛은 또한 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 다른 프로세싱 노드의 데이터를 복구하도록 구성된
스토리지 시스템.
- 제1항에 있어서,
상기 로컬 리던던트 데이터는 제1 로컬 리던던트 데이터이고,
상기 로컬 리던던시 계산 유닛은 또한 상기 글로벌 리던던트 데이터를 이용하여 제2 로컬 리던던트 데이터를 결정하도록 구성되며,
상기 로컬 리던던시 계산 유닛은 또한 상기 제2 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성된
스토리지 시스템.
- 제4항에 있어서,
상기 로컬 리던던시 계산 유닛은 또한 상기 선택된 디스크가 장애일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하도록 구성되고,
상기 글로벌 리던던시 계산 유닛은 또한 상기 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 다른 프로세싱 노드의 데이터를 복구하도록 구성되며,
상기 로컬 리던던시 계산 유닛은 또한 상기 글로벌 리던던트 데이터를 저장하는 상기 적어도 하나의 디스크가 장애일 때 상기 제2 로컬 리던던드 데이터를 이용하여 상기 글로벌 리던던트 데이터를 복구하도록 구성되는
스토리지 시스템.
- 제1항에 있어서,
상기 복수의 프로세싱 노드들은 제1 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중 제1 디스크 셋 및 제2 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중 제2 디스크 셋을 포함하는
스토리지 시스템.
- 제6항에 있어서,
상기 제1 디스크 셋은 상기 복수의 프로세싱 노드들 중 제1 프로세싱 노드의 적어도 하나의 디스크 및 상기 복수의 프로세싱 노드들 중 제2 프로세싱 노드의 적어도 하나의 디스크를 포함하는
스토리지 시스템.
- 제1항에 있어서,
상기 로컬 리던던시 계산 유닛은 또한 제1 소거-정정 코드 타입을 이용하여 데이터를 처리하도록 구성되며,
상기 글로벌 리던던시 계산 유닛은 또한 제2 소거-정정 코드 타입을 이용하여 데이터를 처리하도록 구성되며,
상기 제1 소거-정정 코드 타입은 상기 제2 소거-정정 코드 타입과 상이한
스토리지 시스템.
- 서로 통신하는 복수의 프로세싱 노드들을 포함하는 스토리지 시스템으로서,
각각의 프로세싱 노드는,
복수의 디스크들과,
상기 복수의 디스크들 중 선택된 디스크에 데이터를 기록하도록 구성된 적어도 하나의 호스트와,
상기 복수의 디스크들과 통신하는 컨트롤러를 포함하며, 상기 컨트롤러는,
상기 선택된 디스크에 기록된 상기 데이터를 이용하여 로컬 리던던트 데이터를 결정하고,
상기 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하고,
상기 선택된 디스크에 기록된 상기 데이터를 이용하여 델타 데이터를 결정하고,
상기 결정된 델타 데이터를 상기 프로세싱 노드들 중 적어도 하나의 다른 프로세싱 노드에 송신하고,
상기 프로세싱 노드들 중 적어도 하나의 다른 노드로부터 델타 데이터를 수신하고,
상기 수신된 델타 데이터를 이용하여 글로벌 리던던트 데이터를 결정하고,
상기 글로벌 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성된
스토리지 시스템.
- 제9항에 있어서,
상기 컨트롤러는 또한,
상기 선택된 디스크가 장애일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하고,
상기 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 다른 프로세싱 노드의 데이터를 복구하도록 구성된
스토리지 시스템.
- 제10항에 있어서,
상기 로컬 리던던트 데이터는 제1 로컬 리던던트 데이터이고,
상기 컨트롤러는 또한,
상기 글로벌 리던던트 데이터를 이용하여 제2 로컬 리던던트 데이터를 결정하고,
상기 제2 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하고,
상기 글로벌 리던던트 데이터를 저장하는 상기 적어도 하나의 디스크가 장애일 때 상기 제2 로컬 리던던트 데이터를 이용하여 상기 글로벌 리던던트 데이터를 복구하도록 구성된
스토리지 시스템.
- 제9항에 있어서,
상기 복수의 프로세싱 노드들은 제1 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중의 제1 디스크 셋 및 제2 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중의 제2 디스크 셋을 포함하며, 상기 제1 글로벌 코딩 타입은 상기 제2 글로벌 코딩 타입과 상이한
스토리지 시스템.
- 제12항에 있어서,
상기 제1 디스크 셋은 상기 복수의 프로세싱 노드들 중 제1 프로세싱 노드의 적어도 하나의 디스크 및 상기 복수의 프로세싱 노드들 중 제2 프로세싱 노드의 적어도 하나의 디스크를 포함하는
스토리지 시스템.
- 제9항에 있어서,
상기 컨트롤러는 또한 소거-정정 코드 타입을 이용하여 상기 로컬 리던던트 데이터를 결정하고,
제2 소거-정정 코드 타입을 이용하여 상기 글로벌 리던던트 데이터를 결정하도록 구성되며, 상기 제1 소거-정정 코드 타입은 상기 제2 소거-정정 코드 타입과 상이한
스토리지 시스템.
- 스토리지 보호 방법으로서,
서로 통신하는 복수의 프로세싱 노드들 중 제1 프로세싱 노드의 복수의 디스크들 중 선택된 디스크에 데이터를 기록하는 단계와,
상기 선택된 디스크에 기록된 상기 데이터를 이용하여 로컬 리던던트 데이터를 결정하는 단계와,
상기 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하는 단계와,
상기 선택된 디스크에 기록된 데이터를 이용하여 제1 델타 데이터를 결정하는 단계와,
상기 제1 델타 데이터를 상기 적어도 하나의 다른 프로세싱 노드에 송신하는 단계와,
적어도 하나의 다른 노드로부터 제2 델타 데이터를 수신하는 단계와,
상기 제2 델타 데이터를 이용하여 글로벌 리던던트 데이터를 결정하는 단계와,
상기 글로벌 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하는 단계를 포함하는
스토리지 보호 방법.
- 제15항에 있어서,
상기 스토리지 보호 방법은,
상기 선택된 디스크가 장애일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하는 단계와,
상기 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 프로세싱 노드의 데이터를 복구하는 단계를 더 포함하는
스토리지 보호 방법.
- 제16항에 있어서,
상기 로컬 리던던트 데이터는 제1 로컬 리던던트 데이터이고,
상기 스토리지 보호 방법은,
상기 글로벌 리던던트 데이터를 이용하여 제2 로컬 리던던트 데이터를 결정하는 단계와,
상기 제2 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하는 단계와,
상기 글로벌 리던던트 데이터를 저장하는 상기 적어도 하나의 디스크가 장애일 때 상기 제2 로컬 리던던트 데이터를 이용하여 상기 글로벌 리던던트 데이터를 복구하는 단계를 더 포함하는
스토리지 보호 방법.
- 제15항에 있어서,
상기 스토리지 보호 방법은,
제1 글로벌 코딩 타입을 이용하여 상기 프로세싱 노드들의 제1 디스크 셋을 보호하는 단계와,
제2 글로벌 코딩 타입을 이용하여 상기 프로세싱 노드들의 제2 디스크 셋을 보호하는 단계를 더 포함하며, 상기 제1 글로벌 코딩 타입은 상기 제2 글로벌 코딩 타입과 상이한
스토리지 보호 방법.
- 제18항에 있어서,
상기 제1 디스크 셋은 상기 제1 프로세싱 노드의 적어도 하나의 디스크 및 상기 복수의 프로세싱 노드들 중 제2 프로세싱 노드의 적어도 하나의 디스크를 포함하는
스토리지 보호 방법.
- 제15항에 있어서,
상기 스토리지 보호 방법은,
제1 소거-정정 코드 타입을 이용하여 상기 로컬 리던던트 데이터를 결정하는 단계와,
제2 소거-정정 코드 타입을 이용하여 상기 글로벌 리던던트 데이터를 결정하는 단계를 더 포함하며, 상기 제1 소거-정정 코드 타입은 상기 제2 소거-정정 코드 타입과 상이한
스토리지 보호 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261696720P | 2012-09-04 | 2012-09-04 | |
US61/696,720 | 2012-09-04 | ||
US13/688,654 US9613656B2 (en) | 2012-09-04 | 2012-11-29 | Scalable storage protection |
US13/688,654 | 2012-11-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140031112A true KR20140031112A (ko) | 2014-03-12 |
KR102102728B1 KR102102728B1 (ko) | 2020-04-21 |
Family
ID=49000324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130100271A KR102102728B1 (ko) | 2012-09-04 | 2013-08-23 | 스케일러블 스토리지 보호 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9613656B2 (ko) |
EP (1) | EP2703991B1 (ko) |
JP (1) | JP6162547B2 (ko) |
KR (1) | KR102102728B1 (ko) |
CN (1) | CN103793182B (ko) |
TW (1) | TWI591512B (ko) |
Families Citing this family (216)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US9613656B2 (en) * | 2012-09-04 | 2017-04-04 | Seagate Technology Llc | Scalable storage protection |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
EP3152648B1 (en) * | 2014-06-04 | 2021-08-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9612952B2 (en) * | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
WO2016051512A1 (ja) * | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
CN105518996B (zh) * | 2014-12-16 | 2019-07-23 | 深圳赛思鹏科技发展有限公司 | 一种基于二进制域里德所罗门码的数据编解码方法 |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10187083B2 (en) | 2015-06-26 | 2019-01-22 | Microsoft Technology Licensing, Llc | Flexible erasure coding with enhanced local protection group structures |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US9996426B1 (en) | 2015-06-30 | 2018-06-12 | EMC IP Holding Company LLC | Sparse segment trees for high metadata churn workloads |
US10055420B1 (en) * | 2015-06-30 | 2018-08-21 | EMC IP Holding Company LLC | Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
CN105357294B (zh) * | 2015-10-31 | 2018-10-02 | 成都华为技术有限公司 | 一种存储数据的方法及集群管理节点 |
CN105607872A (zh) * | 2015-12-17 | 2016-05-25 | 山东海量信息技术研究院 | 一种存储装置 |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10372334B2 (en) | 2016-02-11 | 2019-08-06 | International Business Machines Corporation | Reclaiming free space in a storage system |
US10146652B2 (en) * | 2016-02-11 | 2018-12-04 | International Business Machines Corporation | Resilient distributed storage system |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10374637B1 (en) * | 2017-04-28 | 2019-08-06 | EMC IP Holding Company LLC | System and method for unbalanced load handling with distributed erasure coding |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10761743B1 (en) | 2017-07-17 | 2020-09-01 | EMC IP Holding Company LLC | Establishing data reliability groups within a geographically distributed data storage environment |
US10817388B1 (en) | 2017-07-21 | 2020-10-27 | EMC IP Holding Company LLC | Recovery of tree data in a geographically distributed environment |
US10684780B1 (en) | 2017-07-27 | 2020-06-16 | EMC IP Holding Company LLC | Time sensitive data convolution and de-convolution |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10880040B1 (en) | 2017-10-23 | 2020-12-29 | EMC IP Holding Company LLC | Scale-out distributed erasure coding |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10545839B2 (en) | 2017-12-22 | 2020-01-28 | International Business Machines Corporation | Checkpointing using compute node health information |
US10382554B1 (en) | 2018-01-04 | 2019-08-13 | Emc Corporation | Handling deletes with distributed erasure coding |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US10817374B2 (en) | 2018-04-12 | 2020-10-27 | EMC IP Holding Company LLC | Meta chunks |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US10579297B2 (en) | 2018-04-27 | 2020-03-03 | EMC IP Holding Company LLC | Scaling-in for geographically diverse storage |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US11023130B2 (en) | 2018-06-15 | 2021-06-01 | EMC IP Holding Company LLC | Deleting data in a geographically diverse storage construct |
US10936196B2 (en) | 2018-06-15 | 2021-03-02 | EMC IP Holding Company LLC | Data convolution for geographically diverse storage |
US11436113B2 (en) * | 2018-06-28 | 2022-09-06 | Twitter, Inc. | Method and system for maintaining storage device failure tolerance in a composable infrastructure |
US10719250B2 (en) | 2018-06-29 | 2020-07-21 | EMC IP Holding Company LLC | System and method for combining erasure-coded protection sets |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11556326B2 (en) * | 2018-09-06 | 2023-01-17 | Arm Limited | Methods for performing a rollback-capable software update at a device |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US11436203B2 (en) | 2018-11-02 | 2022-09-06 | EMC IP Holding Company LLC | Scaling out geographically diverse storage |
US10901635B2 (en) | 2018-12-04 | 2021-01-26 | EMC IP Holding Company LLC | Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns |
US10931777B2 (en) | 2018-12-20 | 2021-02-23 | EMC IP Holding Company LLC | Network efficient geographically diverse data storage system employing degraded chunks |
US11119683B2 (en) | 2018-12-20 | 2021-09-14 | EMC IP Holding Company LLC | Logical compaction of a degraded chunk in a geographically diverse data storage system |
US10892782B2 (en) | 2018-12-21 | 2021-01-12 | EMC IP Holding Company LLC | Flexible system and method for combining erasure-coded protection sets |
US10768840B2 (en) | 2019-01-04 | 2020-09-08 | EMC IP Holding Company LLC | Updating protection sets in a geographically distributed storage environment |
US11023331B2 (en) | 2019-01-04 | 2021-06-01 | EMC IP Holding Company LLC | Fast recovery of data in a geographically distributed storage environment |
US10942827B2 (en) | 2019-01-22 | 2021-03-09 | EMC IP Holding Company LLC | Replication of data in a geographically distributed storage environment |
US10846003B2 (en) | 2019-01-29 | 2020-11-24 | EMC IP Holding Company LLC | Doubly mapped redundant array of independent nodes for data storage |
US10866766B2 (en) | 2019-01-29 | 2020-12-15 | EMC IP Holding Company LLC | Affinity sensitive data convolution for data storage systems |
US10942825B2 (en) | 2019-01-29 | 2021-03-09 | EMC IP Holding Company LLC | Mitigating real node failure in a mapped redundant array of independent nodes |
US10936239B2 (en) | 2019-01-29 | 2021-03-02 | EMC IP Holding Company LLC | Cluster contraction of a mapped redundant array of independent nodes |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11029865B2 (en) | 2019-04-03 | 2021-06-08 | EMC IP Holding Company LLC | Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes |
US10944826B2 (en) | 2019-04-03 | 2021-03-09 | EMC IP Holding Company LLC | Selective instantiation of a storage service for a mapped redundant array of independent nodes |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US10809940B1 (en) | 2019-04-19 | 2020-10-20 | Microsoft Technology Licensing, Llc | Multilevel resiliency |
US11121727B2 (en) | 2019-04-30 | 2021-09-14 | EMC IP Holding Company LLC | Adaptive data storing for data storage systems employing erasure coding |
US11119686B2 (en) | 2019-04-30 | 2021-09-14 | EMC IP Holding Company LLC | Preservation of data during scaling of a geographically diverse data storage system |
US11113146B2 (en) | 2019-04-30 | 2021-09-07 | EMC IP Holding Company LLC | Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system |
US11748004B2 (en) | 2019-05-03 | 2023-09-05 | EMC IP Holding Company LLC | Data replication using active and passive data storage modes |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11209996B2 (en) | 2019-07-15 | 2021-12-28 | EMC IP Holding Company LLC | Mapped cluster stretching for increasing workload in a data storage system |
US11442809B1 (en) * | 2019-07-17 | 2022-09-13 | Marvell Asia Pte, Ltd. | Double-parity raid enabling recovery of two failed data units |
US11023145B2 (en) | 2019-07-30 | 2021-06-01 | EMC IP Holding Company LLC | Hybrid mapped clusters for data storage |
US11449399B2 (en) | 2019-07-30 | 2022-09-20 | EMC IP Holding Company LLC | Mitigating real node failure of a doubly mapped redundant array of independent nodes |
US11228322B2 (en) * | 2019-09-13 | 2022-01-18 | EMC IP Holding Company LLC | Rebalancing in a geographically diverse storage system employing erasure coding |
US11449248B2 (en) | 2019-09-26 | 2022-09-20 | EMC IP Holding Company LLC | Mapped redundant array of independent data storage regions |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11119690B2 (en) | 2019-10-31 | 2021-09-14 | EMC IP Holding Company LLC | Consolidation of protection sets in a geographically diverse data storage environment |
US11288139B2 (en) | 2019-10-31 | 2022-03-29 | EMC IP Holding Company LLC | Two-step recovery employing erasure coding in a geographically diverse data storage system |
US11435910B2 (en) | 2019-10-31 | 2022-09-06 | EMC IP Holding Company LLC | Heterogeneous mapped redundant array of independent nodes for data storage |
US11435957B2 (en) | 2019-11-27 | 2022-09-06 | EMC IP Holding Company LLC | Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11144220B2 (en) | 2019-12-24 | 2021-10-12 | EMC IP Holding Company LLC | Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes |
CN111399766B (zh) * | 2020-01-08 | 2021-10-22 | 华为技术有限公司 | 存储系统中的数据存储方法、数据读取方法、装置及系统 |
US11231860B2 (en) | 2020-01-17 | 2022-01-25 | EMC IP Holding Company LLC | Doubly mapped redundant array of independent nodes for data storage with high performance |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
JP7316242B2 (ja) * | 2020-03-18 | 2023-07-27 | 株式会社日立製作所 | ストレージシステムおよびデータ転送方法 |
US11507308B2 (en) | 2020-03-30 | 2022-11-22 | EMC IP Holding Company LLC | Disk access event control for mapped nodes supported by a real cluster storage system |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11947827B2 (en) * | 2020-05-15 | 2024-04-02 | Vmware, Inc. | Synchronizing a stale component of a distributed object using a delta component during maintenance |
US11288229B2 (en) | 2020-05-29 | 2022-03-29 | EMC IP Holding Company LLC | Verifiable intra-cluster migration for a chunk storage system |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11693983B2 (en) | 2020-10-28 | 2023-07-04 | EMC IP Holding Company LLC | Data protection via commutative erasure coding in a geographically diverse data storage system |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US11847141B2 (en) | 2021-01-19 | 2023-12-19 | EMC IP Holding Company LLC | Mapped redundant array of independent nodes employing mapped reliability groups for data storage |
US11625174B2 (en) | 2021-01-20 | 2023-04-11 | EMC IP Holding Company LLC | Parity allocation for a virtual redundant array of independent disks |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11449234B1 (en) | 2021-05-28 | 2022-09-20 | EMC IP Holding Company LLC | Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes |
US11354191B1 (en) | 2021-05-28 | 2022-06-07 | EMC IP Holding Company LLC | Erasure coding in a large geographically diverse data storage system |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07271522A (ja) * | 1994-03-31 | 1995-10-20 | Toshiba Corp | 情報記憶システム |
US20030188097A1 (en) * | 2002-03-29 | 2003-10-02 | Holland Mark C. | Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data |
US20070050578A1 (en) * | 2004-03-01 | 2007-03-01 | Hitachi, Ltd. | Method and apparatus for data migration with the efficient use of old assets |
US20090210742A1 (en) * | 2008-02-18 | 2009-08-20 | Dell Products L.P. | Methods, systems and media for data recovery using global parity for multiple independent RAID levels |
US20120023291A1 (en) * | 2010-07-22 | 2012-01-26 | Netgear, Inc. | Method and Apparatus for Dynamically Adjusting Memory Capacity in Accordance with Data Storage |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826711B2 (en) | 2000-02-18 | 2004-11-30 | Avamar Technologies, Inc. | System and method for data protection with multidimensional parity |
CN1873622A (zh) | 2006-04-20 | 2006-12-06 | 北京艾德斯科技有限公司 | San环境下数据备份、复制和恢复的方法及其装置 |
US7660236B2 (en) * | 2006-04-27 | 2010-02-09 | Alcatel Lucent | System and method of multi-nodal APS control protocol signaling |
KR101543369B1 (ko) | 2007-11-21 | 2015-08-11 | 마벨 월드 트레이드 리미티드 | 병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법 |
JP2010181917A (ja) * | 2009-02-03 | 2010-08-19 | Nec Corp | 情報ストレージ装置 |
CN101650677A (zh) | 2009-07-27 | 2010-02-17 | 浪潮电子信息产业股份有限公司 | 一种基于Delta增量的文件数据备份方法 |
US8725940B2 (en) | 2010-02-27 | 2014-05-13 | Cleversafe, Inc. | Distributedly storing raid data in a raid memory and a dispersed storage network memory |
US8782339B2 (en) | 2010-10-11 | 2014-07-15 | Open Invention Network, Llc | Storage system having cross node data redundancy and method and computer readable medium for same |
US8832035B2 (en) * | 2011-08-30 | 2014-09-09 | Netapp, Inc. | System and method for retaining deduplication in a storage object after a clone split operation |
CN102609479B (zh) | 2012-01-20 | 2015-11-25 | 北京思特奇信息技术股份有限公司 | 一种内存数据库节点复制方法 |
US9213486B2 (en) * | 2012-02-22 | 2015-12-15 | International Business Machines Corporation | Writing new data of a first block size to a second block size using a write-write mode |
US8595586B2 (en) * | 2012-04-25 | 2013-11-26 | Facebook, Inc. | Distributed system for fault-tolerant data storage |
US9613656B2 (en) * | 2012-09-04 | 2017-04-04 | Seagate Technology Llc | Scalable storage protection |
-
2012
- 2012-11-29 US US13/688,654 patent/US9613656B2/en active Active
-
2013
- 2013-08-14 TW TW102129106A patent/TWI591512B/zh not_active IP Right Cessation
- 2013-08-15 EP EP13180528.5A patent/EP2703991B1/en active Active
- 2013-08-23 KR KR1020130100271A patent/KR102102728B1/ko active IP Right Grant
- 2013-08-30 CN CN201310388747.4A patent/CN103793182B/zh active Active
- 2013-09-04 JP JP2013182906A patent/JP6162547B2/ja not_active Expired - Fee Related
-
2017
- 2017-02-22 US US15/439,459 patent/US10191676B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07271522A (ja) * | 1994-03-31 | 1995-10-20 | Toshiba Corp | 情報記憶システム |
US20030188097A1 (en) * | 2002-03-29 | 2003-10-02 | Holland Mark C. | Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data |
US20070050578A1 (en) * | 2004-03-01 | 2007-03-01 | Hitachi, Ltd. | Method and apparatus for data migration with the efficient use of old assets |
US20090210742A1 (en) * | 2008-02-18 | 2009-08-20 | Dell Products L.P. | Methods, systems and media for data recovery using global parity for multiple independent RAID levels |
US20120023291A1 (en) * | 2010-07-22 | 2012-01-26 | Netgear, Inc. | Method and Apparatus for Dynamically Adjusting Memory Capacity in Accordance with Data Storage |
Also Published As
Publication number | Publication date |
---|---|
TW201411401A (zh) | 2014-03-16 |
JP6162547B2 (ja) | 2017-07-12 |
CN103793182A (zh) | 2014-05-14 |
EP2703991B1 (en) | 2020-06-10 |
US9613656B2 (en) | 2017-04-04 |
KR102102728B1 (ko) | 2020-04-21 |
CN103793182B (zh) | 2017-09-22 |
US20170160967A1 (en) | 2017-06-08 |
US20140064048A1 (en) | 2014-03-06 |
US10191676B2 (en) | 2019-01-29 |
EP2703991A3 (en) | 2016-12-21 |
TWI591512B (zh) | 2017-07-11 |
EP2703991A2 (en) | 2014-03-05 |
JP2014053005A (ja) | 2014-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10191676B2 (en) | Scalable storage protection | |
US7562264B2 (en) | Fault tolerant soft error detection for storage subsystems | |
US10452498B2 (en) | Fault tolerance for persistent main memory | |
US8065558B2 (en) | Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance | |
US9547552B2 (en) | Data tracking for efficient recovery of a storage array | |
US9424128B2 (en) | Method and apparatus for flexible RAID in SSD | |
US20090031083A1 (en) | Storage control unit with memory cash protection via recorded log | |
TWI451257B (zh) | 保護在直接附加儲存(das)系統中快取資料的完整性之裝置及方法 | |
US8484506B2 (en) | Redundant array of independent disks level 5 (RAID 5) with a mirroring functionality | |
JP2016530637A (ja) | Raidパリティストライプ再構成 | |
CN106557143B (zh) | 用于数据存储设备的装置和方法 | |
KR20120115012A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US10324782B1 (en) | Hiccup management in a storage array | |
US8418029B2 (en) | Storage control device and storage control method | |
US11604697B2 (en) | Distributed erasure encoding in shared file system | |
US11442826B2 (en) | Reducing incidents of data loss in raid arrays having the same raid level | |
JP7249719B2 (ja) | 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック | |
JP2008217395A (ja) | ディスクアレイ装置 | |
WO2016122602A1 (en) | Systems and methods for sharing non-volatile memory between multiple access models | |
US20240202067A1 (en) | Storage device and method of operating the same | |
KR20230101405A (ko) | 분산 파일 시스템에서 이레이저 코딩을 가속화하는 전자 장치 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |