5.2. 삭제 코드 프로필


Ceph는 프로필을 사용하여 삭제로 인코딩된 풀을 정의합니다. Ceph는 Deletesure-coded 풀 및 관련 CRUSH 규칙을 생성할 때 프로필을 사용합니다.

Ceph는 클러스터를 초기화할 때 기본 삭제 코드 프로필을 생성하고 복제된 풀의 두 복사본과 동일한 수준의 중복성을 제공합니다. 그러나 스토리지 용량이 25% 적게 사용됩니다. 기본 프로필은 k=2m=1 을 정의합니다. 즉, Ceph는 3개의 OSD(k+m=3)에 오브젝트 데이터를 분산하고 Ceph는 데이터 손실 없이 이러한 OSD 중 하나를 잃을 수 있습니다.

기본 삭제 코드 프로필은 단일 OSD의 손실을 유지할 수 있습니다. 크기가 2인 복제된 풀과 동일하지만 1TB 데이터를 저장하기 위해 2TB가 아닌 1.5TB가 필요합니다. 기본 프로필을 표시하려면 다음 명령을 사용합니다.

$ ceph osd erasure-code-profile get default
directory=.libs
k=2
m=1
plugin=jerasure
crush-failure-domain=host
technique=reed_sol_van

새 프로필을 생성하여 원시 스토리지 요구 사항을 늘리지 않고도 중복성을 개선할 수 있습니다. 예를 들어 k=8 m=4 를 사용하는 프로필은 12개(k+m=12) OSD에서 오브젝트를 분산하여 4개(m4 ) OSD의 손실을 유지할 수 있습니다. Ceph는 오브젝트를 8 개의 청크로 나누고 복구를 위해 4 개의 코딩 청크를 계산합니다. 예를 들어 오브젝트 크기가 8MB인 경우 각 데이터 청크는 1MB이며 각 코딩 청크는 데이터 청크와 크기가 동일하며 1MB입니다. 4개의 OSD가 동시에 실패해도 오브젝트가 손실되지 않습니다.

프로파일의 가장 중요한 매개변수는 k,mcrush-failure-domain 인데, 이는 스토리지 오버헤드와 데이터 지속성을 정의했기 때문입니다.

중요

풀을 생성한 후에는 프로필을 변경할 수 없으므로 올바른 프로필을 선택하는 것이 중요합니다. 프로필을 수정하려면 다른 프로필을 사용하여 새 풀을 생성하고 이전 풀에서 새 풀로 오브젝트를 마이그레이션해야 합니다.

예를 들어 원하는 아키텍처가 두 랙의 손실을 50% 오버헤드로 유지해야 하는 경우 다음 프로필을 정의할 수 있습니다.

$ ceph osd erasure-code-profile set myprofile \
   k=4 \
   m=2 \
   crush-failure-domain=rack
$ ceph osd pool create ecpool 12 12 erasure *myprofile*
$ echo ABCDEFGHIJKL | rados --pool ecpool put NYAN -
$ rados --pool ecpool get NYAN -
ABCDEFGHIJKL

기본 OSD는 NYAN 오브젝트를 4개(k=4) 데이터 청크로 나누고 두 개의 추가 청크(m=2)를 생성합니다. m 값은 데이터를 손실하지 않고 동시에 손실될 수 있는 OSD 수를 정의합니다. crush-failure-domain=rack 은 두 청크가 동일한 랙에 저장되지 않도록 하는 CRUSH 규칙을 만듭니다.

삭제 코드
중요

Red Hat은 km 에 대해 다음과 같은 삭제 코딩 값을 지원합니다.

  • k=8 m=3
  • k=8 m=4
  • k=4 m=2
중요

OSD가 손실된 OSD 수가 코딩 청크 수(m)와 같은 경우, 삭제 코딩 풀의 일부 배치 그룹은 불완전한 상태가 됩니다. 손실된 OSD 수가 m 보다 작으면 배치 그룹이 불완전한 상태가 아닙니다. 두 경우 모두 데이터 손실이 발생하지 않습니다. 배치 그룹이 불완전한 상태인 경우 삭제 코딩된 풀의 min_size 를 일시적으로 축소하면 복구할 수 있습니다.

5.2.1. OSD 삭제-code-profile 세트

새 삭제 코드 프로필을 생성하려면 다음을 수행합니다.

ceph osd erasure-code-profile set <name> \
         [<directory=directory>] \
         [<plugin=plugin>] \
         [<stripe_unit=stripe_unit>] \
         [<crush-device-class>]\
         [<crush-failure-domain>]\
         [<key=value> ...] \
         [--force]

다음과 같습니다.

디렉터리
설명
agesure 코드 플러그인이 로드되는 디렉터리 이름을 설정합니다.
유형
문자열
필수 항목
아니요.
기본값
/usr/lib/ceph/erasure-code
plugin
설명
삭제 코드 플러그인을 사용하여 코딩 청크를 계산하고 누락된 청크를 복구합니다. 자세한 내용은 Erasure Code 플러그인 섹션을 참조하십시오.
유형
문자열
필수 항목
아니요.
기본값
jerasure
stripe_unit
설명
스트라이프당 데이터 청크의 데이터 양입니다. 예를 들어 2 데이터 청크와 스트라이프_unit=4K 가 있는 프로필은 청크 0-4K의 청크 0-4K 범위를 청크 1에, 청크 1의 8K-12K를 다시 청크 0으로 배치합니다. 최상의 성능을 위해서는 4K가 여러 개여야 합니다. 풀이 생성될 때 기본값은 모니터 구성 옵션 osd_pool_erasure_code_stripe_unit 에서 가져옵니다. 이 프로필을 사용하는 풀의 스트라이프_width는 이 스트라이프_unit 을 곱한 데이터 청크 수입니다.
유형
문자열
필수 항목
아니요.
기본값
4K
crush-device-class
설명
hdd 또는 ssd 와 같은 장치 클래스입니다. RHCS 3 이상에서만 사용할 수 있습니다.
유형
문자열
필수 항목
없음
기본값
none, 즉 CRUSH는 클래스와 관계없이 모든 장치를 사용합니다.
crush-failure-domain
설명
호스트 또는 과 같은 실패 도메인.
유형
문자열
필수 항목
없음
기본값
host
key
설명
나머지 키-값 쌍의 의미는 erasure 코드 플러그인에 의해 정의됩니다.
유형
문자열
필수 항목
아니요.
--force
설명
동일한 이름으로 기존 프로필을 재정의합니다.
유형
문자열
필수 항목
아니요.

5.2.2. OSD 삭제-code-profile Remove

제거 코드 프로파일을 제거하려면 다음을 수행합니다.

ceph osd erasure-code-profile rm <name>

풀에서 프로필을 참조하는 경우 삭제가 실패합니다.

5.2.3. OSD erasure-code-profile Get

삭제 코드 프로필을 표시하려면 다음을 수행합니다.

ceph osd erasure-code-profile get <name>

5.2.4. OSD 삭제-code-profile 목록

모든 삭제 코드 프로필의 이름을 나열하려면 다음을 수행합니다.

ceph osd erasure-code-profile ls
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.