5.5. Ceph Manager 밸런서 모듈 사용

이 밸런서는 자동으로 또는 감독된 방식으로 분산 배포를 수행하기 위해 OSD 간에 배치 그룹(PG)의 배치를 최적화하는 Ceph Manager(ceph-mgr)용 모듈입니다.

현재는 balancer 모듈을 비활성화할 수 없습니다. 구성을 사용자 지정하기만 해제할 수 있습니다.

모드

현재 두 가지 지원되는 밸런서 모드가 있습니다.

  • crush-compat: CRUSH 호환성 모드는 Ceph Luminous에 도입된 compat weight-set 기능을 사용하여 CRUSH 계층 구조의 장치에 대한 대체 가중치 집합을 관리합니다. 일반 가중치는 장치에 저장하려는 대상 데이터 양을 반영하도록 장치의 크기로 설정되어야 합니다. 그런 다음 밸런서는 가능한 한 가깝게 대상 배포와 일치하는 배포를 달성하기 위해 weight-set 값을 최적화하여 작은 증분으로 조정하거나 축소합니다. PG 배치는 의사 임의 프로세스이므로 배치에는 자연적인 변형이 있습니다. 가중치를 최적화함으로써 밸런서는 이러한 자연적 변형을 수행합니다.

    이 모드는 이전 클라이언트와 완전히 호환됩니다. OSDMap 및 CRUSH 맵이 이전 클라이언트와 공유되면 밸런서는 최적화된 가중치를 실제 가중치로 제공합니다.

    이 모드의 기본 제한은 계층 구조의 하위 트리가 모든 OSD를 공유하는 경우 다양한 배치 규칙으로 여러 CRUSH 계층 구조를 처리할 수 없다는 것입니다. 이 구성을 사용하면 공유 OSD에서 공간 사용률을 관리하기가 어렵기 때문에 일반적으로 사용하지 않는 것이 좋습니다. 따라서 이 제한은 일반적으로 문제가 아닙니다.

  • upmap: Luminous부터 OSDMap은 개별 OSD에 대한 명시적 매핑을 일반 CRUSH 배치 계산에 예외적으로 저장할 수 있습니다. 이러한 upmap 항목은 PG 매핑에 대한 세분화된 제어를 제공합니다. 이 CRUSH 모드는 분산 배포를 수행하기 위해 개별 PG의 배치를 최적화합니다. 대부분의 경우 이 배포는 균등하게 분배되지 않을 수 있으므로 각 OSD +/-1 PG에 동일한 수의 PG가 있는 "perfect"입니다.

    중요

    이 기능을 사용하려면 다음 명령을 사용하여 고급 또는 이후 클라이언트만 지원해야 함을 클러스터에 알려야 합니다.

    [ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous

    기존 클라이언트 또는 데몬이 모니터에 연결되어 있으면 이 명령이 실패합니다.

    알려진 문제로 인해 커널 CephFS 클라이언트는 자신을 jewel 클라이언트로 보고합니다. 이 문제를 해결하려면 --yes-i-really-mean-it 플래그를 사용합니다.

    [ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it

    다음과 함께 사용 중인 클라이언트 버전을 확인할 수 있습니다.

    [ceph: root@host01 /]# ceph features

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.

절차

  1. balancer 모듈이 활성화되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph mgr module enable balancer

  2. balancer 모듈을 켭니다.

    예제

    [ceph: root@host01 /]# ceph balancer on

  3. 기본 모드는 upmap 입니다. 모드는 다음을 사용하여 변경할 수 있습니다.

    예제

    [ceph: root@host01 /]# ceph balancer mode crush-compact

    또는

    예제

    [ceph: root@host01 /]# ceph balancer mode upmap

상태

pod의 현재 상태는 다음을 사용하여 언제든지 확인할 수 있습니다.

예제

[ceph: root@host01 /]# ceph balancer status

자동 분산

기본적으로 balancer 모듈을 활성화하면 자동 분산이 사용됩니다.

예제

[ceph: root@host01 /]# ceph balancer on

다음을 사용하여 밸런서를 다시 끌 수 있습니다.

예제

[ceph: root@host01 /]# ceph balancer off

이 명령은 이전 클라이언트와 역호환되는 crush-compat 모드를 사용하며 시간이 지남에 따라 데이터 배포를 약간 변경하여 OSD를 동일하게 활용합니다.

제한

클러스터가 성능이 저하되고 OSD가 실패하여 시스템이 아직 복구되지 않은 경우와 같이 cluster가 저하된 경우는 Placement 배포에서 조정되지 않습니다.

클러스터가 정상이면 밸런서에서 잘못된 배치 또는 이동해야 하는 PC의 백분율이 기본적으로 5% 미만인 만큼 해당 변경 사항을 제한합니다. 이 백분율은 target_max_misplaced_ratio 설정을 사용하여 조정할 수 있습니다. 예를 들어 임계값을 7%로 늘리려면 다음을 수행합니다.

예제

[ceph: root@host01 /]# ceph config-key set mgr target_max_misplaced_ratio .07

자동 밸런싱의 경우:

  • 자동 밸런서 실행 사이에 절전할 시간(초)을 설정합니다.

예제

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/sleep_interval 60

  • HHMM 형식으로 자동 균형을 시작할 시간을 설정합니다.

예제

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_time 0000

  • HHMM 형식으로 자동 균형을 완료하는 시간을 설정합니다.

예제

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_time 2359

  • 이 요일 또는 이후 버전으로 자동 균형을 제한합니다. crontab과 동일한 규칙을 사용하며 0 은 줄임말이며 1 은 월요일입니다.

예제

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_weekday 0

  • 이번 주 또는 이전 요일에 대한 자동 균형을 제한합니다. 이것은 crontab과 동일한 규칙을 사용하며 0 은 줄임말이며 1 은 월요일입니다.

예제

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_weekday 6

  • 자동 밸런싱이 제한된 풀 ID를 정의합니다. 이 기본값은 빈 문자열입니다. 즉, 모든 풀이 균형을 유지합니다. ceph osd pool ls detail 명령을 사용하여 숫자 풀 ID를 가져올 수 있습니다.

예제

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3

감독된 최적화

밸런서 작업은 다음과 같은 몇 가지 단계로 나뉩니다.

  1. 계획 수립.
  2. 데이터 배포의 품질(현재 DASD 배포 또는 계획 실행 후 발생 시 발생)에 대한 데이터 배포 품질을 평가합니다.
  3. 계획 실행.

    • 현재 배포를 평가하고 점수를 매기려면 다음을 수행합니다.

      예제

      [ceph: root@host01 /]# ceph balancer eval

    • 단일 풀의 배포를 평가하려면 다음을 수행합니다.

      구문

      ceph balancer eval POOL_NAME

      예제

      [ceph: root@host01 /]# ceph balancer eval rbd

    • 평가에 대한 세부 정보를 보려면 다음을 수행합니다.

      예제

      [ceph: root@host01 /]# ceph balancer eval-verbose ...

    • 현재 구성된 모드를 사용하여 계획을 생성하려면 다음을 수행합니다.

      구문

      ceph balancer optimize PLAN_NAME

      PLAN_NAME 을 사용자 지정 계획 이름으로 교체합니다.

      예제

      [ceph: root@host01 /]# ceph balancer optimize rbd_123

    • 계획 내용을 보려면 다음을 수행합니다.

      구문

      ceph balancer show PLAN_NAME

      예제

      [ceph: root@host01 /]# ceph balancer show rbd_123

    • 이전 계획을 삭제하려면 다음을 수행합니다.

      구문

      ceph balancer rm PLAN_NAME

      예제

      [ceph: root@host01 /]# ceph balancer rm rbd_123

    • 현재 기록된 계획을 보려면 상태 명령을 사용합니다.

      [ceph: root@host01 /]# ceph balancer status
    • 계획을 실행한 후 발생하는 배포 품질을 계산하려면 다음을 수행합니다.

      구문

      ceph balancer eval PLAN_NAME

      예제

      [ceph: root@host01 /]# ceph balancer eval rbd_123

    • 계획을 실행하려면 다음을 수행합니다.

      구문

      ceph balancer execute PLAN_NAME

      예제

      [ceph: root@host01 /]# ceph balancer execute rbd_123

      참고

      배포를 개선할 것으로 예상되는 경우에만 계획을 실행합니다. 실행 후 계획이 취소됩니다.