2.7. CRUSH 규칙


CRUSH 규칙은 Ceph 클라이언트가 오브젝트를 저장하기 위해 버킷과 기본 OSD를 선택하는 방법과 기본 OSD가 버킷과 보조 OSD를 선택하여 복제본 또는 코딩 청크를 저장하는 방법을 정의합니다. 예를 들어 두 개의 오브젝트 복제본에 대해 SSD에서 지원하는 대상 OSD 쌍을 선택하는 규칙과 세 개의 데이터 센터의 SAS 드라이브에서 지원하는 대상 OSD 3개를 선택하는 규칙을 생성할 수 있습니다.

규칙은 다음과 같은 형태를 취합니다.

rule <rulename> {

    id <unique number>
    type [replicated | erasure]
    min_size <min-size>
    max_size <max-size>
    step take <bucket-type> [class <class-name>]
    step [choose|chooseleaf] [firstn|indep] <N> <bucket-type>
    step emit
}
id
설명
규칙을 식별하는 고유한 정수입니다.
목적
규칙 마스크의 구성 요소입니다.
유형
정수
필수 항목
제공됨
기본
0
type
설명
복제 또는 삭제 코딩된 스토리지 드라이브에 대한 규칙을 설명합니다.
목적
규칙 마스크의 구성 요소입니다.
유형
문자열
필수 항목
제공됨
기본
복제됨
유효한 값
현재 복제만 현재
min_size
설명
풀이 이 수보다 적은 복제본을 생성하는 경우 CRUSH는 이 규칙을 선택하지 않습니다.
유형
정수
목적
규칙 마스크의 구성 요소입니다.
필수 항목
제공됨
기본
1
max_size
설명
풀이 이 수보다 많은 복제본을 생성하는 경우 CRUSH는 이 규칙을 선택하지 않습니다.
유형
정수
목적
규칙 마스크의 구성 요소입니다.
필수 항목
제공됨
기본
10
Step take <bucket-name> [class <class-name>]
설명
버킷 이름을 가져와서 트리 반복을 시작합니다.
목적
규칙의 구성 요소입니다.
필수 항목
제공됨
step take datastep take data class ssd
Step choose firstn <num> type <bucket-type>
설명

지정된 유형의 버킷 수를 선택합니다. 숫자는 일반적으로 풀의 복제본 수(즉, 풀 크기)입니다.

  • &lt ;num> == 0 인 경우 pool-num-replicas 버킷을 선택합니다(사용 가능한 모든).
  • < num> > 0 && < pool-num-replicas 이면 해당 개수의 버킷을 선택합니다.
  • & lt;num> < 0 이면 pool-num-replicas - {num} 임을 의미합니다.
목적
규칙의 구성 요소입니다.
사전 요구 사항
다음 단계 또는 단계 선택
단계 선택 firstn 1 유형 행
Step chooseleaf firstn <num> type <bucket-type>
설명

{bucket-type} 버킷 세트를 선택하고 버킷 세트에 있는 각 버킷의 하위 트리에서 리프 노드를 선택합니다. 세트의 버킷 수는 일반적으로 풀의 복제본 수(즉, 풀 크기)입니다.

  • &lt ;num> == 0 인 경우 pool-num-replicas 버킷을 선택합니다(사용 가능한 모든).
  • < num> > 0 && < pool-num-replicas 이면 해당 개수의 버킷을 선택합니다.
  • &lt ;num> < 0 이면 pool-num-replicas - <num> 임을 의미합니다.
