2.8. Ceph 코딩 삭제


Ceph는 많은 삭제 코드 알고리즘 중 하나를 로드할 수 있습니다. 가장 먼저 사용되는 가장 빠른 방법은 Reed-Solomon 알고리즘입니다. 삭제 코드는 실제로 FEC( forward error correction) 코드입니다. FEC 코드는 K 청크의 메시지를 '코드 단어' N 청크라는 긴 메시지로 변환하므로 Ceph가 N 청크의 하위 집합에서 원본 메시지를 복구할 수 있습니다.

특히 N = K+M 변수 K +M은 원래 데이터 청크 양입니다. 변수 M 은 삭제 코드 알고리즘이 실패로부터 보호를 제공하기 위해 추가하는 추가 또는 중복된 청크를 나타냅니다. 변수 N 은 삭제 코딩 프로세스 이후에 생성된 총 청크 수입니다. M 값은 단순히 N- K 로, 알고리즘은 K 원래 데이터 청크에서 N-K 중복 청크를 계산합니다. 이 방법을 사용하면 Ceph가 모든 원본 데이터에 액세스할 수 있습니다. 시스템은 임의의 N-K 오류에 탄력적입니다. 예를 들어 10 K 의 16 N 구성 또는 삭제 코딩 10/16 에서 삭제 코드 알고리즘은 10 개의 기본 청크 K 에 6 개의 추가 청크를 추가합니다. 예를 들어 M = K-N 또는 16-10 = 6 구성에서 Ceph는 16개의 청크 N 을 16개의 OSD로 분산합니다. 6개의 OSD가 실패하는 경우에도 원본 파일을 10개의 확인된 N 청크에서 재구축할 수 있습니다. 이는 Red Hat Ceph Storage 클러스터가 데이터가 손실되지 않아 매우 높은 수준의 내결함성을 보장합니다.

복제된 풀과 마찬가지로 삭제 코드된 풀에서는 up 세트의 기본 OSD는 모든 쓰기 작업을 수신합니다. 복제된 풀에서 Ceph는 세트의 보조 OSD에서 배치 그룹에 있는 각 오브젝트의 깊은 복사본을 만듭니다. 코딩 삭제의 경우 프로세스는 약간 다릅니다. 복제 코딩된 풀은 각 개체를 K+M 청크로 저장합니다. K 데이터 청크와 M 코딩 청크로 나뉩니다. Ceph가 작동 중인 세트에서 각 청크를 OSD에 저장하도록 풀은 K+M 크기를 갖도록 구성됩니다. Ceph는 청크 순위를 오브젝트의 속성으로 저장합니다. 기본 OSD는 페이로드를 K+M 청크로 인코딩하여 다른 OSD로 전송합니다. 기본 OSD는 권한 있는 배치 그룹 로그 버전을 유지 관리해야 합니다.

예를 들어, 일반적인 구성에서 시스템 관리자는 6개의 OSD를 사용하고 두 개의 OSD를 계속 손실하기 위해 삭제 코딩된 풀을 생성합니다. 즉, (K+M = 6)와 같이 (M = 2)입니다.

Ceph가 ABCDEFGHIJKL 을 포함하는 개체 NYAN 을 풀에 쓰는 경우, 삭제 인코딩 알고리즘은 단순히 콘텐츠를 4개 부분, DEF,DEF,GHI, JKL 과 같은 네 부분으로 나누어 콘텐츠를 4개의 데이터 청크로 분할합니다. 콘텐츠 길이가 K 의 복수가 아닌 경우 알고리즘은 콘텐츠를 패딩합니다. 이 함수는 두 개의 코딩 청크를 만듭니다. YXY 를 사용한 다섯 번째와 QGC 가 있는 여섯 번째 청크도 생성됩니다. Ceph는 각 청크를 작동 세트에 저장합니다. 여기서 청크는 동일한 이름인 NYAN 이 있지만 다른 OSD에 상주하는 오브젝트에 청크를 저장합니다. 알고리즘은 청크를 해당 이름 외에도 오브젝트 shard_t 의 속성으로 생성한 순서를 유지해야 합니다. 예를 들어, Chunk 1은 ABC 를 포함하고 Ceph는 OSD5 에 저장하고, 청크 5에는 OSD4YXY 및 Ceph 저장소가 포함되어 있습니다.

코드 IO 삭제

복구 시나리오에서 클라이언트는 청크 1에서 6까지의 청크를 읽고 삭제 코드된 풀에서 NYAN 을 읽습니다. OSD는 청크 2 및 6이 누락되었음을 알고리즘에 알립니다. 이러한 누락된 청크를 'erasures'라고 합니다. 예를 들어 OSD6이 부족하기 때문에 기본 OSD 6 를 읽을 수 없으며 OSD2 가 느리고 청크 청크를 고려하지 않았기 때문에 청크 2를 읽을 수 없습니다. 그러나 알고리즘에 4개의 청크가 있는 즉시 4개의 청크를 읽습니다. chunk 1에는bc 1이 포함된 GHI, 청크 3, JKL 이 포함된 청크 4와 YXY 가 포함된 청크 5입니다. 그런 다음, 개체의 원래 콘텐츠를 다시 작성합니다. ABCDEFGHIJKL, 그리고 QGC 가 포함 된 청크 6의 원래 내용을 다시 작성합니다.

데이터를 청크로 분할하는 것은 개체 배치와 독립적입니다. CRUSH 규칙 세트는 삭제 코드화된 풀 프로필과 함께 OSD에 청크 배치를 결정합니다. 예를 들어, 삭제 코드 프로파일에서 로컬 복구 코드(lrc) 플러그인을 사용하면 추가 청크가 생성되고 복구할 수 있는 OSD 수가 줄어듭니다. 예를 들어, lrc 프로파일 구성에서 K=4 M=2L=3. .이 알고리즘은 jerasure 플러그인과 마찬가지로 6개의 청크(K+M)를 생성하지만 알고리즘에서 로컬로 2개의 청크를 생성해야 합니다. 알고리즘은 (K+M)/L 과 같은 추가 청크를 생성합니다. 청크 0을 포함하는 OSD가 실패하면 청크 1, 2 및 첫 번째 로컬 청크를 사용하여 이 청크를 복구할 수 있습니다. 이 경우 알고리즘은 5 대신 3개의 청크만 복구해야 합니다.

참고

삭제 코드화된 풀을 사용하면 오브젝트 맵이 비활성화됩니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.