검색

5.4. Ceph Manager balancer 모듈 사용

download PDF

밸런서는 자동으로 또는 숙련된 방식으로 분산 배포를 수행하기 위해 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은 일반 CRUSH 배치 계산에 예외적으로 개별 OSD에 대한 명시적 매핑을 저장할 수 있습니다. 이러한 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

5.4.1. 용량 밸런서를 사용하여 Red Hat Ceph 클러스터 밸런싱

용량 밸런서를 사용하여 Red Hat Ceph 스토리지 클러스터의 균형을 조정합니다.

사전 요구 사항

  • 실행 중인 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-compat

    또는

    예제

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

  4. 밸런서의 현재 상태를 확인합니다.

    예제

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

자동 밸런싱

기본적으로 balancer 모듈을 켜면 자동 밸런싱이 사용됩니다.

예제

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

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

예제

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

이렇게 하면 이전 클라이언트와 이전 버전과 호환되는 crush-compat 모드를 사용하며 OSD가 동일하게 활용되도록 시간이 지남에 따라 데이터 배포를 약간 변경합니다.

제한

OSD가 실패하고 시스템이 아직 복구되지 않은 경우 클러스터의 성능이 저하된 경우 PG 배포에 대한 조정이 이루어지지 않습니다.

클러스터가 정상이면 밸런서는 변경 사항을 제한하여 잘못 배치되거나 이동해야 하는 PG의 백분율이 기본적으로 임계값의 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. 현재 PG 배포를 위해 또는 계획을 실행한 후 발생할 PG 배포를 위해 데이터 배포의 품질을 평가합니다.
  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

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

      [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

      참고

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

5.4.2. 읽기 밸런서를 사용하여 Red Hat Ceph 클러스터 밸런싱 [기술 프리뷰]

중요

Read Balancer는 Red Hat Ceph Storage 7.0에만 기술 프리뷰 기능입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있으며 Red Hat은 해당 기능을 프로덕션용으로 사용하지 않는 것이 좋습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. 자세한 내용은 Red Hat 기술 프리뷰 기능에 대한 지원 범위를 참조하십시오.

균형이 맞지 않는 기본 OSD가 있는 경우 osdmaptool 에 빌드된 오프라인 Cryostat로 업데이트할 수 있습니다.

최상의 결과를 보장하기 위해 읽기 밸런서를 실행하기 전에 용량 밸런서를 실행하는 것이 좋습니다.

읽기 밸런서를 사용하여 클러스터의 균형을 조정하려면 절차의 단계를 따르십시오.

사전 요구 사항

  • 실행 중이고 용량 균형을 이루는 Red Hat Ceph Storage 클러스터입니다.
  • 최상의 결과를 보장하기 위해 읽기 밸런서를 실행하기 전에 용량 밸런서를 실행하여 각 OSD의 용량을 균형 있게 조정하는 것이 좋습니다. 다음 단계를 실행하여 용량의 균형을 조정합니다.

    1. osdmap의 최신 사본을 가져옵니다.

      [ceph: root@host01 /]# ceph osd  getmap -o map
    2. upmap 밸런서를 실행합니다.

      [ceph: root@host01 /]# ospmaptool map –upmap out.txt
    3. file out.txt에는 제안된 솔루션이 포함되어 있습니다.

      이 절차의 명령은 클러스터에 변경 사항을 적용하기 위해 실행되는 일반 Ceph CLI 명령입니다.

      out.txt 파일에 권장 사항이 있는 경우 다음 명령을 실행합니다.

      [ceph: root@host01 /]# source out.txt

      자세한 내용은 Balancing IBM Ceph cluster using capacity balancer에서 참조하십시오.

프로세스

  1. 각 풀에 사용할 수 있는 read_balance_score 를 확인합니다.

    [ceph: root@host01 /]# ceph osd pool ls detail

    read_balance_score 가 1보다 큰 경우 풀에서 기본 OSD의 균형이 해제되었습니다.

    동종 클러스터의 경우 최적의 점수는 [Ceil{( PGs/Number of OSDs)}/( PGs/Number of OSDs)]/[ ( PGs/Number of OSDs)/(CPU 수의 PGs/Number)]입니다. 예를 들어 32개의 PG와 10개의 OSD가 있는 풀이 있는 경우 ( PGs/Number of OSDs) = 32/10 = 3.2입니다. 따라서 모든 장치가 동일한 경우 최적 점수는 4/3.2 = 1.25인 최적 점수가 3.2의 경우 ( PG/Number of OSDs)로 나뉩니다. 64 PG가 있는 동일한 시스템에 다른 풀이 있는 경우 최적의 점수는 7/6.4 =1.09375입니다.

    출력 예:

    $ ceph osd pool ls detail
    pool 1 '.mgr' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 1 pgp_num 1 autoscale_mode on last_change 17 flags hashpspool stripe_width 0 pg_num_max 32 pg_num_min 1 application mgr read_balance_score 3.00
    pool 2 'cephfs.a.meta' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 16 pgp_num 16 autoscale_mode on last_change 55 lfor 0/0/25 flags hashpspool stripe_width 0 pg_autoscale_bias 4 pg_num_min 16 recovery_priority 5 application cephfs read_balance_score 1.50
    pool 3 'cephfs.a.data' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode on last_change 27 lfor 0/0/25 flags hashpspool,bulk stripe_width 0 application cephfs read_balance_score 1.31

  2. osdmap 의 최신 사본을 가져옵니다.

    [ceph: root@host01 /]# ceph osd getmap -o om

    출력 예:

    got osdmap epoch 56

  3. Cryostat를 실행합니다.

    file out.txt 에는 제안된 솔루션이 포함되어 있습니다.

    [ceph: root@host01 /]# osdmaptool om --read out.txt --read-pool _POOL_NAME_ [--vstart]

    출력 예:

    $ osdmaptool om --read out.txt --read-pool cephfs.a.meta
    ./bin/osdmaptool: osdmap file 'om'
    writing upmap command output to: out.txt
    ---------- BEFORE ------------
     osd.0 | primary affinity: 1 | number of prims: 4
     osd.1 | primary affinity: 1 | number of prims: 8
     osd.2 | primary affinity: 1 | number of prims: 4
    
    read_balance_score of 'cephfs.a.meta': 1.5
    
    ---------- AFTER ------------
     osd.0 | primary affinity: 1 | number of prims: 5
     osd.1 | primary affinity: 1 | number of prims: 6
     osd.2 | primary affinity: 1 | number of prims: 5
    
    read_balance_score of 'cephfs.a.meta': 1.13
    
    
    num changes: 2

  4. file out.txt 에는 제안된 솔루션이 포함되어 있습니다.

    이 절차의 명령은 클러스터에 변경 사항을 적용하기 위해 실행되는 일반 Ceph CLI 명령입니다. vstart 클러스터에서 작업하는 경우 CLI 명령이 ./bin/ 접두사로 포맷되도록 --vstart 매개변수를 전달할 수 있습니다.

    [ceph: root@host01 /]# source out.txt

    출력 예:

    $ cat out.txt
    ceph osd pg-upmap-primary 2.3 0
    ceph osd pg-upmap-primary 2.4 2
    
    $ source out.txt
    change primary for pg 2.3 to osd.0
    change primary for pg 2.4 to osd.2

    참고

    ceph osd pg-upmap-primary 명령을 처음 실행하는 경우 다음과 같이 경고가 표시될 수 있습니다.

    Error EPERM: min_compat_client luminous < reef, which is required for pg-upmap-primary. Try 'ceph osd set-require-min-compat-client reef' before using the new interface

    이 경우 권장 명령 ceph osd set-require-min-compat-client reef 를 실행하고 클러스터의 min-compact-client를 조정합니다.

참고

배치 그룹(PG) 수가 변경되거나 클러스터에서 OSD가 추가되거나 제거된 경우 이러한 작업이 풀에 읽기 밸런서 효과에 상당한 영향을 미칠 수 있으므로 점수를 다시 확인하고 밸런서를 다시 실행하는 것이 좋습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.