목적
규칙의 구성 요소입니다. 사용에서는 두 단계를 사용하여 장치를 선택할 필요가 없습니다.
사전 요구 사항
다음 단계 또는 단계 선택
단계 chooseleaf firstn 0 유형 행
Step emit
설명
현재 값을 출력하고 스택을 시도합니다. 일반적으로 규칙 끝에 사용되지만 동일한 규칙에서 다른 트리를 선택하는 데 사용할 수도 있습니다.
목적
규칙의 구성 요소입니다.
사전 요구 사항
다음 단계에서 선택합니다.
Step emit
FirstN vs indep
설명
CRUSH 맵에서 OSD가 다운된 경우 CRUSH 대체 전략 사용을 제어합니다. 이 규칙을 복제 풀과 함께 사용하려면 firstn 이어야 하며 삭제 코드 풀의 경우 indep 이어야 합니다.
OSD 1, 2, 3, 4, 5에 있는 PG가 3이 내려갑니다. 첫 번째 시나리오에서는 firstn 모드를 사용하여 CRUSH가 계산을 조정하여 1과 2를 선택한 다음 3을 선택하지만 검색되지만 다운되므로 4 및 5를 다시 시도한 다음 새 OSD 6을 선택합니다. CRUSH 매핑의 최종 변경 사항은 1, 2, 3, 4, 5 to 1, 2, 4, 5, 6 입니다. 두 번째 시나리오에서는 삭제 코드 풀에 indep 모드가 있는 CRUSH는 실패한 OSD 3을 선택하려고 시도하며 다시 시도한 후 1, 2, 3, 4, 5 에서 1, 2, 6, 4, 5 에서 최종 변환을 위해 6을 선택합니다.
중요

지정된 CRUSH 규칙은 여러 풀에 할당할 수 있지만 단일 풀에는 CRUSH 규칙이 여러 개 있을 수 없습니다.

2.7.1. CRUSH 규칙 나열

명령줄에서 CRUSH 규칙을 나열하려면 다음을 실행합니다.

구문

ceph osd crush rule list
ceph osd crush rule ls

2.7.2. CRUSH 규칙 덤프

특정 CRUSH 규칙의 내용을 덤프하려면 다음을 실행합니다.

구문

ceph osd crush rule dump NAME

2.7.3. CRUSH 규칙 추가

CRUSH 규칙을 추가하려면 규칙 이름, 사용할 계층의 루트 노드, 복제할 버킷 유형(예: 'rack', 'row' 등) 및 버킷 선택을 위한 모드를 지정해야 합니다.

구문

ceph osd crush rule create-simple RUENAME ROOT BUCKET_NAME FIRSTN_OR_INDEP

Ceph는 chooseleaf 를 사용하여 규칙을 만들고 지정한 유형의 버킷을 1개 만듭니다.

[ceph: root@host01 /]# ceph osd crush rule create-simple deleteme default host firstn

다음 규칙을 생성합니다.

{ "id": 1,
  "rule_name": "deleteme",
  "type": 1,
  "min_size": 1,
  "max_size": 10,
  "steps": [
        { "op": "take",
          "item": -1,
          "item_name": "default"},
        { "op": "chooseleaf_firstn",
          "num": 0,
          "type": "host"},
        { "op": "emit"}]}

2.7.4. 복제된 풀에 대한 CRUSH 규칙 생성

복제된 풀에 대한 CRUSH 규칙을 생성하려면 다음을 실행합니다.

구문

ceph osd crush rule create-replicated NAME ROOT FAILURE_DOMAIN CLASS

다음과 같습니다.

  • < name > : 규칙의 이름입니다.
  • < root > : CRUSH 계층 구조의 루트입니다.
  • <failure-domain > : 실패 도메인. 예: host 또는 rack.
  • < class > : 스토리지 장치 클래스입니다. 예: hdd 또는 ssd.

[ceph: root@host01 /]# ceph osd crush rule create-replicated fast default host ssd

2.7.5. 코딩된 풀 삭제에 대한 CRUSH 규칙 생성

삭제 코딩 풀과 함께 사용할 CRUSH 규칙을 추가하려면 규칙 이름과 삭제 코드 프로필을 지정할 수 있습니다.

구문

ceph osd crush rule create-erasure RULE_NAME PROFILE_NAME

예제

[ceph: root@host01 /]# ceph osd crush rule create-erasure default default

추가 리소스

2.7.6. CRUSH 규칙 제거

규칙을 제거하려면 다음을 실행하고 CRUSH 규칙 이름을 지정합니다.

구문

ceph osd crush rule rm NAME

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.