KR101054814B1 - 저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법 및 데이터 저장 시스템 - Google Patents

저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법 및 데이터 저장 시스템 Download PDF

Info

Publication number
KR101054814B1
KR101054814B1 KR1020067000036A KR20067000036A KR101054814B1 KR 101054814 B1 KR101054814 B1 KR 101054814B1 KR 1020067000036 A KR1020067000036 A KR 1020067000036A KR 20067000036 A KR20067000036 A KR 20067000036A KR 101054814 B1 KR101054814 B1 KR 101054814B1
Authority
KR
South Korea
Prior art keywords
stripe
array
recipient
contributor
elements
Prior art date
Application number
KR1020067000036A
Other languages
English (en)
Other versions
KR20060037319A (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 KR20060037319A publication Critical patent/KR20060037319A/ko
Application granted granted Critical
Publication of KR101054814B1 publication Critical patent/KR101054814B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • 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/1004Adaptive RAID, i.e. RAID system adapts to changing circumstances, e.g. RAID1 becomes RAID5 as disks fill up
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Oscillators With Electromechanical Resonators (AREA)

Abstract

본 발명은 도징 기술(dodging technique)로 지칭되는 기술을 사용하여 m 개의 저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법 및 시스템을 제공한다. k 개의 스트라이프가 저장 유닛 어레이에 걸쳐서 저장되어 있으며, 각 스트라이프는 최소 해밍 거리 d = r + 1 를 갖는 대칭형 코드에 대응하는 n + r 개의 요소를 갖는다. 스트라이프의 각 요소는 상이한 저장 유닛 상에 저장된다. 한 요소는 기여자 스트라이프(donor stripe)의 최소 거리와 수령자 스트라이프(recipient stripe)의 최소 거리 간의 차이가 2 이상일 때에 선택된다. 선택된 요소는 수령자 스트라이프의 어떠한 요소도 가지지 않는 저장 유닛 상에 재구축된다. 따라서, 수령자 스트라이프의 손실된 요소가 선택된 요소 상에 재구축된다.

Description

저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법 및 데이터 저장 시스템{DATA STORAGE ARRAY}
본 발명은 저장 시스템에 관한 것이다. 특히, 본 발명은 어레이 상에 저장된 데이터의 손실 없이 어레이가 허용할 수 있는 저장 유닛 장애의 회수를 증가시키는 저장 유닛 어레이의 구성 방법과 관련된 것이다.
다음의 정의들이 본 명세서에서 사용되지만 이는 본 발명을 설명하기 위한 것이지 한정하기 위한 것이 아니다.
"요소(element)"는 저장 유닛 상의 데이터의 블록이다.
"베이스 어레이(base array)"는 ECC에 대한 어레이 유닛을 포함하는 요소 세트이다.
"어레이"는 하나 이상의 베이스 어레이를 보유하는 저장 유닛 세트이다.
"스트라이프(stripe)"는 어레이 내부의 베이스 어레이이다.
n은 베이스 어레이 내의 데이터 유닛의 개수이다.
r은 베이스 어레이 내의 잉여 유닛(redundant unit)의 개수이다.
m은 어레이 내의 저장 유닛의 개수이다.
d는 베이스 어레이의 최소 해밍 거리(Hamming distance)이다.
D는 어레이의 최소 해밍 거리이다.
통상적인 어레이에서, 어레이 내의 저장 유닛의 개수는 베이스 어레이 내의 데이터 유닛의 개수와 베이스 어레이 내의 잉여 유닛의 개수를 더한 값과 동일하다. 즉, m = n + r 이다. 대부분의 통상적인 저장 어레이는 패리티(parity)와 같은 MDS(최대 거리 분리:Maximum Distance Separation) 코드 또는 장애를 허용하는 미러링 기술(mirroring technique)을 사용한다. MDS 코드를 사용하는 베이스 어레이의 최소 해밍 거리는 베이스 어레이 내의 잉여 유닛의 개수에 1를 더한 값과 동일하다(즉, d = 1 + r). 미러 구성(mirror configuration)의 경우에, 베이스 어레이 내의 잉여 유닛의 개수는 베이스 어레이 내의 데이터 유닛의 개수와 동일하며(즉, r = n = 1), 최소 해밍 거리 d는 2이다.
어레이 내의 데이터 유닛의 개수 n에 어레이 내의 잉여 유닛의 개수 r을 더한 값보다 큰 저장 유닛의 개수 (즉, m > n + r) 에 대해서 어레이를 왜상적으로(anamorphically) 인코딩할 수 있다. 문헌에서, 이러한 왜상적 인코딩(anamorphic encoding)이 성능을 위해서 패리티 블록을 배열하는데 사용될 때에이러한 인코딩은 통상적으로 "디클러스터링 패리티(de-clustering parity)"로 지칭된다. 본 명세서에서 사용된 바와 같이, 이러한 인코딩 방식은 왜상적 인코딩 방식으로 지칭되는데, 그 이유는 이 방식이 이 인코딩 방식이 어레이에 새로운 특성을 제공할 수 있음을 보다 정확하게 식별할 수 있기 때문이다.
이러한 왜상(anamorphism)은 어레이 내부의 베이스 어레이 세트를 선택적으로 배열함으로써 이루어진다. 가령, 4 요소 코드를 사용하는 도 2에 도시된 예시적인 어레이(200)를 고려해보자. 어레이(200)는 행 형태로 도시된 6 개의 저장 유닛 D1을 포함한다. 어레이(200)의 경우에, m = 6이다. 또한, 어레이(200)는 각각 n 개의 데이터 유닛과 r 개의 잉여 유닛으로부터 형성된 몇 개의 베이스 어레이를 포함한다. 즉, 각 베이스 어레이에 대해, n + r = 4이다. 각각의 베이스 어레이는 도 2의 스트라이프 1과 같이 순차적으로 번호가 매겨져 있어서 어레이(200)의 4 요소 코드가 저장 유닛 D1을 걸쳐서 분포되어 있음을 표시한다. 각 스트라이프에는 4 개의 블록이 존재하고 각 스트라이프는 독립적 베이스 어레이 기능을 한다. 따라서, 어레이의 최소 거리는 각각의 스트라이프의 모든 최소 해밍 거리의 최소치이다. 즉 D = min(di),여기서 di 는 스트라이프 i의 최소 해밍 거리이다.
구성된 바와 같이, 왜상적 어레이(200)는 n 개의 저장 유닛의 세트로부터 정확하게 r 개의 유닛 대신에 데이터를 손실하지 않고서 m 개의 저장 유닛의 세트 중 최소 4 개의 저장 유닛의 손실을 허용할 수 있다. 따라서, r = 2이고 사용된 코드가 MDS이면, 임의의 2 개의 저장 유닛은 데이터 손실 없이도 장애 발생이 가능하다. 스트라이프는 그의 요소 중 임의의 3 개가 손실되면 장애가 발생할 것이다. 그러나, 왜상적 어레이(200)에 의해 허용될 수 있는 3 유닛 장애 회수를 갖는 몇몇 조합이 가능하다. 가령, 저장 유닛 D1,D3,D5에 각각 장애가 발생하면, 스트라이프 1의 2 개의 요소, 스트라이프 2의 2 개의 요소 및 스트라이프 3의 2 개의 요소가 손실되지만 어떠한 스트라이프도 3 개의 요소를 손실하지는 않는다. 따라서, 왜상적 어레이(200)는 분명한 특징을 가지고 있으며 유리하게 사용될 수 있다.
ECC가 저장 유닛의 왜상적 어레이와 함께 사용될 때에 ECC의 최소 해밍 거리를 개선하여서 어레이의 실효 최소 거리를 증가시킬 수 있는 기술이 필요하다.
발명의 개요
본 발명은 ECC가 저장 유닛의 왜상적 어레이와 함께 사용될 때에 ECC의 최소 해밍 거리를 개선하여서 어레이의 실효 최소 거리를 증가시킬 수 있는 기술을 제공한다.
본 발명의 장점들은 k 개의 스트라이프가 m 개의 저장 유닛의 어레이에 걸쳐서 저장되어 있는 m 개의 저장 유닛의 왜상적 어레이의 오류 허용 정도를 증가시키는 방법 및 시스템인 본 발명의 제 1 실시예에 의해서 제공된다. 각 스트라이프는 최소 해밍 거리 d = r + 1 를 갖는 대칭형 코드에 대응하는 n + r 요소를 가지며 여기서 n는 m 개의 저장 유닛의 어레이의 베이스 어레이 내의 데이터 저장 유닛의 개수이며 r은 그 베이스 어레이 내의 잉여 유닛의 개수이다. 또한, n = r, n ≥2, m > n + r, jm = k(n + r)이며 j 및 k는 정수이다. 스트라이프의 각 요소는 상이한 저장 유닛 상에 저장된다. 요소는 기여자 스트라이프(donor stripe)의 최소 거리와 수령자 스트라이프(recipient stripe)의 최소 거리 간의 차이가 2 이상일 때에 선택된다. 선택된 요소는 수령자 스트라이프의 어떠한 요소도 가지지 않는 저장 유닛 상에 재구축된다. 손실된 요소가 재구축되기 이전에, 기여자 스트라이프를 저장하는 저장 유닛에게는 선택된 요소가 기여자된 것이어서 데이터가 기여자 스트라이프의 일부로서 선택된 요소에 기록 또는 요소로부터 판독될 수 없음이 알려진다. 수령자 스트라이프의 손실된 요소가 선택된 요소 상에 재구축된다. 본 발명에 따라서, 수령자 스트라이프의 최소 해밍 거리는 기여자 스트라이프 내의 요소가 선택되기 이전에 d ≥1 이다. 기여자 스트라이프의 선택된 요소는 어레이에 대한 최소 성능 효과에 따라서 더 선택될 수 있다. 또한, 수령자 정보는 어레이의 개선된 성능을 기반으로 하여 선택된다. 저장 시스템의 어레이는 패리티 코드, 위노그래드 코드(Winograd code), 대칭형 코드, 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드와 같은 소거 또는 오류 보정 코드를 기반으로 하여 리던던시(redundancy)를 포함하다. 이와 달리, 어레이는 소거 또는 오류 보정 코드 중 적어도 하나가 패리티 코드, 위노그래드 코드(Winograd code), 대칭형 코드, 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드가 되는 복수의 소거 또는 오류 보정 코드의 산물을 기반으로 하여 리던던시를 포함한다.
선택된 요소 상에 수령자 스트라이프로부터의 수령자 정보의 적어도 일부를 재구축하는 동안 기여자 스트라이프 내의 요소에 장애가 발생하면, 선택된 요소 상에 수령자 스트라이프로부터의 수령자 정보의 적어도 일부를 재구축하는 단계는 종결된다. 제 2 기여자 스트라이프는 이 제 2 기여자 스트라이프의 최소 거리와 제 2 수령자 스트라이프의 최소 거리 간의 차이가 2 이상이면 복수의 스트라이프로부터 선택된다. 기여자 요소는 제 2 기여자 스트라이프로부터 선택된다. 수령자 스트라이트로부터의 손실된 수령자 정보의 적어도 일부가 제 2 기여자 스트라이프 내의 선택된 요소 상에 재구축된다. 여분의 요소가 가용하면, 여분의 요소가 선택된 저장 유닛에 할당된다.
본 발명의 제 2 실시예는 선택된 장애 패턴에 민감한 m 개의 저장 유닛의 어레이의 장애 허용 정도를 증가시키는 방법 및 시스템을 제공한다. 본 발명의 본 실시예에 따라서, k 개의 스트라이프가 m 개의 저장 유닛의 어레이에 걸쳐서 저장된다. m 개의 저장 유닛의 어레이는 왜상적 어레이다. 각 스트라이프는, n은 베이스 어레이 내의 데이터 요소의 개수이며 r은 베이스 어레이 내의 잉여 요소의 개수인 n + r 개의 요소를 가지며, m > n + r, jm = k(n + r)이며 j 및 k는 정수이다. 각 스트라이프는 복수의 요소를 가지며 각 스트라이프는 최소 해밍 거리 d를 갖는 소거 또는 오류 보정 코드를 형성한다. 스트라이프의 각각의 요소는 상이한 저장 유닛 상에 저장된다. 요소 장애에 이어서, 수령자 요소가 선택된다. 재구축 동작 이후에 어레이의 장애 허용 정도가 증가되도록 기여자 스트라이프 내의 요소가 선택된다. 수령자 스트라이프의 손실된 요소는 기여자 스트라이프의 선택된 요소 상에 재구축된다. 이 요소가 기여자 스트라이프에서 선택되기 이전에 수령자 스트라이프의 최소 해밍 거리는 d ≥ 2이다. 또한, 어레이의 최소 해밍 거리는 기여자 스트라이프의 선택된 요소 상에 수령자 요소를 재구축하는 것을 완료하면 증가된다. 수령자 요소는 어레이의 장애 패턴을 기반으로 하여서 선택될 수 있다. 또한, 기여자 요소는 사전결정된 목표 패턴을 기반으로 하여 선택될 수 있다. 기여자 스트라이프를 저장하는 저장 유닛에게는 수령자 스트라이프의 손실된 요소가 선택된 요소 상에 재구축되기 이전에 선택된 요소가 기여되었음이 알려진다. 저장 유닛의 어레이는 패리티 코드, 위노그래드 코드(Winograd code), 대칭형 코드, 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드와 같은 소거 또는 오류 보정 코드를 기반으로 하여 리던던시(redundancy)를 포함한다. 이와 달리, 어레이는 소거 또는 오류 보정 코드 중 적어도 하나가 패리티 코드, 위노그래드 코드(Winograd code), 대칭형 코드, 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드가 되는 복수의 소거 또는 오류 보정 코드의 산물을 기반으로 하여 리던던시를 포함한다.
본 발명의 제 3 실시예는 각 어레이가 m 개의 저장 유닛을 포함하고 k 개의 스트라이프가 m 개의 저장 유닛의 각 어레이에 걸쳐서 저장되도록 저장 유닛의 복수의 어레이를 갖는 저장 시스템의 오류 허용 정도를 증가시키는 시스템 및 방법을 제공한다. 각 스트라이프는 최소 해밍 거리 d를 갖는 대칭형 코드에 대응하는 n + r 개의 요소를 가지며 여기서 n는 저장 유닛의 어레이 중 베이스 어레이 내의 저장 유닛의 개수이며 r은 베이스 어레이 내의 잉여 유닛의 개수이다. 또한, n = r, n ≥2, m > n + r, jm = k(n + r)이며, k 및 j는 양의 정수이다. 스프라이프의 각 저장된 요소는 어레이 내의 상이한 저장 유닛 상에 저장된다. 기여자 스트라이프의 최소 거리와 수령자 스트라이프의 최소 거리 간의 차이가 2 이상이면 한 요소가 기여자 스트라이프에서 선택된다. 선택된 요소는 수령자 스트라이프의 어떠한 요소도 가지지 않는 저장 유닛 상에 저장된다. 기여자 스트라이프는 수령자 스트라이프의 어레이와 다른 어레이 상에 저장될 수 있다. 이와 달리, 기여자 스트라이프는 수령자 스트라이프와 동일한 어레이 상에 저장될 수 있다. 손실된 요소가 재구축되기 이전에, 기여자 스트라이프를 저장하는 저장 유닛에게는 데이터가 기여자 스트라이프의 일부로서 상기 선택된 요소에 기록 또는 요소로부터 판독되지 않도록 상기 선택된 요소가 기여되었음이 알려진다. 이어서, 수령자 스트라이프의 손실된 요소가 선택된 요소 상에 재구축된다. 본 발명에 따라서, 기여자 스트라이프 내의 요소가 선택되기 이전에 수령자 스트라이프의 바람직한 최소 해밍 거리는 d ≥2이다. 기여자 스트라이프의 선택된 요소는 기여자 스트라이프에 대한 최소 성능 효과 또는 저장 시스템에 대한 최소 성능 효과를 기반으로 하여서 더 선택될 수 있다. 또한, 수령자 정보는 수령자 스트라이프의 개선된 성능 또는 저장 시스템의 개선된 성능을 기반으로 하여서 선택될 수 있다. 저장 시스템의 어레이는 패리티 코드, 위노그래드 코드(Winograd code), 대칭형 코드, 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드와 같은 소거 또는 오류 보정 코드를 기반으로 하여 리던던시(redundancy)를 포함한다. 이와 달리, 어레이는 소거 또는 오류 보정 코드 중 적어도 하나가 패리티 코드, 위노그래드 코드(Winograd code), 대칭형 코드, 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드가 되는 복수의 소거 또는 오류 보정 코드의 산물을 기반으로 하여 리던던시를 포함한다.
본 발명은 이제 첨부 도면을 참조하여 한정적인 방식이 아닌 예시적인 방식으로 설명될 것이며, 첨부 도면에서는 동일한 참조 부호는 동일한 요소를 나타낸다.
도 1a는 공통 저장 제어기에 접속된 복수의 어레이를 갖는 저장 시스템의 통상적인 구성을 도시한 도면,
도 1b는 개별 저장 제어기에 접속된 복수의 어레이를 갖는 저장 시스템의 통상적인 구성을 도시한 도면,
도 2는 6 개의 저장 유닛을 갖는 예시적인 왜상적 어레이의 도면,
도 3은 본 발명의 실시예에 따른 도징 연산(dodging operation)의 이점을 설명하기 위한 9 개의 저장 유닛을 갖는 예시적인 왜상적 어레이의 도면,
도 4는 도 3에 도시된 왜상적 어레이의 제 1의 3 저장 유닛 장애 구성을 설명한 도면,
도 5는 도 3에 도시된 왜상적 어레이의 제 2의 3 저장 유닛 장애 구성을 설명한 도면,
도 6은 본 발명의 실시예에 따른 도징 연산을 수행한 후에 도 5의 어레이의 도면,
도 7은 도 3에 도시된 왜상적 어레이의 제 3의 3 저장 유닛 장애 구성을 설명한 도면,
도 8은 본 발명의 실시예에 따른 도징 연산을 수행한 후에 도 7의 어레이의 도면,
도 9는 (3 + 3) 대칭적 코드를 사용하는 8 개의 저장 유닛을 갖는 예시적인 어레이의 도면,
도 10은 3 개의 8 저장 유닛 어레이를 갖는 시스템의 도면,
도 11은 본 발명의 실시예에 따른 외부 도징 연산을 수행한 후의 도 10의 어레이 시스템의 도면,
도 12는 도징 연산 세트 후에 장애가 발생한 3 개의 저장 유닛을 갖는 10 저장 유닛 어레이의 도면.
본 출원은 미국 특허 출원 제 10/619,649 호(대리인 참조 번호 ARC92003015US1) 명칭 "Automatic Parity Exchange", 미국 특허 출원 제 10/619,633 호(대리인 참조 번호 ARC9) 명칭 "Multi-path Data Retrieval From Redundant Array", 및 미국 특허 출원 제 10/619,648 호(대리인 참조 번호 ARC9) 명칭 "RAID 3 + 3" 와 연관된다. 본 출원은 또한 본 출원과 공동 계류 중이며 본 출원인에 의해 출원된 미국 특허 출원 제 10/600,593 호(대리인 참조 번호 YOR9-2003-0069US1)과 연관된다.
패리티 코드, 위노그래드 코드(Winograd code), 대칭형 코드, 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드와 같은 소거 또는 오류 보정 코드에 의해 허용될 수 있는 어레이의 장애의 최소 회수는 ECC의 최소 해밍 거리 d에 1를 뺀 값, 즉 d - 1 이다. 본 발명은 ECC의 최소 해밍 거리보다 큰 실효 거리(effective distance)를 제공하는 "도징 연산(dodging operation)"으로 본 명세서에 지칭되는 연산을 사용하여서 ECC의 최소 해밍 거리를 개선시킨다. 이로써, 장애가 디바이스 장애가든 하드 오류이든 상관없이 어레이가 허용할 수 있는 장애의 회수가 ECC에 의해 제공되는 최소 거리를 초과하여 증가하게 된다. 본 명세서에서 사용된 바와 같이, 용어 "실효 거리" 및 "실효 최소 거리"는 본 발명에 따른 하나 이상의 도징 연산을 사용하는 어레이에 의해서 허용될 수 있는 장애의 회수에 1를 더한 값을 말한다.
도징 연산은 어레이 내의 스트라이프가 수령자 스트라이프로 요소를 제공하기 위해서 선택되고 수령자 정보가 기여되는 요소 상으로 재구축되어서 어레이의 최소 거리를 증가시키는 프로세스이다. 도징 연산은 거리 di°≥dj + 2 일 때에 스트라이프 쌍(i,j)에 대해서 수행된다. 도징 연산 후에, 기여자 스트라이프는 1 만큼 거리가 감소된다. 반대로, 수령자 스트라이프는 1 만큼 거리가 증가한다. 도징 연산이 최소 어레이 거리에 있는 모든 스트라이프에 대해서 수행될 때에, 전체 최소 어레이 거리가 증가할 것이다. 도징 연산은 어레이의 구성에 따라서 가변 거리에서 발생할 수 있다.
도 1a는 공통 어레이 제어기(101)에 접속된 2 개의 저장 어레이(102,103)를 포함하는 전반적으로 참조 부호 100으로 표시되는 예시적인 저장 시스템을 도시한다. 저장 어레이(102,103)는 복수의 저장 유닛(104)을 포함하고 인터페이스(105)를 통해서 어레이 제어기(101)와 통신한다. 어레이 제어기(101)는 인터페이스(106)를 통해서 다른 제어기와 호스트 시스템과 통신한다. 이러한 구성은 어레이 제어기가 복수의 저장 어레이와의 통신을 가능하게 한다.
도 1b는 개별 어레이 제어기(151,152)에 각기 접속된 2 개의 저장 어레이(153,154)를 포함하는 전반적으로 참조 부호 150으로 표시되는 예시적인 저장 시스템을 도시한다. 저장 어레이(153)는 인터페이스(157)를 통해서 어레이 제어기(152)와 통신하고 저장 어레이(154)는 인터페이스(156)를 통해서 어레이 제어기(151)와 통신한다. 어레이 제어기(151,152)는 인터페이스(158,159)를 통해서 다른 어레이 제어기 및 호스트 시스템과 각기 통신한다. 또한, 어레이 제어기(151,152)가 서로 통신하게 하도록 하는 통신 접속부(160)가 도 1b에 존재한다.
도 1a 및 도 1b에 도시된 어레이 제어기는 하드웨어 제어기 또는 소프트웨어 제어기로서 설계될 수 있다. 용어 제어기는 본 명세서에서 일반적으로 상술된 구성 중 임의의 구성을 말하는데 사용될 수 있다.
수많은 왜상적 어레이는 도징 연산으로부터 이점을 얻을 수 있다. 왜상적 어레이가 도징 연산으로부터 이점을 얻을 수 있는 능력은 어레이에 대한 장애 조합의 검사에 의해 검증될 수 있다. 가령, 도 3은 9 개의 저장 유닛 D1을 갖는 예시적인 왜상적 어레이를 도시한다. 이 실례에서, 어레이(300)는 n = 3, r = 3 , d = 4 를 갖는 MDS인 (3 + 3) 대칭형 코드를 사용한다. 어레이(300)는 스트라이프 내의 6 개의 요소로부터 임의의 3 개의 장애가 발생한 요소를 보정할 수 있는 3 개의 잉여 요소를 갖도록 구성된다. 각각 1, 2, 3 으로 표시된 이 고유 스트라이프는 어레이(300) 내부에 구성된다. 임의의 3 저장 유닛 장애는 임의의 하나의 스트라이프 중의 3 개 이상의 요소에 영향을 주지 않을 것이다. 따라서, 어레이(300)는 최소 거리 D = 4를 갖는다.
본 발명에 따른 도징 연산이 수행되어 어레이(300)의 실효 최소 거리를 증가시킬 수 있다는 것을 설명하기 위해서, 3 저장 유닛 장애를 오직 3 개의 배열로 고려할 필요가 있다. 제 1의 3 저장 유닛 장애 배열은 도 4에 도시되며 여기서 블록 내의 X는 저장 유닛 장애를 표시한다. 이 특정 장애 배열에서, 각 스트라이프 1 중 2 개의 블록에 장애가 발생하였다. 이로써, 각 스트라이프는 여전히 최소 거리 d = 2이며 따라서 어레이(300)는 최소 거리 D =2 를 갖는다. 따라서, 도 4에 도시된 어레이(300)는 가능한 데이터 손실 없이 하나의 추가적인 저장 유닛 장애를 허용할 수 있다.
제 2의 3 저장 유닛 장애 배열이 도 5에 도시되며 여기서 블록 내의 X는 저장 유닛 장애를 표시한다. 이 제 2의 3 저장 유닛 장애 배열에서, 스트라이프 1은 손실된 3 개의 요소를 가지며 스트라이프 2는 2 개의 손실된 요소를 가지고 스트라이프 3은 하나의 손실된 요소를 갖는다. 따라서, 스트라이프 1은 최소 거리 d = 1이며 이로써 가능한 데이터 손실 없이 어떠한 추가적인 저장 유닛 장애도 허용할 수 없다. 스트라이프 2는 최소 거리 d = 2 이며 스트라이프 3은 최소 거리 d = 3이다. 따라서, 어레이(300)는 최소 거리 D = 1를 갖는다.
스트라이프 1 내의 손실된 요소 중 하나의 내용을 스트라이프 3의 장애가 발생하지 않은 요소 중 하나의 요소 상으로 잘 알려진 방식으로 재구축함으로써 도징 연산이 제 2의 3 저장 유닛 장애 배열에 대해서 수행될 수 있다. 도 6은 도징 연산을 수행한 후의 도 5의 어레이를 도시한다. 도 6에서 재구축된 데이터는 언더라인된다. 여기서, 유닛 D9 상의 스트라이프 3의 요소가 스트라이프 1에 제공되었다. 도징 연산 후에, 모든 스트라이프는 최소 거리 d = 2를 가지며 이로써 어레이(300)는 최소 거리 D = 2를 갖는다. 도징 연산 후의 어레이의 구성은 데이터가 손실되지 않고서도 하나의 추가적인 장애를 허용할 수 있다.
제 3의 3 저장 유닛 장애 배열이 도 7에 도시되며 여기서 블록 내의 X는 저장 유닛 장애를 표시한다. 이 제 3의 3 저장 유닛 장애 배열에서, 스트라이프 1 및 2는 각각 3 개의 손실된 요소를 가지며 최소 거리 d = 1를 갖는다. 그러나, 스트라이프 3은 어떠한 손실된 요소도 가지지 않으며 따라서 최소 거리 d = 4를 갖는다. 스트라이프 1 및 2 각각 중 하나의 손실된 요소의 내용들을 스트라이프 3(d = 4)의 상이한 요소들 상으로 잘 알려진 방식으로 재구축함으로써 제 3의 3 저장 유닛 장애 배열에 대해서 도징 연산이 수행될 수 있다. 가령, 저장 유닛 D1 상의 요소 1의 내용이 디스크 D9의 요소 3 상으로 재구축될 수 있으며 디스크 D1 상의 요소 2의 내용은 디스크 D4의 요소 3으로 재구축될 수 있다.
도 8은 도징 연산이 수행된 후의 도 7의 어레이를 도시한다. 도 8에서 재구축된 데이터는 언더라인된다. 결과는 모든 스트라이프가 최소 거리 d = 2를 가지며 이로써 어레이(300)는 최소 거리 D =2 가짐을 보인다. 도징 연산 후에, 어떠한 저장 유닛도 동일한 스트라이프로부터의 2 개의 요소를 포함하지 않음이 중요한 결과이다. 즉, 저장 유닛 D4 상에 저장된 스트라이프 3의 요소 중 어떠한 것도 스트라이프 1의 손실된 요소 중 임의의 요소를 재구축하는데 선택되지 않는데, 그 이유는 각 저장 유닛 D4는 이미 스트라이프 1의 요소를 포함하고 있기 때문이다. 마찬가지로, 저장 유닛 D7 상에 저장된 스트라이프 3의 요소 중 어떠한 것도 스트라이프 2의 손실된 요소 중 임의의 요소를 재구축하는데 선택되지 않는다.
이로써, 도징 연산은 임의의 3 저장 유닛 장애 후에 도 3의 어레이(300)의 최소 거리를 D = 1 에서 D = 2 로 복구하는 기술을 제공한다. 또한, 어레이(300)의 시스템이 거리 d = 4 를 갖는 코드의 기록 성능을 보유할지라도 어레이(300)의 실효 최소 거리는 d = 4 에서 d = 5 로 증가되었다.
실효 거리가 증가되는 (3 + 3) 코드에 대한 최소 왜상적 어레이는 9 저장 유닛의 어레이다. 또한, 9 저장 유닛보다 큰 모든 어레이는 (3 + 3) 코드가 사용되는 경우에 증가된 실효 거리의 특성을 갖는다. (3 + 3) 코드에 대한 8 저장 유닛의 어레이는 증가된 실효 거리의 특성을 갖지 않는다. 또한, 12 저장 유닛에 걸쳐서 사용되는 (4 + 4) 코드도 증가된 실효 거리의 특성을 갖는다. 그러나, 도징 연산은 최소 어레이 거리가 d = 2 인 경우에 발생할 것이다. 따라서, 도징 연산 동안 추가적인 저장 유닛 장애가 허용될 수 있다.
본 발명의 실시예에 따라서, 외부 도징 연산으로 본 명세서에서 지칭되는 도징 연산은 어레이 내부에서, 개별 어레이들 간에서 또는 어레이와 여분의 어레이 간에서 수행될 수 있다. 여분의 풀(pool)에 대해서 수행되는 도징 연산이 가능하면, 통상적으로 여분의 풀 상으로의 완벽한 재구축 연산을 수행하고 오직 여분의 풀이 고갈될 때에는 도징 연산을 수행하는 것이 보다 양호해진다. 이는 도징 연산이 기여된 저장 유닛 상으로 장애가 발생한 저장 유닛으로부터의 오직 몇 개의 요소를 재구축할 수 있으며 여분의 연산은 여분의 저장 유닛 상으로 장애가 발생한 저장 유닛의 모든 요소를 구축할 수 있기 때문이다.
이러한 외부 도징 연산은 본 명세서에서 참조로서 인용되며 본 출원과 같이 계류중인 출원(대리인 참조 번호 ARC9-2003-0015-US1)에 개시된 바와 같은 패리티 교환 연산과 다르다. 즉, 도징 연산은 스트라이프 기반으로 수행되는 반면에, 패리티 교환 연산은 저장 유닛 기반으로 수행된다.
본 발명에 따른 외부 (어레이 대 어레이) 도징 연산에 의해 제공된 장점을 설명하기 위해서, 도 9에 도시된 예시적인 어레이(900)를 고려해보자. 어레이(900)는 8 저장 유닛 D1를 포함하며 (3 + 3) 대칭형 코드를 사용한다. 어레이(900)는 참조 부호 1로 표시된 4 개의 스트라이프를 갖는다. 각 스트라이프는 6 개의 요소를 가지며 d = 4 를 갖는다. 상술한 바와 같이, 어레이(900)와 같은 (3 + 3) 코드를 사용하는 8 저장 유닛의 어레이에 대해 내부적인 도징 연산은 어레이의 실효 최소 해밍 거리를 증가시키지 못하는데 그 이유는 복수의 유닛 장애에 의해서 영향을 받는 스트라이프의 개수를 보상하기에는 잔여의 장애가 나지 않은 스트라이프가 너무나 작은 개수만 존재하기 때문이다.
이와 대조적으로, 3 개의 3 저장 유닛 어레이(1001)를 포함하는 도 10에 도시된 예시적인 어레이 시스템(1000)을 고려해보자. 구체적으로, 어레이(1001)는 저장 유닛 D1를 포함하고, 어레이(1002)는 저장 유닛 D9를 포함하며, 어레이(1003)는 저장 유닛 D17를 포함한다. 각각의 어레이(1001)는 또한 해당 어레이 내부에 배열된 4 개의 스트라이프를 포함한다. 가령, 어레이(1001)는 스트라이프 1를 포함하고 어레이(1002)는 스트라이프 5를 포함하고 어레이(1003)는 스트라이프 9를 포함한다.
임의의 3 저장 유닛 장애 후에, 본 명세서에서 참조로서 인용되며 본 출원과 같이 계류중인 출원(대리인 참조 번호 ARC9-2003-0015-US1)에 개시된 바와 같은 패리티 교환 연산이 각 어레이(1001)가 하나의 장애가 발생한 저장 유닛을 갖도록 보장하는데 사용된다고 가정해보자. 이 패리티 교환 연산의 결과는 가령 저장 유닛의 블록 내부에 X가 표시가 있는 저장 유닛 D1, D9, D17에 의해서 표시된다. 또한, 4 저장 유닛 장애가 패리티 교환 연산 후에 발생한다고 가정해보자. 이 4 저장 유닛 장애는 가령 저장 유닛 D2의 블록 내부에 X로 표시된 어레이(1001) 내의 저장 유닛 D2로 표시된다. 4 저장 유닛 장애 후에, 어레이(1001,1002,1003) 각각은 거리 D = 2,3,3 를 각각 갖는다. 저장 유닛 D2 이외의 다른 저장 유닛은 4 저장 유닛 장애 후에 장애가 날 것이며 이하에서 기술될 절차와 유사한 절차가 저장 시스템의 실효 거리를 증가시기 위해서 수행될 수 있다.
어레이(1001) 내의 스트라이프(1,2,3)는 이제 거리 d = 2 를 갖는다. 어레이(1001)에 대해 내부적인 도징 연산이 실패할 것인데, 그 이유는 거리 d =4 를 갖는 적어도 3 개의 요소가 어레이(1001)의 최소 거리를 2에서 3으로 증가시키는데 있어서 필요하기 때문이다. 어레이(1001) 내의 오직 스트라이프 4 만이 d = 4를 갖는다. 그럼에도 불구하고, 어레이들 간의 외부 도징 연산으로 인해서 어레이(1001)의 최소 거리가 어레이(1002,1003)의 최소 거리를 변경시키지 않으면서 2에서 3으로 증가하게 된다. 이를 성취하기 위해서, 각 스트라이프 1의 손실된 요소 중 하나의 요소의 내용이 어레이(1001) 상의 스트라이프 4, 어레이(1002) 상의 스트라이프 8 및 어레이(1003) 상의 스트라이프 12와 같은 거리 d = 4 를 갖는 다른 스트라이프의 요소 상으로 잘 알려진 방식으로 재구축된다.
도 11은 본 발명에 따른 외부 도징 연산을 수행한 후의 도 10의 어레이 시스템(100)을 도시한다. 도11에서 재구축된 데이터는 언더라인된다. 구체적으로, 스트라이프 3의 요소가 저장 유닛 D3 내부의 스트라이프 4 상으로 재구축되기 위해서 선택된다. 스트라이프 2의 요소가 저장 유닛 D10 내부의 스트라이프 8 상으로 재구축되기 위해서 선택된다. 마지막으로, 스트라이프 1의 요소가 저장 유닛 D17 내부의 스트라이프 12 상으로 재구축되기 위해서 선택된다.
요소가 기여자 스트라이프로부터 선택되면, 이 선택된 요소를 포함하는 저장 유닛은 수령자 스트라이프의 요소를 포함할 수 없다. 가령, 저장 유닛 D7 또는 저장 유닛 D8 내에 포함된 스트라이프 4의 요소는 스트라이프 1로부터의 장애가 발생한 요소를 재구축하기 위해서 선택될 수 있는데, 그 이유는 저장 유닛 D7 및 D8이 스트라이프 1의 어떠한 요소도 포함하고 있지 않기 때문이다. 마찬가지로, 저장 유닛 D5 또는 저장 유닛 D6 내에 포함된 스트라이프 4의 요소는 스트라이프 2로부터의 장애가 발생한 요소를 재구축하기 위해서 선택될 수 있는데, 그 이유는 저장 유닛 D5 및 D6이 스트라이프 2의 어떠한 요소도 포함하고 있지 않기 때문이다. 마지막으로, 저장 유닛 D3 또는 저장 유닛 D4 내에 포함된 스트라이프 4의 요소는 스트라이프 3로부터의 장애가 발생한 요소를 재구축하기 위해서 선택될 수 있는데, 그 이유는 저장 유닛 D3 및 D4이 스트라이프 3의 어떠한 요소도 포함하고 있지 않기 때문이다. 이를 예시적으로 설명하기 위해서, 저장 유닛 D3에 포함된 스트라이프 4의 요소가 스트라이프 3의 요소를 재구축하기 위해서 기여자 요소로서 선택될 수 있음을 가정해보자.
d = 4를 갖는 스트라이프 8의 요소 중 어떠한 요소도 각각 d = 2를 갖는 잔여 스트라이프 중 임의의 스트라이프의 장애가 발생한 요소를 재구축하기 위해서 선택될 수 없으며, d = 4를 갖는 스트라이프 12의 요소 중 임의의 요소가 각각 d = 2를 갖는 최종 잔여 스트라이프 중 임의의 스트라이프의 장애가 발생한 요소를 재구축하기 위해서 선택될 수 있다. 이를 예시적으로 설명하기 위해서, 저장 유닛 D11에 포함된 스트라이프 8의 요소는 스트라이프 2의 요소를 재구축하기 위해서 기여자 요소로서 선택되고 저장 유닛 D19에 포함된 스트라이프 12의 요소는 스트라이프 1의 요소를 재구축하기 위해서 기여자 요소로서 선택된다고 가정해보자. 도징 연산 이전의 이러한 예시적인 실례의 도징 선택 각각에 대해서, 기여자 스트라이프는 거리 d = 4를 가지며 수령자 스트라이프(즉, 스트라이프 1)는 거리 d = 2를 갖는다.
외부 도징 연산의 순수한 결과는 어레이 시스템(1000)이 4 회 장애 후에 최소 거리 D = 3를 갖는다는 것이다. 이와 반대로, 본 명세서에서 참조로서 인용되며 본 출원과 같이 계류중인 출원(대리인 참조 번호 ARC9-2003-0015-US1)에 개시된 바와 같은 패리티 교환 연산만을 사용하면 최소 거리는 오직 2가 되었다. 따라서, 외부 도징 연산이 어레이 시스템(1000)에 대해 수행되면, 어레이 시스템(1000)이 최소 거리 d = 2를 가지기 위해서는 5 회의 장애가 요구된다. 이는 6 개의 유닛으로 구성된 4 개의 어레이로 배열되며 각 어레이가 본 명세서에서 참조로서 인용되며 본 출원과 같이 계류중인 출원(대리인 참조 번호 ARC9-2003-0015-US1)에 개시된 바와 같은 패리티 교환 연산만을 사용하는 24 유닛의 어레이 시스템에 대한 결과와 동일한 결과이다. 따라서, 패리티 교환 연산과 결합된 도징 연산으로 인해서 시스템 신뢰성은 어레이 구성과 무관하게 된다.
패리티 교환 연산과 결합된 일반화된 도징 연산의 프로세스는 각 추가적인 저장 유닛 장애와 함께 계속될 수 있다. 장애가 발생한 요소가 각 어레이에 대한 최소 거리가 최소화되도록 상술한 바와 같이 살아 있는 요소 상으로 재구축될 수 있다. 도 9 및 도 10의 예시적인 24 유닛 어레이 시스템에서, 8 저장 유닛 장애가 시스템의 모든 어레이에 대한 최소 거리 d = 2인 경우에 대해서 필요하다. 각 어레이에 대한 최소 거리 d = 2이면, 시스템의 실효 거리를 증가시키기 위해서 패리티 교환 연산 또는 도징 연산을 더 이상 수행할 수 없다. 따라서, 2 회의 추가적인 장애는 데이터 손실을 낳는다.
시간이 지나면, 일반화된 도징 연산으로 인해서 스트라이프는 더 이상 소정의 어레이에 대해서 국부적이지 않게 된다. 따라서, 기여자 스트라이프의 선택은 기여자 요소를 선택하는 것으로서 실현될 수 있다.
가령 보수 관리를 통해서 여분의 유닛이 가용하게 되면, 이 유닛은 장애가 발생한 유닛 중 임의의 유닛을 대체하도록 할당될 수 있다. 가장 작은 최소의 거리를 갖는 스트라이프의 요소들을 이 여분의 유닛 상으로 재구축하는 것이 바람직하다. 도 12의 실례를 고려해보자. 어레이(1200)는 10 저장 유닛 D10을 포함하며 (3 + 3) 대칭형 코드를 사용한다. 어레이(1200)는 참조 부호 1로 표시된 5 개의 스트라이프를 포함한다. 각 스트라이프는 6 개의 요소를 가지며 최소 거리 d = 4 이다. 3 개의 저장 유닛 D1, D2, D4는 장애가 발생한 유닛으로 도시되며 스트라이프 1의 요소가 도징 연산을 통해서 유닛 D10 상의 스트라이프 5의 요소 상으로 재구축되었고, 스트라이프 4의 요소가 도징 연산을 통해서 유닛 D8 상의 스트라이프 5의 제 2 요소 상으로 재구축되었다. 이 시점에서, 스트라이프 1,4,5 모두는 최소 거리 d = 2 를 가지며 스트라이프 3은 최소 거리 d = 3을 갖는다. 이어서 여분의 유닛이 어레이(1200)에 대해서 가용하면, 최소 거리 d = 2를 갖는 스트라이프로부터의 정보가 이 여분의 유닛 상으로 재구축된다. 이 여분의 유닛 상으로 재구축된 요소들은 해당 스트라이프 내에 현재 존재하지 않는 요소의 세트로부터 선택되어야 한다. 가령, 유닛 D2 상의 스트라이프 1의 요소가 유닛 D10 상으로 재구축되었고 유닛 D1 상의 스트라이프 4의 요소가 유닛 D8 상으로 재구축되었다고 가정해보자. 여분의 유닛 상으로 재구축될 요소들은 스트라이프 1 및 4의 이들 재구축된 요소들을 포함할 수 없다. 재구축될 요소들이 선택되면, 이 정보들은 잘 알려진 방식으로 여분의 유닛 상으로 재구축된다.
기여자 요소를 선택하는 제 1 기준은 기여자 스트라이프 신뢰성에 영향을 최소한으로 주는 기여자 요소를 선택하는 것을 기반으로 한다. 제 2 기준은 가장 노력이 많이 드는 리던던시 계산 정도를 갖는 요소와 같은 성능에 최소한으로 영향을 주는 저장 요소를 선택하는 것을 기반으로 한다. 도 12의 실례에서, 스트라이프 5의 요소들이 선택되는데, 첫 번째 이유로는 스트라이프 5가 최고의 거리를 가지기 때문이며 두 번째 이유로는 유닛 D8 및 D10이 가장 노력이 많이 드는 패리티 계산 정도를 가지기 때문이다. D9는 스트라이프 4의 요소를 재구축하기 위해서 선택될 수 없는데, 그 이유는 D9가 스트라이프 4의 요소를 이미 포함하고 있기 때문이다. 구축될 요소를 선택하는 제 1 기준은 신뢰성을 가장 높일 수 있는 정보 세트를 기반으로 한다. 제 2 이유는 재구축 동작 후의 최상의 어레이 성능을 제공하는 정보 세트를 선택하는 것을 기반으로 한다. 도 12의 실례에서, 스트라이프 1 및 4의 요소들이 재구축되는 것으로 선택되는데, 첫 번째 이유는 이들의 잔여 거리로 인한 것이며 두 번째 이유는 이 요소들을 선택하면 도징 연산 후의 성능이 최대화되기 때문이다.
일반화된 도징 연산의 다른 중요한 효과가 있다. 도 9 및 도 10의 실례에서, 일반화된 도징 연산은 수령자 스트라이프가 최소 거리가 2로 존재할 때에 어레이들 간에서 수행되는 반면에, 내부 도징 연산은 수령자 스트라이프가 최소 거리 1로 존재할 때에 9 유닛 어레이(도 6 및 도 7) 상에서 수행된다. 따라서, 2 회 장애가 외부 도징 연산 동안 데이터 손실에 있어서 외부 도징 연산과 관련된 스트라이프 내에서 필요하다.
정보 요소를 기여자 스트라이프에서 수령자 스트라이프로 제공하기 위해서는 저장 시스템이 정보 요소를 한 스트라이프에서 다른 스트라이프로 할당할 수 있어야 한다. 기여자 스트라이프 및 수령자 스트라이프가 도 1a에 도시된 바와 같이 공통 어레이 제어기(101)에 접속될 때에, 제어기(101)가 이러한 연산을 내부적으로 수행할 수 있다. 기여자 스트라이프 및 수령자 스트라이프가 도 1b에 도시된 바와 같이 개별 어레이 제어기(151,152)에 접속될 때에, 제어기(151,152)가 정보를 교환할 수 있다. 가령, 제어기는 JBOD(Just a Bunch of Disks) 어레이 구성 방식으로 통신 접속부(160)를 통해서 개별 드라이브를 노출시킬 수 있다. 이와 달리, 제어기는 관련된 저장 유닛 상의 로케이션으로 기록될 데이터 또는 로케이션으로부터 판독되는 데이터에 대한 정보를 교환할 수 있다.
이러한 도징 기술이 왜상적 어레이에 대해서 기술되었다. 도징 연산은 최소 거리가 3 이상이 되는 어레이 타입에서 사용될 수 있다. 그러나, 일반화된 도징 연산은 대칭형 어레이에서 최상으로 기능한다.
도징 연산은 단지 저장 시스템의 최소 거리를 증가시키는 것 이외의 목적을 위해서도 사용될 수 있다. 수많은 요소들이 도징 연산 수행 여부 및 수령자 및 기여자 선택을 결정하는데 있어서 포함될 수 있다. 가령, 구성 요소들이 균일하지 않을 경우에서의 구성 요소들의 개별 장애 확률, 데이터 손실을 야기하는 장애의 조합 및 시스템 성능에 대한 영향 등이 고려될 수 있다. 이러한 경우에, 시스템의 최소 거리는 도징 연산 후에도 변경되지 않고 유지될 수 있다.
본 발명은 HDD 저장 유닛으로 형성된 저장 어레이의 측면에서 기술되었지만, 본 발명은 RAM 저장 장치(휘발성 및 비휘발성 모두 해당됨), 광 저장 장치 및 테이프 저장 장치와 같은 다른 타입의 저장 장치의 어레이로 형성된 저장 시스템에서도 사용될 수 있다. 또한, 네트워크 부착 저장 장치로 구성된 어레이와 같은 가상 저장 시스템에서도 사용될 수 있다. 또한, 본 발명은 여분의 구성 요소를 특정 구성 요소 서브세트에 관련시키는 몇몇 상태 정보가 존재하고 이 상태 정보가 기여 연산(donation operation)을 사용하여 전달되는 임의의 여분의 시스템에도 적용될 수 있다.
상술한 발명은 이해를 편리하게 하도록 하기 위해서 세부적으로 기술되었지만, 몇몇 수정 및 변경이 첨부된 청구 범위 내에서 실행될 수 있다. 따라서, 본 실시예들은 본 발명을 한정하는 것이 아니라 설명하기 위한 것으로 해석되어야 하며 본 발명은 본 명세서에서 주어진 세부 사항으로만 한정되는 것은 아니며 첨부된 청구 범위 내에서 수정될 수 있다.

Claims (22)

  1. m개(m은 양의 정수)의 저장 유닛의 어레이의 오류 허용 정도(an error tolerance)를 증가시키는 방법으로서,
    k개의 스트라이프(stripe)를 상기 m개의 저장 유닛의 어레이에 걸쳐서 저장하는 단계로서, 각각의 스트라이프는 정정 코드를 가지며, 상기 정정 코드는 최소 해밍 거리 d를 갖는 소거 정정 코드 및 에러 정정 코드 중 하나이고, - 여기서, k는 양의 정수이고, 각각의 스트라이프는 n+r개의 요소들을 가지며, n은 스트라이프 내의 데이터 요소들의 개수, r은 스트라이프 내의 잉여 요소들(redundant elements)의 개수이며, m > n+r, jm = k(n+r), 및 j는 양의 정수이고, 스트라이프의 각각의 요소는 서로 다른 저장 유닛 상에 저장됨 -;
    기여자 스트라이프(donor stripe)의 최소 거리와 수령자 스트라이프(recipient stripe)의 최소 거리 간의 차가 2 이상일 때 상기 기여자 스트라이프 내의 요소를 선택하는 단계로서, 상기 수령자 스트라이프의 요소가 손실되는 경우 상기 선택된 요소는 상기 수령자 스트라이프의 어떠한 요소도 갖지 않는 저장 유닛 상에 저장되는, 선택 단계와,
    상기 수령자 스트라이프가 데이터 손실없이 다른 요소의 손실을 허용하도록 상기 수령자 스트라이프의 손실된 요소를 상기 기여자 스트라이프의 선택된 요소 상에 재구축함으로써 상기 수령자 스트라이프의 상기 최소 거리를 증가시키는 단계를 포함하는,
    저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법.
  2. 제 1 항에 있어서,
    상기 기여자 스트라이프 내의 요소를 선택하는 단계 이전에 상기 수령자 스트라이프의 상기 최소 해밍 거리는 d>2인,
    저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법.
  3. 제 1 항에 있어서,
    상기 수령자 스트라이프의 손실된 요소를 상기 기여자 스트라이프의 선택된 요소 상에 재구축함으로써 상기 수령자 스트라이프의 상기 최소 거리를 증가시키는 단계 이전에, 상기 기여자 스트라이프를 저장하고 있는 상기 저장 유닛에게 상기 선택된 요소가 제공되었음을 알리는 단계를 더 포함하는
    저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서,
    상기 소거 또는 오류 정정 코드는 패리티 코드(parity code), 위노그래드 코드(Winograd code), 대칭형 코드(symmetric code), 리드-솔로몬 코드(Reed-Solomon code), EVENODD 코드 또는 EVENODD 코드의 파생 코드 중 하나인
    저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법.
  8. 제 1 항에 있어서,
    상기 선택된 요소 상에 상기 수령자 스트라이프로부터의 수령자 정보의 적어도 일부를 재구축하는 동안 상기 기여자 스트라이프 내의 한 요소에 장애가 발생하는 경우, 상기 방법은,
    상기 선택된 요소 상에 상기 수령자 스트라이프로부터의 수령자 정보의 적어도 일부를 재구축하는 것을 종결하는 단계와,
    제 2 기여자 스트라이프의 최소 거리와 제 2 수령자 스트라이프의 최소 거리 간의 차가 2 이상이면 상기 제 2 기여자 스트라이프 내의 요소를 선택하는 단계와,
    상기 수령자 스트라이트로부터의 손실된 수령자 정보의 적어도 일부를 상기 제 2 기여자 스트라이프 내의 상기 선택된 요소 상에 재구축하는 단계를 더 포함하는
    저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법.
  9. 제 1 항에 있어서,
    여분의 요소가 가용하면, 상기 여분의 요소를 선택된 저장 유닛으로 할당하는 단계를 더 포함하는
    저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법.
  10. 선택된 장애 패턴(patterns of failures)에 대해 취약성이 있는(vulnerable) m 개(m은 양의 정수)의 저장 유닛의 어레이의 장애 허용 정도를 증가시키는 방법으로서,
    k개의 스트라이프(stripe)를 상기 m개의 저장 유닛의 어레이에 걸쳐서 저장하는 단계로서, - 상기 k는 양의 정수이고, 각각의 스트라이프는 n+r개의 요소들을 가지며, n은 스트라이프 내의 데이터 요소들의 개수, r은 스트라이프 내의 잉여 요소들(redundant elements)의 개수로 정수이고, m > n+r, jm = k(n+r)이고, 각각의 스트라이프는 최소 해밍 거리 d를 갖는 소거 정정 코드 또는 에러 정정 코드 중 하나를 형성하며, 스트라이프의 각각의 요소는 서로 다른 저장 유닛 상에 저장됨 -;
    요소 장애에 후속하여 수령자 요소를 선택하는 단계와,
    재구축 동작 이후에 상기 어레이의 장애 허용 정도가 증가하도록 기여자 스트라이프 내의 한 요소를 선택하는 단계, - 상기 수령자 요소는 상기 기여자 스트라이프의 일부가 아님 -
    상기 기여자 스트라이프의 상기 선택된 요소 상에 상기 수령자 스트라이프의 손실된 요소를 재구축하는 단계를 포함하는
    저장 유닛의 어레이의 장애 허용 정도를 증가시키는 방법.
  11. 데이터 저장 시스템으로서,
    m개의 저장 유닛의 어레이 - 여기서, m은 양의 정수이고, k개의 스트라이프(stripe)가 상기 m개의 저장 유닛의 어레이에 걸쳐서 저장되고, 상기 k는 양의 정수이고, 각각의 스트라이프는 n+r개의 요소를 포함하며, n은 스트라이프 내의 데이터 요소들의 개수이고, r은 스트라이프 내의 잉여 요소들(redundant elements)의 개수이며, m > n+r, jm = k(n+r), j는 양의 정수이고, 각각의 스트라이프는 최소 해밍 거리 d를 갖는 소거 정정 코드 또는 에러 정정 코드 중 하나를 형성하며, 스트라이프의 각각의 요소는 서로 다른 저장 유닛 상에 저장됨 -;
    기여자 스트라이프의 최소 거리와 수령자 스트라이프의 최소 거리 간의 차가 2 이상일 때 상기 기여자 스트라이프 내의 한 요소를 선택 - 상기 수령자 스트라이프의 한 요소가 손실될 때 상기 선택된 요소는 상기 수령자 스트라이프의 어떠한 요소도 갖지 않는 저장 유닛 상에 저장됨 - 하고, 상기 수령자 스트라이프의 손실된 요소를 상기 기여자 스트라이프의 상기 선택된 요소 상에 재구축하여 상기 수령자 스트라이프가 데이터 손실없이 다른 요소의 손실을 허용하도록 하는 시스템 어레이 제어기를 포함하는
    데이터 저장 시스템.
  12. 제 11 항에 있어서,
    상기 시스템 어레이 제어기가 상기 기여자 스트라이프의 한 요소를 선택하기 이전에, 상기 수령자 스트라이프의 상기 최소 해밍 거리는 d>2인,
    데이터 저장 시스템.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제 11 항에 있어서,
    상기 수령자 스트라이프의 상기 손실된 요소를 상기 선택된 요소 상에 재구축하기 이전에, 상기 시스템 어레이 제어기는 상기 선택된 요소가 제공되었음을 상기 기여자 스트라이프를 저장하고 있는 상기 저장 유닛에게 알리는
    데이터 저장 시스템.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.
    제 11 항에 있어서,
    상기 시스템 어레이 제어기가 상기 선택된 요소 상에 상기 수령자 스트라이프로부터의 수령자 정보의 적어도 일부를 재구축하고 있는 동안 상기 기여자 스트라이프 내의 한 요소에 장애가 발생하면,
    상기 시스템 어레이 제어기는,
    상기 선택된 요소 상에 상기 수령자 스트라이프로부터의 수령자 정보의 적어도 일부를 재구축하는 것을 종결하고,
    제 2 기여자 스트라이프의 최소 거리와 제 2 수령자 스트라이프의 최소 거리 간의 차가 2 이상이면 상기 제 2 기여자 스트라이프 내의 요소를 선택하고,
    상기 수령자 스트라이프로부터의 손실된 수령자 정보의 적어도 일부를 상기 제 2 기여자 스트라이프 내의 상기 선택된 요소 상에 재구축하는
    데이터 저장 시스템.
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    제 11 항에 있어서,
    여분의 요소가 가용하면, 상기 시스템 어레이 제어기는 상기 여분의 요소를 선택된 저장 유닛으로 할당하는
  19. 데이터 저장 시스템으로서,
    m개의 저장 유닛의 어레이 - 여기서, m은 양의 정수이고, k개의 스트라이프 (stripe)가 상기 m개의 저장 유닛의 어레이에 걸쳐서 저장되고, k는 양의 정수이고, 각각의 스트라이프는 n+r개의 요소를 포함하며, n은 스트라이프 내의 데이터 요소들의 개수이고, r은 스트라이프 내의 잉여 요소들(redundant elements)의 개수이며, m > n+r, jm = k(n+r), j는 양의 정수이고, 각각의 스트라이프는 최소 해밍 거리 d를 갖는 소거 정정 코드 또는 에러 정정 코드 중 하나를 형성하며, 스트라이프의 각각의 요소는 서로 다른 저장 유닛 상에 저장됨 -;
    요소 장애가 발생하면 후속하여 수령자 요소를 선택하고, 재구축 동작 이후에 상기 어레이의 장애 허용 정도가 증가되도록 기여자 스트라이프 내의 한 요소를 선택하며, 상기 기여자 스트라이프의 상기 선택된 요소 상에 상기 수령자 스트라이프의 손실된 요소를 재구축하는 시스템 어레이 제어기를 포함하는
    데이터 저장 시스템.
  20. 청구항 20은(는) 설정등록료 납부시 포기되었습니다.
    제 19 항에 있어서,
    상기 시스템 어레이 제어기가 상기 기여자 스트라이프의 한 요소를 선택하기 이전에 상기 수령자 스트라이프의 상기 최소 해밍 거리는 d>2인,
    데이터 저장 시스템.
  21. 청구항 21은(는) 설정등록료 납부시 포기되었습니다.
    제 19 항에 있어서,
    상기 기여자 스트라이프의 상기 선택된 요소 상에 상기 수령자 스트라이프의 상기 손실된 요소를 재구축하는 것을 완료하면 상기 어레이의 최소 해밍 거리가 증가하는
    데이터 저장 시스템.
  22. 데이터 저장 시스템으로서,
    복수의 저장 유닛 어레이 - 각 어레이는 m 개(m은 양의 정수)의 저장 유닛을 구비하고, 상기 m 개의 저장 유닛의 어레이 각각에 걸쳐서 k 개(k는 양의 정수)의 스트라이프가 저장되고, 각각의 스트라이프는 최소 해밍 거리 d를 갖는 소거 정정 코드 또는 에러 정정 코드 중 하나를 형성하며, 스트라이프의 각각의 요소는 서로 다른 저장 유닛 상에 저장됨 - 와,
    기여자 스트라이프의 최소 거리와 수령자 스트라이프의 최소 거리 간의 차가 2 이상일 때 상기 기여자 스트라이프 내의 한 요소를 선택 - 상기 선택된 요소는 상기 수령자 스트라이프의 어떠한 요소도 갖지 않는 저장 유닛 상에 저장됨 - 하고, 상기 수령자 스트라이프의 손실된 요소를 상기 선택된 요소 상에 재구축하는 시스템 어레이 제어기를 포함하는
    데이터 저장 시스템.
KR1020067000036A 2003-07-14 2004-07-07 저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법 및 데이터 저장 시스템 KR101054814B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/619,641 US7533325B2 (en) 2003-07-14 2003-07-14 Anamorphic codes
US10/619,641 2003-07-14
PCT/EP2004/051382 WO2005006215A2 (en) 2003-07-14 2004-07-07 Redundant resource balancing in a data storage array

Publications (2)

Publication Number Publication Date
KR20060037319A KR20060037319A (ko) 2006-05-03
KR101054814B1 true KR101054814B1 (ko) 2011-08-05

Family

ID=34062605

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067000036A KR101054814B1 (ko) 2003-07-14 2004-07-07 저장 유닛의 어레이의 오류 허용 정도를 증가시키는 방법 및 데이터 저장 시스템

Country Status (12)

Country Link
US (2) US7533325B2 (ko)
EP (1) EP1644851B1 (ko)
JP (1) JP4756704B2 (ko)
KR (1) KR101054814B1 (ko)
CN (1) CN100465908C (ko)
AT (1) ATE423350T1 (ko)
CA (1) CA2532997C (ko)
DE (1) DE602004019534D1 (ko)
ES (1) ES2318323T3 (ko)
SG (1) SG145728A1 (ko)
TW (1) TWI317475B (ko)
WO (1) WO2005006215A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6730883B2 (en) * 2002-10-02 2004-05-04 Stratagene Flexible heating cover assembly for thermal cycling of samples of biological material
JP2011199414A (ja) * 2010-03-17 2011-10-06 Toshiba Corp 素材収録装置及び素材収録方法
US8392805B2 (en) 2010-07-15 2013-03-05 Hewlett-Packard Development Company, L. P. Non-MDS erasure codes for storage systems
US8433979B2 (en) * 2011-02-28 2013-04-30 International Business Machines Corporation Nested multiple erasure correcting codes for storage arrays
US8874995B2 (en) * 2012-02-02 2014-10-28 International Business Machines Corporation Partial-maximum distance separable (PMDS) erasure correcting codes for storage arrays
CN103577274B (zh) * 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
CN102929743A (zh) * 2012-11-28 2013-02-13 中国人民解放军国防科学技术大学 具有软错误容错功能的一级缓存数据存储方法及装置
TWI461901B (zh) * 2012-12-10 2014-11-21 Ind Tech Res Inst 資料儲存與重建的方法與系統
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
WO2017039274A1 (ko) * 2015-08-30 2017-03-09 엘지전자 주식회사 무선 통신 시스템에서 클러스터 기반 협력 전송 방법 및 이를 위한 장치
WO2018112980A1 (zh) 2016-12-24 2018-06-28 华为技术有限公司 存储控制器、数据处理芯片及数据处理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485571A (en) * 1993-12-23 1996-01-16 International Business Machines Corporation Method and apparatus for providing distributed sparing with uniform workload distribution in failures

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3949208A (en) * 1974-12-31 1976-04-06 International Business Machines Corporation Apparatus for detecting and correcting errors in an encoded memory word
US5148432A (en) 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
US5680574A (en) 1990-02-26 1997-10-21 Hitachi, Ltd. Data distribution utilizing a master disk unit for fetching and for writing to remaining disk units
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5579475A (en) 1991-02-11 1996-11-26 International Business Machines Corporation Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity
US5258984A (en) 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays
US5301297A (en) 1991-07-03 1994-04-05 Ibm Corp. (International Business Machines Corp.) Method and means for managing RAID 5 DASD arrays having RAID DASD arrays as logical devices thereof
US5257391A (en) 1991-08-16 1993-10-26 Ncr Corporation Disk controller having host interface and bus switches for selecting buffer and drive busses respectively based on configuration control signals
US5506977A (en) 1991-12-17 1996-04-09 Dell Usa, L.P. Method and controller for minimizing reads during partial stripe write operations to a disk drive
US5398253A (en) 1992-03-11 1995-03-14 Emc Corporation Storage unit generation of redundancy information in a redundant storage array system
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US5666511A (en) 1992-10-08 1997-09-09 Fujitsu Limited Deadlock suppressing schemes in a raid system
US6269453B1 (en) 1993-06-29 2001-07-31 Compaq Computer Corporation Method for reorganizing the data on a RAID-4 or RAID-5 array in the absence of one disk
US5862158A (en) * 1995-11-08 1999-01-19 International Business Machines Corporation Efficient method for providing fault tolerance against double device failures in multiple device systems
KR100275900B1 (ko) 1996-09-21 2000-12-15 윤종용 알에이아이디 서브시스템에 있어서 분할패러티 예비 디스크 구현방법
US6161165A (en) 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
JP3595099B2 (ja) 1997-03-17 2004-12-02 富士通株式会社 デバイスアレイ・システム
US6154853A (en) 1997-03-26 2000-11-28 Emc Corporation Method and apparatus for dynamic sparing in a RAID storage system
US6028933A (en) * 1997-04-17 2000-02-22 Lucent Technologies Inc. Encrypting method and apparatus enabling multiple access for multiple services and multiple transmission modes over a broadband communication network
US5937428A (en) 1997-08-06 1999-08-10 Lsi Logic Corporation Method for host-based I/O workload balancing on redundant array controllers
US6081812A (en) * 1998-02-06 2000-06-27 Ncr Corporation Identifying at-risk components in systems with redundant components
US6353895B1 (en) 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
US6138125A (en) 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US6279138B1 (en) 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
US7000069B2 (en) 1999-04-05 2006-02-14 Hewlett-Packard Development Company, L.P. Apparatus and method for providing very large virtual storage volumes using redundant arrays of disks
US6275898B1 (en) 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US6530004B1 (en) 2000-06-20 2003-03-04 International Business Machines Corporation Efficient fault-tolerant preservation of data integrity during dynamic RAID data migration
US6883131B2 (en) * 2001-09-28 2005-04-19 Sun Microsystems, Inc. XOR processing incorporating error correction code data protection
US7346831B1 (en) * 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US20030149750A1 (en) * 2002-02-07 2003-08-07 Franzenburg Alan M. Distributed storage array
US7350126B2 (en) 2003-06-23 2008-03-25 International Business Machines Corporation Method for constructing erasure correcting codes whose implementation requires only exclusive ORs
US7281177B2 (en) 2003-07-14 2007-10-09 International Business Machines Corporation Autonomic parity exchange
US7379974B2 (en) 2003-07-14 2008-05-27 International Business Machines Corporation Multipath data retrieval from redundant array
US7254754B2 (en) 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
US7970994B2 (en) * 2008-03-04 2011-06-28 International Business Machines Corporation High performance disk array rebuild

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485571A (en) * 1993-12-23 1996-01-16 International Business Machines Corporation Method and apparatus for providing distributed sparing with uniform workload distribution in failures

Also Published As

Publication number Publication date
JP4756704B2 (ja) 2011-08-24
EP1644851A2 (en) 2006-04-12
ATE423350T1 (de) 2009-03-15
TW200515141A (en) 2005-05-01
EP1644851B1 (en) 2009-02-18
DE602004019534D1 (de) 2009-04-02
ES2318323T3 (es) 2009-05-01
US20090132890A1 (en) 2009-05-21
US8386891B2 (en) 2013-02-26
WO2005006215A2 (en) 2005-01-20
CN1898650A (zh) 2007-01-17
CN100465908C (zh) 2009-03-04
US7533325B2 (en) 2009-05-12
CA2532997A1 (en) 2005-01-20
KR20060037319A (ko) 2006-05-03
TWI317475B (en) 2009-11-21
SG145728A1 (en) 2008-09-29
WO2005006215A3 (en) 2006-08-17
US20050015656A1 (en) 2005-01-20
CA2532997C (en) 2012-07-24
JP2007529061A (ja) 2007-10-18

Similar Documents

Publication Publication Date Title
US8386891B2 (en) Anamorphic codes
US7788569B2 (en) Autonomic parity exchange
JP4516846B2 (ja) ディスク・アレイ・システム
US6959413B2 (en) Method of handling unreadable blocks during rebuilding of a RAID device
US6934904B2 (en) Data integrity error handling in a redundant storage array
US7562281B2 (en) Autonomic parity exchange
US6944791B2 (en) Method of handling unreadable blocks during write of a RAID device
JP2000207136A (ja) 複数ドライブ故障トレラントraidアルゴリズム
EP2271986B1 (en) Video media data storage system and related methods
JP3676793B2 (ja) ディスクアレイ装置
JP3699473B2 (ja) ディスクアレイ装置
US20050102470A1 (en) Disk array device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee