5.6. pyramid Erasure 코드

피라미드 파도 코드는 기본적으로 데이터의 액세스 및 복구를 개선하기 위해 원래의 Agesure 코드 알고리즘을 기반으로 개선된 알고리즘입니다. 이는 단순히 주어진 (n, k)에 대해 Reed-Solomon 과 같은 기존 MDS (Maximum Distance Setance Setance Setance Setance Setance Setance Setance Setance Setance Setance Setance Setance Setance Setance Setance Setance Separable) 코드의 파생으로, k 는 원래 데이터 청크 수이고 n 은 코딩 프로세스 후 데이터 청크의 총 수입니다. Pyramid 코드는 표준 MDS 코드를 기반으로 하므로 인코딩/라이코딩 접근 방식이 동일합니다. pyramid 코딩된 데이터 풀은 일반 삭제 코딩된 풀과 같은 임의의 장애와 동일한 쓰기 오버헤드와 동일한 복구 기능을 갖습니다. pyramid 코드의 유일한 장점은 일반 삭제 코드와 비교하여 읽기 오버헤드를 크게 줄일 수 있다는 것입니다.

(11, 8) 코딩된 풀의 예를 보고 pyramid 코드 접근 방식을 적용해 보겠습니다. (11, 8) 코딩된 풀을 (12, 8) Pyramid 코딩된 풀로 변환합니다. 삭제 코딩 풀에는 8 개의 데이터 청크와 11 - 8 = 3 개의 중복 청크가 있습니다. Pyramid 코드는 8 데이터 청크를 2 개의 동일한 크기 그룹으로 분리합니다. 즉 P1 = {a1, a2, a3, a4} 및 P2 = {a5, a6, a7, a8}. 이는 삭제 코드의 중복 청크 두 개를 변경하지 않고 유지합니다(예: b2 및 b3). 이 두 청크는 8개의 데이터 청크를 모두 처리하기 때문에 이제 글로벌 중복 청크라고 합니다. 다음으로 그룹 P1에 대한 중복 청크가 계산되며 이는 그룹 (또는 로컬) 중복 청크 b1,1로 표시됩니다. 계산은 원래의 삭제 코드의 b1이 P2에서 0으로 모든 데이터 청크를 설정하는 것을 제외하고는 수행됩니다. 마찬가지로 P2에 대해 그룹 중복 청크 b1,2가 계산됩니다. 그룹 중복 청크는 해당 그룹의 데이터 청크만 영향을 받으며 다른 그룹의 데이터 청크만 영향을 받지 않습니다. 그룹 중복 청크는 각 그룹(예: b1,1 + b1,2 = b1)에 대한 삭제 코드에서 원래의 중복 청크의 프로젝션으로 해석될 수 있습니다. 따라서 이 방법에서는 하나의 데이터 청크가 실패하면 정상적인 삭제 코딩된 풀에 대해 8 대신 읽기 오버헤드를 사용하여 복구할 수 있습니다. 예를 들어, P1a3 이 실패하고 a1 이 스크럽을 담당하는 기본 OSD인 경우 a1,a2,a4b1,1 을 사용하여 P2 에서 읽는 대신 a3 을 복구할 수 있습니다. 모든 청크를 읽는 것은 동일한 그룹에서 두 개 이상의 청크가 누락된 경우에만 필요합니다.

이 Pyramid 코드는 원래의 agesure 코드와 동일한 쓰기 오버헤드를 갖습니다. 데이터 청크가 업데이트될 때마다 피라미드 코드는 3개의 중복 청크(b2, b3, b1, b1, b1, b1, b1, b1, b1, b1, b1, b1, b1, b1, b1)를 업데이트해야 하며, 삭제 코드는 3개의 중복 청크(b1, b2 및 b3)도 업데이트해야 합니다. 또한 일반적인 삭제 코드와 동일한 3 개의 임의의 삭제 코드를 복구 할 수 있습니다. 앞서 언급한 것처럼 읽기 오버헤드가 유일한 이점은 추가 중복 청크를 사용하는 비용이 발생합니다. 따라서 Pyramid 코드는 액세스 효율성을 위해 스토리지 공간을 처리합니다.

아래 다이어그램은 생성된 pyramid 코드를 보여줍니다.

pyramid Erasure 코드