5장. 코드 풀 삭제 개요
Ceph 스토리지 전략에는 데이터 지속성 요구 사항을 정의하는 작업이 포함됩니다. 데이터 지속성은 데이터 손실 없이 하나 이상의 OSD의 손실을 유지할 수 있는 기능을 의미합니다.
Ceph는 데이터를 풀에 저장하고 다음 두 가지 유형의 풀이 있습니다.
- 복제됨
- erasure-coded
Ceph는 기본적으로 복제된 풀을 사용합니다. 즉, Ceph는 기본 OSD 노드에서 하나 이상의 보조 OSD로 모든 오브젝트를 복사합니다.
삭제 코딩 풀은 데이터 지속성을 보장하는 데 필요한 디스크 공간을 줄일 수 있지만 복제보다 비용이 약간 더 많이 듭니다.
삭제 코딩은 Ceph 스토리지 클러스터에 오브젝트를 저장하는 방법으로, 삭제 코드 알고리즘이 오브젝트를k(데이터 청크) 및 코딩 청크(m)로 분할하고 이러한 청크를 다른 OSD에 저장하는 방법입니다.
OSD가 실패하는 경우 Ceph는 다른 OSD에서 나머지 데이터(k) 및 코딩(m) 청크를 검색하고 삭제 코드 알고리즘은 해당 청크에서 오브젝트를 복원합니다.
Red Hat은 쓰기 및 데이터 손실을 방지하기 위해 삭제 코드 풀의 min_size 를 K+1 이상을 권장합니다.
삭제 코딩은 복제보다 스토리지 용량을 더 효율적으로 사용합니다. n-replication 접근 방식은 오브젝트의 n 복사본(기본적으로 Ceph에서 3x)을 유지 관리하지만 삭제 코딩은 k + m 청크만 유지합니다. 예를 들어 3 데이터 및 2 코딩 청크는 원래 오브젝트의 저장 공간 1.5x를 사용합니다.
삭제 코딩은 복제보다 스토리지 오버헤드가 적지만 삭제 코드 알고리즘은 개체에 액세스하거나 복구할 때 복제보다 더 많은 RAM과 CPU를 사용합니다. 삭제 코딩은 데이터 스토리지가 지속성 및 내결함성이어야 하지만 빠른 읽기 성능(예: 콜드 스토리지, 기록 레코드 등)이 필요하지 않은 경우 유용합니다.
Ceph에서 코드를 지우는 방법에 대한 수치적이고 자세한 설명은 Red Hat Ceph Storage 6 아키텍처 가이드 의 Ceph Erasure Coding 섹션을 참조하십시오.
Ceph는 k=2 및 m=2 로 클러스터를 초기화할 때 기본 삭제 코드 프로필을 생성합니다. 즉, Ceph는 오브젝트 데이터를 4개의 OSD(k+m == 4)에 분배하고 Ceph는 데이터 손실 없이 OSD 중 하나를 손실할 수 있습니다. 삭제 코드 프로파일링에 대한 자세한 내용은 Erasure Code Profiles 섹션을 참조하십시오.
.rgw.buckets 풀만 erasure-coded 및 기타 모든 Ceph Object Gateway 풀만 복제된 것으로 구성하십시오. 그렇지 않으면 다음 오류와 함께 새 버킷을 생성하려는 시도가 실패합니다.
set_req_state_err err_no=95 resorting to 500
그 이유는 Desure-coded 풀이 omap 작업을 지원하지 않기 때문에 특정 Ceph Object Gateway 메타데이터 풀에는 omap 지원이 필요하기 때문입니다.
5.1. 샘플 삭제 코드 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
다른 프로필을 지정하지 않는 한 ceph osd pool create 명령은 기본 프로필로 erasure-coded 풀을 생성합니다. 프로필은 두 개의 매개 변수 k 및 m 을 설정하여 데이터 중복성을 정의합니다. 이러한 매개변수는 데이터 조각이 분할되고 코딩 청크 수가 생성되는 청크 수를 정의합니다.
가장 간단한 삭제 코드 풀은 RAID5와 동일하며 최소 3개의 호스트가 필요합니다.
예제
$ ceph osd pool create ecpool 32 32 erasure
pool 'ecpool' created
$ echo ABCDEFGHI | rados --pool ecpool put NYAN -
$ rados --pool ecpool get NYAN -
ABCDEFGHI
풀 생성 의 32는 배치 그룹 수를 나타냅니다.