5장. 복구 코드 풀

Ceph 스토리지 전략에는 데이터 지속성 요구 사항을 정의하는 작업이 포함됩니다. 데이터 지속성은 데이터 손실 없이 하나 이상의 OSD의 손실을 유지할 수 있음을 의미합니다.

Ceph는 풀에 데이터를 저장하고 풀의 두 가지 유형이 있습니다.

  • replicated
  • erasure-coded

Ceph는 기본적으로 복제된 풀을 사용합니다. 즉, Ceph는 기본 OSD 노드의 모든 오브젝트를 하나 이상의 보조 OSD로 복사합니다.

timessure-coded 풀은 데이터 지속성을 보장하는 데 필요한 디스크 공간의 양을 감소시키지만 복제보다 약간 더 비용이 많이 듭니다.

디스큐어 코딩은 오브젝트를 Ceph 스토리지 클러스터에 저장하는 방법입니다. 여기서 삭제 코드 알고리즘은 개체를k) 및 코딩 청크(m)로 분리하고 이러한 청크를 다른 OSD에 저장합니다.

OSD가 실패하는 경우 Ceph는 다른 OSD에서 나머지 데이터(k) 및 코딩(m) 청크를 검색하고 삭제 코드 알고리즘은 해당 청크에서 오브젝트를 복원합니다.

참고

Red Hat은 미리 코드된 풀에 대해 min_sizeK+2 이상으로 권장하여 쓰기 및 데이터의 손실을 방지할 것을 권장합니다.

삭제 코딩은 복제보다 스토리지 용량을 더 효율적으로 사용합니다. n -replication 접근 방식은 기본적으로 Ceph에서 오브젝트 3x(3x)를 유지 관리하는 반면, pastsure coding은 k + m 청크만 유지합니다. 예를 들어 4개의 데이터 및 2개의 코딩 청크는 원래 오브젝트의 스토리지 공간을 1.5x로 사용합니다.

삭제 코딩은 복제보다 적은 스토리지 오버헤드를 사용하지만 삭제 코드 알고리즘은 개체에 액세스하거나 복구할 때 복제보다 더 많은 RAM과 CPU를 사용합니다. 데이터 스토리지는 지속성 및 내결함성이 있어야 하지만 빠른 읽기 성능(예: 콜드 스토리지, 기록 레코드 등)이 필요하지 않은 경우 고해한 코딩이 유용합니다.

dissure 코드가 Ceph에서 작동하는 방법에 대한 수치화 및 자세한 설명은 Red Hat Ceph Storage 4의 아키텍처 가이드Erasure Coded I/O 섹션을 참조하십시오.

Ceph는 k=2m=1 로 클러스터를 초기화할 때 기본 삭제 코드 프로필을 생성합니다. 즉, Ceph가 3개의 OSD(k+m == 3)를 통해 오브젝트 데이터를 분배하고 Ceph가 데이터를 손실하지 않고 해당 OSD 중 하나를 손실할 수 있습니다. 제거 코드 프로파일링에 대한 자세한 내용은 Erasure Code Profiles 섹션을 참조하십시오.

중요

.rgw.buckets 풀만 erasure-coded로 구성하고 다른 모든 Ceph Object Gateway 풀은 복제됨으로 구성합니다. 그렇지 않으면 다음 오류와 함께 새 버킷을 생성하려는 시도가 실패합니다.

set_req_state_err err_no=95 resorting to 500

이러한 이유로 dissure-coded 풀은 omap 작업을 지원하지 않으며 특정 Ceph Object Gateway 메타데이터 풀에는 omap 지원이 필요합니다.

5.1. 샘플 Erasure-coded 풀 생성

가장 간단한 삭제 코딩된 풀은 RAID5와 동일하며 최소 세 개의 호스트가 필요합니다.

$ ceph osd pool create ecpool 50 50 erasure
pool 'ecpool' created
$ echo ABCDEFGHI | rados --pool ecpool put NYAN -
$ rados --pool ecpool get NYAN -
ABCDEFGHI
참고

pool create 의 50은 배치 그룹 수를 나타냅니다.