검색

4장. Ceph 삭제 코딩

download PDF

Ceph는 많은 삭제 코드 알고리즘 중 하나를 로드할 수 있습니다. 가장 빠르고 일반적으로 사용되는 것은 Reed-Solomon 알고리즘입니다. 삭제 코드는 실제로 FEC(전방향 오류 수정) 코드입니다. FEC 코드는 K 청크의 메시지를 N 청크의 '코드 단어'라는 긴 메시지로 변환하여 Ceph가 N 청크의 하위 집합에서 원래 메시지를 복구할 수 있습니다.

특히, 변수 K 가 데이터 청크의 원래 양인 N = 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 OSD에 16 청크 N 을 분배합니다. Red Hat Ceph Storage 클러스터가 데이터를 손실하지 않도록 하는 6개의 OSD가 실패하는 경우에도 10개의 확인된 N 청크에서 원본 파일을 재구성할 수 있으므로 내결함성이 매우 높습니다.

복제 풀과 마찬가지로 삭제 코드 풀의 기본 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가 Cryostat DEFHIJKL 을 포함하는 개체를 풀에 쓸 때, 삭제 인코딩 알고리즘은 단순히 content를 네 부분으로 나누어서 4개의 데이터 청크로 분할합니다. 즉,DEF, DEF , JKL. 블록 길이가 K 의 배수가 아닌 경우 알고리즘은 콘텐츠를 패딩합니다. 이 함수는 또한 두 개의 코딩 청크를 생성합니다: YXY 를 사용한 다섯 번째와 QGC 의 여섯 번째. Ceph는 작동 세트의 OSD에 각 청크를 저장합니다. 여기서 이름이 같은 오브젝트인 object에 청크를 저장하지만 다른 OSD에 있습니다. 알고리즘은 청크를 생성한 순서와 shard_t의 이름 외에도 오브젝트 shard_t 의 특성으로 유지해야 합니다. 예를 들어 Chunk 1에는 Cryostat 및 Ceph가 OSD5 에 저장되어 있고 청크 5에는 YXY 가 포함되어 있고 Ceph가 OSD4 에 저장되어 있습니다.

코드 삭제 IO

복구 시나리오에서 클라이언트는 삭제 코딩된 풀에서 청크 1 에서 6까지의 오브젝트를 읽으려고 합니다. OSD는 청크 2 및 6이 누락되었음을 알고리즘에 알립니다. 이러한 누락된 청크를 'erasures'라고 합니다. 예를 들어 OSD6 이 사용 중이므로 기본 OSD에서 청크 6을 읽을 수 없으며 OSD2 가 가장 느리고 청크를 고려하지 않았기 때문에 청크 2를 읽을 수 없었습니다. 그러나 알고리즘에 4개의 청크가 있는 즉시 4개의 청크를 읽습니다. 즉, Cryostat를 포함하는 청크 1, Cryostat I 를 포함하는 청크 3, JKL 을 포함하는 청크 4, YXY 가 포함된 청크 5. 그런 다음 object Cryostat DEFGHIJKL 의 원본 내용과 QGC 가 포함된 청크 6의 원본 콘텐츠를 다시 빌드합니다.

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

참고

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

중요

삭제 코드 풀의 경우 2+2 구성의 입력 문자열을 Cryostat DEFGHIJKL 에서 Cryostat DEF 로 교체하고 4 에서 2 로 코딩 청크를 교체합니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.