2.7. CRUSH 규칙


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

규칙은 다음 형식을 사용합니다.

Copy to Clipboard Toggle word wrap
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
설명
코딩된 스토리지 드라이브 복제 또는 삭제 규칙에 대해 설명합니다.
목적
규칙 마스크의 구성 요소입니다.
유형
문자열
필수 항목
있음
기본값
replicated
유효한 값
현재 복제
min_size
설명
풀이 이 숫자보다 복제본을 더 적게 만드는 경우 CRUSH는 이 규칙을 선택하지 않습니다.
유형
정수
목적
규칙 마스크의 구성 요소입니다.
필수 항목
있음
기본값
1
max_size
설명
풀이 이 번호보다 복제본을 더 많이 만드는 경우 CRUSH는 이 규칙을 선택하지 않습니다.
유형
정수
목적
규칙 마스크의 구성 요소입니다.
필수 항목
있음
기본값
10
Step take <bucket-name> [class <class-name>]
설명
버킷 이름을 가져와서 트리 반복을 시작합니다.
목적
규칙의 구성 요소입니다.
필수 항목
있음
예제
Step take datastep take data class ssd
step select firstn <num> type <bucket-type>
설명

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

  • &lt ;num> == 0 인 경우 pool-num-replicas 버킷(사용 가능한 모든)을 선택합니다.
  • < num> > 0 && < pool-num-replicas 이면 여러 버킷을 선택합니다.
  • & lt;num> < 0 이면 pool-num-replicas - {num} 을 의미합니다.
목적
규칙의 구성 요소입니다.
사전 요구 사항
단계를 따르거나 단계를 선택합니다.
예제
Step select firstn 1 type row
Step selectleaf 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> 을 의미합니다.
목적
규칙의 구성 요소입니다. 사용량은 두 단계를 사용하여 장치를 선택할 필요가 없습니다.
사전 요구 사항
다음 단계는 단계 또는 단계를 선택합니다.
예제
Step selectleaf firstn 0 type row
Step emit
설명
현재 값을 출력하고 스택을 의미합니다. 일반적으로 규칙의 끝에서 사용되지만 동일한 규칙의 다른 트리에서 선택하는 데 사용될 수도 있습니다.
목적
규칙의 구성 요소입니다.
사전 요구 사항
다음 단계는 을 선택합니다.
예제
Step emit
FirstN vdep 비교
설명
CRUSH 맵에서 OSD가 다운된 경우 CRUSH가 사용하는 대체 전략을 제어합니다. 이 규칙을 복제 풀과 함께 사용해야 하는 경우 먼저 수행해야 하며 소거 코드된 풀의 경우 이 규칙을 사용하지 않아야 합니다.
예제
PG가 OSD 1, 2, 3, 4, 5에 저장되어 있습니다. 첫 번째 시나리오에서 CRUSH는 번째 모드를 사용하여 1 및 2를 선택한 다음 3을 선택하지만 4 및 5를 다시 시도하여 4 및 5를 선택한 다음 계속 진행합니다. 마지막 CRUSH 매핑 변경은 1, 2, 3, 4, 5 에서 1, 2, 4, 5, 6 입니다. 두 번째 시나리오에서는 삭제 코드된 풀의 dep 모드를 사용하여, CRUSH가 실패한 OSD 3을 다시 선택하고, 6을 선택하여 1, 2, 3, 4, 5 에서 1, 2, 6, 4, 5 로부터 최종 변환을 시도합니다.
중요

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

2.7.1. 규칙 나열

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

Copy to Clipboard Toggle word wrap
ceph osd crush rule list
ceph osd crush rule ls

2.7.2. 규칙 덤프

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

Copy to Clipboard Toggle word wrap
ceph osd crush rule dump {name}

2.7.3. 간단한 규칙 추가

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

Copy to Clipboard Toggle word wrap
ceph osd crush rule create-simple {rulename} {root} {bucket-type} {firstn|indep}

Ceph는 지정한 유형의 chooseleaf 및 1개의 버킷으로 규칙을 만듭니다.

예를 들어 다음과 같습니다.

Copy to Clipboard Toggle word wrap
ceph osd crush rule create-simple deleteme default host firstn

다음 규칙을 생성합니다.

Copy to Clipboard Toggle word wrap
{ "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 규칙을 만들려면 다음을 실행합니다.

Copy to Clipboard Toggle word wrap
# ceph osd crush rule create-replicated <name> <root> <failure-domain> <class>

다음과 같습니다.

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

예를 들어 다음과 같습니다.

Copy to Clipboard Toggle word wrap
# ceph osd crush rule create-replicated fast default host ssd

2.7.5. 평가 코드 규칙 추가

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

구문

Copy to Clipboard Toggle word wrap
ceph osd crush rule create-erasure {rulename} {profilename}

예제

Copy to Clipboard Toggle word wrap
[ceph: root@host01 /]# ceph osd crush rule create-erasure default default

추가 리소스

2.7.6. 규칙 제거

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

Copy to Clipboard Toggle word wrap
ceph osd crush rule rm {name}
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat, Inc.