KR102475784B1 - 1개의 서브-심볼의 선형 복구 스킴 - Google Patents
1개의 서브-심볼의 선형 복구 스킴 Download PDFInfo
- Publication number
- KR102475784B1 KR102475784B1 KR1020180065536A KR20180065536A KR102475784B1 KR 102475784 B1 KR102475784 B1 KR 102475784B1 KR 1020180065536 A KR1020180065536 A KR 1020180065536A KR 20180065536 A KR20180065536 A KR 20180065536A KR 102475784 B1 KR102475784 B1 KR 102475784B1
- Authority
- KR
- South Korea
- Prior art keywords
- vector
- storage node
- node
- matrix
- surviving
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/157—Polynomial evaluation, i.e. determination of a polynomial sum at a given value
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
복수의 n개의 스토리지 노드들 및 컨트롤러에 대한 시스템에서, RS코드로 단일한 소거를 복구하는 방법에 있어서, 스토리지 노드 각각의 내용은 코드 워드이고 각각의 노드는 벡터 v를 저장한다. 이러한 방법은 페일된 스토리지 노드를 식별하는 단계, 노드 i 각각의 내용과 살아남은 스토리지 노드들에 대응되는 벡터 v의 원소들의 순열인 벡터의 j번째 성분을 곱하는 단계, 이러한 결과의 트레이스 맵을 결정하고 mXr 비트 표현에 의한 결과를 r비트들의 감소된 표현으로 변환하는 단계, 살아남은 노드들의 내용 각각의 감소된 표현으로부터 페일된 스토리지 노드의 내용을 재건하는 단계, 및 페일된 스토리지 노드의 재건된 내용을 출력하는 단계를 포함한다.
Description
본 발명은 손상된 디지털 데이터를 복구하는 방법에 관한 것이다.
코딩 이론에서, RS(Reed-Solomon) 코드들은 유한체들(finite fields)을 사용하여 구성되는 에러 정정 코드들(error-correcting codes, ECCs)의 클래스를 형성한다. RS 코드는 다음과 같이 정의될 수 있다. q는 소수 거듭제곱(prime power)이고, 는 q원소들의 유한체라고 하자. 부분 집합 , n:=|I|에서, I에 대한 열거식 I:={x1,...,xn}, 양수 k≤n에 대하여, 평가 집합 I 및 차원 k를 갖는 RS 코드는 I의 점들 상에 k-1까지의 차수의 모든 다항식들 을 평가함으로써 획득되는 에서, 길이 n인 벡터들의 집합으로 정의된다. 명시적으로, 평가 집합 I 및 차원 k를 갖는 RS 코드는 로 정의된다.
RS 코드들은 코드 설계 동안, 코드에 의하여 정정 가능한 심볼 소거들의 개수에 대한 정확한 제어가 가능하게 한다. 특히, 다수의 심볼 소거들을 정정할 수 있는 RS 코드들의 설계가 가능하다.
GRS(generalized RS)코드는, RS 코드가 정의된 동일한 체(field)에서, 0이 아닌 엔트리들을 갖는 몇몇 기정의된 벡터(a1,…,an)의 엔트리들에 의하여, 길이 n인 RS 코드의 모든 코드워드들의 좌표형 곱셈(coordinate-wise multiplication)에 의하여 획득된다. GRS 코드의 삭제 디코딩은 다음의 단계들에 의하여 RS 코드의 소거 디코딩으로 감소될 수 있다. (1) 살아남은 노드 각각은 이의 내용을 상응하는 ai로 나눈다. (2) 시스템은, 단일한 소거의 경우에, 가능한 낮은-대역폭으로 RS 소거 디코딩을 수행한다. (3) 재구성된 RS 심볼들은, 요구되는 재구성된 GRS 심볼들로 변환되기 위하여, 상응하는 ai로 곱하여진다.
RS 코드들의 예시적인 응용은 저장된 데이터를 인코딩하는 것이다. 예를 들어, 호스트는 입력된 메시지들을 신뢰할 수 없는 “노드들”의 스토리지 어레이에 쓴다. 일 실시예에 따르면, 노드는 메모리 및 일부 처리 능력을 포함한다. 플래시 어레이에서, 노드는, 예를 들어, 개별적인 SSD 컨트롤러에 의하여 수행되는 일반적인 작업들의 최상위의 인코딩 계산들을 수행하기 위한 “증가된” 컨트롤러가 있는 또는 “증가된” 컨트롤러 없는, 개별적인 SSD를 포함한다. 또는, 클라우드 스토리지에서, 노드는, 예를 들어 하나 이상의 드라이브들을 갖는 컴퓨터일 수 있다.
입력된 메시지들은 사용자들이 저장하려는 데이터이고, 어떠한 값도 자유롭게 선택할 수 있다. 영화와 같이, 실제 저장된 메시지는, 다양한 사이즈들을 가질 수 있으나, 코딩 관점에서 중요한 것은 때때로 “스트라이프들(stripes)”로 불리우는 인코딩된 청크(chunk)들이다. 스트라이프는 정보 심볼들 및 패리티 심볼들을 포함한다.
신뢰할 수 있는 스토리지를 달성하기 위하여, 호스트는 데이터를 저장하기 전에 인코딩한다. 이후, 하나 이상의 스토리지 노드들이 페일(fail)된다면, 호스트는 손실된 데이터를 복원(디코딩)하여야 한다. 사용자가 저장된 데이터를 읽기 희망하는지 여부에 상관없이, 호스트는, 예를 들어, 페일된 노드들을 계속적으로 검색하는 스캐닝 매커니즘에 의하여, 그것들이 발견될 때, 소거들을 정정할 수 있다. 전형적인 경우에, 인코딩 과정은 충분한 중복을 도입하여, 다수의 페일을 극복한다. 그러나, 페일에 대하여 가장 일반적인 경우는 단일한 페일(소거)의 경우이며, 본 발명의 실시예들은, 후술할 바와 같이, 낮은-대역폭 디코딩 알고리즘을 제공한다.
예시적인 시스템 동작의 대략적이고 개념적인 설명은 후술된다. 이러한 예시가 구체적이게 하기 위해, 클라우드 스토리지 셋업이 고려될 것이나, 예를 들어, 플레시 어레이, 즉, 전형적으로 랙 상에 배치되는 몇 개의 개별적인 SSD들로 구성된 “슈퍼 디스크(super disk)”의 다른 잠재적인 시나리오들이 또한 존재한다.
스토리지:
1. 사용자는 영화와 같은 클라우드 스토리지를 위한 파일을 업로드한다.
2. 클라우드 호스트는 영화를 저장한다. 신뢰할 수 있는 스토리지를 위하여, 메시지가 예를 들어, RS 코드에 의하여 인코딩된다. 전형적인 체계적 인코딩에서, 인코딩된 메시지는 원본 메시지 + 패리티 심볼들로 이루어진다. 실제 실행시에, (전형적으로 매우 큰) 메시지는 더 작은 청크들로 나누어지고, 청크 각각은 따로 인코딩된다. 예를 들어, 하나의 클라우드 스토리지 프로바이더는, 10개의 8비트 정보 심볼들을, 체계적 인코딩에서 10개의 정보 심볼들 + 4개의 패리티 심볼들을 갖는, 14개의 8비트 심볼들의 코드워드로 가져오는 RS 인코딩을 사용한다. 따라서, 원본 메시지는 10개의 8비트 심볼들의 청크들로 나누어지고, 청크 각각은 개별적으로 인코딩된다.
유지:
1. 페일을 검색하는 몇몇 스캐닝 소프트웨어에 의하여, 또는 사용자가 데이터를 읽으려 하는데 페일 지시를 얻음으로 인하여, 페일이 감지된 것으로 추정한다.
(i) 페일된 드라이브들의 개수가 2 내지 4 사이라면, 손실된 데이터를 복원하기 위하여, 살아남은 노드들 중 10개는 호스트에 그들의 완전한 내용을 전송하여야 한다.
(ii) 단일한 드라이브가 페일된다면, 본 발명의 일 적용례로, 13개의 살아남은 드라이브들 각각은 호스트에 이들의 내용의 1/2만을 전송하여야 한다.
3. 복원된 데이터는 예를 들어, 다른 노드들에 다시 저장되거나, 사용자에 전송될 수 있다.
본 발명의 예시적인 실시예는 단순한 선형 복구 스킴을 갖도록, RS 코드를 이용하여 단일한 소거를 복구하는 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 실시예에 따르면, d<mr에 대하여, 사이즈 n=2d인 부분 공간이고 m으로 나누어질 수 있는 평가 집합 V={u0 = 0, u1, …un- 1}를 갖는 유한체 F2 mr상에서의 RS(Reed-Solomon) 코드로 단일한 소거를 복구하는 방법이 제공되며, 복수의 n개의 스토리지 노드들과 컨트롤러에 대한 시스템에서, 정규화된 복구 대역폭 (n-1)/m이고 정보 심볼들의 개수 k<=2d-2d-d/ m이고, 각각의 스토리지 노드 i의 내용 c i 는 유한체 F2 mr의 원소이고, 노드 각각은 벡터 v를 저장하되, 벡터 v의 엔트리들은 평가 집합 V의 0이 아닌 원소들의 역원들이다. 상기 방법은 컨트롤러가, 페일된 스토리지 노드를 식별하는 단계; 컨트롤러가, 페일된 스토리지 노드의 인덱스 j0를 살아남은 스토리지 노드 각각에 전송하는 단계; 이고, 모든 에 대하여, 는 살아남은 스토리지 노드들에 대응되는 벡터 v의 원소들의 순열이고, j'는 인, 의 고유 인덱스인 경우에, 살아남은 스토리지 노드 i 각각이, 상기 노드 i 각각의 내용 ci와, 벡터 w(i)의 j번째 성분을 곱하는 단계; 곱셈의 결과 outi의 트레이스 맵을 결정하고, 살아남은 스토리지 노드 각각이, mXr 비트 표현에 의한 결과를 r비트들의 감소된 표현 로 변환하는 단계; 컨트롤러가, 살아남은 스토리지 노드의 내용 각각의 감소된 표현으로부터, 페일된 스토리지 노드의 내용을 재건하는 단계; 및 페일된 스토리지 노드의 재건된 내용을 출력하는 단계를 포함한다.
본 발명의 추가 실시예에 따르면, j'는 컨트롤러에 의하여 계산되고, 살아남은 스토리지 노드들로 전송된다.
본 발명의 추가 실시예에 따르면, 살아남은 스토리지 노드 각각은 살아남은 스토리지 노드 각각의 인덱스 및 페일된 스토리지 노드의 인덱스에 기초하여 j'를 계산한다.
본 발명의 추가 실시예에 따르면, j'는 스토리지 노드 각각에 대하여 미리 계산된다.
본 발명의 추가 실시예에 따르면, 살아남은 스토리지 노드 i 각각이, 노드 i 각각의 내용 ci와, 벡터 w(i)의 j번째 성분을 곱하는 단계는, 인 노드 i 각각이, 를 계산하는 단계를 포함하되, j0는 페일된 노드의 식별자이다.
본 발명의 추가 실시예에 따르면, mXr 비트 표현에 의한 결과를 r 비트들의 감소된 표현으로 변환하는 단계는, 체 F2 mr의 원소들이, F2 r상에서의 F2 mr의 기저에 따른 벡터 공간 (F2 r)m에서, 길이 m인 벡터들로 표현되는 경우, 인 노드 i 각각이, outi의 제1 좌표를 컨트롤러에 전송하는 단계를 포함한다.
본 발명의 추가 실시예에 따르면, mXr 비트 표현에 의한 결과를 r비트들의 감소된 표현으로 변환하는 단계는, 체 F2 mr의 원소들이, F2상에서의 F2 mr의 기저에 따른 벡터 공간 F2 mr에서, 길이 mr인 비트들의 벡터들로 표현되되, α는 체 F2 mr의 원시 원소인 경우, 인 노드i 각각이, 곱 M outi를 상기 컨트롤러에 전송하는 단계를 포함하되, 행렬 이다.
본 발명의 추가 실시예에 따르면, 행렬 은 TM1에서 rXr 단위 행렬을 지원하는 인덱스들을 갖는 행렬의 r개의 행들이고, 는, 인 경우에 j번째 열이 체 F2상에서의 체 E의 기저에 따른 길이 mr인 βj의 이진 표현인, 행렬이고, E:=F2 mr이고, β는 F2 r=F의 원시 원소이다.
본 발명의 추가 실시예에 따르면, 살아남은 스토리지 노드의 내용 각각의 감소된 표현으로부터, 페일된 스토리지 노드의 내용을 재건하는 단계는, 행렬 를 사용하여 를 계산하는 단계; 체 E:=F2 mr 에서 의 원소들을 임베딩하여, 벡터 를 획득하는 단계; 및 를 계산함으로써 상기 페일된 스토리지 노드의 내용을 복원하는 단계를 포함하되, 이고, p1(X)는 β의 극소 다항식이고, 벡터 이고, 모든 이고 j'=a인 경우의 에 대하여 이고, n은 스토리지 노드들의 총 개수이고, 는 생존한 노드i의 내용의 감소된 표현이고, 행렬 A'는, A의 엔트리 aij가 F2상에서의 F2 mr의 기저 에 따른 F2 mr에서 열 벡터로 간주되는 경우, aij 각각을 Maij로 대체함으로써 획득되는 행렬이고, 행렬 는, C''의 기저를 완전하게 하여 C'의 기저가 되게 하는 m개의 선형 독립 벡터들인, c1, … , cm행들을 갖는 행렬이고, 패리티-체크 행렬 H'를 갖는 코드의 F-부분체 서브 코드인 이고, 패리티-체크 행렬 H''를 갖는 코드의 F-부분체 서브 코드인 이고, 이고, 이고, 이고, (v1, …vn - 1)는 벡터 v의 원소들이고, (u1, …un- 1)는 평가 집합 V의 0이 아닌 원소들이고, 행렬 은 TM1에서 rXr 단위 행렬을 지원하는 인덱스들을 갖는 행렬의 r개의 행들이고, 는, 인 경우에 j번째 열이 체 F2상에서의 체 E의 기저에 따른 길이 mr인 βj의 이진 표현인, 행렬이고, E:=F2 mr이고, β는 F2 r=F의 원시 원소이고, α는 상기 체 F2 mr의 원시 원소이고, 는, 원소들이 벡터의 엔트리들인 기저에 관하여, F상에서 E에 대한 쌍대 기저를 형성한다.
본 발명의 추가 실시예에 따르면, E에서 의 원소들을 임베딩하여, 벡터 를 획득하는 단계는, t의 좌표 ta 각각이 F2상에서의 F'의 기저 에 따른 길이 r인 이진 열 벡터로 간주되는 경우, 에 대하여 를 계산하는 단계, 및 w의 엔트리 각각이 기저 에 따른 E의 원소의 벡터 표현인 경우, 를 출력하는 단계를 포함한다.
본 발명의 다른 실시예에 따르면, d<mr에 대하여, 사이즈 n=2d인 부분 공간이고 m으로 나누어질 수 있는 평가 집합 V={u0 = 0, u1, …un- 1}를 갖는 유한체 F2 mr상에서의 RS(Reed-Solomon) 코드로 단일한 소거를 복구하는 방법 단계들을 수행하는, 컴퓨터에 의하여 실행되는 명령어들의 프로그램을 유형적으로 구현하는, 컴퓨터에 의하여 판독 가능한 비-일시적 프로그램 저장 장치가 제공되며, 복수의 n개의 스토리지 노드들과 컨트롤러에 대한 시스템에서, 정규화된 복구 대역폭 (n-1)/m이고 정보 심볼들의 개수 k<=2d-2d-d/ m이고, 각각의 스토리지 노드 i의 내용 c i 는 상기 유한체 F2 mr의 원소이고, 노드 각각은 벡터 v를 저장하되, 상기 벡터 v의 엔트리들은 상기 평가 집합 V의 0이 아닌 원소들의 역원들이다.
본 발명의 단일한 소거를 복구하는 방법 및 장치에 따르면, 선형 복구 스킴이 단순화될 수 있다.
도 1a 및 도 1b는 본 발명의 실시예들에 따른 손상된 RS 코드들을 복구하기 위한 알고리즘의 오프라인부에 대한 순서도이다.
도 2는 본 발명의 실시예들에 따른 손상된 RS 코드들을 복구하기 위한 알고리즘의 온라인부에 대한 순서도이다.
도 3은 본 발명의 실시예에 따른 감소된-사이즈를 갖는 데이터로부터 소거된 심볼을 재건하기 위한 방법에 대한 순서도이다.
도 4는 본 발명의 실시예에 따른 손상된 RS 코드들을 복구하기 위한 시스템에 대한 블록도이다.
도 2는 본 발명의 실시예들에 따른 손상된 RS 코드들을 복구하기 위한 알고리즘의 온라인부에 대한 순서도이다.
도 3은 본 발명의 실시예에 따른 감소된-사이즈를 갖는 데이터로부터 소거된 심볼을 재건하기 위한 방법에 대한 순서도이다.
도 4는 본 발명의 실시예에 따른 손상된 RS 코드들을 복구하기 위한 시스템에 대한 블록도이다.
여기에서 설명되는 본 발명의 예시적인 실시예들은 손상된 RS(Reed-Solomon) 코드들을 복구하기 위한 시스템들 및 방법들을 제공한다. 실시예들은 다양한 변경들 및 대체 형식들이 가능하나, 이의 특정 실시예들이 도면들에서 예시로 도시되고, 여기에서 상세하게 설명될 것이다. 그러나, 개시된 특정 형식들로 본 발명을 제한하려는 의도는 없는 것으로 이해되어야 한다. 반면, 본 발명은 본 발명의 사상 및 범위 내의 모든 변경들, 균등물들, 및 대체들을 포함하는 것으로 이해되어야 한다. 여기에서, 두 개 이상의 구성 요소들이 A≒B와 같이, 서로 거의 같은 것으로 설명되는 경우, 구성 요소들은 서로 동일하거나, 서로 구분되지 않거나, 서로 구분되나 당업자에 의하여 기능적으로 서로 동일한 것으로 이해될 정도인 것으로 이해될 것이다.
1. 개요
C는 (이하, Fq m)상에서 길이 n:=qm인 RS(Reed-Solomon) 코드이고 (q는 소수 거듭제곱(prime power)이고, ), n-dim(C)≥n/q라면, C에서 임의의 소거된 좌표는 소거되지 않은 좌표들 중 각각으로부터 하나의 Fq-원소만을 "전송"함으로써 복구될 수 있음이 V. Guruswami 및 M. Wootters의 “Repairing Reed-Solomon Codes”, arXiv:1509.04764v1에 나타난다. 본 발명의 실시예들은 이러한 간단한 복구 스킴들: Fq m-선형 코드에서 단일한 소거된 좌표를 복구하는 것은 소거되지 않은 좌표 각각으로부터 최대 하나의 Fq-심볼의 전송을 요구하는 Fq-선형 복구 스킴들을 고려한다.
실시예들에 따르면, 코드가 간단한 복구 스킴을 갖는 코드를 위한 필요충분조건이 제공된다. 일 실시예에 따른 조건은 부분체-서브 코드들의 차원을 발견하는 작업과 밀접하게 관련된다. 복구될 코드가 RS 코드인 경우, 일 실시예에 따른 조건은 교호 코드들(alternant codes)의 차원을 계산하는 작업과 밀접하게 관련된다. 이러한 조건의 일 적용례로, 이는 Guruswami의 상술된 결과를 다시 입증하는데 사용된다.
실시예들에 따르면, (이하, F2 2r)의 F2-부분 공간인 평가 집합을 갖는 F2 2r상에서의 RS 코드들의 경우가 고려된다. 여기서, m=2이고, q=2r이다. 이러한 맥락에서, 모든 짝수 d≥4에 대하여, r≥d-1+log2(d) 라면, U로 정의되는 RS 코드가 단순한 복구 스킴을 갖도록, F2 2r의 d차원의 F2-부분 공간 U가 존재하는 것으로 나타난다.
d=4인 특별한 경우에, 모든 r≥2에 대하여, U로 정의되는 RS 코드가 단순한 복구 스킴을 갖도록, 적절한 F2-부분 공간 U⊆F2 2r가 존재하는 것으로 나타난다. 이러한 코드를 단축하면, 임의의 단일한 소거된 좌표를 복구하기 위하여 총 52비트들만 읽는 것을 요구하는 로 단축된 RS 코드가 획득된다. HDFS(Hadoop distributed file system) 코드를 위한 최상의 존재하는 복구 스킴에서, 단일한 소거된 좌표를 복구하는 것은 소거된 좌표에 의존하여, 소거되지 않은 좌표들로부터 총 64 또는 60 비트들을 읽는 것을 요구한다. 게다가, Rashmi 등의 “Hitchhiker-nonXOR” 코드 (“A ‘Hitchhiker’s’ Guide to Fast and Efficient Data Reconstruction in Erasure-coded Data Centers”, SIGCOMM’14, August 17-22, 2014, Chicago, USA)는, 10개의 정보 좌표들에 대하여만, 그리고 바이트들을 결합하는 비용에서, 실시예들에 따른 코드로 동일한 복구 대역폭의 절감 효과를 달성한다.
F2 2r상에서의 RS 코드들의 상술된 경우에 더하여, 차원 k가 k≤2d-2d/2를 만족하는 한, 많은 부분 공간들이 임의의 r 및 짝수 d에 대한 단순한 복구 스킴을 발생시키는 입증이 존재하며, 또한 본 발명의 실시예들은 m>2인 경우 F2 mr상에서의 RS 코드들의 경우를 고려한다. 이러한 경우에, m개로 나누어질 수 있는 차원 d의 부분 공간들 U의 일부 구체적인 예시들이 존재하며, 평가 집합 U를 갖는 차원 k≤2d-2d-d/m의 RS 코드에 대하여, 단순한 F2 r-선형 복구 스킴이 존재한다. 이러한 스킴으로, 단일한 노드가 페일될 때, 살아남은 노드들은 페일된 노드를 복원하기 위하여, 그것들의 내용의 1/m만의 전송을 필요로 한다.
2. 서론
본 설명에 걸쳐, q는 소수 거듭제곱(prime power)이고, 이다. 인 경우, F가 체(field)이고 라면, ker(M)는 .으로 정의되는 맵의 커널을 표현한다. F가 유한체라면, ,인 경우 [n, k]F 코드는 Fn에서 차원 k의 F-선형 코드이다.
2.1. 트레이스 맵(Trace Map)
는 상에서의 의 프로베니우스 자기 동형 사상(Frobenius automorphism)이다. 인 경우, 표기법 가 사용될 것이다. 게다가, 이고, 임의의 에 대하여 인 경우, 로 쓰고, 열 벡터들도 이와 유사하다.
차수 qm -1에 대한 다항식이 qm의 근(root)들을 가질 수 없으므로, 트레이스는 동일하게 0이 아니고, 이로 인하여 는 비퇴화 대칭-쌍선형 형식(non-degenerate symmetric -bilinear form)이다. 유한 차원의 경우 늘 그렇듯이, 맵 은 과 이의 쌍대 공간(dual space) 사이의 -벡터 공간들의 동형(isomorphism)이다.
b1,...,bm은 상에서의 의 기저라고 하자. 에 대하여 b1,...,bm의 쌍대 기저로 매핑한 원소들b'1,...,b'm은 b1,...,bm의 트레이스-쌍대 기저로 지칭된다. 정의상, 이므로, 가 모든 i에 대하여 인 경우 로 표현된다면, 모든 i에 대하여 .일 것이다.
2.2. 선형 복구 스킴들
선형 복구 스킴들은 위에서 참조된 Guruswami에서 후술되는 바와 같이 정의된다.
C의 좌표 i에 대한 상술한 복구 스킴의 복구 대역폭 bi은 로 정의된다. 이는 소거된 좌표 i를 복원하도록, 소거되지 않은 좌표들로부터 읽혀져야 하는 비트들의 총 개수이다. 정규화된 복구 대역폭 은 단일한 노드에 저장된 비트들의 개수로 나누어진 복구 대역폭이다.
모든 j≠i에 대하여, |Lj|≤1라면, 좌표 i에 대한 선형 복구 스킴은 단순하다.
따라서, 좌표i에 대한 단순한 선형 복구 스킴에서, 최대 1개의 서브-심볼, 즉, 부분체 에서의 심볼은 좌표 i를 복원하도록 소거되지 않은 좌표 각각으로부터 읽혀져야 한다. 이로 인하여, 복구 대역폭은 (n-1)log2(q)보다 크지 않다.
비고 2.4: 선형 코드 가 추이적 자기 동형 사상군(transitive automorphism group)을 갖는다면, C의 임의의 좌표에 대한 단순한 -선형 복구 스킴의 존재는 모든 좌표들에 대한 단순한 -선형 복구 스킴의 존재와 동등하다. C의 자기 동형 사상군이 이도록 {0,...,n-1}의 모든 순열들 τ에 대한 집합 Aut(C)로 상기되며, c=(c0,...,cn -1)∈C에 대하여, τ의 동작은 로 정의되고, Aut(C)에 대한 그룹(군, group) 연산은 합성(composition)이다. 모든 i,j에 대하여, τ(i)=j인 τ∈Aut(C)가 존재한다면, Aut(C)는 추이적(transitive)으로 지칭된다. 더욱 일반적으로, C의 임의의 좌표i에 대한 선형 복구 스킴이 존재하고, C가 추이적 자기 동형 사상군을 갖는다면, 복구 스킴은 순열로 배치되어 임의의 좌표i'에 대한 선형 복구 스킴이 될 수 있다. 상세하게, τ는 τ(i)=i'인 경우 C의 자기 동형 사상이라고 하자. 좌표들을 다시 레이블링(re-labeling) 함으로써, c=(c0,...,cn -1)∈C의 좌표i'를 복원하는 작업은 d:=(cτ(0),...,cτ(i),...,cτ(n-1))∈C의 좌표 i를 복원하는 작업으로 변환된다. 따라서, 정의 2.3의 표기법을 사용하여, 좌표 i'를 복원하기 위하여, 모든 j≠i(⇔τ(j)≠τ(i)=i')에 대하여, 노드 τ(j)는 Lj에서의 함수들을 사용하여 이것을 전송하는 서브-패킷들을 계산하여야 한다.
비고 2.5: 코드 C는 임의의 좌표i에 대하여 단순한 -선형 복구 스킴을 갖는 것으로 추정한다. 또한, 동일한 것이 임의의 서브 코드에 대하여도 적용된다. 따라서, C가 모든 좌표들에 대하여 단순한 복구 스킴을 갖는다면, C를 단축함으로써 획득되는 임의의 코드도 마찬가지이다.
3. 복구 정리(Repairing Theorem)
본 발명의 실시예에 따르면, 단순한 -선형 복구 스킴의 존재에 대한 필요충분조건이 제시된다. 본 발명의 실시예에 따른 결과는 정리 3.2이며, 임의의 부분체 서브 코드들의 차원으로 조건을 지정한다.
벡터 v에 대하여, 이의 주 대각선 상의 v를 갖는 대각 행렬에 대하여 diag(v)로 쓴다.
조건 (*): 패리티-체크 행렬 H':=G'diag(v)를 갖는 코드에 대한 를 쓰기 위한 벡터 가 존재하며, C'는 ker(H')의 -부분체 서브 코드이고, -선형 서브 코드 D⊆C'가
(1) dim(D)=m이고
(2) D∩ker(g0 diag(v))={0}인 경우에 존재한다.
증명: C의 일반적인 코드 워드는 임의의 에 대하여, c=(c0,c1,...,cn-1):=(x0,x1,...,xk-1)G형식을 갖는다. 작업은 알려진 c1,...,cn -1로부터 c0=x0를 복원하기 위함이다. 모든 j∈{1,...,n-1}에 대하여,
모든 j∈{1,...,n-1}에 대하여 수학식 2를 수집하면, 수학식 3이 얻어진다.
xi가 임의적이므로, 재구성을 위한 필요조건은,
그러나, (i) 및 (ii)는 또한 명백하게 충분조건이며,
(ii) 이러한 벡터의 원소들은 (ii)의 쌍대 기저의 원소들의 선형 결합(일차 결합, linear combination)으로써, x0의 설명에서의 계수들이다. 따라서, 조건 (i) 및 (ii) 들이 성립하기 위한 v 및 A가 존재하는 경우에 한하여, C의 제1 좌표에 대한 단순한 복구 스킴이 존재한다.
조건 (i)은 아래와 같다.
H':=G'diag(v)를 상기하면, 조건 (i)은 H'AT=0 와 같음이 나타날 수 있다.
증명을 완전하게 하기 위하여, 조건 (*) ⇔ (i) 및 (ii) 조건들이 성립하기 위한 v 및 A가 존재하는 것이 입증될 것이다.
: 조건 (*)이 성립하는 것으로 추정한다. A의 m 행들을 코드 D의 기저로 한다. 그렇다면, D의 정의상, 조건 (i)이 성립하도록, H'AT=0 가 도출된다. 조건 (ii)에 대하여, t(A(g0 diag(v))T)=0 이도록, 행 벡터 가 존재하는 것으로 추정한다. ATtT는 D∩ker(g0 diag(v)) 에서 존재하고, 이로 인하여 ATtT는 0 벡터 이어야 한다. A의 행들이 독립이므로, 이는 t가 필요에 따라, 0 벡터임을 암시한다.
: 조건들 (i) 및 (ii)가 성립하기 위한 v 및 A가 존재하는 것으로 추정한다. 조건(ii)로 인하여, A의 행들은 -선형 독립이다. D는 A의 행들의 -공간(span)이다. 그렇다면, dim(D)=m이다. 게다가, 조건 (i) H'AT=0 에 의하여, D⊆C' 가 성립한다. 결국, D의 벡터는 임의의 행 벡터 에 대하여 tA의 형식을 갖는다. (tA)T∈ker(g0 diag(v)) 라면, (g0 diag(v)AT)tT=0 이다. 벡터 (g0 diag(v)AT)의 원소들이 조건 (ii)에 의하여 -선형 독립이므로, t는 필요에 따라, 0 벡터인 것으로 보여질 수 있다.
패리티-체크 행렬 H':=G'diag(v)를 갖는 코드에 대한 , 및 패리티-체크 행렬 를 갖는 코드에 대한 를 쓰기 위하여, 이는 dim(C'')≤dim(C')-m 가 도출된다. 상에서의 코드를 위하여, 상에서의 체크 행렬에 하나의 라인을 더하는 것은 최대 m만큼 차원을 감소시킬 수 있다.
이는 정리 3.2의 조건 (**) ⇔ 보조 정리 3.1의 조건 (*)로 나타날 것이다.
: 조건 (**)이 성립하는 것으로 추정한다. 그렇다면, C'의 dim(C'')+m 개의 선형 독립 원소들의 집합으로 C''의 기저를 완전하게 하는 를 선택하는 것이 가능하다. D는 {c1,...,cm}의 -공간(span)이다. 그렇다면, 구성 D⊆C'에 의하여, dim(D)=m이다. 또한, 아래와 같은 마지막 등식이 D의 기저가 구성되는 방식으로부터 도출된다.
: 조건 (*)이 성립하는 것으로 추정한다. 그렇다면, 이다. 그러나, 이도록, C'∩ker(g0 diag(v))는 C''이다. 가정에 의하여 dim(D)=m이므로, dim(C'')≤dim(C')-m가 도출된다.
정리 3.2의 적용을 위한 일례로, 상술된 Guruswami의 정리 1이 다시 입증될 것이다. 본 발명의 실시예들에 따르면, 이 시점부터, 상에서의 차원 의 RS 코드는 에 대한 적어도 k 개의 점들을 포함하는 부분 집합에서, 로부터 차수≤k-1의 다항식들을 평가함으로써 획득되는 코드이다.
정리 4.1 (Guruswami의 정리 1): n-k≥n/q 이도록, 즉, k≤qm-qm -1 이도록, 이고, n:=qm로 쓴다. 그렇다면, 상에서의 길이 n 이고 차원 k 인 RS 코드는 임의의 좌표에 대하여 단순한 -선형 복구 스킴을 갖는다.
증명: 우선, 코드에 대한 선형 복구 스킴은 자동으로 또한 임의의 서브 코드에 대한 선형 복구 스킴이므로, k=qm-qm -1 경우를 고려하기에 충분하다. 또한, 코드는 (이중으로) 추이적 자기 동형 사상군을 가지므로, 제1 좌표에 대한 단순한 선형 복구 스킴을 설정하기에 충분하다(상술한 비고 2.4).
현재, k≤qm-qm -1인 것으로 추정하고, 는 원시 원소(primitive element)라 하자. 그렇다면, 차원 k이고 길이 qm인 RS 코드에 대한 아래의 생성 행렬은 이미 수학식 1의 형식에 있다.
g0=1, 길이 qm-1의 모두 1인 행 벡터이다.
j∈{1,...,qm-1}에 대하여, 이다. 그렇다면, H'=G'diag(v)는 길이 qm-1인 상에서의 순환 코드의 체크 행렬이고, 의 원소들 및 상에서의 그것들의 공액(conjugate)들을 0으로 맞춘다. 반면, 는 의 원소들 및 그것들의 공액들이 0을 갖는 상에서의 순환 코드의 체크 행렬이다.
정리 3.2에 의하여, Z'는 의 동작 하에서 α-1의 궤도의 원소를 포함하지 않고, α-1의 궤도가 m 개의 원소들을 갖는다는 것을 나타내기에 충분하다. 이러한 점에서, 생성 다항식 g를 갖는 길이 n'의 순환 코드 C에 대하여, dim(C)=n'-deg(g)가 도출된다는 것이 상기된다. 원분 잉여류(cyclotomic coset)들의 언어로 변역하면, {0,1,...,qm-qm -1-2}의 숫자들의 원분 잉여류 modulo qm-1 는 (-1)≡qm-2의 원분 잉여류를 포함하지 않고, 이러한 마지막 원분 잉여류는 m 개의 원소들을 갖는다는 것을 나타난다.
본 발명의 실시예들에 따르면, {0,...,qm-2}의 숫자들을 그들의 길이 m 기저 q인 전개식들로 나타내는 것이 편리할 것이다. 따라서, i∈{0,...,qm-2}에 대하여, 이도록, 이의 기저 q인 전개식을 위한 [i]q=(im-1,im-2,...,i0)로 쓴다.
이러한 벡터의 모든 m 개의 순환 쉬프트들이 구별되므로, 실제 qm-2의 원분 잉여류는 m 개의 원소들을 갖는다.
또한, qm-qm -1-1=(qm-1)-qm - 1 이므로, 수학식 5가 도출된다.
qm-qm -1-1 가 qm-2의 원분 잉여류에서 가장 작은 원소임이 수학식 4 및 수학식 5로부터 도출된다. 이로 인하여, 원분 잉여류는 {0,1,...,qm-qm -1-2}의 어떤 숫자도 포함하지 않는다.
실시예들에 따르면, 본 섹션은 q=2r인, 의 -부분 공간에 정의되는 RS 코드들에 대한 단순한 복구 스킴을 표현한다. 실시예에 따른 결과는 정리 5.11에 있으며, 모든 짝수 차원 d 및 모든 r≥d-1+log2(d)에 대하여, U에 정의되는 RS 코드가 단순한 복구 스킴을 갖도록, 인 -부분 공간 가 존재하는 것으로 명시된다. 나아가, 무작위로 선택된 부분 공간이 단순한 복구 스킴을 유발시키는 확률은 1-O(1/2r)이다.
일반적으로, 조건 (**)이 성립하는지 체크하기 위하여, 하한이 불충분하므로, 부분체 서브 코드들의 차원에 대한 정확한 수식이 필요로 한다. 이를 위하여, H. Stichtenoth, “the dimension of Subfield Subcodes”6, No. 1, Jan. 1990의 일부 결론들이 후술되는 바와 같이 사용될 것이다. 다음으로, 는 벡터들의 좌표형 연산이다.
명제 5.1 (보조 정리 1, 2 및 Stichtenoth의 결과): q 소수 거듭제곱 및 에 대하여, 는 의 프로베니우스 자기 동형 사상이다. 에 대하여, 는 선형 코드이다. 및 로 쓴다. 그렇다면, 아래와 같다.
이는 명제 5.1의 특수한 경우를 명시적으로 진술하기에 편리할 것이다.
결과 5.2: 명제 5.1의 표기법으로, m=2로 추정한다. 그렇다면, 수학식 6 및 수학식 7이 도출된다.
정리 5.4 (R. Lidl and H. Niederreiter, Finite Fields, Vol. 20 of Encyclopedia of Math. and its Applications, 2nd Ed., CUP, 1997, p. 110의 정리 3.52): K⊂L는 유한체들이다. U⊂L는 K-선형 부분 공간이다. 그렇다면, 는 L에서의 K-선형화된 다항식이다.
이 시점부터, q는 항상 2의 거듭제곱이다. 이제, 의 -벡터 부분 공간에 정의되는 RS 코드들로 넘어간다. 이러한 코드들은 추이적 자기 동형 사상군을 갖는다. 부분 공간 U 및 y∈U에 대하여, 맵 은, U를 순열로 배치하고, 변수 변환 이 다항식의 차수를 증가시키지 않으므로, 맵 은 U에서 정의되는 RS 코드의 자기 동형 사상이다.
U는 의 -부분 공간이고, d:=dim(U)를 설정한다. n:=|U|=2d이고, n':=n-1이다. , 에 대하여, C=C(U,l)는 U의 점들 상에 로부터 차수≤l 의 다항식들을 평가함으로써 획득되는 RS 코드이다. C는 추이적 자기 동형 사상군을 가지므로, O∈U에 상응하는 좌표에 대한 복구 스킴들을 고려하기에 충분하다.
이 시점부터, 실시예들에 따르면, 정리 3.2의 벡터 v가 모든 에 대하여, vu:=1/u로 정의되는 것으로 가정될 것이다. 좌표들은 U의 원소들로 레이블링되는 것으로 가정한다. 이러한 v의 선택으로, 정리 3.2의 행렬H'의 행들은 차수≤l-1의 의 다항식들로부터 비롯되는 다항식 함수들 의 공간에 대한 기저로 간주될 수 있다.
이다. 그렇다면, 정리 5.4에 의하여, 이고, a0≠0 (f는 정의상 분리 가능하므로)이도록 하는, 임의의가 존재한다. 아래와 같이, -대수학의 동형(isomorphism)이 존재한다.
는 정리 3.2의 행렬 H'에 대하여 D':=ker(H')로 정의되며, 벡터 v는 고정되고 모든 에 대하여 vu:=1/u로 정의됨이 상기된다. 이다. 그렇다면, 는 에 대한 기저이다. 이로 인하여, 수학식 8이 도출된다.
유사하게, 는 정리 3.2의 행렬 H'에 대하여, 그리고 고정된 v에 대하여, D'':=ker(H'')로 정의된다. 그렇다면, 는 를 생성하고, (이는 사실, 에 대한 기저: 로 인하여(후술됨), l-1<2d-2 라는 가정은 를 암시한다.) 는 를 생성(span)한다.
보조 정리 5.5: 상술된 표기법으로, l-1≥2d-1-2라면,
증명: 명확하다.
증명: 우선 임의의 s에 대하여 j2=2s인 것으로 추정한다. r:=max{[log2(j1)],s}+1인 경우, r>s 이고 ar=0이도록 로 쓴다. as=0이라면, 명확하게 wt2(j1+j2)=wt2(j1)+wt2(j2)이다. 그렇지 않다면, s'>s는 as'=0과 같이 가장 작다. j2의 이항 전개로부터 단일한 1은, 모든 에 대하여, i∈{s,s+1,...,s'-1}의 이항 전개의 i번째 숫자가 0이고, 이러한 이항 전개의 s'번째 숫자가 1이고, 이러한 전개의 모든 다른 숫자들이 j1의 전개의 숫자들과 같도록, 올림(carry)으로 전달한다. 대체로, 1의 총 개수는 필요에 따라, wt2(j1)+1-(s'-s)=wt2(j1)+wt2(j2)-(s'-s)<wt2(j1)+wt2(j2)이다.
일반적인 경우에, wt2(j2)≥2인 것으로 추정하고, 더 작은 가중치를 가진 모든 j2에 대하여, 주장은 참(assertion true)임을 (j2=0인 경우는 명백하다.) 가정한다. 그렇다면, wt2(j'2)=1 및 wt2(j''2)=wt2(j2)-1 와 함께 j2=j'2+j''2로 쓴다. 그렇다면, 필요에 따라, 아래의 수식과 같다.
비고: 는 를 생성(span)하고, 모든 i∈{0,...,2d-2}에 대하여, wt2(j)≤d-1 임이 명확하다. 이로 인하여, wt2(j)>d-1 이더라도, 생성 집합(spanning set)에서 지수부의 최대 가중치는≤d-1 이다. 그러나, 본 발명의 나머지 부분에서 실제로 필요로 하지 않지만, wt2(j)≤d-1 조건은 이 수학식 9의 우변의 생성 집합에 있지 않음을 명시하는데 필요하다.
명제 5.8의 증명: 우선 wt2(2sj)=wt2(j)이므로, s=0인 가정에서 대부분의 손실이 없다. 실시예들에 따르면, s=0이고, wt2(j)에 대한 유도(induction)에 의하여 진행한다. 기저에 대하여, wt2(j)=1, 즉, 임의의 r에 대하여 j=2r인 것으로 추정한다. 이로 인하여, 모든 r에 대하여 로 나타나며, r에 대한 유도가 사용될 것이다. r<d 라면, 이러한 주장은 명확하다. 그러므로, r≥d 이고, 이도록 하는 가 존재하는 것을 추정한다. 이러한 수식을 제곱하면, 이다. 그러나, 필요에 따라, 이므로, 이다. 이는 wt2(j)에 대한 유도 기저(induction basis)를 설정한다.
유도 단계를 위하여, wt2(j)≥2이고, 주장은 wt2(j')<wt2(j)인 모든 i'에 대하여 참인 것으로 추정한다. j1<...<jw이고 w=wt2(j)≥2인 경우에, j의 이항 전개에 대하여 j=2j1+...+2jw로 쓴다. 그렇다면, 유도 기저에 의하여, 임의의 에 대하여 수학식 10이 도출된다.
두 가지 경우들이 다음과 같이 구별될 수 있다.
이러한 마지막 표현은 보조 정리 5.7에 의하여, 그 자체로 wt2(2i+k)≤1+wt2(k)≤wt2(j)-1 인 형식의 원소들의 -선형 결합이다. 다시 유도 가설을 사용하면, 원하는 결과가 획득된다.
두번째 경우, 모든 il는 구별된다. 가정에 의하여, w=wt2(j)≤d-1및 wt2(2d-1)=d이므로, 이다. 또한, 의 경우에, 수학식 11은 이미 원하는 형식에 있도록 한다.
제2 주장에 대하여, 임의의 에 대하여, 인 것으로 추정한다. 그렇다면, 제1 부분에 의하여 이도록, 이다. 가 선형 독립이므로, 모든 i에 대하여 이고, 그리고 또한 모든 i에 대하여 ai=0이다.
명제 5.10: 앞선 수학식 8 단락들의 용어를 사용한다. U에서 정의되는 RS 코드 C가 코드이도록, 의 -부분 공간U의 차원이 d인 것으로 추정한다. 정리 3.2의 벡터 v가 모든 에 대하여 vu=I/u로 주어진 것으로 추정한다. 또한, 아래의 수식을 만족하는 것으로 추정한다.
그렇다면, 정리 3.2의 C'에 대하여, dim(C')≥2이다.
비고:
1. 약식으로, 이러한 명제는, l≤l0라면, 조건 (**)의 “절반(half)이 차원 d의 임의의 부분 공간에 대하여 만족되는 것으로 명시한다. l0가 d에 의존하나, q에 의존하지 않는다. 예를 들어, 짝수 d에 대하여, 그리고 q2≥2d인 모든 q에 대하여, 명제는 조건(**)의 절반이 길이 n=2d의 코드들 및 에서의 까지의 차원에 대하여 만족되는 것으로 나타난다. 그 결과, 충분히 큰 r에 대하여, “모든” 조건(**)이 임의의 RS 코드들에 대하여 만족된다.
2. 홀수 d에 대하여, 여차원(codimension)은 d+1에 대한 것과 동일하다. 이로 인하여, 홀수 d의 파라미터들은 짝수 차원 d+1에 대하여 설계되는 코드를 단축함으로써 달성될 수 있다. 그러므로, 현재 명제를 제외하고, 짝수 d만이 고려될 것이다.
3. v의 실시예에 따른 선택에 대하여, dim(U)=d인 임의의 부분 공간들 이 존재하며, 이러한 조건 (**)은 성립하지 않는다. 예를 들어, d=q 라면, 조건(**)은 에 대하여 성립하지 않는다. 왜냐하면 체크 행렬에서 로부터의 엔트리들을 갖는 단일한 추가적인 행은 1보다 크게 -차원을 감소시킬 수 없기 때문이다. 유사하게, 조건은 에 대하여 형식의 부분 공간에 대하여 성립하지 않는다.
wt2(i)≤wt2(l-1)인 {1,...,l-1}에서 i의 l-A 값들 각각에 대하여, 는 wt2(j)≤wt2(l-1)인 클래스들 의 선형 결합임이, 명제 5.8로부터 도출된다. 이러한 선형 결합 각각은 j≥l인 최대 B 개의 클래스들 을 포함한다. 이로 인하여, l-A 개 중 최대 B 개까지의 원소들 은 나머지 l-A-B 개의 원소들에서 j≥l인 모든 클래스들 을 소거하는데 사용될 수 있다. 이는 원소들 을 선택함으로써 수행될 수 있으며, j≥l 및 wt2(j)≤wt2(l-1)인 좌표들 로의 원소들의 투영들이, 동일한 좌표들로의 모든 l-A 개의 원소들 의 투영으로 기저를 형성한다. 투영이 B개의 좌표들에 있으므로, 이러한 기저의 원소들의 개수는 최대 B개이다. 이는 수학식 14에 나타나는 교차 지점에서, 적어도 l-A-B 개인 선형 독립 원소들을 유발시킨다. 이로 인하여, l-B-A≥2l+d-2d 라면, 수학식 14는 만족되고, dim(C')≥2이다. 부록 A에서, l=l0에 대하여, 2d-3-l≥A+B가 실제로 성립함이 나타난다. 따라서, l=l0에 대하여, dim(C')≥2이므로, 모든 l≤l0에 대하여 마찬가지로 성립한다.
정리 5.11: d≥4는 짝수이다. q=2r이고, d개의 원소들 x0,...,xd -1은 로부터 균일하고 독립적으로 도시되는 것으로 추정한다. 이다. dim(U)=d 라면, U에서 정의되는 RS 코드 C가 코드이도록, l=l0=2d-2d/2-1인 것으로 추정한다. 벡터 v는 모든 에 대하여 vu=1/u로 주어지는 것으로 추정한다. 그렇다면, dim(U)=d 및 조건 (**)성립하는 확률은 적어도 이고, r≥d-1+log2(d)인 경우에 양수이다.
비고 5.12:
1. r=d/2의 경우는 상술한 정리 4.1의 특수한 경우이다.
2. 일부 예시들(후술됨)은 결과가 모든 r≥d/2에 대하여 성립하여야 하며, “훌륭한” 부분 공간 U를 도시하는 확률이 정리에서 보다 훨씬 높다는 것을 제안하는 것으로 나타난다.
3. d=4인 경우, 정리는 모든 r≥5에 대하여 훌륭한 부분 공간의 존재를 증명하고, 정리 4.1은 r=2인 경우를 포함한다. r=3,4인 두 개의 나머지 경우들이 아래의 예시들에서 고려되므로, d=4인 경우, r≥d/2에 대하여 훌륭한 부분 공간이 존재하는 것으로 나타날 수 있다.
이러한 정리를 증명하기 전에, 일부 예비적인 결과들이 요구된다.
명제 5.13: 명제 5.10의 용어를 사용하고, 계속해서 벡터v는 모든 에 대하여 vu=1/u로 주어지는 것으로 가정을 한다. l-1≥2d-1-2은, d≥2라면, l=l0인 경우에 성립하는 것으로 추정한다. 그렇다면, U에서 정의되는 RS 코드에 대한 조건 (**)은 아래의 조건과 동일하다. 모든 에 대하여, 이거나, 수학식 16 및 수학식 17과 동일하다.
증명: 결과 5.2의 수학식 6에 의하여,
정의 5.14: (숫자들 ij) d는 짝수로 가정됨을 상기하고, wt2(i)=d-1 인 숫자들 i∈{0,...,2d-2}는 j∈{0,...,d-1}인 경우에 형식 2d-1-2j의 숫자들 i이다. 이로 인하여, 이러한 숫자들 d가 있고, 그것들의 d/2-1은 <l0=2d-2d/2-1 이고, 즉, j∈{d/2+1,...,d-1}인 경우의 것들이다. 상술된 범위의 j에 대하여, 2d-1-1=i0<i1<...<id-1=2d-2 가 wt2(i)=d-1 인 모든 숫자들 i∈{0,...,2d-2}이도록, 그리고 i0,...,id/2-2는 wt2(i)=d-1 인 모든 숫자들 i∈{0,...,l0-1}이도록, ij:=2d-1-2d-1-j로 쓴다.
Mr의 열 각각은 i=2d-2이거나 i<l0이고 wt2(i)=d-1인, 임의의 i에 대하여 에 상응하는 계수들의 일부를 포함하고, 열 각각에 나타나는 계수들은 wt2(j)=d-1인 모든 기저 원소들 에 상응한다.
증명: 수학식 16 및 수학식 17의 조건들이 아래와 같이 쓰여질 수 있음이 관찰된다.
상술한 (i)을 고려하면, 명제 5.8에 의하여, 가 형식의 합으로 나타난다면, wt2(i)=d-1인 적어도 하나의 βi가 0이 아니어야 한다. 게다가, 동일한 명제에 의하여, wt2(i)=d-1인 형식의 원소들만이 wt2(j)=d-1인 j∈{l0,...,2d-3}에 대하여, 좌표들 로의 투영에 기여할 수 있다. 이로 인하여, 상술된 좌표들로, wt2(i)=d-1인 i∈{1,...,l0-1}에 대하여, 의 투영들이 -선형 독립이라면, (i)는 성립하여야 한다. 다시 말해서, 의 마지막 d/2-1열들의 선형 독립은 (i)에 대하여 충분하다.
유사하게, 명제 5.8에 의하여, wt2(j)=d-1인 j∈{l0,...,2d-3}에 대하여, 좌표들 로 의 투영이 동일한 좌표들로, wt2(i)=d-1인 i∈{1,...,l0-1}에 대하여, 의 투영들의 공간에 있지 않다면, (ii)는 성립하여야 하며, 명제 5.8에 의하여, wt2(j)=d-1인 좌표들j만 고려되므로, wt2(i)=d-1인 i들만이 고려될 필요가 있다. 다른 i들에 대하여, 는 명제에 의하여, 상술된 좌표들로 0점 투영을 갖는다. 이는 라면, 필요에 따라, (i) 및 (ii) 모두 성립하는 것으로 나타난다.
는 표준 준동형 사상(canonical homomorphism) 로 다시 정의된다. 는 일대일 사상(injection)이며, 로부터 도출되므로, 는 의 부분환(subring)으로 여겨질 수 있다. 게다가, 는 기저를 갖는 자유 -모듈이다. 는 -모듈로 를 생성하는데, 왜냐하면 에서 의 계수는 하나의 단위이기 때문이다.
정의 5.17: (행렬 및 ) 정수 r에 대하여, 아래와 같이, 행렬들 및 가 정의된다. 행렬 은 수학식 18의 우변으로 정의되며, 현재 는 의 유일한 다항식들이다. 행렬 는 의 마지막 d/2 행들로 정의된다. 보조 정리 B.1에 의하여, -부분 공간 에 대하여, 가 라면, 이고 이다. 따라서, 이다.
보조 정리 5.18: (업데이트 보조 정리) 아래와 같이 쓴다.
증명: 아래의 수식이 성립한다.
명제 5.8로부터, 인 j들만 인 k에 대하여 에 기여할 수 있다. 합 에서, 오직 이러한j, 즉 가 존재한다. 합 에서, 관련된 j들은 정의 5.14로부터, 에 대하여, 형식에 대한 것들이다. 이로 인하여, 부분 합
현재, 수식은 아래와 같다.
에서 를 얻도록 치환한다. 다시 한번, 인 그것들의 지수부들만이 인 k에 대하여 에 기여할 수 있고, 유지되어야 한다. 에 대하여, 의 이진 표현은 정확히 두개의 0들 ( 및 의 계수들)을 갖고, 도 인 경우에 한하여, 마찬가지이다. 인 k에 대하여 에 대한 모든 기여분들은 아래의 수식으로 나타남이 도출된다.
이것으로 증명에 대한 결론이 내려진다.
이고, 특히, 숫자 행들에 0,1,…를 사용하면, 행들의 번호 d/2-1,…,d-2는 0이고, 아래와 같다.
비고 5.21: 특성 2의 환에서 엔트리들을 갖는 행렬들에 대하여, 특히, 에서, 모든 에 대하여, 가 정의될 때마다 가 성립한다. 이러한 사실은 더 후술됨이 없이 사용될 것이다. 또한, 특성 2의 경우에, 정사각 행렬M에 대하여, 이다.
보조 정리 5.22: 수학식 20이 성립한다.
따라서, 수학식 22가 성립한다.
보조 정리 5.23의 증명: 수학식 20은 의 정의로부터 직접 도출되며, 수학식 21은 유도에 의하여 보조 정리 5.18로부터 도출된다. 결국, 수학식 22는 수학식 21 및 의 마지막 d/2 행들과 같은 의 정의로부터 도출된다.
증명: 우선, r에 대한 유도에 의하여, 는 0 다항식이 아님이 증명될 것이다. 기저에 대하여, 인 경우가 고려된다. 는 좌측으로 순환 쉬프트하는 연산자를 나타낸다. 이로 인하여, 이라면, 는 좌측으로 순환 쉬프트하는 연산자를 나타낸다. 그러므로, 는 아래와 같이 주어진다.
현재, 0, 1, …를 사용하여 행들의 인덱스를 지정하면, 아래와 같다.
행들을 순환적으로 쉬프트하는 것은 수학식 25와 같은 행렬을 유발시킨다.
또한, 상술한 합에서 제1 행렬식은 와 같고, 그러므로 유도 가설에 의하여 0이 아니다. 게다가, 제1 피가수(summand) ()는 가 홀수 차수에서 나타날 수 있는 유일한 것이다. 그리고, 제1 행렬식이 0이 아니고 는 짝수 차수에서 모두 이것의 단항식들로 나타나므로, 제1 피가수는 -차수가 홀수인 단항식들을 포함하여야 한다. 이러한 단항식들은, -차수가 본질적으로 짝수인, 제2 행렬식에서 단항식들에 의하여 소거될 수 없으므로, 이도록, 로 결론이 내려질 수 있다. 이는 모든 에 대하여, 인 것으로 증명을 완전하게 한다.
총 차수에 대한 주장에 대하여, 우선 수학식 22, A에서의 모든 다항식들이 1 또는 임의의 라는 사실, 및 총 차수의 덧셈을 결합함으로써, 의 엔트리 각각의 총 차수가 최대 임이 나타날 수 있다. 행렬의 행렬식이 d/2 엔트리들의 곱들의 합이므로, 필요에 따라, 임이 도출된다.
정리 5.11은 이에 현재 증명될 수 있다.
에 대하여 로 표현될 수 있다. 게다가, 가 -선형 독립인 것으로 가정하고, 그것들이 생성(span)하는 부분 공간에 대한 U를 쓰면, 의 계수들 은 에서, 각각, 에 대한 총 차수들의 다항식들에서 로 치환함으로써 획득된다. 인 에서 를 의 이러한 다항식들로 치환하는 것은 최대 수학식 26과 같은 총 차수의 다항식 을 유발시킨다.
이전 수학식의 타당성을 보기 위하여, u로 나타나는 단항식 이 선택된다. 그렇다면, 정의상, 이다. 를 로 치환하고, 를 사용하면, 치환 후의 총 차수가 보다 크지 않다는 것이 명확하다.
로 쓴다. 실시예에 따르면, 는 에서 0이 아님이 나타난다. 이는 Schwartz-Zippel 보조 정리와 함께 달성될 것이며, Schwartz-Zippel 보조 정리는 가 0이 아니고 총 차수 를 갖고 (K는 임의의 체(field)이고, 이고, 이다.), 가 유한 집합이라면, 인 경우에 의 개수는 최대 인 것으로 명시한다. 그러나, 우선 임을 보여줄 필요가 있다. 는 명백하게 0이 아니므로, 오직 임을 보여주면 된다. 가 에서 0 다항식이라면, 의 임의의 확대체K에 대하여, 그리고 K의 임의의 d-차원의 -부분 공간 U에 대하여, 에서 를 로부터 비롯된 로 치환한 결과는 이다. 인 는 2의 임의의 거듭제곱인 것으로 추정한다. 구별된 부분 공간들이 구별된 벡터들을 유발시키면, 이는 0이 아닌 다항식 가 적어도 아래 수식의 영점들을 갖는다는 것을 의미한다.
그러나, 이고 이므로, 에서 의 영점들의 개수가 최대 이며, 이는 고정된 d 및 q에 대하여 에 있다는 것이, Schwartz-Zippel 보조 정리로부터 도출된다. 이므로, 충분히 큰 Q에 대하여 모순이 획득된다. 이는 인 것으로 나타난다.
6. d=4인 경우 및 추가적인 예시들
이는, 가 의 자유 계수이며, (*)는 정의상, 이므로, 인 것이 보조 정리 5.18로부터 도출됨이 상기된다. 아래의 예시들에서, 단순화된 표기법 은 를 위하여 사용될 것이다. 이러한 표기법으로, 인 경우에 한하여 임이 수학식 27로 부터 도출된다. 명제 5.16에 의하여, 이는 부분 공간U에서 정의되는 RS 코드에 대한 단순한 복구 스킴을 위한 충분한 조건이다.
예시 6.1: -선형화된 다항식가 고려된다. 이러한 다항식이 에서 갈라지는 것은 직접적인 치환에 의하여 입증될 수 있다. 이로 인하여, 인 경우에, 에서 f의 제곱근의 집합U는 -부분 공간이다. 또한, 상술된 표기법으로, , , 및 이도록 하는, 가 직접 입증될 수 있고, 임이 도출된다. 이로 인하여, 조건(**)이 성립하고, U에서 정의되는 RS 코드는 단순한 복구 스킴을 갖는다.
예시 6.2: r=4인 경우가 고려되고, 로써 로 표현되고, 는 X의 이미지이다. 는 의 원시 원소인 것으로 입증될 수 있다. 에 의하여 생성(span)되는 -부분 공간U 및 U에서 정의되는 RS 코드 C가 고려된다. 임의의 컴퓨터 대수학 소프트웨어를 사용하면, , , , 및 가 입증될 수 있다. 이로 인하여, C는 단순한 복구 스킴을 갖는다. 이를 나타내는 대체적인 방법은, 직접적으로 말하자면 가우시안 소거법(Gaussian elimination)에 의한, 조건(**)에 포함된 차원들을 계산하는 것이다.
C는 로 단축된 RS코드를 획득하도록 단축될 수 있다. 이러한 단축된 코드를 위하여, 임의의 단일한 소거된 좌표를 복구하는 것은 나머지 좌표들로부터 총 비트들만을 읽는 것을 요구한다. Facebook HDFS 코드에 대하여, 최상의 존재하는 복구 스킴들에서, 단일한 소거된 좌표를 복구하는 것은, 소거되지 않는 좌표들로부터, 소거된 좌표에 의존하여, 총 64 또는 60비트들을 읽는 것을 요구한다.
예시 6.3: 인 의 경우들은 유사한 방식으로 고려될 수 있다. 아래의 표 1은 상술된 설명과 관련된 계수들뿐만 아니라, 각각에 대한 의 원시 원소 의 극소 다항식(minimal polynomial)을 나타낸다. 모든 경우들에서, U는 에 의하여 생성된 -부분 공간이다. 이는 모든 경우들에서 인 것으로 나타날 수 있고, 이로 인하여, U에서 정의되는 RS 코드는 단순한 복구 스킴을 갖는다.
예시 6.4: 이러한 예시는 차원 d=6의 경우를 고려한다. 이도록, 이고, U는 에 의하여 생성된 -부분 공간이며, 는 예시 6.2와 같다. 그렇다면, 가우시안 소거법에 의하여, 조건(**)가 에 대하여 성립함이 입증될 수 있다. 이는 단순한 -선형 복구 스킴을 갖는 RS 코드를 제공한다.7. 차수>2의 확대
이전의 섹션들에 주어진 증명들이 차수 2의 확대들의 경우만을 고려하는 반면, 아래의 일부 구체적인 예시들은 차수 m>2의 확대들로 작업이 또한 가능함을 나타낸다. 이러한 경우에, m으로 나누어질 수 있는 차수d의 -부분 공간가 고려된다. 아래의 예시들에서 설명되는 바와 같이, 평가 집합U를 갖는 차원k의 RS 코드가, 인 한, 단순한 -선형 복구 스킴을 갖도록, 상술된 부분 공간U를 선택하는 것이 많은 경우들에서 가능하다. 이러한 경우에, 단일한 좌표가 소거된다면, 소거되지 않은 좌표들 각각이 이의 내용의 1/m만을 전송하여 소거된 좌표를 재건하여야 함이 상기된다.
예시 7.1: 체(field) 는 로 표현되고, 는 X의 이미지이다. 그렇다면, 가 원시 원소임이 입증될 수 있다. 는 의 -공간(span)이다. 그렇다면, 이다. 인, 의 부분체 가 고려된다. 그렇다면, 가우시안 소거법에 의하여, 조건(**)이 U에서 정의되는 차원 의 RS 코드에 대하여 성립함이 입증될 수 있다. 이는 단순한 -선형 복구 스킴을 갖는 RS 코드를 제공한다. 단일한 좌표가 소거된다면, 소거되지 않는 좌표 각각은, 소거된 좌표를 복구하기 위하여, 3비트들, 즉, 이것의 내용의 1/4만 전송하여야 한다.
예시 7.2: 이전의 예시에서 표현된 체(field) 에 대하여, 에 대한 부분체 가 고려된다. 는 인, 의 -공간이다. 그렇다면, 가우시안 소거법에 의하여, 조건(**)이 U에서 정의되는 차원 의 RS 코드에 대하여 성립함이 입증될 수 있다. 이는 단순한 -선형 복구 스킴을 갖는 RS 코드를 제공한다. 단일한 좌표가 소거된다면, 소거되지 않는 좌표 각각은, 소거된 좌표를 복구하기 위하여, 4비트들, 즉 이것의 내용의 1/3만 전송하여야 한다.
예시 7.3: 체(field) 는 로 표현되고, 는 X의 이미지이다. 그렇다면, 는 원시 원소인 것으로 입증될 수 있다. 는 의 -공간이다. 그렇다면, 이다. 확대 차수 m=3인, 의 부분체 가 고려된다. 그렇다면, 가우시안 소거법에 의하여, 조건(**)이 U에서 정의되는 차원 의 RS 코드에 대하여 성립함이 입증될 수 있다. 이는 단순한 -선형 복구 스킴을 갖는 RS 코드를 제공한다. 단일한 좌표가 소거된다면, 소거되지 않은 좌표 각각은, 소거된 좌표를 복구하기 위하여, 3비트들, 즉, 이것의 내용의 1/3만 전송하여야 한다.
8. RS 코드들에 대한 낮은-대역폭 복구 알고리즘
본 발명의 실시예에 따른 복구 알고리즘은 두개의 부분들, 즉 오프라인 전처리부 및 온라인부를 포함한다. 오프라인부에서, 온라인부에 의하여 사용되는 다양한 블록들이 준비된다. 온라인부에서, 데이터는 오프라인부에서 구성되는 RS 코드를 사용하여 인코딩되고, 소거들은 필요하다면 디코딩된다.
단일한 소거가 존재한다면, 오프라인부에서 구성된 블록들을 사용하여, 단일한 소거된 좌표가, 소거되지 않은 좌표들의 내용의 작은 일부만이 소거된 좌표를 재건하기 위하여 전송된다는 점에서, 낮은 복구 대역폭으로 정정될 수 있다. “작은 일부”는 아래에서 정의될 것이다.
두 개 이상의 소거들이 존재한다면, RS 코드들에 대한 표준 소거-디코딩 기술들이 사용되고, 복구 대역폭에 어떠한 이득도 존재하지 않는다. 그러나, 단일한 소거들이 다수의 소거들보다 실행시에 훨씬 더 일반적이므로, 단일한 소거의 경우에 대하여 낮은-대역폭 복구들을 지원하는 것에 관심을 갖는다.
다음으로, 아래에서 정의되는 체(field) E에 대하여, 는 n-1개의 벡터이고, 는 n-1개의 0들을 갖는 벡터이고, 는 벡터 및 행렬 이항을 나타낸다. 게다가, 체(field) L, 부분 집합 , 및 양수 에 대하여, 평가 집합 I 및 차원 k를 갖는 RS 코드는, I의 점들 상에 k-1까지의 차수의 모든 다항식들 을 평가함으로써, 획득되는 에서 길이의 벡터들의 집합으로 정의된다. 명시적으로, 인 경우에 이고, 상술된 RS 코드는 로 정의된다. 게다가, 실시예에 따른 스트라이프는 까지의 정보 심볼들 및 까지의 패리티 심볼들을 가질 수 있으며, d, m은 위에서 정의되는 바와 같다. 예를 들어, d=4이고 m=2인 경우, 12개까지의 정보 심볼들 및 4개까지의 패리티 심볼들이 존재할 수 있다.
오프라인부
실시예에 따른 알고리즘의 오프라인부의 입력들은 아래과 같다.
이도록, 원시 원소 이고 상에서 극소 다항식. 이다. 이것들이 의 두 개의 동형 복제들(isomorphic copies)이므로, 이다. 게다가, 는 에서 다항식X의 이미지, 즉 이다.
m으로 나누어질 수 있는 상에서의 차원에 있어서, 양의 정수 . 실시예들에 따라 구성된 코드들의 길이 n은 이고, 그것들의 최대로 가능한 차원은 , 즉, k까지의 정보 심볼들 및 까지의 패리티 심볼들을 가질 수 있으며, d, m은 위에서 정의된 바와 같다. 예를 들어, d=4이고 m=2인 경우, 12개까지의 정보 심볼들 및 4개까지의 패리티 심볼들이 존재할 수 있다.
실시예들에 따른 알고리즘의 오프라인부의 출력들은 아래와 같다.
인, 즉, 인 -벡터 부분 공간 , 이는 구성된 RS 코드를 위한 평가 집합일 것이다. 실시예에 따르면, V는 이것의 n개의 원소들을 명시함으로써 주어지며, 아래와 같이 편의상 열거될 것이다. 이며, 는 E의 원소들이다.
상술된 바와 같이 정의되는 입력들 및 출력들로, 실시예에 따른 알고리즘의 오프라인부는 도 1a 및 도 1b의 순서도의 단계들을 참조하여 후술된다. 순서도는 도 1a부터 시작한다.
101 단계: 에 대하여, 이고, 이다. 또는, 다른 실시예들에 따르면, 는 E에서 -독립 원소들의 랜덤 집합일 수 있다. 이러한 랜덤 집합은, d개의 도시된 원소들이 실제로 선형 독립일 때까지, d개의 원소들을 연이어 도시함으로써, 획득될 수 있다.
106 단계: 및 를 계산하며, 패리티-체크 행렬 H'를 갖는 코드의 F-부분체 서브 코드 이고, 패리티-체크 행렬 H''를 갖는 코드의 F-부분체 서브 코드 이다. 실시예들에 따르면, 이러한 두개의 차원들이 예를 들어, 가우시안 소거법에 의하여 발견될 수 있다. 실시예에 따르면, 는 아래와 같이 계산될 수 있다. 우선, E/F의 임의의 기저에 따른, 계수들의 길이m의 열 벡터에 의하여, H'의 엔트리 각각이 대체된다. 이는 F에서 엔트리들을 갖는 행렬을 유발시킨다. 이러한 마지막 행렬로 가우시안 소거법을 수행한 후, a가 0이 아닌 행들의 개수이면, 이다.
107 단계: 인지 체크한다. 이라면, 다음 단계를 계속한다. 그렇지 않으면, 본질적으로 인 경우에, 는, 임의의 이전의 그림으로부터 독립적으로 도시된, E에서 -독립 원소들의 새로운 랜덤 집합이고, 102 단계로 돌아간다.
108 단계: 벡터 공간 V를 출력한다.
순서도는 도 1b에서 계속된다.
이러한 단계에서, 실시예에 따르면, 벡터 의 m개의 원소들은 F상에서의 선형 독립이고, 이로 인하여 F상에서 E에 대한 기저를 구성한다. 실시예에 따른 알고리즘의 오프라인부는 아래와 같이 계속된다.
111 단계: 는 트레이스 맵 에 관한 의 쌍대 기저이고, 가 출력된다. 상술된 정의 2.1에서 정의되는 트레이스 맵 은 로 동등하게 정의된다. E/F의 기저 에 대하여, 쌍대 기저는 모든 i, j에 대하여, 를 만족하는 집합 이다.
113 단계: 단위 행렬이 로 나타나는 행렬 을 발견한다. 실시예에 따르면, 이러한 행렬은 예를 들어, 가우시안 소거법에 의하여 발견될 수 있다. 은 에서 단위 행렬을 지원하는 인덱스들을 갖는 T의 r개의 행들이다. M이 출력된다.
114 단계: 110 단계로부터 행렬 A의 엔트리 각각이 상에서의 E의 기저에 따른 에서의 열 벡터이고, 는 A의 엔트리 aij 각각을 로 대체함으로써 획득되는 행렬이며, 에서의 이러한 마지막 열 벡터는 상에서의 F'의 기저에 따른 F'의 원소의 표현이다. A'가 출력된다.
온라인부
실시예들에 따르면, 온라인 동작 동안, 입력되는 메시지들은 인코딩되고 개개의 신뢰할 수 없는 스토리지 노드들에 저장된다. 하나 이상의 노드들이 페일되고 이의 데이터가 소거됨이 발견되는 경우, 소거-정정 알고리즘들은 소거된 데이터를 복원하는데 사용된다. 단일한 노드의 페일의 일반적인 경우에, 본 발명의 실시예들에 따른 알고리즘들이 사용될 수 있다. 그렇지 않으면, 하나보다 많은 노드가 페일된다면, RS 코드들에 대한 표준 소거-정정 방법들이 사용될 수 있다.
실시예들에 따르면, 체계적 인코딩 알고리즘이 나타나는데, 이것이 실행시에 가장 많이 사용되기 때문이다. 그러나, 다른 실시예들에 따른 단일한-소거-디코딩 알고리즘들이 체계적 인코딩에 제한되지 않고, 생성 행렬 을 갖는 코드 에 대한 임의의 인코딩이 사용될 수 있다. 예를 들어, 도 1의 105 단계로부터 생성 행렬 G가 사용될 수 있다.
i 체계적 인코딩
알고리즘: y = (y 0 , ??, y n-1 ) := ( x | x G 1 )가 출력되며, G1이 실시예에 따른 오프라인 단계에서 획득된다.
ii. 단일한-소거 디코딩
실시예들에 따르면, y의 엔트리들이, 로 레이블링된, n개의 다른 스토리지 노드들에 저장된다. 명백하게 하나의 노드 가 페일된다면, 실시예에 따른 아래의 알고리즘은 를 복원하기 위하여 사용될 수 있다. 후술되는 바와 같이, 실시예에 따른 알고리즘은 컨트롤러 U 및 n-1개의 살아남은 각각의 노드들 모두에 의하여 수행될 수 있다.
실시예에 따른 단일한-소거 디코딩 알고리즘의 온라인부의 입력들은 페일된 노드 인덱스 이다. U는 페일된 노드 인덱스 를 예를 들어, 주기적으로 노드들을 스캐닝하고 그들의 상태를 체크함으로써 학습할 수 있다.
스토리지 노드 각각은 길이 n-1의 다른 벡터를 저장할 수 있고, 이는 노드 i에 대하여 w(i)로 불리어진다. w(i)의 j번째 엔트리는, i를 제외한 모든 노드들의 기정의된 열거에서, 번째 페일된 노드를 재건하는 과정에서 노드i에 의하여 사용된다. 이러한 셋업에서, 컨트롤러는 페일된 노드의 인덱스 를 살아남은 노드 i에 전송할 수 있고, 이후 노드 i는 에 대하여, w(i)에 이것의 내용을 곱한다. 그리고, 이러한 결과의 트레이스를 남기고, 결과를 간이한 표현으로 변환하고, 간이한 표현을 컨트롤러에 전송한다. 노드 i에 의하여 사용되는 벡터w(i) 는 n-1개의 원소들을 갖고, 벡터v의 모든 다른 순열들이며, 이의 엔트리들은 평가 집합에서 0이 아닌 원소들의 역원들(inverses)이다. 더욱이, w(i)는 다른 노드들 i들과 전형적으로 다르다.
상술된 바와 같이 정의되는 입력들 및 출력들로, 실시예에 따른 알고리즘의 온라인부는 도 2의 순서도의 단계들을 참조하여 후술된다.
21 단계: U는 살아남은 노드의 식별자들의 순열을 모든 살아남은 노드들에 전송한다. 실시예에 따르면, U는 아래와 같이, 작업을 인덱스 0을 갖는 패일된 노드를 정정하는 동등한 작업으로 감소시킨다. 모든 에 대하여, U는 이도록, 에서의 고유 인덱스로 j'를 계산하고, j'를 노드 i에 전송한다. 또는, U는 소거된 노드의 인덱스 를 살아남은 노드 i 각각에 전송하고, 노드 i는 상술한 바와 같이, j'자체를 계산한다.
22 단계: 살아남은 노드 각각은 아래와 같이, 재건을 위하여 요구되는 이것의 내용의 일부를 추출한다. 모든 에 대하여, 노드 i는 를 계산한다. 는 내부의 의 동형 복제내에 있고, 그러므로 mr 비트들 대신에, r 비트들로 표현될 수 있다.
23 단계: 살아남은 노드 i 각각은 를 r 비트 표현 로 변환함으로써, 이의 내용의 사이즈를 감소시킨다. 실시예들에 따르면, 이를 수행하기 위한 여러 가능한 방법들이 존재한다. 예를 들어,
2. 의 원소들이 상에서의 의 기저에 따른 에서의 비트들의 길이mr인 벡터들로 표현된다면, 는 에서 이진 열 벡터로 간주될 수 있다. 이러한 경우에, 실시예에 따른 오프라인 전처리 단계에서 계산되는 행렬은 를 획득하기 위하여 사용될 수 있다. 실시예에 따르면, 이러한 선택은 아래에서 가정될 것이나, 실시예들은 이에 제한되지 않는다.
3. U는 E에서 의 원소들을 임베딩하여 벡터 를 획득한다. 실시예에 따르면, 이를 수행하는 하나의 가능한 방법은 아래와 같은 실시예에 따른 오프라인 단계에서 계산되는 행렬 을 사용하는 것이다. t의 좌표 각각이 상에서의 F'의 기저 에 따른 길이 r인 이진 열 벡터로 표현된다면, U는 에 대한 를 계산할 수 있고, 를 출력할 수 있다. 그렇다면, w의 엔트리 각각은 기저 에 따른, E의 원소의 벡터 표현이다. (33 단계)
25 단계: U는 재건된 데이터 심볼 y i .을 출력한다.
페일된 노드가 일시적 페일이라면, 노드 에 값을 다시 저장하는 것만이 가능하다. 실시예들에 따르면, 노드가 손실된 것으로 간주된다면, 재건된 데이터는 다른 노드에 저장될 수 있다. 다른 실시예들에 따르면, 재건된 데이터는 절대 다시 저장되지 않으나, 오히려 다시 계산(소거 디코딩)되고, 사용자가 페일된 노드에 저장된 데이터에 접근하기 원할 때마다 사용자에게 전송된다. 이러한 경우에, 사용자가 데이터에 접근하기 원할 때마다, 요구된 손실된 블록보다 훨씬 많은 데이터가 재건을 위하여 페일되지 않은 노드들로부터 읽혀져야 한다.
또는, 본 발명의 다른 실시예들에 따르면, 22 단계 및 23 단계의 전체 동작은, 원소들을 표현하기 위하여 사용되는 상에서의 의 기저에 의존하여, 미리 계산될 수 있는 이진 행렬 로 표현될 수 있다. 상세하게, “전체” 행렬들 이 미리 계산될 수 있고, 현재 22 단계 및 23 단계 대신에, 노드 j가, 상술된 기저에 따른 길이 mr인 이진 벡터로 간주되는 이것의 내용을, 요구된 길이 r인 이진 벡터 를 획득하기 위한 이진 행렬 과 곱하는, 단일한 결합된 단계가 사용된다.
본 발명의 다른 실시예들에서, 벡터 v를 저장하고 상술된 21 단계에 의하여 정의되는 j'에 대한 이것의 j'번째 엔트리 v j ' 를 사용하는 대신에, 노드 i가, i에 의존하여, 다른 벡터 w(i)를 저장하고, 인 경우에 이것의 번째 엔트리를 사용하는 다른 방법을 사용하는 것이 가능하다. 대체 실시예에서, 모든 노드는 벡터 v를 저장한다. 노드 가 페일되는 경우, 컨트롤러는 모든 인, 살아남은 노드 i에 “노드 가 페일되었고, 스스로 j'를 계산하라”라고 알린다. 그러면, 살아남은 노드 각각은, 이것의 자체 인덱스i 및 페일된 노드 인덱스 에 의존하여, 상술된 공식을 사용함으로써, j'를 계산하고, 이전과 같이 를 사용한다. 다른 대체 실시예에서, 노드 i가 j'를 계산하는 대신에, v의 오른쪽 순열이 미리 계산되고 저장된다. 이것의 제1 엔트리는 노드 0이 페일되는 경우에 사용되어야 하는 엔트리이고, … 이것의 (i-1)번째 엔트리는 노드 i-1이 페일되는 경우에 사용되어야 하는 엔트리이고, 이것의 (i+1)번째 엔트리는 노드 i+1이 페일되는 경우에 사용되어야 하는 엔트리이다. 명시적으로, 모든 에 대하여, 가 정의되며, 는 위에서 정의되었고, j'는 상술된 바와 같다. = 0, i-1, i+ 1,... n인 경우에, 그것이 해야 하는 것처럼, = 0, ... n -1가 성립한다. n = 2 d 개의 다른 벡터들 w(i)가 각각의 노드당 하나씩 존재한다. 이러한 벡터들은 오프라인 단계에서 미리 계산되고, n개의 노드들 각각에 저장된다. 즉, w(i)는 모든 i에 대하여 노드 i에 저장된다. 일부 경우들에서, 이는 유리한 방법일 수 있는데, 이는 컨트롤러 및 살아남은 노드들 모두에 의한 온라인의 순열 계산을 피할 수 있기 때문이다.
그러나, 실시예에 따른 알고리즘이 컨트롤러 U에 의하여 n-1개의 생존 노드들에 수행되는 상술된 시나리오는 예시적이고 제한되지 않고, 이러한 상황은 실제 실행시와 다를 수 있음이 이해될 것이다. 예를 들어, 하나의 노드는 인코딩 및 재건 과정들을 통합하나, 그것들을 실제로 수행하지 않거나, 인코딩/재건의 일부만을 수행하는 것이 가능하다.
예를 들어, Apache Software Foundation에 의하여 개발된 분산된 파일 시스템인 HDFS(Hadoop File System)에서, 아래와 같이 엉성하게 작업하는 HDFS RAID(RAID는 Redundant Array of Independent Disks를 나타내고, 전형적으로 소거 코딩과 관련된다.)로 불리우는 모듈이 존재한다. HDFS RAID에서, 소거 코딩과 관련된 인코딩과 디코딩을 통합하는 RaidNode로 불리우는 노드가 존재하나 그것들을 실제로 수행할 필요가 없다.
인코딩을 위하여, RaidNode는 소거 인코딩되어야 하는 모든 경로들을 주기적으로 스캔하고, 최근에 변경되지 않은 충분히 큰 파일들을 선택한다. 일단 RaidNode가 소스 파일을 선택하면, 모든 이것의 스트라이프들에 걸쳐 반복하고, 스트라이프 각각에 대한 적절한 수의 패리티 블록들을 생성한다. 패리티 블록들의 실제의 계산은 RaidNode에서 로컬로 수행되거나(“LocalRaidNode”), 다른 머신들에 분산될 수 있다(“DistributedRaidNode”. LocalRaidNode 구성은 본 발명에서 설명되는 것과 유사하다.
디코딩의 하나의 경우를 위하여, RaidNode에서 운영하는 프로그램, BlockFixer는 모든 관련 경로들의 상태를 주기적으로 검사한다. 손실 또는 손상된 블록들을 갖는 파일이 발생되는 경우, 이러한 블록들은 살아남은 노드들로부터의 데이터의 충분한 양의 (가로) 읽기 후에 디코딩된다. 다시 한번, 손실된 블록들의 실제 계산이 RaidNode에서 로컬로 수행되거나(“LocalRaidNode”), 하나 이상의 다른 머신들에 분산될 수 있다(“DistributedRaidNode”. 본 발명의 실시예들은 분산된 경우에 통합될 수 있다.
상술된 디코딩은 주기적인 스캔의 결과이다. 또한, 사용자 (“클라이언트”) 스스로 파일을 읽으려 하는 경우 소거들이 있음을 발견하는 경우가 있음이 상기된다. HDFS RAID에서, 클라이언트는 DRFS(Distributed RAID File System) 클라이언트 소프트웨어를 실행하며, 이는 로컬로 이러한 소거된 블록들을 재건할 수 있고, “U”와 같이 동작한다. 이러한 경우에, 클라이언트는 재건된 블록들을 다시 저장하지 않으며, 이러한 재건된 블록들은 상위 계층들에 전송되고, 버려진다. 이러한 경우에, 클라이언트는 파일이 읽혀질 때마다 손실된 블록들을 다시 계산하여야 한다.
9. 시스템 구현들
본 발명의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 전용 프로세스들, 또는 이의 조합의 다양한 형식들로 구현될 수 있음이 이해될 것이다. 일 실시예에서, 본 발명은 ASIC(application-specific integrated circuit) 또는 FPGA(field programmable gate array)로 하드웨어로 구현될 수 있다. 다른 실시예에서, 본 발명은 컴퓨터 판독 가능 프로그램 스토리지 장치에서 구현되는 유형의 어플리케이션 프로그램으로 소프트웨어로 구현될 수 있다. 어플리케이션 프로그램은 임의의 적절한 아키텍처를 포함하는 머신에 업로드될 수 있고, 이에 의해 실행될 수 있다.
도 4는 본 발명의 실시예에 따른 손상된 RS 코드들을 복구하기 위한 시스템에 대한 블록도이다. 현재 도 4를 참조하면, 본 발명을 구현하기 위한 컴퓨터 시스템(41)은, 그 중에서도 특히, 중앙 처리 장치(central processing unit, CPU) 또는 컨트롤러(42), 메모리(43), 및 입출력(I/O) 인터페이스(44)를 포함한다. 컴퓨터 시스템(41)은 일반적으로 입출력 인터페이스(44)를 통하여 디스플레이(45) 및 마우스 및 키보드와 같은 다양한 입력 장치들(46)과 결합된다. 지원 회로들은 캐시, 파워 서플라이들, 클럭 회로들, 및 통신 버스와 같은 회로들을 포함할 수 있다. 메모리(43)는 RAM(random access memory), ROM(read only memory), 디스크 드라이브, 테이프 드라이브 등, 또는 이의 조합들을 포함할 수 있다. 본 발명은 메모리(43)에 저장되는 루틴(47)으로 구현될 수 있고, CPU 또는 컨트롤러(42)에 의하여 실행되어 신호 소스(48)로부터의 신호를 처리할 수 있다. 이와 같이, 컴퓨터 시스템(41)은 본 발명의 루틴(47)을 실행할 때 전용 컴퓨터 시스템이 되는, 범용 컴퓨터 시스템이다. 또는, 상술된 바와 같이, 본 발명의 실시예들은 CPU 또는 컨트롤러(42)와 신호 통신하여 신호 소스(48)로부터 신호를 처리하는, ASIC 또는 FPGA(47)로 구현될 수 있다.
컴퓨터 시스템(41)은 또한 운영 체제 및 마이크로 명령어 코드를 포함한다. 여기에서 설명되는 다양한 프로세스들 및 기능들은 운영체제를 통하여 실행되는, 마이크로 명령어 코드의 일부이거나 어플리케이션 프로그램의 일부 (또는 이의 조합)일 수 있다. 게다가, 다양한 다른 주변 장치들이 추가적인 데이터 스토리지 장치 및 프린트 장치와 같은 컴퓨터 플랫폼에 연결될 수 있다.
첨부된 도면들에 도시된 시스템 구성 요소들 및 방법 단계들의 일부가 소프트웨어로 구현될 수 있으므로, 시스템들의 구성 요소들 (또는 과정의 단계들) 사이의 실제 연결관계들은 본 발명이 프로그램되는 방식에 의존하여 달라질 수 있음이 이해될 것이다. 여기에서 제공되는 본 발명의 교시들이 주어지면, 당업자는 이러한 것들 및 이와 유사한 본 발명의 구현들 또는 구성들을 고려할 수 있을 것이다.
본 발명이 예시적인 실시예들을 참조하여 상세하게 설명되나, 당업자들은 다양한 변경들 및 대체들이 첨부된 청구항들에서 진술되는 바와 같이 발명의 사상 및 범위로부터 벗어나지 않게 만들어질 수 있음을 인식할 것이다.
부록
A. 명제 5.10의 증명을 위한 계산
d-1 | d-2 | … | d/2+1 | d/2 | d/2-1 | d/2-2 | … | 1 | 0 |
1 | 1 | … | 1 | 0 | 1 | 1 | … | 1 | 0 |
특히, 이다.정수들의 보통의 순서는 이항 전개들의 사전식 순서에 대응된다. 이로 인하여, 전개는 인 숫자 를 표현하며, 이는 이것의 이항 전개에 단일한 0이 의 전개에서 위치 d/2에서의 0의 왼쪽에 있는 경우에 한하여, 숫자에 대하여 가중치인 유일한 가능성이다. 이로 인하여, 이기 위한, d/2-1개의 이러한 숫자들 k가 존재한다.
유사하게, 의 이항 전개와 다른 왼쪽부터 제1 좌표에서 이항 전개가 1을 갖는 경우에 한하여, 숫자k는 보다 엄격하게 크다. 인 숫자들 k만이 관심 있으므로, 가 배제되고, 나머지 숫자들은 정확히 표 3의 이항 전개를 가진 숫자들 k이다.
d-1 | d-2 | … | d/2+1 | d/2 | d/2-1 | d/2-2 | … | 0 |
1 | 1 | … | 1 | 1 | ? | ? | … | ? |
물음표들을 갖는 부분-벡터(sub-vector)는 길이 d/2이고, 가중치≤d-2-d/2=d/2-2인 임의의 이진 벡터일 수 있다. 이러한 벡터들의 총 개수는 이다. 현재 A 및 B 모두에 대한 명시적인 표현들이 있고, 수학식 28이 등식으로 성립하는 것을 입증하는 것은 간단하다.d가 홀수인 경우는 유사하며, 현재 의 이항 전개는 표 4와 같다.
d-1 | d-2 | … | (d+1)/2+1 | (d+1)/2 | (d-1)/2 | (d-1)/2-1 | … | 1 | 0 |
1 | 1 | … | 1 | 0 | 1 | 1 | … | 1 | 0 |
숫자들 A 및 B는 상술된 바와 같이 결정된다. 의 이항 전개의 인덱스(d+1)/2에서 0의 왼쪽으로 단일한 0을 배치하는 방식들이 존재하고, 가중치인 길이 (d+1)/2의 이진 벡터들이 존재한다. 따라서, 현재 수학식 28의 좌변은 와 같고, 우변은 와 같다.B. 치환에 대한 보조 정리
보조 정리 B.1: X로부터 구별되는 자유 변수들의 벡터 에 대하여, 이다. K는 의 확대체이고, 이고, 로 쓴다. 그렇다면, 아래 도식의 아래쪽의 파선 화살표에 대한 맵(사상)은 명확하게 정의된 환형 준 동형 사상(homomorphism of rings)이고, 도식이 가환성(commutative)을 갖게 하는 유일한 준 동형 사상이다.
이므로, 전사(surjective)인 좌측 수직 화살표의 커널은 경로의 커널에 포함된다. 이로 인하여, 정사각형이 가환성을 갖게 하는 유일한 파선의 준 동형 사상이 존재하고, 준 동형 사상은 로 주어진다. 현재 보조 정리의 주장은 특수한 경우에 따른다.
비고 B.2: 보조 정리 B.1은 아래의 방식으로 주된 텍스트에 내제적으로 사용된다. 경로 아래의 이의 이미지와 동일한, 오른쪽 수직 화살표 아래의 의 이미지를 직접적으로 계산하는 대신에, 왼쪽 수직 화살표 아래의 이미지가 우선 계산된다. 이후, T는 a로 치환되며, 이는 버튼 수평 화살표의 동작이다.
비고 B.3: 정리 5.11의 증명에서, 두 가지-단계의 치환의 사용이 존재한다. 우선, 는 에 대한 다항식들 로 치환되고, 이후, 는 로 치환된다. 이는 아래의 도식에 의하여 정당화되며, 각각의 직사각형은 보조 정리 B.1의 증명에서와 명백하게 동일한 논리로 가환성을 갖는다. 도식에서, 이고, 이고, 이다. 또한, K는 의 임의의 확대체이다(예를 들어, ).
41: 컴퓨터 시스템 42: CPU 또는 컨트롤러
43: 메모리
43: 메모리
Claims (10)
- d<mr에 대하여, 사이즈 n=2d인 부분 공간이고 m으로 나누어질 수 있는 평가 집합 V={u0 = 0, u1, …, un-1}를 갖는 유한체 F2 mr상에서의 RS(Reed-Solomon) 코드로 단일한 소거를 복구하는 방법에 있어서,
복수의 n개의 스토리지 노드들과 컨트롤러에 대한 시스템에서, 정규화된 복구 대역폭 (n-1)/m이고 정보 심볼들의 개수 k<=2d-2d-d/m이고, 각각의 스토리지 노드 i의 내용 ci 는 상기 유한체 F2 mr의 원소이고, 노드 각각은 벡터 v를 저장하되, 상기 벡터 v의 엔트리들은 상기 평가 집합 V의 0이 아닌 원소들의 역원들이고,
상기 방법은,
상기 컨트롤러에 의해, 페일된 스토리지 노드를 식별하는 단계;
상기 컨트롤러에 의해, 상기 페일된 스토리지 노드의 인덱스 j0를 살아남은 스토리지 노드 각각에 전송하는 단계;
이고, 모든 에 대하여, 는 상기 살아남은 스토리지 노드들에 대응되는 벡터 v의 원소들의 순열이고, j’는 인, 의 고유 인덱스인 경우에, 살아남은 스토리지 노드 i 각각에 의해, 상기 노드 i 각각의 내용 ci와, 벡터 w(i)의 j번째 성분을 곱하는 단계;
상기 곱셈의 결과 outi의 트레이스 맵을 결정하고, 상기 살아남은 스토리지 노드 각각에 의해, m×r 비트 표현에 의한 상기 결과를 r비트들의 감소된 표현 로 변환하는 단계;
상기 컨트롤러에 의해, 상기 살아남은 스토리지 노드의 내용 각각의 상기 감소된 표현으로부터, 상기 페일된 스토리지 노드의 내용을 재건하는 단계; 및
상기 페일된 스토리지 노드의 상기 재건된 내용을 출력하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 j'는 상기 컨트롤러에 의하여 계산되고, 상기 살아남은 스토리지 노드들로 전송되는 방법. - 제 1 항에 있어서,
상기 살아남은 스토리지 노드 각각의 인덱스 및 상기 페일된 스토리지 노드의 인덱스에 기초하여 상기 살아남은 스토리지 노드 각각은 j'를 계산하는 방법. - 제1 항에 있어서,
상기 j'는 스토리지 노드 각각에 대하여 미리 계산되는 방법. - 제 1 항에 있어서,
상기 살아남은 스토리지 노드의 내용 각각의 상기 감소된 표현으로부터, 상기 페일된 스토리지 노드의 내용을 재건하는 단계는,
행렬 를 사용하여 를 계산하는 단계로서, 상기 이고, 상기 p1(X)는 β의 극소 다항식이고,
상기 벡터 이고, 모든 이고 j’=a인 경우의 에 대하여 상기 이고, 상기 n은 스토리지 노드들의 총 개수이고, 상기 는 상기 살아남은 스토리지 노드 i의 내용의 상기 감소된 표현이고,
상기 행렬 A’는, A의 엔트리 aij가 F2상에서의 F2 mr의 기저에 따른 F2 mr에서 열 벡터로 간주되는 경우, 상기 aij 각각을 Maij로 대체함으로써 획득되는 행렬이고,
상기 행렬 는, 의 기저를 완전하게 하여 C’의 기저가 되게 하는 m개의 선형 독립 벡터들인, c1, …, cm행들을 갖는 행렬이고, 패리티-체크 행렬 H’를 갖는 코드의 F-부분체 서브 코드인 상기 이고, 패리티-체크 행렬 를 갖는 코드의 F-부분체 서브 코드인 상기 이고,
상기 이고, 상기 이고, 상기 이고, 상기 (v1, …, vn-1)는 상기 벡터 v의 원소들이고, 상기 (u1, …, un-1)는 상기 평가 집합 V의 0이 아닌 원소들이고,
행렬 은 TM1에서 r×r 단위 행렬을 지원하는 인덱스들을 갖는 행렬의 r개의 행들이고, 상기 는, 인 경우에 j번째 열이 체 F2상에서의 체 E의 기저에 따른 길이 mr인 βj의 이진 표현인, 행렬이고, E:=F2 mr이고, 상기 β는 F2 r=F의 원시 원소이고, 상기 α는 상기 체 F2 mr의 원시 원소인 것;
체 E:=F2 mr 에서 의 원소들을 임베딩하여, 벡터 를 획득하는 단계; 및
를 계산함으로써 상기 페일된 스토리지 노드의 상기 내용을 복원하는 단계로서, 는, 원소들이 벡터 y=(y1, …, ym)T:=AvT∈Em의 엔트리들인 기저에 관하여, F상에서 E에 대한 쌍대 기저를 형성하는 것을 포함하는 방법. - d<mr에 대하여, 사이즈 n=2d인 부분 공간이고 m으로 나누어질 수 있는 평가 집합 V={u0 = 0, u1, …, un-1}를 갖는 유한체 F2 mr상에서의 RS(Reed-Solomon) 코드로 단일한 소거를 복구하는 방법 단계들을 수행하는, 컴퓨터에 의하여 실행되는 명령어들의 프로그램을 유형적으로 구현하는, 컴퓨터에 의하여 판독 가능한 비-일시적 프로그램 저장 장치에 있어서,
복수의 n개의 스토리지 노드들과 컨트롤러에 대한 시스템에서, 정규화된 복구 대역폭 (n-1)/m이고 정보 심볼들의 개수 k<=2d-2d-d/m이고, 각각의 스토리지 노드 i의 내용 ci 는 상기 유한체 F2 mr의 원소이고, 노드 각각은 벡터 v를 저장하되, 상기 벡터 v의 엔트리들은 상기 평가 집합 V의 0이 아닌 원소들의 역원들이고,
상기 방법은,
상기 컨트롤러에 의해, 페일된 스토리지 노드를 식별하는 단계;
상기 컨트롤러에 의해, 상기 페일된 스토리지 노드의 인덱스 j0를 살아남은 스토리지 노드 각각에 전송하는 단계;
이고, 모든에 대하여, 는 살아남은 상기 스토리지 노드들에 대응되는 벡터 v의 원소들의 순열이고, j’는 인, 의 고유 인덱스인 경우에, 살아남은 스토리지 노드 i 각각에 의해, 상기 노드 i 각각의 내용 ci와, 벡터 w(i)의 j번째 성분을 곱하는 단계;
상기 곱셈의 결과 outi의 트레이스 맵을 결정하고, 상기 살아남은 스토리지 노드 각각에 의해, m×r 비트 표현에 의한 상기 결과를 r비트들의 감소된 표현 로 변환하는 단계;
상기 컨트롤러에 의해, 상기 살아남은 스토리지 노드의 내용 각각의 상기 감소된 표현으로부터, 상기 페일된 스토리지 노드의 내용을 재건하는 단계; 및
상기 페일된 스토리지 노드의 상기 재건된 내용을 출력하는 단계를 포함하는 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/821,480 | 2017-11-22 | ||
US15/821,480 US10686471B2 (en) | 2017-11-22 | 2017-11-22 | One-sub-symbol linear repair schemes |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190059827A KR20190059827A (ko) | 2019-05-31 |
KR102475784B1 true KR102475784B1 (ko) | 2022-12-09 |
Family
ID=66533405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180065536A KR102475784B1 (ko) | 2017-11-22 | 2018-06-07 | 1개의 서브-심볼의 선형 복구 스킴 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10686471B2 (ko) |
KR (1) | KR102475784B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11764940B2 (en) | 2019-01-10 | 2023-09-19 | Duality Technologies, Inc. | Secure search of secret data in a semi-trusted environment using homomorphic encryption |
US11228323B2 (en) * | 2019-05-31 | 2022-01-18 | The Regents Of The University Of California | Method and system for repairing Reed-Solomon codes |
US11474898B2 (en) * | 2020-12-09 | 2022-10-18 | International Business Machines Corporation | Multiple responder approach to systems with different types of failures |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080282128A1 (en) | 1999-08-04 | 2008-11-13 | Super Talent Electronics, Inc. | Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance |
US7421044B2 (en) | 2000-09-05 | 2008-09-02 | Broadcom Corporation | Quasi error free (QEF) communication using turbo codes |
JP4191043B2 (ja) | 2001-12-06 | 2008-12-03 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 単純な復号化方法及び装置 |
EP1370003A1 (en) * | 2002-06-07 | 2003-12-10 | Deutsche Thomson-Brandt Gmbh | Reed-Solomon Decoder |
US8103943B2 (en) | 2006-08-10 | 2012-01-24 | Ternarylogic Llc | Symbol reconstruction in Reed-Solomon codes |
EP2413506A1 (en) * | 2010-07-26 | 2012-02-01 | Thomson Licensing | Method for adding redundancy data to a distributed data storage system and corresponding device |
US8433979B2 (en) * | 2011-02-28 | 2013-04-30 | International Business Machines Corporation | Nested multiple erasure correcting codes for storage arrays |
US9287897B2 (en) | 2012-01-30 | 2016-03-15 | Broadcom Corporation | Systematic rate-independent Reed-Solomon erasure codes |
US9344117B2 (en) | 2013-03-15 | 2016-05-17 | Mellanox Technologies, Ltd. | Methods and systems for error-correction decoding |
US9489252B1 (en) | 2013-11-08 | 2016-11-08 | Amazon Technologies, Inc. | File recovery using diverse erasure encoded fragments |
US10187088B2 (en) * | 2014-04-21 | 2019-01-22 | The Regents Of The University Of California | Cost-efficient repair for storage systems using progressive engagement |
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 |
US10191808B2 (en) * | 2016-08-04 | 2019-01-29 | Qualcomm Incorporated | Systems and methods for storing, maintaining, and accessing objects in storage system clusters |
-
2017
- 2017-11-22 US US15/821,480 patent/US10686471B2/en active Active
-
2018
- 2018-06-07 KR KR1020180065536A patent/KR102475784B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20190059827A (ko) | 2019-05-31 |
US20190158119A1 (en) | 2019-05-23 |
US10686471B2 (en) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10146618B2 (en) | Distributed data storage with reduced storage overhead using reduced-dependency erasure codes | |
KR101270815B1 (ko) | 다양한 클래스의 코드들을 인코딩 및 디코딩하는 애플리케이션을 갖는 인-플레이스 변환 | |
US20170033892A1 (en) | Methods and apparatus employing fec codes with permanent inactivation of symbols for encoding and decoding processes | |
US7293222B2 (en) | Systems and processes for fast encoding of hamming codes | |
KR102475784B1 (ko) | 1개의 서브-심볼의 선형 복구 스킴 | |
CN104246706A (zh) | 使用存储器特定奇偶校验矩阵的数据编码器和解码器 | |
Gad et al. | Repair-optimal MDS array codes over GF (2) | |
US20200081778A1 (en) | Distributed storage system, method and apparatus | |
CN111858142A (zh) | 一种数据处理方法、装置及电子设备和存储介质 | |
KR20180085651A (ko) | 리스트 디코딩 생성을 통한 이진 bch 코드들의 bm-기반 빠른 체이스 디코딩에서 빠른 다항식 업데이트를 위한 방법을 수행하기 위한 asic | |
US10606697B2 (en) | Method and apparatus for improved data recovery in data storage systems | |
Li et al. | Repairing Reed-Solomon Codes Over $ GF (2^\ell) $ | |
CN107306140B (zh) | 一种gel码字结构编码和译码的方法、装置及相关设备 | |
JP7429223B2 (ja) | ターボ積符号の復号方法、装置、デコーダー及びコンピュータ記憶媒体 | |
WO2018149354A1 (zh) | 极化码的编码方法、装置及设备、存储介质 | |
CN116312726B (zh) | 一种数据存储方法、装置、电子设备和存储介质 | |
US8977936B2 (en) | Strong single and multiple error correcting WOM codes, coding methods and devices | |
KR102532623B1 (ko) | Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치 | |
KR20100042589A (ko) | 이진 데이터의 오류 정정 및 오류 검출 방법 | |
CN108352845B (zh) | 用于对存储数据进行编码的方法以及装置 | |
TW202024907A (zh) | 資料處理 | |
US20230370092A1 (en) | Error Correction With Fast Syndrome Calculation | |
JP5999634B2 (ja) | 演算回路設定方法 | |
Ellero et al. | Computational complexity analysis of hamming codes polynomial co-decoding | |
Yang et al. | Hierarchical Hybrid Error Correction for Time-Sensitive Devices at the Edge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |