KR101543369B1 - 병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법 - Google Patents

병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법 Download PDF

Info

Publication number
KR101543369B1
KR101543369B1 KR1020107010285A KR20107010285A KR101543369B1 KR 101543369 B1 KR101543369 B1 KR 101543369B1 KR 1020107010285 A KR1020107010285 A KR 1020107010285A KR 20107010285 A KR20107010285 A KR 20107010285A KR 101543369 B1 KR101543369 B1 KR 101543369B1
Authority
KR
South Korea
Prior art keywords
data
data storage
raid
checksum
symbols
Prior art date
Application number
KR1020107010285A
Other languages
English (en)
Other versions
KR20100095525A (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 KR20100095525A publication Critical patent/KR20100095525A/ko
Application granted granted Critical
Publication of KR101543369B1 publication Critical patent/KR101543369B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • 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/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity
    • 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/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Abstract

병렬 RS-RAID 데이터 스토리지 아키텍처는, 각각의 클러스터 내의 데이터와 체크섬을 합하여, 그 외 다른 클러스터로 이동되거나 분배되는 중간 합계 또는 부분적 합계를 낼 수 있다. 중간 데이터 심볼, 중간 체크섬 심볼, 클러스터로 할당된 데이터 스토리지 장치에 대한 클러스터 구성 정보, 데이터 스토리지 장치의 동작 상태 등을 이용함으로써, 병렬 RS-RAID 분산 데이터 스토리지 아키텍처의 확장성(scalability)과 처리량은 증가시키면서, 에러 수정 계산을 위한 계산량의 부담과 지연 시간을 줄일 수 있다.

Description

병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법{PARALLEL REED-SOLOMON RAID (RS-RAID) ARCHITECTURE, DEVICE, AND METHOD}
본 출원은 2007년 11월 21에 출원된 미국의 가특허출원 제 60/989,670호(발명의 제목: Parallel RAID Implementation for RAID6 and Reed-Solomon Code)를 기초로 우선권을 주장하며, 상기 가특허출원은 본원에서 참조로서 인용된다.
RAID(redundant array of inexpensive disks) 아키텍처는 하드 디스크와 같은 데이터 스토리지 유닛의 그룹을 이용함으로써 무정지형(fault-tolerant) 데이터 저장을 제공한다. RAID 아키텍처는 전진 에러 수정(FEC) 코드와 여분의 데이터 스토리지 유닛을 이용하여, 에러와 디스크 오류로부터 정보를 보호한다. 정보 심볼은 비트, 바이트, 또는 워드일 수 있다. 정보 심볼은 인코딩되어, 데이터 및 체크섬(checksum)/패리티 심볼(parity symbol)을 포함하는 코드 심볼을 형성할 수 있다. 체계적인 전진 에러 수정 코드를 위해, 정보 심볼은 코드 심볼의 데이터 심볼 부분에서 명확히 나타날 수 있다.
체크섬 심볼의 개수와 동일한 다수의 스토리지 유닛 오류를 수용하기 위해, 리드-솔로몬 코드가 RAID 아키텍처(RS-RAID)에 사용될 수 있다. 예를 들어, 데이터를 위한 20개의 스토리지 유닛과 체크섬을 위한 4개의 스토리지 유닛을 할당하는 4중-에러 수정 RS-RAID 아키텍처는 최대 4개까지의 스토리지 장치의 오류를 수용할 수 있다.
RS-RAID 아키텍처는 일반적으로 단일 RAID 제어기를 이용하여 데이터 스토리지 유닛에 쓰여진 데이터 심볼을 보호한다. 단일 RAID 제어기가 체크섬, 인코딩, 및 디코딩 계산을 수행하기 위해 사용되는 경우, 비-RAID(non-RAID)와 오류-불허(fault-intolerant) 데이터 스토리지 아키텍처에 비해, 아키텍처의 처리량/데이터 스토리지 및 검색 속도가 줄어들 수 있다. 따라서, 높은 처리량, 무정지형 분산 데이터 스토리지 아키텍처가 바람직할 수 있다.
고성능 스토리지 아키텍처에서, 다수의 RAID 제어기가, 통신 패브릭이라 불리는 통신 경로의 공통 세트를 통해 서로 통신할 수 있다. 통신 패브릭은 RAID 제어기와 상기 RAID 제어기에 할당된 스토리지 장치 사이의 통신 경로에 비해 높은 대기시간(latency)을 가질 수 있다. 높은 대기시간을 갖는 통신 패브릭은, RAID 제어기들 간의 데이터, 메시지, 구성 등에 대한 트래픽이 무정지형 분산 데이터 스토리지의 작업에 정합되지 않는 한, RAID 데이터 스토리지 아키텍처의 처리량을 감소시킬 수 있다. 통신 패브릭과 할당된 데이터 스토리지 장치의 세트 사이에 놓일 수 있는 각각의 RAID 제어기는, 데이터 스토리지 아키텍처의 노드라고 불릴 수 있다. RAID 제어기 및 할당된 데이터 스토리지 장치는 데이터 스토리지 클러스터라고 불릴 수 있다.
리드-솔로몬 RAID(RS-RAID) 아키텍처는, 예비(redundant) 데이터 스토리지 장치를 포함함으로써, 하드 디스크와 같은 스토리지 장치에 쓰여있고 그로부터 읽혀지는 정보 심볼을 보호할 수 있다. m개의 체크섬 장치를 이용하는 RS-RAID 아키텍처가, 데이터 스토리지 장치에 대한 m개 만큼의 동시적 오류를 수용할 수 있다. m개의 체크섬 심볼이
Figure 112010029925787-pct00001
으로 표시된다. RS-RAID 아키텍처는 또한, 정보-포함 또는
Figure 112010029925787-pct00002
로 표시되는 데이터 심볼을 위한 다수(
Figure 112010029925787-pct00003
개)의 데이터 스토리지 장치를 포함할 수 있다.
체크섬 및 데이터 스토리지 장치는 비트, 바이트, 워드 등과 같은 체크섬 심볼과 데이터를 저장한다. 리드-솔로몬 코드(RS)와 같은 특정 유형의 전진 에러 수정 코드(FEC)는 일반적으로 바이트를 사용한다. 예를 들어, RS 코드는, 233 정보 바이트를 255 바이트 블록 내의 233 데이터 바이트 및 32 체크섬 바이트로 인코딩하는 블록과 같은 바이트의 블록 상에서 동작할 수 있다. RS-RAID 아키텍처는, 데이터 심볼
Figure 112010029925787-pct00004
(대응하는 데이터 스토리지 장치
Figure 112010029925787-pct00005
에 의해 보유됨)을 사용하여,
Figure 112010029925787-pct00006
체크섬 장치
Figure 112010029925787-pct00007
에 저장될 체크섬 심볼
Figure 112010029925787-pct00008
를 계산할 수 있다. RS-RAID 아키텍처는,
Figure 112010029925787-pct00009
,
Figure 112010029925787-pct00010
스토리지 장치 중 임의의 m개 또는 그보다 적은 스토리지 장치에 오류가 발생한 경우, 오류가 발생한 장치들 중 임의의 장치의 내용이 손상되지 않거나 오류가 발생하지 않은 장치로부터 복구될 수 있도록, 각각의
Figure 112010029925787-pct00011
를 결정할 수 있다. RS-RAID 아키텍처는, 체크섬 심볼을 계산 및 유지하고 스토리지 장치로부터 읽힌 데이터와 체크섬 심볼로부터의 정보를 복구하는데 사용되는 반데몬드 행렬(Vandermonde matrix)의 특성에 의해, 무정지성 동작을 제공할 수 있다. RS-RAID 제어기는, 수반되거나 첨가된 반데몬드 행렬과 단위 행렬의
Figure 112010029925787-pct00012
부분의 역행렬을 계산함으로써, 스토리지 장치의 오류에도 불구하고 데이터 및/또는 체크섬 심볼을 복구할 수 있다.
체크섬 심볼을 생성하기 위해, RS-RAID 아키텍처는 반데몬드 행렬의 요소에 의해 데이터 심볼에 가중치를 가하고, 식 1에 의하여 선형 함수
Figure 112010029925787-pct00013
를 이용해 가중된 데이터 심볼들을 합산한다. 함수
Figure 112010029925787-pct00014
는 반데몬드 행렬의
Figure 112010029925787-pct00015
행의 요소로부터 얻어질 수 있으며, 따라서, 함수
Figure 112010029925787-pct00016
Figure 112010029925787-pct00017
이 된다.
Figure 112010029925787-pct00018
바꾸어 말하면, 데이터와 체크섬 심볼이
Figure 112010029925787-pct00019
Figure 112010029925787-pct00020
차원 벡터
Figure 112010029925787-pct00021
Figure 112010029925787-pct00022
로서 각각 나타나고, 함수
Figure 112010029925787-pct00023
가 행렬
Figure 112010029925787-pct00024
의 행으로서 나타나는 경우, RS-RAID 아키텍처는 식 2a 를 따라 체크섬 심볼을 인코딩할 수 있다.
Figure 112010029925787-pct00025
식 2a는 다음의 식과 동등하다.
Figure 112010029925787-pct00026
유리하게 설계된 RS-RAID FEC 코드에 있어서, 행렬
Figure 112010029925787-pct00027
는 요소
Figure 112010029925787-pct00028
를 갖는
Figure 112010029925787-pct00029
반데몬드 행렬일 수 있으며, 여기서,
Figure 112010029925787-pct00030
Figure 112010029925787-pct00031
는 반데몬드 매트릭스의 행과 열에 각각 대응한다. 또한 갈로아 필드(Galois field)의 특성을 이용하여 대수적 연산이 수행된다. 예를 들어,
Figure 112010029925787-pct00032
반데몬드 행렬은 다음과 같이 쓰여질 수 있다.
Figure 112010029925787-pct00033
에러를 포함할 수도 있는 코드워드(cordword) 또는 코드 심볼로부터
Figure 112010029925787-pct00034
정보 벡터
Figure 112010029925787-pct00035
를 복구하기 위하여, 병렬 RS-RAID 아키텍처는, 반데몬드 행렬과,
Figure 112010029925787-pct00036
로 표시되는 수반된(adjoined) (
Figure 112010029925787-pct00037
단위 행렬을 포함하는 첨가행렬 또는 분할행렬을 역행렬화할 수 있고,
Figure 112010029925787-pct00038
의 역행렬에, 동작 중인 스토리지 유닛으로부터 각각 읽힌 데이터와 체크섬 심볼의 세트
Figure 112010029925787-pct00039
Figure 112010029925787-pct00040
를 후위곱(post-multiply)할 수 있다. 상징적으로, 복구된 정보 벡터
Figure 112010029925787-pct00041
Figure 112010029925787-pct00042
로부터 획득될 수 있고, 여기서 첨가 행렬은
Figure 112010029925787-pct00043
이고,
Figure 112010029925787-pct00044
는 첨가된 데이터와 체크섬 심볼 벡터이다. 표기
Figure 112010029925787-pct00045
는, 후술되는 바와 같이,
Figure 112010029925787-pct00046
를 기초로 하는 역행렬(가령, 비특이
Figure 112010029925787-pct00047
정방 행렬을 형성하는
Figure 112010029925787-pct00048
의 행의 부분집합의 역행렬)을 산출하고,
Figure 112010029925787-pct00049
로 표시되는 열행렬(column matrix)
Figure 112010029925787-pct00050
의 선택된, 또는 걸러진 대응하는
Figure 112010029925787-pct00051
개의 행의 집합과 등각관계인 함수로 이해될 수 있다.
Figure 112010029925787-pct00052
행렬을 역행렬화하는 프로세스는
Figure 112010029925787-pct00053
의 선택된 행의 세트를 역행렬화하는 것으로 여겨질 수 있으며, 행의 선택은 동작 중인 데이터 스토리지 장치의 목록과, 행렬과 벡터의 곱 계산에서의 등각사상(conformality)에 대한 요구치에 의해 결정된다.
Figure 112010029925787-pct00054
가 반데몬드 행렬이기 때문에, (
Figure 112010029925787-pct00055
첨가 행렬
Figure 112010029925787-pct00056
Figure 112010029925787-pct00057
개 행의 모든 부분집합들이 역행렬화가 가능하다.
확장된 형태에서, 식
Figure 112010029925787-pct00058
는 다음과 같이 나타낼 수 있다.
Figure 112010029925787-pct00059
여기서,
Figure 112010029925787-pct00060
행렬의 선택된 부분을 역행렬화하기 전에,
Figure 112010029925787-pct00061
Figure 112010029925787-pct00062
의 대응하는 행을 선택함으로써 등각사상이 강제된다.
바꾸어 말하면, RS-RAID 아키텍처 내의 각각의 스토리지 장치는, 첨가 행렬
Figure 112010029925787-pct00063
의 행과, 열벡터(column vector)
Figure 112010029925787-pct00064
의 대응하는 요소에 의해 표현될 수 있다.
Figure 112010029925787-pct00065
개의 예비 스토리지 장치 중 그 어느 것도 오류가 발생하지 않은 경우, 복구된 정보 심볼은, 대응하는 데이터 스토리지 유닛 으로부터 읽힌 데이터의 벡터
Figure 112010029925787-pct00066
및 데이터 복구 행렬로서 설명될 수 있는 정방 행렬
Figure 112010029925787-pct00067
를 형성하기 위하여,
Figure 112010029925787-pct00068
Figure 112010029925787-pct00069
개의 행의 임의의 부분집합 및
Figure 112010029925787-pct00070
개의 이에 대응하는 요소
Figure 112010029925787-pct00071
를 선택함으로써 판단될 수 있다. 바꾸어 말하면,
Figure 112010029925787-pct00072
Figure 112010029925787-pct00073
이다. 예를 들어, 4+2 RS-RAID 아키텍처에 있어서, 복구 또는 디코딩된 데이터
Figure 112010029925787-pct00074
는, 다음의 식에 의해, 첨가 반데몬드 행렬의 처음 4행과, 스토리지 장치 배열로부터 읽힌 데이터 및 체크섬의 처음 4 성분(entry)으로부터 추출된 복구된 데이터 심볼의 벡터일 수 있다.
Figure 112010029925787-pct00075
예를 들어, 제 3, 제 5, 또는 제 3 및 제 5 데이터 스토리지 장치에 오류가 발생한 경우,
Figure 112010029925787-pct00076
는, 아래와 같이, 동작 중인 장치에 대응하는 4 행을 선택함으로써
Figure 112010029925787-pct00077
으로부터 복구될 수 있다.
Figure 112010029925787-pct00078
Figure 112010029925787-pct00079
Figure 112010029925787-pct00080
역행렬을 형성하고 뒤이은 계산을 수행하는 목적을 위하여, 이중 취소선은 스토리지 장치의 오류를 나타낼 수 있고, 단일 취소선은 스토리지 장치의 선택-해제를 나타낼 수 있다. 역행렬은 가우스 소거법, 또는 또 다른 방법에 의해 계산될 수 있다. 일단
Figure 112010029925787-pct00081
의 값이 획득되면, 복구되거나 추정된 임의의 체크섬 벡터
Figure 112010029925787-pct00082
의 값은,
Figure 112010029925787-pct00083
를 이용해 데이터 벡터
Figure 112010029925787-pct00084
에 기초하여 계산될 수 있다.
병렬 RS-RAID 데이터 스토리지 아키텍처는, 각각의 클러스터 내의 데이터와 체크섬을 합하여, 모든 클러스터로 이동되거나 분배되는 중간 합계 또는 부분적 합계를 낼 수 있다. 중간 데이터 심볼, 중간 체크섬 심볼, 클러스터로 할당된 데이터 스토리지 장치에 대한 클러스터 구성 정보, 데이터 스토리지 장치의 동작 상태 등을 이용함으로써, 병렬 RS-RAID 분산 데이터 스토리지 아키텍처의 확장성(scalability)과 처리량은 증가시키면서, 에러 수정 계산을 위한 계산량의 부담과 지연 시간을 줄일 수 있다.
첨부 도면이 참조되며, 동일한 도면 부호는 동일한 요소를 나타낸다.
도 1은 병렬 RS-RAID(Reed-Solomon redundant array of inexpensive disk) 아키텍처의 예시이다.
도 2는 구성 행렬(configuration matrix)의 예시이다.
도 3은 RAID 제어기의 예시이다.
도 4a-b는 체크섬 프로그램 흐름도 및 체크섬 업데이트 프로그램 흐름도의 예시이다.
도 5는 데이터 프로그램 흐름도의 예시이다.
도 1은 데이터 스토리지를 위한 병렬 RS-RAID 아키텍처(100)의 예시이다. 병렬 RS-RAID 아키텍처(100)는 통신 패브릭(fabric)(1200), RAID 제어기(1111-1113), 및 스토리지 장치(1001-1012)를 포함할 수 있다. 스토리지 장치(1001-1004, 1005 1008, 및 1009 1012)는 RAID 제어기(1111-1113)에 각각 연결할 수 있다. 바꾸어 말하면, 스토리지 장치(1001-1012)의 하위집합 또는 클러스터가 각각 대응하는 RAID 제어기(1111-1113)에 연결될 수 있다. 각각의 RAID 제어기(1111-1113)에 연결될 수 있는 스토리지 장치의 개수가 동일하거나 동일하지 않을 수 있고, 무정지성(fault-tolerance)과 처리량 등을 향상시키기 위해 RAID 제어기에 대한 스토리지 장치의 구성 또는 매핑이 동적으로 변화할 수 있다. 예를 들어, RAID 제어기(1111-1113)에 스토리지 장치(1001-1012)를 할당하는 것은 구성 행렬(configuration matrix) 또는 유사한 데이터 구조에 의해 결정될 수 있다.
도 2는 RAID 제어기의 개수에 대한 인덱스 또는 카운터인 변수 "t"를 포함할 수도 있는 구성 행렬(200)의 예시를 나타낸다. 예를 들어, 구성 행렬(200)의 행(206)은, RAID 제어기 인덱스 넘버 "t"와 각각의 RAID 제어기(가령, RAID 제어기(1111 1113)) 사이의 매핑 함수 Q(t)를 나타낸다. 행(202)은 RAID 스토리지 장치의 시작 인덱스 QS(t)를 나타내고, 행(204)은 스토리지 장치의 종결 인덱스 QE(t)를 나타낸다. 예를 들어, QS(2) = 1005이고, QE(2) = 1008이다. 장치 넘버의 오프셋이 함수 J( )를 통해 공급되며, 예를 들어, 가령 J(QS(2)) = 5는, 제 5 스토리지 장치가 제 2 스토리지 장치 클러스터를 시작하게 한다는 것을 의미할 수 있다. 구성 행렬(200)은 스토리지 장치를 대응하는 RAID 제어기로 매핑할 수 있다. 바꾸어 말하면, 구성 행렬(200)은 스토리지 장치의 어느 하위집합 또는 클러스터가 지정 RAID 제어기로 할당되는지를 결정하거나 제어할 수 있다. 계산 목적을 위하여, 구성 행렬(200)은, 후술되는 바와 같이, 코드워드(codeword) 인코딩/디코딩과, 체크섬 및 데이터 업데이트/유지 등을 할 수 있는 가중치 부분 합계의 시작과 끝을 결정할 수 있다.
통신 패브릭(1200)은 RAID 제어기들(1111-1113) 사이 및 병렬 RS-RAID 아키텍처(100)와 외부 장치 사이의 입력과 출력(I/O) 디지털 신호를 연결할 수 있다. 예를 들어, 통신 패브릭(1200)은 RAID 제어기들(1111-1113) 사이에서 데이터 심볼, 체크섬 심볼, 중간 데이터 및 체크섬 심볼 등의 디지털 신호를 연결할 수 있다. 통신 패브릭(1200)은 병렬 버스 구조, 직렬 데이터 링크, 광학 백플레인(backplane) 등을 사용할 수도 있다. 통신 패브릭(1200)은 외부 통신을 위해 일 유형의 버스, 링크, 또는 백플래인 구조를 사용할 수 있고, RAID 제어기들(1111-1113) 사이의 통신을 위해 또 다른 유형을 사용할 수도 있다.
RAID 제어기(1111-1113)는, 구성 매트릭스(가령, 구성 매트릭스(200)) 또는 그 밖의 다른 데이터 구조에 의해 지정된 할당된 스토리지 장치의 하위집합/클러스터 내의 각각의 스토리지 장치에 대하여, 데이터 체크섬 심볼을 계산할 수 있다. RAID 제어기(1111-1113)는, 에러 수정 코드 계산의 부분 합계를 모으거나 축적할 수 있고, 모인 데이터와 패리티(parity) 계산 결과를 통신 패브릭(1200)을 통해 병렬 RS-RAID 아키텍처(100) 내의 그 밖의 다른 RAID 제어기에 보고할 수 있다. 데이터와 체크섬 심볼에 대한 부분 합계 계산의 세부사항이 특정 RAID 제어기와 관련해 설명될 수 있지만, 대응하는 계산은 병렬 RS-RAID 아키텍처(100) 내의 임의의 RAID 제어기(가령, RAID 제어기(1111))에 의해 수행될 수 있다.
도 3은 통신 패브릭 인터페이스(1111a), RAID 제어 유닛(1111b), 인터페이스 합계 장치(1111c), 스토리지 장치 인터페이스(1111g), 및 스토리지 장치 오류 감지 유닛(1111h)을 포함할 수 있는 RAID 제어기(1111)의 예시를 나타낸다. 통신 패브릭 인터페이스(1111a)는 통신 패브릭(가령, 통신 패브릭(1200))으로의/으로부터의 신호를, 중간 합계 장치(1111c)와 RAID 제어 유닛(1111b)에 연결할 수 있다. RAID 제어 유닛(1111b)은 중간 합계 장치(1111c), 스토리지 장치 인터페이스(1111g), 및 스토리지 장치 오류 감지 유닛(1111h)에 연결될 수 있다. 스토리지 장치 인터페이스(1111g)는 RAID 제어 유닛(1111b), 중간 합계 장치(1111c), 및 스토리지 장치 오류 감지 유닛(1111h)에 연결될 수 있다. RAID 제어기(1111)는, 전술된 바와 같이 통신 패브릭(1200)과 연결될 수 있고, 스토리지 장치 인터페이스(1111g)를 통해 스토리지 장치(가령, 스토리지 장치(1001-1004))와 연결될 수 있다.
중간 합계 장치(1111c)는 중간 합계 계산기(1111d), 재-계산기(re-calculator)(1111e), 및 계산 제어부(1111f)를 포함될 수 있다. 중간 합계 계산기(1111d)는 통신 패브릭 인터페이스(1111a), 스토리지 장치 인터페이스(1111g), 재-계산기(1111e), 및 계산 제어부(1111f)에 연결될 수 있다. 재-계산기(1111e)는 통신 패브릭 인터페이스(1111a), 중간 합계 계산기(1111d), 계산 제어부(1111f), 및 스토리지 장치 인터페이스(1111g)에 연결될 수 있다. 계산 제어부(1111f)는 중간 합계 계산기(1111d), 재-계산기(1111e), 및 스토리지 장치 인터페이스(1111g)에 연결될 수 있다.
통신 패브릭 인터페이스(1111a)는 병렬 RS-RAID 아키텍처(100)와 외부 장치 사이의 정보 심볼을 전송할 수 있고, 통신 패브릭(1200)과 RAID 제어기(1111) 요소들 사이에서 정보 심볼, 정보 심볼의 일부분, 데이터 심볼, 체크섬 심볼(가령, 중간 체크섬 심볼), 제어 신호, 클럭 신호 등을 연결할 수 있다. 통신 패브릭 인터페이스(1111a)는, 비트에서 바이트, 워드, 또는 그 밖의 다른 심볼로의 정보 심볼 재-포맷과, 신호의 다중화(multiplex) 및 역다중화(de-multiplex)와, 데이터 전송 동기화와, 라인 드라이버 및 리시버를 이용한 신호 버퍼 등을 할 수 있다. 바꾸어 말하면, 통신 패브릭 인터페이스(1111a)는, 디지털 버스와 같은 통신 패브릭을 통한 송신을 위해 디지털 신호를 조절하며, 데이터 전송을 버퍼링하는 등의 기능을 수행할 수 있다.
RAID 제어 유닛(1111b)은 통신 패브릭 인터페이스(1111a)와 스토리지 장치로부터 신호를 수신하고, 상기 스토리지 장치들에 걸친 정보 심볼의 하위집합, 스트라이프 데이터 체크섬 심볼에서 데이터 심볼을 선택하며, 전진 에러 수정 코드(FEC code)에 따라 중간 합계 장치(1111c)의 동작을 제어하는 등의 기능을 수행할 수 있다. 예를 들어, 정보 심볼의 하위 집합은, RAID 제어기(1111)에 의해 제어되는 동작 가능한 데이터 스토리지 장치에 저장되고, 데이터 심볼에 의해 나타내어지는 정보일 수 있다. 중간 합계 장치(1111c)는, 스토리지 장치 오류 감지 유닛(1111h)으로부터 상태 정보를 획득할 수 있는 RAID 제어 유닛(1111b)으로부터, 동작 중인 스토리지 장치의 개수에 관한 상태 정보를 수신할 수 있다.
스토리지 장치 오류 감지 유닛(1111h)은, RAID 제어기(1111)에 연결되는 임의의 스토리지 장치의 동작 상태를 판단할 수 있고, 동작 가능한 스토리지 장치의 목록을 결정할 수 있다. 바꾸어 말하면, 스토리지 장치 오류 감지 유닛(1111h)은, 지정 스토리지 장치가, 데이터 및 체크섬의 신뢰성 있는 저장에 적합하지 않게 되었는지 여부를 판단할 수 있다. 스토리지 장치 오류 감지 유닛(1111h)은, 신뢰성 있는 동작을 위해 스토리지 장치를 시험하고, 지정 스토리지 장치가 온라인 상에 있는지 결정하며, 지정 스토리지 유닛으로부터의 응답이 지정 시간 제한(time-out) 간격 이내에 수신되지 않은 경우 유닛 오프라인을 선언하고, 신호 품질 메트릭이 스토리지 장치로부터 읽힌 데이터에 대한 임계 품질보다 낮은지 여부를 결정하며, 동작 가능한 스토리지 장치의 목록을 만들 수 있다. 스토리지 장치 오류 감지 유닛(1111h)은, 이들 테스트의 결과를 기록할 수 있고, RAID 제어기(1111)의 요소(가령, RAID 제어 유닛(1111b))에 대한 동작 가능한 스토리지 장치의 목록을 분배할 수 있다.
식 8과 식 13과 관련하여 각각 기술된 바와 같이, 중간 합계 계산기(1111d)는, 체크섬 및 데이터를 위한 에러 수정 코드 계산의 분해 부분인 중간, 지역, 부분 합계를 계산할 수 있다. 중간 또는 부분 합계는, RAID 제어기(1111)에 보고하는, 클러스터 내의 동작 중인 장치로부터 읽힌 심볼의 가중치 합계일 수 있다. 예를 들어, 스토리지 장치의 클러스터와, 이들 부분 합계의 합산에 대응하는 제한이, 구성 행렬(가령, 구성 행렬(200)) 또는 그 밖의 다른 데이터 구조로부터 결정될 수 있다. 중간 합계 계산기(1111d)는, 그 밖의 다른 RAID 제어기(가령, RAUD 제어기(1112) 또는 RAID 제어기(1113))로부터 대응하는 부분 합계를 수신한 이후에, 데이터 및 체크섬 심볼을 계산할 수 있다.
재-계산기(1111e)는, RAID 제어기(1111)에 직접 연결되는 스토리지 장치로부터의 데이터에 기초한 중간, 지역 체크섬과, 통신 패브릭 인터페이스(1111a)를 통해 전송되는, 그 밖의 다른 RAID 제어기로부터의 비-지역(non-local) 중간 체크섬을 재계산할 수 있다. 바꾸어 말하면, 데이터 또는 체크섬 심볼의 변화가 RAID 제어기(1111)에 직접 연결되는 지역 스토리지 장치, 또는 통신 패브릭(1200)을 통해 RAID 제어기(1111)로 송신되는 중간 체크섬으로부터 발생하는 경우, 재-계산기(1111e)는 중간 합계 계산기(1111e)로부터의 결과를 적절히 수정할 수 있다.
계산 제어부(1111f)는 중간 합계 계산기(1111d)와 재-계산기(1111e) 모두를 제어하여, 중간 체크섬 계산 결과 또는 재계산된 체크섬이 FEC를 위해 사용되어야 하는 시점을 결정할 수 있다. RAID 제어부(1111b)는, 중간 합계 계산기(1111d) 또는 재-계산기(1111e) 결과 중 어느 것이 계산되어야 하는지를 결정하기 위해, 직접 또는 통신 패브릭 인터페이스(1111a)를 통해 계산 제어부(1111f)로 신호를 보낼 수 있다. RAID 제어부(1111b)는, 스토리지 장치 오류 감지 유닛(1111h)으로부터 데이터 스토리지 장치에 대한 상태 정보(가령, 동작 상태)를 획득할 수 있다.
병렬 RAID 제어기(1111-1113)는 다음의 식을 따라 체크섬을 계산하고 저장할 수 있다.
Figure 112010029925787-pct00085
여기서, 인덱스 t는 1에서부터 RAID 제어기의 개수(r)까지의 범위일 수 있고,
Figure 112010029925787-pct00086
Figure 112010029925787-pct00087
인덱스에 대한
Figure 112010029925787-pct00088
중간 체크섬이다. 예를 들어, r은 병렬 RS-RAID 아키텍처(100)에 대한 3과 동일할 수 있다. 구성 행렬(200)과 관련해 설명된 바와 같이, QS(t)와 QE(t)는 시작 및 종결 스토리지 장치를 RAID 제어기로 매핑할 수 있고, 각각의 중간 체크섬(
Figure 112010029925787-pct00089
)을 생성하는 부분 합계를 위한 합산의 제한을 결정할 수 있다. 함수
Figure 112010029925787-pct00090
가, 가령, J(1002)=2이 되도록 오프셋을 제할 수 있다.
Figure 112010029925787-pct00091
RS-RAID 제어기(가령, RAID 제어기(1111))가 다음의 식을 따라 중간 체크섬(ci,t)을 계산할 수 있다.
Figure 112010029925787-pct00092
중간 체크섬(
Figure 112010029925787-pct00093
)을 이용함으로써, 통신 패브릭(1200) 상의 데이터 트래픽을 감소시킬 수 있고, 이는 병렬 RS-RAID 아키텍처(100)의 처리량을 증가시킬 수 있다. 예를 들어, 8+4 RS-RAID 아키텍처에서, 단일의 마스터 RAID 제어기가 모든 스토리지 장치를 제어하고 체크섬을 계산하기 위한 것이었던 경우, 8개의 데이터 심볼이 통신 패브릭을 통해 전송되었을 수 있다. 반대로, 8+4 병렬 RS-RAID 아키텍처로부터의 중간 체크섬 계산기 결과를 이용함으로써, 오직 두 개의 중간 체크섬 심볼만이 통신 패브릭을 통해 전송될 필요가 있을 수 있다.
중간 및 모든 체크섬을 계산하는 것에 더하여, 데이터 심볼이 변화할 때, 병렬 RS-RAID 아키텍처(100)는 체크섬 심볼을 수정하거나 유지할 수 있다. 예를 들어, 데이터 심볼이
Figure 112010029925787-pct00094
에서
Figure 112010029925787-pct00095
까지 변화하는 경우, 체크섬은 다음의 식에 의해 재계산될 수 있다.
Figure 112010029925787-pct00096
식 9의 계산을 수행함에 있어서, RAID 제어기(1111)는 데이터 차이(
Figure 112010029925787-pct00097
)를 계산할 수 있고, 반데몬드 요소(
Figure 112010029925787-pct00098
), 즉 다음 식에 의해 데이터 차이에 가중치를 가할 수 있다.
Figure 112010029925787-pct00099
개개의 병렬 RAID 제어기(1111-1113)가 임시 구성요소(
Figure 112010029925787-pct00100
)를 그 밖의 다른 RAID 제어기(1111-1113)로 보낼 수 있다. RS-RAID 제어기(1111-1113)는 다음의 식을 따라, 할당된 개개의 스토리지 장치를 업데이트할 수 있다.
Figure 112010029925787-pct00101
스토리지 장치에 오류가 발생한 경우, 가령, 스토리지 장치 오류 감지 유닛(1111h)이 하드 디스크 크래시(crash)를 검출한 경우, 첨가 행렬의 역행렬(
Figure 112010029925787-pct00102
)이 병렬 RAID 제어기(1111-1113)에 의해 수정되어, 나머지 또는 동작 중인 데이터 스토리지 장치에 대응하는 역행렬(
Figure 112010029925787-pct00103
)을 형성할 수 있다. 행렬(
Figure 112010029925787-pct00104
)은 더 이상 스토리지 장치에 추가적인 오류가 발생하지 않는 한 정적 데이터 구조일 수 있다. 또 다른 스토리지 장치에 오류가 발생하면, 일단 가 계산되어 RAID 제어기(1111-1113)와 같은 동작 가능한 모든 RAID 제어기로 전달될 수 있다. 후에 더 많은 스토리지 장치에 오류가 발생하는 경우, 새로운 역행렬(
Figure 112010029925787-pct00106
)이 재계산되어 모든 RAID 제어기로 전달될 수 있다.
병렬 RS-RAID 아키텍처(100)는, 스토리지 장치 오류에도 불구하고, 각각의 RAID 제어기에서 부분적으로 계산된 중간 또는 부분 합계를 이용함으로써 데이터 심볼을 복구할 수 있다. 복구된 데이터
Figure 112010029925787-pct00107
는 다음의 식으로부터 복구될 수 있다.
Figure 112010029925787-pct00108
여기서,
Figure 112010029925787-pct00109
의 요소가
Figure 112010029925787-pct00110
로 표시될 수 있으며,
Figure 112010029925787-pct00111
이고,
Figure 112010029925787-pct00112
이다. 대응하는 데이터 및 체크섬 심볼
Figure 112010029925787-pct00113
의 요소가 동작 가능한 선택된 데이터 스토리지 장치로부터 읽혀질 수 있다. 병렬 RS-RAID 아키텍처(100)는,
Figure 112010029925787-pct00114
의 행과, 수반된 단위 행렬 및 반데몬드 행렬의 대응하는 부분집합을 선택하고 가려내어
Figure 112010029925787-pct00115
Figure 112010029925787-pct00116
를 각각 형성할 수 있다. 바꾸어 말하면, 병렬 RS-RAID 아키텍처(100)는, 다음의 식에 의해 데이터 복구 계산치를 부분 합계 또는 중간 데이터 심볼의 세트로 분해할 수 있다.
Figure 112010029925787-pct00117
여기서,
Figure 112010029925787-pct00118
Figure 112010029925787-pct00119
RS-RAID 제어기의 제어부 내에 있는 모든 데이터 또는 체크섬의 세트로 이해될 수 있다.
그 밖의 다른 병렬 RS-RAID 제어기로부터 메시지(가령, 중간 데이터 심볼)를 수신하기 위하여, 개개의 RAID 제어기가, 우선 중간 데이터 심볼(
Figure 112010029925787-pct00120
)을 계산하고 그 후 다음의 식에 의해 복구된 데이터(
Figure 112010029925787-pct00121
)를 계산할 수 있다.
Figure 112010029925787-pct00122
도 4a는 데이터 저장을 위한 병렬 RF-RAID 아키텍처에 대한 체크섬 프로그램 흐름도의 예시를 나타낸다. 프로그램 흐름도(400a)는 프로그램 단계(S410)에서 시작할 수 있고, 병렬 RS-RAID 아키텍처의 구성 행렬(configuration matrix)이 읽혀질 수 있도록 프로그램 단계(S420)로 나아갈 수 있다. 예를 들어, 구성 행렬은, 도 2와 관련해 설명된 구성 행렬과 같이, 지정 RAID 제어기와 관련되는 스토리지 장치를 위한 시작 및 종결 장치 넘버를 특정할 수 있다. 각각의 RAID 제어기는, 구성 행렬의 부분적 카피(copy)를 저장할 수 있고, 구성 행렬을 그 밖의 다른 RAID 제어기와 조화시키며, 더 높은 레벨의 RAID 장치 또는 네트워크 제어기로부터 구성 행렬을 수신할 수도 있다.
프로그램 단계(S420)로부터, 프로그램은, 저장되어야 할 정보-포함 데이터 심볼을 프로그램이 외부 장치로부터 읽을 수 있도록, 프로그램 단계(S425)로 나아갈 수 있다. 예를 들어, 프로그램은, 통신 패브릭을 통해 수신된 2 Kb 데이터 블록의 세트를 플래시 드라이브로부터 수신할 수 있다.
프로그램 단계(S425)로부터, 프로그램 흐름은, 중간 체크섬이 계산될 수 있도록 프로그램 단계(S430)로 나아갈 수 있다. 예를 들어, 중간 체크섬 또는 데이터 및 패리티 계산이, 식 8과 갈로아 필드(Galois field)의 특성을 이용하여, 데이터 워드의 선형 조합으로부터 계산될 수 있다. 프로그램 단계(S430)는, 1) 코드워드 심볼의 일부를 지정 RAID 제어기에 제공하는 개개의 동작 가능한 스토리지 유닛, 및 2) 통신 패브릭을 통해 지정 RAID 제어기와 통신하는 그 밖의 다른 RAID 제어기로부터 모아진 체크섬 또는 중간 체크섬으로부터의 저장된 코드워드 심볼을 이용하여, 중간 체크섬 및 업데이트되거나 유지되는 중간 체크섬을 계산할 수 있다. 바꾸어 말하면, 지역 하위집합 데이터 스토리지 유닛으로부터의 낮은 지연시간 데이터, 및 패리티 비트, 바이트 또는 워드가, 그 밖의 다른 데이터 스토리지 유닛으로부터 축적되거나 부분적으로 합계된,
Figure 112010029925787-pct00123
의 형태인 높은 지연시간, 데이터 및 패리티와 조합될 수 있다.
단계(S460)에서, 프로그램은 중간 체크섬을 서로 다른 RS-RAID 제어기에 분배할 수 있다. 예를 들어, Q(t) = t인 경우, 프로그램 단계(S460)는 제 1 RAID 제어기(
Figure 112010029925787-pct00124
)로부터의 제 1 중간 체크섬을 제 2 및 제 3 RS-RAID 제어기에 분배할 수 있다.
프로그램 단계(S460)으로부터, 프로그램 흐름은, 프로그램이 그 밖의 다른 RAID 제어기로부터 중간 체크섬을 수신할 수 있도록 프로그램 단계(S470)로 나아갈 수 있다. 프로그램 단계(S470)로부터, 프로그램은 프로그램 단계(S480)로 나아갈 수 있다. 중간 체크섬의 세트는, 각각의 RAID 제어기가 식 8에 의해 완성된 체크섬(
Figure 112010029925787-pct00125
)을 계산하고, 뒤이은 에러 수정과 검출 계산을 위해
Figure 112010029925787-pct00126
를 저장할 수 있도록 한다. 예를 들어, 프로그램은, 지역적으로 계산된 제 1 체크섬(
Figure 112010029925787-pct00127
)과 함께 제 2 및 제 3 중간 체크섬(
Figure 112010029925787-pct00128
Figure 112010029925787-pct00129
)을 수신하여
Figure 112010029925787-pct00130
을 계산하는데 충분한 체크섬의 세트를 형성할 수 있다.
프로그램 단계(S480)로부터, 프로그램 흐름은, 프로그램이, 프로그램을 실행하는 RAID 제어기에 할당되는 데이터 및 완성된 체크섬 심볼을 저장할 수 있도록, 프로그램 단계(S490)로 나아갈 수 있다. 예를 들어, 프로그램은, 디스크 어레이에 걸쳐 데이터와 체크섬 심볼에 스트라이프를 넣을 수 있다. 프로그램 단계(S490)로부터, 프로그램 흐름은, 프로그램 실행이 정지될 수 있도록, 프로그램 단계(S495)로 나아갈 수 있다.
도 4b는 데이터 저장을 위한 병렬 RS-RAID 아키텍쳐에 대한 체크섬 업데이트 프로그램 흐름도(400b)의 예시를 나타낸다. 프로그램 흐름도(400b)는 단계(S440)에서 시작하여 단계(S442)로 나아간다.
단계(S442)에서, 병렬 RS-RAID 아키텍처는 데이터 변화를 수신할 수 있다. 예를 들어, 스토리지 장치가, 이전 데이터 심볼을 대신하여 새로운 데이터 심볼을 수신할 수 있다. 그 후 프로그램 흐름은 단계(S444)로 나아갈 수 있다.
단계(S444)에서, 스토리지 장치에 연결하는 RAID 제어기가 식 10을 따라 임시 구성요소를 계산할 수 있다. RAID 제어기는, 새로운 데이터 심볼과 이전 데이터 심볼 사이의 데이터 차이를 획득할 수 있고, 반데몬드 행렬 요소에 의해 데이터에 가중치를 가할 수 있다. 그 후, 프로그램 흐름은 단계(S446)로 나아갈 수 있다.
단계(S446)에서, 임시 구성요소는 그 밖의 다른 RAID 제어기로 전달될 수 있다. 일 실시예에서, 통신 패브릭이 다양한 RAID 제어기를 연결할 수 있다. 통신 패브릭은 데이터 변화에 대응하는 임시 구성요소를, 체크섬 저장을 위한 스토리지 장치를 제어하는 RAID 제어기로 전달할 수 있다. 그 후, 프로그램 흐름은 단계(S448)로 나아갈 수 있다.
단계(S448)에서, 체크섬 저장을 위한 스토리지 장치를 제어하는 RAID 제어기는, 가령, 식 11을 따라, 수신된 임시 구성요소를 기초로 하여 체크섬을 업데이트할 수 있다. 그 후, 프로그램 흐름은 단계(S450)로 나아가 멈출 수 있다.
도 5는 데이터 저장을 위한 병렬 RS-RAID 아키텍처에 대한 데이터 프로그램 흐름도(500)의 예시를 나타낸다. 프로그램 흐름도(500)는 프로그램 단계(S510)에서 시작할 수 있고, 도 4와 관련해 논의된 바와 같이 병렬 RS-RAID 아키텍처의 구성 행렬이 읽혀질 수 있도록 프로그램 단계(S520)로 나아갈 수 있다. 프로그램 단계(S520)로부터, 프로그램 흐름은, 데이터와 체크섬 심볼이 스토리지 장치로부터 읽혀질 수 있도록 프로그램 단계(S525)로 나아갈 수 있다. 예를 들어, 8 개의 데이터와 4 개의 체크섬 심볼이 12 개의 스토리지 장치로부터 읽혀질 수 있다. 이러한 예시에서, 최소한 8개의 데이터 또는 체크섬이 동작 가능한 스토리지 장치로부터 읽혀질 수 있다.
프로그램 단계(S425)로부터, 프로그램 흐름은, 프로그램이 중간 데이터 심볼을 계산할 수 있도록 단계(S520)로 나아갈 수 있다. 예를 들어, 프로그램은 식 13을 따라 중간 데이터 심볼을 계산할 수 있다. 식 13에서 사용된 가중치 계수(
Figure 112010029925787-pct00131
)는, 프로그램 단계(S520)에서 구성 행렬을 읽은 이후와 같이, 선-계산되어 RAID 제어기에 분배되거나, 필요에 따라 재-계산될 수 있다. 프로그램 단계(S530)로부터, 프로그램 흐름은, 프로그램이 중간 데이터 심볼을 병렬 RAID 제어기에 분배할 수 있도록 프로그램 단계(S540)로 나아갈 수 있다.
프로그램 단계(S540)로부터, 프로그램 흐름은, 프로그램이 병렬 RAID 제어기로부터 중간 데이터 심볼을 수신할 수 있도록 프로그램 단계(S550)로 나아갈 수 있다. 프로그램 단계(S550)로부터, 프로그램 흐름은, 프로그램이 지역 및 병렬 RAID 제어기로부터의 중간 데이터 심볼로부터 복구된 데이터를 계산할 수 있도록 프로그램 단계(S560)로 나아갈 수 있다. 바꾸어 말하면, 프로그램은 식 14에 의해 중간 데이터 심볼을 합산할 수 있다. 프로그램 단계(S560)로부터, 프로그램 흐름은, 프로그램 실행이 멈출 수 있도록 프로그램 단계(S570)로 나아갈 수 있다.
본 발명이 특정 예시적 실시예와 함께 설명되었으나, 많은 대안, 수정, 및 변경이 가능함이 해당업계 종사자에게 명백할 것이다. 따라서, 본 명세서에서 전술된 발명의 실시예들은 예시적일 뿐 제한하려는 의도는 아니다. 본 발명의 사상과 범위를 벗어나지 않고 변경이 이루어질 수 있다.

Claims (24)

  1. 장치(device)로서,
    복수의 데이터 심볼들(data symbols)을 저장하도록 되어 있는 복수의 데이터 스토리지 클러스터들(data storage clusters)과;
    상기 데이터 스토리지 클러스터들 각각에 대해 적어도 하나의 체크섬(checksum)이 계산되게 상기 데이터 심볼들의 복수의 체크섬들을 계산하도록 되어 있는 계산기(calculator)와;
    상기 데이터 심볼들 각각의 체크섬들을 다른 데이터 스토리지 클러스터들 각각에 분배하도록 되어 있는 통신 패브릭(communication fabric)을 포함하는 것을 특징으로 하는 장치.
  2. 제1항에 있어서,
    상기 통신 패브릭은 또한, 상기 데이터 심볼들을 포함하는 복수의 정보 심볼들을 상기 데이터 스토리지 클러스터들에 분배하도록 되어 있는 것을 특징으로 하는 장치.
  3. 제1항에 있어서,
    복수의 데이터 스토리지 장치들(data storage devices)을 상기 데이터 스토리지 클러스터들에 할당하는 구성 행렬(configuration matrix)을 읽도록 되어 있는 제어기 유닛(controller unit)을 더 포함하는 것을 특징으로 하는 장치.
  4. 제3항에 있어서,
    상기 제어기 유닛은 또한, 상기 데이터 스토리지 클러스터들에 대한 상기 데이터 심볼들을 포함하는 복수의 정보 심볼들(information symbols)의 하위집합(subset)으로부터 상기 데이터 심볼들을 선택하도록 되어 있는 것을 특징으로 하는 장치.
  5. 제3항에 있어서,
    상기 데이터 스토리지 장치들로부터 동작 가능한 데이터 스토리지 장치들의 목록을 결정하도록 되어 있는 스토리지 장치 오류 감지 유닛(storage device fail sense unit)을 더 포함하는 것을 특징으로 하는 장치.
  6. 제5항에 있어서,
    동작 가능한 데이터 스토리지 장치들의 상기 목록에 기초하여 데이터 복구 행렬(data recovery matrix)을 계산하도록 되어 있는 제어 유닛을 더 포함하는 것을 특징으로 하는 장치.
  7. 제6항에 있어서,
    상기 데이터 스토리지 장치들로부터 읽힌 읽기 체크섬 심볼(read checksum symbol) 및 읽기 데이터 심볼(read data symbol) 중 적어도 하나의 심볼의 벡터(vector) 그리고 상기 데이터 복구 행렬에 기초하는 중간 데이터 심볼(intermediate data symbol)을 계산하도록 되어 있는 중간 합계 장치(intermediate sum device)를 더 포함하는 것을 특징으로 하는 장치.
  8. 제6항에 있어서,
    상기 통신 패브릭은 또한, 동작 가능한 데이터 스토리지 장치들의 상기 목록이 변할 때 상기 데이터 복구 행렬을 상기 데이터 스토리지 클러스터들에 분배하도록 되어 있는 것을 특징으로 하는 장치.
  9. 제1항에 있어서,
    체크섬을 형성하기 위해 상기 데이터 스토리지 클러스터들 각각에서의 체크섬들을 합산하도록 되어 있는 중간 합계 장치(intermediate sum device)를 더 포함하는 것을 특징으로 하는 장치.
  10. 제9항에 있어서,
    상기 형성된 체크섬을 저장하도록 되어 있는 적어도 하나의 데이터 스토리지 장치를 더 포함하는 것을 특징으로 하는 장치.
  11. 에러 수정(error correction)을 위한 방법으로서,
    복수의 데이터 심볼들을 복수의 데이터 스토리지 클러스터들에 저장하는 단계와;
    상기 데이터 스토리지 클러스터들 각각에 대해 적어도 하나의 체크섬이 계산되도록 상기 데이터 심볼들의 복수의 체크섬들을 계산하는 단계와; 그리고
    통신 패브릭에 의해 상기 데이터 심볼들 각각의 체크섬들을 다른 데이터 스토리지 클러스터들 각각에 분배하는 단계를 포함하는 것을 특징으로 하는 에러 수정 방법.
  12. 제11항에 있어서,
    상기 데이터 심볼들을 포함하는 복수의 정보 심볼들을 상기 데이터 스토리지 클러스터들에 분배하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  13. 제11항에 있어서,
    복수의 데이터 스토리지 장치들을 상기 데이터 스토리지 클러스터들에 할당하는 구성 행렬을 읽는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  14. 제13항에 있어서,
    상기 데이터 스토리지 클러스터들에 대한 상기 데이터 심볼들을 포함하는 복수의 정보 심볼들의 하위집합으로부터 상기 데이터 심볼들을 선택하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  15. 제13항에 있어서,
    상기 데이터 스토리지 장치들로부터 동작 가능한 데이터 스토리지 장치들의 목록을 결정하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  16. 제15항에 있어서,
    동작 가능한 데이터 스토리지 장치들의 상기 목록에 기초하여 데이터 복구 행렬을 계산하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  17. 제16항에 있어서,
    상기 데이터 스토리지 장치들로부터 읽힌 읽기 체크섬 심볼 및 읽기 데이터 심볼 중 적어도 하나의 심볼의 벡터 그리고 상기 데이터 복구 행렬에 기초하는 중간 데이터 심볼을 계산하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  18. 제16항에 있어서,
    동작 가능한 데이터 스토리지 장치들의 상기 목록이 변할 때 상기 데이터 복구 행렬을 상기 데이터 스토리지 클러스터들에 분배하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  19. 제11항에 있어서,
    체크섬을 형성하기 위해 상기 데이터 스토리지 클러스터들 각각에서의 체크섬들을 합산하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  20. 제19항에 있어서,
    상기 형성된 체크섬을 적어도 하나의 데이터 스토리지 장치에 저장하는 단계를 더 포함하는 것을 특징으로 하는 에러 수정 방법.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1020107010285A 2007-11-21 2008-11-20 병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법 KR101543369B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US98967007P 2007-11-21 2007-11-21
US60/989,670 2007-11-21

Publications (2)

Publication Number Publication Date
KR20100095525A KR20100095525A (ko) 2010-08-31
KR101543369B1 true KR101543369B1 (ko) 2015-08-11

Family

ID=40643226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107010285A KR101543369B1 (ko) 2007-11-21 2008-11-20 병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법

Country Status (5)

Country Link
US (3) US8219887B2 (ko)
EP (2) EP2605140B1 (ko)
JP (1) JP5298393B2 (ko)
KR (1) KR101543369B1 (ko)
WO (1) WO2009070235A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467094B2 (en) 2016-03-04 2019-11-05 Samsung Electronics Co., Ltd. Method and apparatus for performing data recovery in a raid storage

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080130778A1 (en) * 2006-12-04 2008-06-05 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed high definition video data using a transfer matrix for beamforming estimation
US8040856B2 (en) * 2006-12-04 2011-10-18 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed high definition video data using a beamforming acquisition protocol
US8265177B2 (en) * 2006-12-04 2012-09-11 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed high definition video data using beambook-constructed beamforming signals
US8259836B2 (en) * 2006-12-04 2012-09-04 Samsung Electronics Co., Ltd. Method and system for generating candidate beamforming coefficients for transmission of data over a wireless medium
US20090046798A1 (en) * 2007-08-13 2009-02-19 Samsung Electronics Co., Ltd. System and method for acquiring a training matrix for a breamforming acquisition protocol using a butson matrix
US8850113B2 (en) * 2010-02-27 2014-09-30 Cleversafe, Inc. Data migration between a raid memory and a dispersed storage network memory
US9135115B2 (en) * 2010-02-27 2015-09-15 Cleversafe, Inc. Storing data in multiple formats including a dispersed storage format
US9009569B2 (en) * 2010-10-18 2015-04-14 Xyratex Technology Limited Detection and correction of silent data corruption
US8667326B2 (en) 2011-05-23 2014-03-04 International Business Machines Corporation Dual hard disk drive system and method for dropped write detection and recovery
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
CN103959187B (zh) * 2012-06-26 2016-07-27 东芝三菱电机产业系统株式会社 数据收集装置及数据收集方法
US9710537B2 (en) * 2012-06-26 2017-07-18 Toshiba Mitsubishi-Electric Industrial Systems Corporation Data collection system and data collection system program
US9047220B2 (en) 2012-07-23 2015-06-02 Hitachi, Ltd. Storage system and data management method
US10651975B2 (en) 2012-08-02 2020-05-12 Pure Storage, Inc. Forwarding data amongst cooperative DSTN processing units of a massive data ingestion system
US9258177B2 (en) * 2012-08-02 2016-02-09 International Business Machines Corporation Storing a data stream in a set of storage devices
US9613656B2 (en) * 2012-09-04 2017-04-04 Seagate Technology Llc Scalable storage protection
RU2502124C1 (ru) * 2012-09-12 2013-12-20 Общество с ограниченной ответственностью "РЭЙДИКС" Способ восстановления записей в запоминающем устройстве и система для его осуществления
US9354975B2 (en) * 2013-03-15 2016-05-31 Emc Corporation Load balancing on disks in raid based on linear block codes
US9459957B2 (en) 2013-06-25 2016-10-04 Mellanox Technologies Ltd. Offloading node CPU in distributed redundant storage systems
US9594634B2 (en) * 2014-06-02 2017-03-14 Intel Corporation Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units
CN104156283B (zh) * 2014-08-27 2017-08-25 华为技术有限公司 数据恢复方法、装置及存储系统
US9710320B2 (en) 2015-03-23 2017-07-18 Microsoft Technology Licensing, Llc Data processing validation
US10705909B2 (en) * 2015-06-25 2020-07-07 International Business Machines Corporation File level defined de-clustered redundant array of independent storage devices solution
EP3849089A1 (en) * 2020-01-09 2021-07-14 Microsoft Technology Licensing, LLC Encoding for data recovery in storage systems
RU2758943C1 (ru) * 2020-12-07 2021-11-03 федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное орденов Жукова и Октябрьской Революции Краснознаменное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации Способ распределенного хранения данных с подтвержденной целостностью

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070245173A1 (en) * 2006-03-21 2007-10-18 International Business Machines Corporation Enclosure-based raid parity assist

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4849978A (en) * 1987-07-02 1989-07-18 International Business Machines Corporation Memory unit backup using checksum
US5889934A (en) * 1997-02-24 1999-03-30 Data General Corporation Data validation system for a group of data storage disks
US6952797B1 (en) * 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
JP2003131818A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd クラスタ構成ストレージにおけるクラスタ間raid構成
US6751136B2 (en) * 2002-06-17 2004-06-15 Lsi Logic Corporation Drive failure recovery via capacity reconfiguration
US7219289B2 (en) * 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070245173A1 (en) * 2006-03-21 2007-10-18 International Business Machines Corporation Enclosure-based raid parity assist

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467094B2 (en) 2016-03-04 2019-11-05 Samsung Electronics Co., Ltd. Method and apparatus for performing data recovery in a raid storage

Also Published As

Publication number Publication date
US8359524B2 (en) 2013-01-22
EP2212796B1 (en) 2019-02-27
US20090132851A1 (en) 2009-05-21
EP2212796A2 (en) 2010-08-04
WO2009070235A2 (en) 2009-06-04
JP5298393B2 (ja) 2013-09-25
WO2009070235A3 (en) 2010-03-25
EP2605140B1 (en) 2020-08-26
JP2011504269A (ja) 2011-02-03
KR20100095525A (ko) 2010-08-31
US20120266049A1 (en) 2012-10-18
US8219887B2 (en) 2012-07-10
EP2605140A1 (en) 2013-06-19
US8645798B2 (en) 2014-02-04
US20130138881A1 (en) 2013-05-30

Similar Documents

Publication Publication Date Title
KR101543369B1 (ko) 병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법
US9104790B2 (en) Arranging data handling in a computer-implemented system in accordance with reliability ratings based on reverse predictive failure analysis in response to changes
US6675318B1 (en) Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US7188270B1 (en) Method and system for a disk fault tolerance in a disk array using rotating parity
US8327080B1 (en) Write-back cache protection
US7577866B1 (en) Techniques for fault tolerant data storage
US7752389B1 (en) Techniques for determining physical data layout of RAID devices
CN101652752B (zh) 用于独立磁盘冗余阵列(raid)系统的文件服务器
US7093069B2 (en) Integration of a RAID controller with a disk drive module
US20030126522A1 (en) Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7743308B2 (en) Method and system for wire-speed parity generation and data rebuild in RAID systems
CN114281270B (zh) 一种数据存储方法、系统、设备以及介质
US7155634B1 (en) Process for generating and reconstructing variable number of parity for byte streams independent of host block size
US6792391B1 (en) Method and system for three disk fault tolerance in a disk array
JP5360666B2 (ja) 複数のディスクアレイのi/o動作を実行する方法及びシステム
US7093159B1 (en) Method and system for four disk fault tolerance in a disk array
JP3676793B2 (ja) ディスクアレイ装置
US7062604B1 (en) Method and system for five-disk fault tolerance in a disk array
KR101716305B1 (ko) 레이드 6 시스템 및 그것을 이용한 데이터 복호 방법
JP3699473B2 (ja) ディスクアレイ装置
Ohde et al. Low-Density Triple-Erasure Correcting Codes for Dependable Distributed Storage Systems
CN116249969A (zh) 具有内置冗余的数据存储系统以及恢复和存储数据的方法
CN114153393A (zh) 一种数据编码方法、系统、设备以及介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180802

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190806

Year of fee payment: 5