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 data
step take data class ssd
- Step choose firstn <num> type <bucket-type>
- 설명
지정된 유형의 버킷 수를 선택합니다. 숫자는 일반적으로 풀의 복제본 수(즉, 풀 크기)입니다.
-
<
;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}
버킷 세트를 선택하고 버킷 세트에 있는 각 버킷의 하위 트리에서 리프 노드를 선택합니다. 세트의 버킷 수는 일반적으로 풀의 복제본 수(즉, 풀 크기)입니다.-
<
;num> == 0 인
경우pool-num-replicas
버킷을 선택합니다(사용 가능한 모든). -
<
num> > 0 && < pool-num-replicas
이면 해당 개수의 버킷을 선택합니다. -
<
;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
추가 리소스
- 자세한 내용은 Erasure 코드 프로필을 참조하십시오.
2.7.6. CRUSH 규칙 제거
규칙을 제거하려면 다음을 실행하고 CRUSH 규칙 이름을 지정합니다.
구문
ceph osd crush rule rm NAME