KR102102728B1 - 스케일러블 스토리지 보호 - Google Patents

스케일러블 스토리지 보호 Download PDF

Info

Publication number
KR102102728B1
KR102102728B1 KR1020130100271A KR20130100271A KR102102728B1 KR 102102728 B1 KR102102728 B1 KR 102102728B1 KR 1020130100271 A KR1020130100271 A KR 1020130100271A KR 20130100271 A KR20130100271 A KR 20130100271A KR 102102728 B1 KR102102728 B1 KR 102102728B1
Authority
KR
South Korea
Prior art keywords
data
global
disk
local
node
Prior art date
Application number
KR1020130100271A
Other languages
English (en)
Other versions
KR20140031112A (ko
Inventor
얼 티 코헨
로버트 에프 퀸
Original Assignee
엘에스아이 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘에스아이 코포레이션 filed Critical 엘에스아이 코포레이션
Publication of KR20140031112A publication Critical patent/KR20140031112A/ko
Application granted granted Critical
Publication of KR102102728B1 publication Critical patent/KR102102728B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1803Error detection or correction; Testing, e.g. of drop-outs by redundancy in data representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Abstract

본 개시 내용은 스케일러블 스토리지 시스템의 데이터를 보호하는 것에 관한 것이다. 스케일러블 스토리지 시스템은 복수의 노드를 포함하며, 각각의 상기 노드는 하나 이상의 하드-디스크 드라이브 및/또는 고체 상태 디스크 드라이브와 같은 직접-부착형 스토리지(DAS)를 갖는다. 노드들은 인터-노드 통신 네트워크를 통해 결합되며, 실질적 전체의 DAS는 각각의 노드에 의해 전역적으로 액세스가능하다. DAS는 노드들 중 한 노드에서 장애가 존재할 때 신뢰성 있고 전역적으로 액세스 가능한 DAS에 저장된 데이터를 유지하는 인트라-노드 보호를 이용하여 보호된다. DAS는 또한 노드들 중 적어도 한 노드가 장애인 경우 신뢰성있고 전역적으로 액세스가능한 DAS에 저장된 데이터를 유지하는 인터-노드 보호를 이용하여 보호된다.

Description

스케일러블 스토리지 보호{SCALABLE STORAGE PROTECTION}
직접 부착형 디스크(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 내지 도 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 (39)

  1. 서로 통신하는 복수의 프로세싱 노드들을 포함하는 스토리지 시스템으로서,
    각각의 프로세싱 노드는,
    복수의 디스크들과,
    상기 복수의 디스크들 중 선택된 디스크에 데이터를 기록하도록 구성된 적어도 하나의 호스트와,
    상기 적어도 하나의 호스트에 의해 상기 선택된 디스크에 기록된 상기 데이터를 이용하여 로컬 리던던트 데이터를 결정하도록 구성되는 로컬 리던던시 계산 유닛 - 상기 로컬 리던던시 계산 유닛은 또한 상기 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성됨 - 과,
    상기 적어도 하나의 호스트에 의해 상기 선택된 디스크에 기록된 상기 데이터를 이용하여 델타 데이터를 결정하도록 구성되는 델타 계산 유닛 - 상기 델타 계산 유닛은 또한 상기 결정된 델타 데이터를 적어도 하나의 다른 프로세싱 노드에 송신하도록 구성됨 - 과,
    상기 프로세싱 노드들 중 적어도 하나의 다른 노드로부터 델타 데이터를 수신하도록 구성되는 글로벌 리던던시 계산 유닛 - 상기 글로벌 리던던시 계산 유닛은 또한 상기 수신된 델타 데이터를 이용하여 글로벌 리던던트 데이터를 결정하도록 구성되며, 상기 글로벌 리던던시 계산 유닛은 또한 상기 글로벌 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성되고, 상기 로컬 리던던트 데이터는 상기 글로벌 리던던트 데이터를 보호함 - 을 포함하는,
    스토리지 시스템.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 제1항에 있어서,
    상기 로컬 리던던시 계산 유닛은 또한 상기 선택된 디스크가 장애(fail)일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하도록 구성된
    스토리지 시스템.
  22. 제1항에 있어서,
    상기 글로벌 리던던시 계산 유닛은 또한 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 다른 프로세싱 노드의 데이터를 복구하도록 구성된
    스토리지 시스템.
  23. 제1항에 있어서,
    상기 로컬 리던던트 데이터는 제1 로컬 리던던트 데이터이고,
    상기 로컬 리던던시 계산 유닛은 또한 상기 글로벌 리던던트 데이터를 이용하여 제2 로컬 리던던트 데이터를 결정하도록 구성되며,
    상기 로컬 리던던시 계산 유닛은 또한 상기 제2 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성된
    스토리지 시스템.
  24. 제23항에 있어서,
    상기 로컬 리던던시 계산 유닛은 또한 상기 선택된 디스크가 장애일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하도록 구성되고,
    상기 글로벌 리던던시 계산 유닛은 또한 상기 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 다른 프로세싱 노드의 데이터를 복구하도록 구성되며,
    상기 로컬 리던던시 계산 유닛은 또한 상기 글로벌 리던던트 데이터를 저장하는 상기 적어도 하나의 디스크가 장애일 때 상기 제2 로컬 리던던트 데이터를 이용하여 상기 글로벌 리던던트 데이터를 복구하도록 구성되는
    스토리지 시스템.

  25. 제1항에 있어서,
    상기 복수의 프로세싱 노드들은 제1 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중 제1 디스크 셋 및 제2 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중 제2 디스크 셋을 포함하는
    스토리지 시스템.
  26. 제25항에 있어서,
    상기 제1 디스크 셋은 상기 복수의 프로세싱 노드들 중 제1 프로세싱 노드의 적어도 하나의 디스크 및 상기 복수의 프로세싱 노드들 중 제2 프로세싱 노드의 적어도 하나의 디스크를 포함하는
    스토리지 시스템.
  27. 제1항에 있어서,
    상기 로컬 리던던시 계산 유닛은 또한 제1 소거-정정 코드 타입을 이용하여 데이터를 처리하도록 구성되며,
    상기 글로벌 리던던시 계산 유닛은 또한 제2 소거-정정 코드 타입을 이용하여 데이터를 처리하도록 구성되며,
    상기 제1 소거-정정 코드 타입은 상기 제2 소거-정정 코드 타입과 상이한
    스토리지 시스템.
  28. 서로 통신하는 복수의 프로세싱 노드들을 포함하는 스토리지 시스템으로서,
    각각의 프로세싱 노드는,
    복수의 디스크들과,
    상기 복수의 디스크들 중 선택된 디스크에 데이터를 기록하도록 구성된 적어도 하나의 호스트와,
    상기 복수의 디스크들과 통신하는 컨트롤러를 포함하며, 상기 컨트롤러는,
    상기 선택된 디스크에 기록된 상기 데이터를 이용하여 로컬 리던던트 데이터를 결정하고,
    상기 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하고,
    상기 선택된 디스크에 기록된 상기 데이터를 이용하여 델타 데이터를 결정하고,
    상기 결정된 델타 데이터를 상기 프로세싱 노드들 중 적어도 하나의 다른 프로세싱 노드에 송신하고,
    상기 프로세싱 노드들 중 적어도 하나의 다른 노드로부터 델타 데이터를 수신하고,
    상기 수신된 델타 데이터를 이용하여 글로벌 리던던트 데이터를 결정하고 -상기 로컬 리던던트 데이터는 상기 글로벌 리던던트 데이터를 보호함 -,
    상기 글로벌 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하도록 구성된
    스토리지 시스템.
  29. 제28항에 있어서,
    상기 컨트롤러는 또한,
    상기 선택된 디스크가 장애일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하고,
    상기 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 다른 프로세싱 노드의 데이터를 복구하도록 구성된
    스토리지 시스템.
  30. 제29항에 있어서,
    상기 로컬 리던던트 데이터는 제1 로컬 리던던트 데이터이고,
    상기 컨트롤러는 또한,
    상기 글로벌 리던던트 데이터를 이용하여 제2 로컬 리던던트 데이터를 결정하고,
    상기 제2 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하고,
    상기 글로벌 리던던트 데이터를 저장하는 상기 적어도 하나의 디스크가 장애일 때 상기 제2 로컬 리던던트 데이터를 이용하여 상기 글로벌 리던던트 데이터를 복구하도록 구성된
    스토리지 시스템.
  31. 제28항에 있어서,
    상기 복수의 프로세싱 노드들은 제1 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중의 제1 디스크 셋 및 제2 글로벌 코딩 타입을 통해 보호된 상기 프로세싱 노드들 중에서 상기 복수의 디스크들 중의 제2 디스크 셋을 포함하며, 상기 제1 글로벌 코딩 타입은 상기 제2 글로벌 코딩 타입과 상이한
    스토리지 시스템.
  32. 제31항에 있어서,
    상기 제1 디스크 셋은 상기 복수의 프로세싱 노드들 중 제1 프로세싱 노드의 적어도 하나의 디스크 및 상기 복수의 프로세싱 노드들 중 제2 프로세싱 노드의 적어도 하나의 디스크를 포함하는
    스토리지 시스템.
  33. 제28항에 있어서,
    상기 컨트롤러는 또한 제1 소거-정정 코드 타입을 이용하여 상기 로컬 리던던트 데이터를 결정하고,
    제2 소거-정정 코드 타입을 이용하여 상기 글로벌 리던던트 데이터를 결정하도록 구성되며, 상기 제1 소거-정정 코드 타입은 상기 제2 소거-정정 코드 타입과 상이한
    스토리지 시스템.
  34. 스토리지 보호 방법으로서,
    서로 통신하는 복수의 프로세싱 노드들 중 제1 프로세싱 노드의 복수의 디스크들 중 선택된 디스크에 데이터를 기록하는 단계와,
    상기 선택된 디스크에 기록된 상기 데이터를 이용하여 로컬 리던던트 데이터를 결정하는 단계와,
    상기 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하는 단계와,
    상기 선택된 디스크에 기록된 데이터를 이용하여 제1 델타 데이터를 결정하는 단계와,
    상기 제1 델타 데이터를 상기 적어도 하나의 다른 프로세싱 노드에 송신하는 단계와,
    적어도 하나의 다른 노드로부터 제2 델타 데이터를 수신하는 단계와,
    상기 제2 델타 데이터를 이용하여 글로벌 리던던트 데이터를 결정하는 단계와 -상기 로컬 리던던트 데이터는 상기 글로벌 리던던트 데이터를 보호함 -,
    상기 글로벌 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하는 단계를 포함하는
    스토리지 보호 방법.
  35. 제34항에 있어서,
    상기 스토리지 보호 방법은,
    상기 선택된 디스크가 장애일 때 상기 로컬 리던던트 데이터를 이용하여 상기 선택된 디스크에 기록된 상기 데이터를 복구하는 단계와,
    상기 적어도 하나의 다른 프로세싱 노드가 장애일 때 상기 글로벌 리던던트 데이터를 이용하여 상기 적어도 하나의 프로세싱 노드의 데이터를 복구하는 단계를 더 포함하는
    스토리지 보호 방법.
  36. 제35항에 있어서,
    상기 로컬 리던던트 데이터는 제1 로컬 리던던트 데이터이고,
    상기 스토리지 보호 방법은,
    상기 글로벌 리던던트 데이터를 이용하여 제2 로컬 리던던트 데이터를 결정하는 단계와,
    상기 제2 로컬 리던던트 데이터를 상기 복수의 디스크들 중 적어도 하나의 디스크에 저장하는 단계와,
    상기 글로벌 리던던트 데이터를 저장하는 상기 적어도 하나의 디스크가 장애일 때 상기 제2 로컬 리던던트 데이터를 이용하여 상기 글로벌 리던던트 데이터를 복구하는 단계를 더 포함하는
    스토리지 보호 방법.
  37. 제34항에 있어서,
    상기 스토리지 보호 방법은,
    제1 글로벌 코딩 타입을 이용하여 상기 프로세싱 노드들의 제1 디스크 셋을 보호하는 단계와,
    제2 글로벌 코딩 타입을 이용하여 상기 프로세싱 노드들의 제2 디스크 셋을 보호하는 단계를 더 포함하며, 상기 제1 글로벌 코딩 타입은 상기 제2 글로벌 코딩 타입과 상이한
    스토리지 보호 방법.
  38. 제37항에 있어서,
    상기 제1 디스크 셋은 상기 제1 프로세싱 노드의 적어도 하나의 디스크 및 상기 복수의 프로세싱 노드들 중 제2 프로세싱 노드의 적어도 하나의 디스크를 포함하는
    스토리지 보호 방법.
  39. 제34항에 있어서,
    상기 스토리지 보호 방법은,
    제1 소거-정정 코드 타입을 이용하여 상기 로컬 리던던트 데이터를 결정하는 단계와,
    제2 소거-정정 코드 타입을 이용하여 상기 글로벌 리던던트 데이터를 결정하는 단계를 더 포함하며, 상기 제1 소거-정정 코드 타입은 상기 제2 소거-정정 코드 타입과 상이한
    스토리지 보호 방법.
KR1020130100271A 2012-09-04 2013-08-23 스케일러블 스토리지 보호 KR102102728B1 (ko)

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 2012-11-29
US13/688,654 US9613656B2 (en) 2012-09-04 2012-11-29 Scalable storage protection

Publications (2)

Publication Number Publication Date
KR20140031112A KR20140031112A (ko) 2014-03-12
KR102102728B1 true 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 (196)

* Cited by examiner, † Cited by third party
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
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
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
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
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
WO2015188014A1 (en) * 2014-06-04 2015-12-10 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in 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
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of 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
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA 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
US9495255B2 (en) * 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
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
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
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 株式会社日立製作所 分散型ストレージシステム
WO2016058262A1 (zh) * 2014-12-16 2016-04-21 深圳赛思鹏科技发展有限公司 一种基于二进制域里德所罗门码的数据编解码方法
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
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
US9996426B1 (en) 2015-06-30 2018-06-12 EMC IP Holding Company LLC Sparse segment trees for high metadata churn workloads
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
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
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
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
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
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
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 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
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
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
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
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D 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
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
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
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
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
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive 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
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
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
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
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
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
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
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
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
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
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
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
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
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
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
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
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
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
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
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
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
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
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
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
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
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
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
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
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
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
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
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
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
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
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
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
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
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
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
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3181466B2 (ja) * 1994-03-31 2001-07-03 株式会社東芝 情報記憶システム
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
WO2009070235A2 (en) 2007-11-21 2009-06-04 Marvell World Trade Ltd. Parallel reed-solomon raid (rs-raid) architecture, device, and method
JP2010181917A (ja) * 2009-02-03 2010-08-19 Nec Corp 情報ストレージ装置
CN101650677A (zh) 2009-07-27 2010-02-17 浪潮电子信息产业股份有限公司 一种基于Delta增量的文件数据备份方法
US8850113B2 (en) 2010-02-27 2014-09-30 Cleversafe, Inc. Data migration between 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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN103793182A (zh) 2014-05-14
TW201411401A (zh) 2014-03-16
US9613656B2 (en) 2017-04-04
CN103793182B (zh) 2017-09-22
KR20140031112A (ko) 2014-03-12
EP2703991A2 (en) 2014-03-05
US20170160967A1 (en) 2017-06-08
JP2014053005A (ja) 2014-03-20
JP6162547B2 (ja) 2017-07-12
EP2703991B1 (en) 2020-06-10
US10191676B2 (en) 2019-01-29
TWI591512B (zh) 2017-07-11
EP2703991A3 (en) 2016-12-21
US20140064048A1 (en) 2014-03-06

Similar Documents

Publication Publication Date Title
KR102102728B1 (ko) 스케일러블 스토리지 보호
US11941257B2 (en) Method and apparatus for flexible RAID in SSD
US10078469B1 (en) Preparing for cache upgrade in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US10372356B2 (en) Enhanced data protection in data storage drives
US7562264B2 (en) Fault tolerant soft error detection for storage subsystems
US8694865B2 (en) Data storage device configured to reduce buffer traffic and related method of operation
CN101047010B (zh) 用于最大化raid系统中受保护数据量的方法和系统
US20170126255A1 (en) Dynamically adjusting an error correction effort level of a storage device
US11531590B2 (en) Method and system for host-assisted data recovery assurance for data center storage device architectures
US8484506B2 (en) Redundant array of independent disks level 5 (RAID 5) with a mirroring functionality
TWI451257B (zh) 保護在直接附加儲存(das)系統中快取資料的完整性之裝置及方法
CN106557143B (zh) 用于数据存储设备的装置和方法
KR20120115012A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11567673B1 (en) Adaptive, proactive raid rebuild
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
US8418029B2 (en) Storage control device and storage control method
US10733069B2 (en) Page retirement in a NAND flash memory system
US20150143024A1 (en) Redundant array of independent modules
JP2011141857A (ja) Raidシステム
JP2008217395A (ja) ディスクアレイ装置

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