5장. 코드 풀 삭제 개요
Ceph는 기본적으로 복제된 풀을 사용하므로 Ceph는 기본 OSD 노드에서 하나 이상의 보조 OSD로 모든 오브젝트를 복사합니다. 삭제 코딩 풀은 데이터 지속성을 보장하는 데 필요한 디스크 공간을 줄일 수 있지만 복제보다 비용이 약간 더 많이 듭니다.
Ceph 스토리지 전략에는 데이터 지속성 요구 사항을 정의하는 작업이 포함됩니다. 데이터 지속성은 데이터 손실 없이 하나 이상의 OSD의 손실을 유지할 수 있는 기능을 의미합니다.
Ceph는 데이터를 풀에 저장하고 다음 두 가지 유형의 풀이 있습니다.
- 복제됨
- erasure-coded
삭제 코딩은 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 8 아키텍처 가이드 의 Ceph Erasure Coding 섹션을 참조하십시오.
Ceph는 k=2 및 m=2 로 클러스터를 초기화할 때 기본 삭제 코드 프로필을 생성합니다. 즉, Ceph에서 오브젝트 데이터를 3개의 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
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와 동일하며 최소 4개의 호스트가 필요합니다. 2+2 프로필을 사용하여 삭제 코드 풀을 생성할 수 있습니다.
프로세스
2+2 구성이 있는 4개의 노드에서 삭제 코딩된 풀에 대해 다음 구성을 설정합니다.
구문
ceph config set mon mon_osd_down_out_subtree_limit host ceph config set osd osd_async_recovery_min_cost 1099511627776
ceph config set mon mon_osd_down_out_subtree_limit host ceph config set osd osd_async_recovery_min_cost 1099511627776
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요이는 일반적으로 삭제 코딩된 풀에는 필요하지 않습니다.
중요비동기 복구 비용은 복제본의 뒤에 있는 PG 로그 항목 수와 누락된 오브젝트 수입니다.
osd_target_pg_log_entries_per_osd
는30000
입니다. 따라서 하나의 PG가 있는 OSD에는30000
개의 항목이 있을 수 있습니다.osd_async_recovery_min_cost
는 64비트 정수이므로 2+2 구성이 있는 EC 풀의 경우osd_async_recovery_min_cost
값을1099511627776
으로 설정합니다.참고4개의 노드가 있는 EC 클러스터의 경우 K+M 값은 2+2입니다. 노드가 완전히 실패하면 4개의 청크로 복구되지 않으며 3개의 노드만 사용할 수 있습니다.
호스트
다운 시나리오에서mon_osd_down_out_subtree_limit
값을 host로 설정하면 OSD가 표시되지 않으므로 데이터가 재조정되지 않고 노드가 다시 가동될 때까지 대기합니다.2+2 구성을 사용하는 삭제 코드 풀의 경우 프로필을 설정합니다.
구문
ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host
ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예
[ceph: root@host01 /]# ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host Pool : ceph osd pool create test-ec-22 erasure ec22
[ceph: root@host01 /]# ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host Pool : ceph osd pool create test-ec-22 erasure ec22
Copy to Clipboard Copied! Toggle word wrap Toggle overflow erasure-coded 풀을 생성합니다.
예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 32는 배치 그룹의 수입니다.