문제 해결 가이드


Red Hat Ceph Storage 6

Red Hat Ceph Storage 문제 해결

Red Hat Ceph Storage Documentation Team

초록

이 문서에서는 Red Hat Ceph Storage의 일반적인 문제를 해결하는 방법을 설명합니다.
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지에서 참조하십시오.

1장. 초기 문제 해결

스토리지 관리자는 Red Hat 지원에 문의하기 전에 Red Hat Ceph Storage 클러스터의 초기 문제 해결을 수행할 수 있습니다. 이 장에서는 다음 정보가 포함되어 있습니다.

사전 요구 사항

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

1.1. 문제 확인

Red Hat Ceph Storage 클러스터의 오류 발생 가능성을 확인하려면 프로세스 섹션의 질문에 대답하십시오.

사전 요구 사항

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

절차

  1. 지원되지 않는 구성을 사용할 때 특정 문제가 발생할 수 있습니다. 구성이 지원되는지 확인합니다.
  2. Ceph 구성 요소가 문제의 원인이 무엇인지 알고 있습니까?

    1. 아니요. Red Hat Ceph Storage 문제 해결 가이드 의 Ceph 스토리지 클러스터 상태 진단 관련 절차를 따릅니다.
    2. Ceph 모니터. Red Hat Ceph Storage 문제 해결 가이드의 Ceph 모니터 문제 해결 섹션을 참조하십시오.
    3. Ceph OSD Red Hat Ceph Storage 문제 해결 가이드의 Ceph OSD 문제 해결 섹션을 참조하십시오.
    4. Ceph 배치 그룹. Red Hat Ceph Storage 문제 해결 가이드의 Ceph 배치 그룹 문제 해결 섹션을 참조하십시오.
    5. 다중 사이트 Ceph 오브젝트 게이트웨이. Red Hat Ceph Storage 문제 해결 가이드의 다중 사이트 Ceph Object Gateway 문제 해결 섹션을 참조하십시오.

추가 리소스

1.2. 스토리지 클러스터의 상태 진단

다음 절차에서는 Red Hat Ceph Storage 클러스터의 상태를 진단하는 기본 단계를 나열합니다.

사전 요구 사항

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

절차

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 스토리지 클러스터의 전체 상태를 확인합니다.

    예제

    [ceph: root@host01 /]# ceph health detail
    Copy to Clipboard Toggle word wrap

    명령에서 HEALTH_WARN 또는 HEALTH_ERR 을 반환하는 경우 자세한 내용은 Ceph 상태 이해를 참조하십시오.

  3. 스토리지 클러스터의 로그를 모니터링합니다.

    예제

    [ceph: root@host01 /]# ceph -W cephadm
    Copy to Clipboard Toggle word wrap

  4. 클러스터 로그를 파일에 캡처하려면 다음 명령을 실행합니다.

    예제

    [ceph: root@host01 /]# ceph config set global log_to_file true
    [ceph: root@host01 /]# ceph config set global mon_cluster_log_to_file true
    Copy to Clipboard Toggle word wrap

    로그는 기본적으로 /var/log/ceph/CLUSTER_FSID/ 디렉터리에 있습니다. Ceph 로그 이해에 나열된 오류 메시지의 경우 Ceph 로그를 확인합니다.

  5. 로그에 충분한 정보가 포함되어 있지 않으면 디버깅 수준을 늘리고 실패한 작업을 재현합니다. 자세한 내용은 로깅 구성 을 참조하십시오.

1.3. Ceph 상태 이해

ceph health 명령은 Red Hat Ceph Storage 클러스터의 상태에 대한 정보를 반환합니다.

  • HEALTH_OK 는 클러스터가 정상임을 나타냅니다.
  • HEALTH_WARN 은 경고를 나타냅니다. Ceph 상태가 자동으로 HEALTH_OK 로 돌아가는 경우도 있습니다. 예를 들어 Red Hat Ceph Storage 클러스터가 재조정 프로세스를 완료한 경우입니다. 그러나 클러스터가 더 긴 시간 동안 HEALTH_WARN 상태에 있는 경우 추가 문제 해결을 고려하십시오.
  • HEALTH_ERR 은 즉각적인 주의가 필요한 더 심각한 문제를 나타냅니다.

ceph 상태 세부 정보ceph -s 명령을 사용하여 보다 자세한 출력을 가져옵니다.

참고

mgr 데몬이 실행되지 않으면 상태가 표시됩니다. Red Hat Ceph Storage 클러스터의 마지막 mgr 데몬이 제거된 경우 Red Hat Storage 클러스터의 임의의 호스트에 mgr 데몬을 수동으로 배포할 수 있습니다. Red Hat Ceph Storage 6 관리 가이드에서 mgr 데몬 수동 배포를 참조하십시오.

1.4. Ceph 클러스터에 대한 상태 경고 변경

특정 시나리오에서 사용자는 이미 경고를 인식하고 즉시 조치를 취할 수 없기 때문에 일부 경고를 일시적으로 음소거할 수 있습니다. 보고된 전체 Ceph 클러스터 상태에 영향을 미치지 않도록 상태 점검을 음소거할 수 있습니다.

경고는 상태 점검 코드를 사용하여 지정됩니다. 한 가지 예로는 유지 관리를 위해 OSD_DOWN 경고가 예상됩니다. 이러한 경고가 전체 유지 관리 기간 동안 HEALTH_OK 대신 클러스터를 HEALTH_WARN 에 배치하므로 유지보수가 끝날 때까지 경고를 음소거할 수 있습니다.

대부분의 건강 음소거는 경고의 범위가 더 나빠지면 사라집니다. 예를 들어 OSD가 한 개이고 경고가 음소거되면 하나 이상의 OSD가 다운되면 음소거가 사라집니다. 이는 경고를 트리거하는 횟수 또는 얼마나 많은 항목을 나타내는 개수를 포함하는 모든 상태 경고에 적용됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준의 액세스 권한입니다.
  • 상태 경고 메시지입니다.

절차

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. ceph health detail 명령을 실행하여 Red Hat Ceph Storage 클러스터의 상태를 확인합니다.

    예제

    [ceph: root@host01 /]# ceph health detail
    
    HEALTH_WARN 1 osds down; 1 OSDs or CRUSH {nodes, device-classes} have {NOUP,NODOWN,NOIN,NOOUT} flags set
    [WRN] OSD_DOWN: 1 osds down
        osd.1 (root=default,host=host01) is down
    [WRN] OSD_FLAGS: 1 OSDs or CRUSH {nodes, device-classes} have {NOUP,NODOWN,NOIN,NOOUT} flags set
        osd.1 has flags noup
    Copy to Clipboard Toggle word wrap

    OSD 중 하나가 다운되었기 때문에 스토리지 클러스터가 HEALTH_WARN 상태에 있음을 확인할 수 있습니다.

  3. 경고를 음소거합니다.

    구문

    ceph health mute HEALTH_MESSAGE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph health mute OSD_DOWN
    Copy to Clipboard Toggle word wrap

  4. 선택 사항: 상태 점검 음소거는 지정된 기간이 경과한 후 음소거가 자동으로 만료되도록 연결된 TTL(TTL)을 사용할 수 있습니다. 명령에서 TTL을 선택적 기간 인수로 지정합니다.

    구문

    ceph health mute HEALTH_MESSAGE DURATION
    Copy to Clipboard Toggle word wrap

    DURATIONs,sec,m,min,h, hour 으로 지정할 수 있습니다.

    예제

    [ceph: root@host01 /]# ceph health mute OSD_DOWN 10m
    Copy to Clipboard Toggle word wrap

    이 예에서 OSD_DOWN 경고는 10분 동안 음소거됩니다.

  5. Red Hat Ceph Storage 클러스터 상태가 HEALTH_OK 로 변경되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph -s
      cluster:
        id:     81a4597a-b711-11eb-8cb8-001a4a000740
        health: HEALTH_OK
                (muted: OSD_DOWN(9m) OSD_FLAGS(9m))
    
      services:
        mon: 3 daemons, quorum host01,host02,host03 (age 33h)
        mgr: host01.pzhfuh(active, since 33h), standbys: host02.wsnngf, host03.xwzphg
        osd: 11 osds: 10 up (since 4m), 11 in (since 5d)
    
      data:
        pools:   1 pools, 1 pgs
        objects: 13 objects, 0 B
        usage:   85 MiB used, 165 GiB / 165 GiB avail
        pgs:     1 active+clean
    Copy to Clipboard Toggle word wrap

    이 예에서는 OSD_DOWNOSD_FLAG 경고가 음소거되고 음소거가 9분 동안 활성화되어 있음을 확인할 수 있습니다.

  6. 선택 사항: 경고가 고정 해제된 후에도 음소거를 유지할 수 있습니다.

    구문

    ceph health mute HEALTH_MESSAGE DURATION --sticky
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph health mute OSD_DOWN 1h --sticky
    Copy to Clipboard Toggle word wrap

  7. 다음 명령을 실행하여 음소거를 제거할 수 있습니다.

    구문

    ceph health unmute HEALTH_MESSAGE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph health unmute OSD_DOWN
    Copy to Clipboard Toggle word wrap

1.5. Ceph 로그 이해

Ceph는 파일에 로깅이 활성화된 후 /var/log/ceph/CLUSTER_FSID/ 디렉터리에 로그를 저장합니다.

CLUSTER_NAME.log 는 글로벌 이벤트가 포함된 기본 스토리지 클러스터 로그 파일입니다. 기본적으로 로그 파일 이름은 ceph.log 입니다. Ceph Monitor 노드만 기본 스토리지 클러스터 로그를 포함합니다.

각 Ceph OSD 및 Monitor에는 CLUSTER_NAME-osd.NUMBER.log 및 CLUSTER_NAME-mon. HOSTNAME.log 라는 자체 로그 파일이 있습니다.

Ceph 하위 시스템의 디버깅 수준을 늘리면 해당 하위 시스템에 대한 새 로그 파일도 생성됩니다.

1.6. sos 보고서생성

sos report 명령을 실행하여 Red Hat Enterprise Linux에서 Red Hat Ceph Storage 클러스터의 구성 세부 정보, 시스템 정보 및 진단 정보를 수집할 수 있습니다. Red Hat 지원 팀은 스토리지 클러스터의 추가 문제 해결을 위해 이 정보를 사용합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준 액세스.

절차

  1. sos 패키지를 설치합니다.

    예제

    [root@host01 ~]# dnf install sos
    Copy to Clipboard Toggle word wrap

  2. sos 보고서를 실행하여 스토리지 클러스터의 시스템 정보를 가져옵니다.

    예제

    [root@host01 ~]# sos report -a --all-logs
    Copy to Clipboard Toggle word wrap

    보고서는 /var/tmp 파일에 저장됩니다.

    특정 Ceph 데몬 정보에 대해 다음 명령을 실행합니다.

    예제

    [root@host01 ~]# sos report --all-logs -e ceph_mgr,ceph_common,ceph_mon,ceph_osd,ceph_ansible,ceph_mds,ceph_rgw
    Copy to Clipboard Toggle word wrap

2장. 로깅 구성

이 장에서는 다양한 Ceph 하위 시스템에 대한 로깅을 구성하는 방법을 설명합니다.

중요

로깅은 리소스를 많이 사용합니다. 또한 자세한 로깅은 비교적 짧은 시간에 대량의 데이터를 생성할 수 있습니다. 클러스터의 특정 하위 시스템에 문제가 발생하면 해당 하위 시스템에서만 로깅을 활성화합니다. 자세한 내용은 2.1절. “Ceph 하위 시스템”를 참조하십시오.

또한 로그 파일의 순환을 설정하는 것이 좋습니다. 자세한 내용은 2.4절. “로그 교체 가속화” 을 참조하십시오.

문제가 발생하면 하위 시스템 로그 및 메모리 수준을 기본값으로 변경합니다. 모든 Ceph 하위 시스템 목록과 기본값 목록은 부록 A. Ceph 하위 시스템의 기본 로깅 수준 값 를 참조하십시오.

다음을 통해 Ceph 로깅을 구성할 수 있습니다.

사전 요구 사항

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

2.1. Ceph 하위 시스템

이 섹션에서는 Ceph 하위 시스템 및 로깅 수준에 대해 설명합니다.

Ceph kubevirts 및 로깅 수준 이해

Ceph는 여러 하위 시스템으로 구성됩니다.

각 하위 시스템에는 로깅 수준이 있습니다.

  • 기본적으로 /var/log/ceph/CLUSTER_FSID/ 디렉터리에 저장된 출력 로그 (로그 수준)
  • 메모리 캐시에 저장된 로그(메모리 수준)

일반적으로 Ceph는 메모리에 저장된 로그를 출력 로그에 전송하지 않습니다.

  • 치명적인 신호가 발생합니다.
  • 소스 코드에서 어설션이 트리거됨
  • 요청하신 경우

이러한 하위 시스템 각각에 대해 다른 값을 설정할 수 있습니다. Ceph 로깅 수준은 1 에서 20 까지의 척도로 작동합니다. 여기서 1 은 terse이고 20 은 상세합니다.

로그 수준 및 메모리 수준에 단일 값을 사용하여 둘 다 동일한 값으로 설정합니다. 예를 들어 debug_osd = 5ceph-osd 데몬의 디버그 수준을 5 로 설정합니다.

출력 로그 수준과 메모리 수준에 다른 값을 사용하려면 슬래시(/)로 값을 구분합니다. 예를 들어 debug_mon = 1/5ceph-mon 데몬의 디버그 로그 수준을 1 로 설정하고 메모리 로그 수준을 5 로 설정합니다.

Expand
표 2.1. Ceph의 기본값 및 로깅 기본값
하위 시스템로그 수준메모리 수준설명

asok

1

5

관리 소켓

auth

1

5

인증

클라이언트

0

5

librados 를 사용하여 클러스터에 연결하는 애플리케이션 또는 라이브러리

bluestore

1

5

BlueStore OSD 백엔드

journal

1

5

OSD 저널

mds

1

5

메타데이터 서버

monc

0

5

모니터 클라이언트는 대부분의 Ceph 데몬과 모니터 간의 통신을 처리합니다.

Mon

1

5

모니터

ms

0

5

Ceph 구성 요소 간 메시징 시스템

osd

0

5

OSD 데몬

Paxos

0

5

모니터가 추측을 설정하는 데 사용하는 알고리즘

rados

0

5

안정적인 자동 분산 오브젝트 저장소(Ceph의 핵심 구성 요소)

rbd

0

5

Ceph 블록 장치

rgw

1

5

Ceph Object Gateway

로그 출력 예

다음 예제에서는 모니터 및 OSD에 대한 세부 정보 표시 수준을 늘릴 때 로그의 메시지 유형을 보여줍니다.

디버그 설정 모니터링

debug_ms = 5
debug_mon = 20
debug_paxos = 20
debug_auth = 20
Copy to Clipboard Toggle word wrap

모니터 디버그 설정의 로그 출력 예

2022-05-12 12:37:04.278761 7f45a9afc700 10 mon.cephn2@0(leader).osd e322 e322: 2 osds: 2 up, 2 in
2022-05-12 12:37:04.278792 7f45a9afc700 10 mon.cephn2@0(leader).osd e322  min_last_epoch_clean 322
2022-05-12 12:37:04.278795 7f45a9afc700 10 mon.cephn2@0(leader).log v1010106 log
2022-05-12 12:37:04.278799 7f45a9afc700 10 mon.cephn2@0(leader).auth v2877 auth
2022-05-12 12:37:04.278811 7f45a9afc700 20 mon.cephn2@0(leader) e1 sync_trim_providers
2022-05-12 12:37:09.278914 7f45a9afc700 11 mon.cephn2@0(leader) e1 tick
2022-05-12 12:37:09.278949 7f45a9afc700 10 mon.cephn2@0(leader).pg v8126 v8126: 64 pgs: 64 active+clean; 60168 kB data, 172 MB used, 20285 MB / 20457 MB avail
2022-05-12 12:37:09.278975 7f45a9afc700 10 mon.cephn2@0(leader).paxosservice(pgmap 7511..8126) maybe_trim trim_to 7626 would only trim 115 < paxos_service_trim_min 250
2022-05-12 12:37:09.278982 7f45a9afc700 10 mon.cephn2@0(leader).osd e322 e322: 2 osds: 2 up, 2 in
2022-05-12 12:37:09.278989 7f45a9afc700  5 mon.cephn2@0(leader).paxos(paxos active c 1028850..1029466) is_readable = 1 - now=2021-08-12 12:37:09.278990 lease_expire=0.000000 has v0 lc 1029466
....
2022-05-12 12:59:18.769963 7f45a92fb700  1 -- 192.168.0.112:6789/0 <== osd.1 192.168.0.114:6800/2801 5724 ==== pg_stats(0 pgs tid 3045 v 0) v1 ==== 124+0+0 (2380105412 0 0) 0x5d96300 con 0x4d5bf40
2022-05-12 12:59:18.770053 7f45a92fb700  1 -- 192.168.0.112:6789/0 --> 192.168.0.114:6800/2801 -- pg_stats_ack(0 pgs tid 3045) v1 -- ?+0 0x550ae00 con 0x4d5bf40
2022-05-12 12:59:32.916397 7f45a9afc700  0 mon.cephn2@0(leader).data_health(1) update_stats avail 53% total 1951 MB, used 780 MB, avail 1053 MB
....
2022-05-12 13:01:05.256263 7f45a92fb700  1 -- 192.168.0.112:6789/0 --> 192.168.0.113:6800/2410 -- mon_subscribe_ack(300s) v1 -- ?+0 0x4f283c0 con 0x4d5b440
Copy to Clipboard Toggle word wrap

OSD 디버그 설정

debug_ms = 5
debug_osd = 20
Copy to Clipboard Toggle word wrap

OSD 디버그 설정의 로그 출력 예

2022-05-12 11:27:53.869151 7f5d55d84700  1 -- 192.168.17.3:0/2410 --> 192.168.17.4:6801/2801 -- osd_ping(ping e322 stamp 2021-08-12 11:27:53.869147) v2 -- ?+0 0x63baa00 con 0x578dee0
2022-05-12 11:27:53.869214 7f5d55d84700  1 -- 192.168.17.3:0/2410 --> 192.168.0.114:6801/2801 -- osd_ping(ping e322 stamp 2021-08-12 11:27:53.869147) v2 -- ?+0 0x638f200 con 0x578e040
2022-05-12 11:27:53.870215 7f5d6359f700  1 -- 192.168.17.3:0/2410 <== osd.1 192.168.0.114:6801/2801 109210 ==== osd_ping(ping_reply e322 stamp 2021-08-12 11:27:53.869147) v2 ==== 47+0+0 (261193640 0 0) 0x63c1a00 con 0x578e040
2022-05-12 11:27:53.870698 7f5d6359f700  1 -- 192.168.17.3:0/2410 <== osd.1 192.168.17.4:6801/2801 109210 ==== osd_ping(ping_reply e322 stamp 2021-08-12 11:27:53.869147) v2 ==== 47+0+0 (261193640 0 0) 0x6313200 con 0x578dee0
....
2022-05-12 11:28:10.432313 7f5d6e71f700  5 osd.0 322 tick
2022-05-12 11:28:10.432375 7f5d6e71f700 20 osd.0 322 scrub_random_backoff lost coin flip, randomly backing off
2022-05-12 11:28:10.432381 7f5d6e71f700 10 osd.0 322 do_waiters -- start
2022-05-12 11:28:10.432383 7f5d6e71f700 10 osd.0 322 do_waiters -- finish
Copy to Clipboard Toggle word wrap

2.2. 런타임 시 로깅 구성

시스템 런타임 시 Ceph 하위 시스템의 로깅을 구성하여 발생할 수 있는 문제를 해결할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 디버거에 액세스합니다.

절차

  1. Ceph 디버깅 출력을 활성화하려면 런타임 시 dout():

    ceph tell TYPE.ID injectargs --debug-SUBSYSTEM VALUE [--NAME VALUE]
    Copy to Clipboard Toggle word wrap
  2. 교체:

    • Ceph 데몬 유형 (osd,mon 또는 mds)의 유형 사용
    • Ceph 데몬의 특정 ID 가 있는 ID입니다. 또는 * 를 사용하여 특정 유형의 모든 데몬에 런타임 설정을 적용합니다.
    • 특정 하위 시스템과의 SUBSYSTEM.
    • 1 에서 20 까지의 숫자와 VALUE 는 여기서 1 은 terse이고 20 은 상세합니다.

      예를 들어 osd.0 이라는 OSD 하위 시스템의 로그 수준을 0으로 설정하고 메모리 수준을 5로 설정하려면 다음을 실행합니다.

      # ceph tell osd.0 injectargs --debug-osd 0/5
      Copy to Clipboard Toggle word wrap

런타임 시 구성 설정을 보려면 다음을 수행합니다.

  1. 실행 중인 Ceph 데몬을 사용하여 호스트에 로그인합니다(예: ceph-osd 또는 ceph-mon ).
  2. 구성을 표시합니다.

    구문

    ceph daemon NAME config show | less
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph daemon osd.0 config show | less
    Copy to Clipboard Toggle word wrap

2.3. 구성 파일에서 로그인 구성

정보, 경고 및 오류 메시지를 로그 파일에 기록하도록 Ceph 하위 시스템을 구성합니다. Ceph 구성 파일에서 디버깅 수준을 기본 /etc/ceph/ceph.conf 로 지정할 수 있습니다.

사전 요구 사항

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

절차

  1. Ceph 디버깅 출력을 활성화하려면 부팅 시 dout() 을 사용하여 Ceph 구성 파일에 디버깅 설정을 추가합니다.

    1. 각 데몬에 공통적인 하위 시스템의 경우 [global] 섹션에 설정을 추가합니다.
    2. 특정 데몬의 하위 시스템의 경우 [mon], [osd], 또는 [mds] 와 같은 데몬 섹션에 설정을 추가합니다.

      예제

      [global]
              debug_ms = 1/5
      
      [mon]
              debug_mon = 20
              debug_paxos = 1/5
              debug_auth = 2
      
      [osd]
              debug_osd = 1/5
              debug_monc = 5/20
      
      [mds]
              debug_mds = 1
      Copy to Clipboard Toggle word wrap

2.4. 로그 교체 가속화

Ceph 구성 요소의 디버깅 수준을 늘리면 대량의 데이터가 생성될 수 있습니다. 거의 전체 디스크가 있는 경우 /etc/logrotate.d/ceph-<fsid >에서 Ceph 로그 회전 파일을 수정하여 로그 교체를 가속화할 수 있습니다. Cron 작업 스케줄러는 이 파일을 사용하여 로그 회전을 예약합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준 액세스.

절차

  1. 순환 빈도 뒤에 크기 설정을 로그 회전 파일에 추가합니다.

    rotate 7
    weekly
    size SIZE
    compress
    sharedscripts
    Copy to Clipboard Toggle word wrap

    예를 들어 500MB에 도달하면 로그 파일을 순환합니다.

    rotate 7
    weekly
    size 500 MB
    compress
    sharedscripts
    size 500M
    Copy to Clipboard Toggle word wrap
    참고

    크기 값은 '500MB' 또는 '500M'로 표시할 수 있습니다.

  2. crontab 편집기를 엽니다.

    [root@mon ~]# crontab -e
    Copy to Clipboard Toggle word wrap
  3. 항목을 추가하여 /etc/logrotate.d/ceph-<fsid> 파일을 확인합니다. 예를 들어 Cron에 30분마다 /etc/logrotate.d/ceph-<fsid >를 확인하도록 지시하려면 다음을 수행합니다.

    30 * * * * /usr/sbin/logrotate /etc/logrotate.d/ceph-d3bb5396-c404-11ee-9e65-002590fc2a2e >/dev/null 2>&1
    Copy to Clipboard Toggle word wrap

2.5. Ceph Object Gateway의 작업 로그 생성 및 수집

사용자 ID 정보가 작업 로그 출력에 추가됩니다. 이는 고객이 S3 액세스 감사를 위해 이 정보에 액세스할 수 있도록 하는 데 사용됩니다. 모든 버전의 Ceph Object Gateway 작업 로그에서 S3 요청에 의해 안정적으로 사용자 ID를 추적합니다.

절차

  1. 로그가 있는 위치를 찾습니다.

    구문

    logrotate -f
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# logrotate -f
    /etc/logrotate.d/ceph-12ab345c-1a2b-11ed-b736-fa163e4f6220
    Copy to Clipboard Toggle word wrap

  2. 지정된 위치 내의 로그를 나열합니다.

    구문

    ll LOG_LOCATION
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# ll /var/log/ceph/12ab345c-1a2b-11ed-b736-fa163e4f6220
     -rw-r--r--. 1 ceph ceph    412 Sep 28 09:26 opslog.log.1.gz
    Copy to Clipboard Toggle word wrap

  3. 현재 버킷을 나열합니다.

    예제

    [root@host01 ~]# /usr/local/bin/s3cmd ls
    Copy to Clipboard Toggle word wrap

  4. 버킷을 생성합니다.

    구문

    /usr/local/bin/s3cmd mb s3://NEW_BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# /usr/local/bin/s3cmd mb s3://bucket1
    Bucket `s3://bucket1` created
    Copy to Clipboard Toggle word wrap

  5. 현재 로그를 나열합니다.

    구문

    ll LOG_LOCATION
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# ll /var/log/ceph/12ab345c-1a2b-11ed-b736-fa163e4f6220
     total 852
     ...
     -rw-r--r--. 1 ceph ceph    920 Jun 29 02:17 opslog.log
     -rw-r--r--. 1 ceph ceph    412 Jun 28 09:26 opslog.log.1.gz
    Copy to Clipboard Toggle word wrap

  6. 로그를 수집합니다.

    구문

    tail -f LOG_LOCATION/opslog.log
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# tail -f /var/log/ceph/12ab345c-1a2b-11ed-b736-fa163e4f6220/opslog.log
    
    {"bucket":"","time":"2022-09-29T06:17:03.133488Z","time_local":"2022-09-
    29T06:17:03.133488+0000","remote_addr":"10.0.211.66","user":"test1",
    "operation":"list_buckets","uri":"GET /
    HTTP/1.1","http_status":"200","error_code":"","bytes_sent":232,
    "bytes_received":0,"object_size":0,"total_time":9,"user_agent":"","referrer":
    "","trans_id":"tx00000c80881a9acd2952a-006335385f-175e5-primary",
    "authentication_type":"Local","access_key_id":"1234","temp_url":false}
    
    {"bucket":"cn1","time":"2022-09-29T06:17:10.521156Z","time_local":"2022-09-
    29T06:17:10.521156+0000","remote_addr":"10.0.211.66","user":"test1",
    "operation":"create_bucket","uri":"PUT /cn1/
    HTTP/1.1","http_status":"200","error_code":"","bytes_sent":0,
    "bytes_received":0,"object_size":0,"total_time":106,"user_agent":"",
    "referrer":"","trans_id":"tx0000058d60c593632c017-0063353866-175e5-primary",
    "authentication_type":"Local","access_key_id":"1234","temp_url":false}
    Copy to Clipboard Toggle word wrap

3장. 네트워킹 문제 해결

이 장에서는 네트워킹 및 NTP(Network Time Protocol)용 Chrony와 관련된 기본 문제 해결 프로시저를 나열합니다.

사전 요구 사항

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

3.1. 기본 네트워킹 문제 해결

Red Hat Ceph Storage는 안정적인 네트워크 연결에 따라 크게 달라집니다. Red Hat Ceph Storage 노드는 네트워크를 사용하여 서로 통신합니다. 네트워킹 문제로 인해 Ceph OSD에 많은 문제가 발생할 수 있습니다. 네트워킹 문제로 인해 Ceph Monitor의 클럭 불일치 오류가 발생할 수 있습니다. 또한 패킷 손실, 높은 대기 시간 또는 제한된 대역폭은 클러스터 성능 및 안정성에 영향을 줄 수 있습니다.

사전 요구 사항

  • 노드에 대한 루트 수준 액세스.

절차

  1. net-toolstelnet 패키지를 설치하면 Ceph 스토리지 클러스터에서 발생할 수 있는 네트워크 문제를 해결할 때 도움이 될 수 있습니다.

    예제

    [root@host01 ~]# dnf install net-tools
    [root@host01 ~]# dnf install telnet
    Copy to Clipboard Toggle word wrap

  2. cephadm 쉘에 로그인하고 Ceph 구성 파일의 public_network 매개변수에 올바른 값이 포함되어 있는지 확인합니다.

    예제

    [ceph: root@host01 /]# cat /etc/ceph/ceph.conf
    # minimal ceph.conf for 57bddb48-ee04-11eb-9962-001a4a000672
    [global]
    	fsid = 57bddb48-ee04-11eb-9962-001a4a000672
    	mon_host = [v2:10.74.249.26:3300/0,v1:10.74.249.26:6789/0] [v2:10.74.249.163:3300/0,v1:10.74.249.163:6789/0] [v2:10.74.254.129:3300/0,v1:10.74.254.129:6789/0]
    [mon.host01]
    public network = 10.74.248.0/21
    Copy to Clipboard Toggle word wrap

  3. 쉘을 종료하고 네트워크 인터페이스가 작동 중인지 확인합니다.

    예제

    [root@host01 ~]# ip link list
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 00:1a:4a:00:06:72 brd ff:ff:ff:ff:ff:ff
    Copy to Clipboard Toggle word wrap

  4. Ceph 노드가 짧은 호스트 이름을 사용하여 서로 연결할 수 있는지 확인합니다. 스토리지 클러스터의 각 노드에서 이를 확인합니다.

    구문

    ping SHORT_HOST_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# ping host02
    Copy to Clipboard Toggle word wrap

  5. 방화벽을 사용하는 경우 Ceph 노드가 적절한 포트에서 서로 연결할 수 있는지 확인합니다. firewall-cmdtelnet 툴은 포트 상태를 확인하고 포트가 각각 열려 있는 경우 다음을 수행합니다.

    구문

    firewall-cmd --info-zone=ZONE
    telnet IP_ADDRESS PORT
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# firewall-cmd --info-zone=public
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: ens3
      sources:
      services: ceph ceph-mon cockpit dhcpv6-client ssh
      ports: 9283/tcp 8443/tcp 9093/tcp 9094/tcp 3000/tcp 9100/tcp 9095/tcp
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    
    [root@host01 ~]# telnet 192.168.0.22 9100
    Copy to Clipboard Toggle word wrap

  6. 인터페이스 카운터에 오류가 없는지 확인합니다. 노드 간 네트워크 연결에 대기 시간이 예상되고 패킷 손실이 없는지 확인합니다.

    1. ethtool 명령을 사용합니다.

      구문

      ethtool -S INTERFACE
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# ethtool -S ens3 | grep errors
      NIC statistics:
           rx_fcs_errors: 0
           rx_align_errors: 0
           rx_frame_too_long_errors: 0
           rx_in_length_errors: 0
           rx_out_length_errors: 0
           tx_mac_errors: 0
           tx_carrier_sense_errors: 0
           tx_errors: 0
           rx_errors: 0
      Copy to Clipboard Toggle word wrap

    2. ifconfig 명령 사용:

      예제

      [root@host01 ~]# ifconfig
      ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 10.74.249.26  netmask 255.255.248.0  broadcast 10.74.255.255
              inet6 fe80::21a:4aff:fe00:672  prefixlen 64  scopeid 0x20<link>
              inet6 2620:52:0:4af8:21a:4aff:fe00:672  prefixlen 64  scopeid 0x0<global>
              ether 00:1a:4a:00:06:72  txqueuelen 1000  (Ethernet)
              RX packets 150549316  bytes 56759897541 (52.8 GiB)
              RX errors 0  dropped 176924  overruns 0  frame 0
              TX packets 55584046  bytes 62111365424 (57.8 GiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
              inet 127.0.0.1  netmask 255.0.0.0
              inet6 ::1  prefixlen 128  scopeid 0x10<host>
              loop  txqueuelen 1000  (Local Loopback)
              RX packets 9373290  bytes 16044697815 (14.9 GiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 9373290  bytes 16044697815 (14.9 GiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      Copy to Clipboard Toggle word wrap

    3. netstat 명령 사용:

      예제

      [root@host01 ~]# netstat -ai
      Kernel Interface table
      Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
      ens3             1500 311847720      0 364903 0      114341918      0      0      0 BMRU
      lo              65536 19577001      0      0 0      19577001      0      0      0 LRU
      Copy to Clipboard Toggle word wrap

  7. 성능 문제의 경우 대기 시간 검사 및 스토리지 클러스터의 모든 노드 간 네트워크 대역폭을 확인하려면 iperf3 툴을 사용합니다. iperf3 툴은 서버와 클라이언트 간에 간단한 포인트-포인트 네트워크 대역폭 테스트를 수행합니다.

    1. 대역폭을 확인하려는 Red Hat Ceph Storage 노드에 iperf3 패키지를 설치합니다.

      예제

      [root@host01 ~]# dnf install iperf3
      Copy to Clipboard Toggle word wrap

    2. Red Hat Ceph Storage 노드에서 iperf3 서버를 시작합니다.

      예제

      [root@host01 ~]# iperf3 -s
      -----------------------------------------------------------
      Server listening on 5201
      -----------------------------------------------------------
      Copy to Clipboard Toggle word wrap

      참고

      기본 포트는 5201이지만 -P 명령 인수를 사용하여 설정할 수 있습니다.

    3. 다른 Red Hat Ceph Storage 노드에서 iperf3 클라이언트를 시작합니다.

      예제

      [root@host02 ~]# iperf3 -c mon
      Connecting to host mon, port 5201
      [  4] local xx.x.xxx.xx port 52270 connected to xx.x.xxx.xx port 5201
      [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
      [  4]   0.00-1.00   sec   114 MBytes   954 Mbits/sec    0    409 KBytes
      [  4]   1.00-2.00   sec   113 MBytes   945 Mbits/sec    0    409 KBytes
      [  4]   2.00-3.00   sec   112 MBytes   943 Mbits/sec    0    454 KBytes
      [  4]   3.00-4.00   sec   112 MBytes   941 Mbits/sec    0    471 KBytes
      [  4]   4.00-5.00   sec   112 MBytes   940 Mbits/sec    0    471 KBytes
      [  4]   5.00-6.00   sec   113 MBytes   945 Mbits/sec    0    471 KBytes
      [  4]   6.00-7.00   sec   112 MBytes   937 Mbits/sec    0    488 KBytes
      [  4]   7.00-8.00   sec   113 MBytes   947 Mbits/sec    0    520 KBytes
      [  4]   8.00-9.00   sec   112 MBytes   939 Mbits/sec    0    520 KBytes
      [  4]   9.00-10.00  sec   112 MBytes   939 Mbits/sec    0    520 KBytes
      - - - - - - - - - - - - - - - - - - - - - - - - -
      [ ID] Interval           Transfer     Bandwidth       Retr
      [  4]   0.00-10.00  sec  1.10 GBytes   943 Mbits/sec    0             sender
      [  4]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec                  receiver
      
      iperf Done.
      Copy to Clipboard Toggle word wrap

      이 출력은 테스트 중에 Red Hat Ceph Storage 노드 간 네트워크 대역폭 1.1 Gbits/초와 함께 재전송(Retr)을 보여줍니다.

      스토리지 클러스터의 모든 노드 간 네트워크 대역폭을 확인하는 것이 좋습니다.

  8. 모든 노드에 동일한 네트워크 상호 연결 속도가 있는지 확인합니다. 연결된 노드가 느려지면 연결된 속도가 느려질 수 있습니다. 또한 상호 스위치 링크가 연결된 노드의 집계된 대역폭을 처리할 수 있는지 확인합니다.

    구문

    ethtool INTERFACE
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# ethtool ens3
    Settings for ens3:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Half 1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Half 1000baseT/Full
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                         100baseT/Half 100baseT/Full
                                         1000baseT/Full
    Link partner advertised pause frame use: Symmetric
    Link partner advertised auto-negotiation: Yes
    Link partner advertised FEC modes: Not reported
    Speed: 1000Mb/s 
    1
    
    Duplex: Full 
    2
    
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off
    Supports Wake-on: g
    Wake-on: d
    Current message level: 0x000000ff (255)
           drv probe link timer ifdown ifup rx_err tx_err
    Link detected: yes 
    3
    Copy to Clipboard Toggle word wrap

3.2. 기본 chrony NTP 문제 해결

이 섹션에는 기본 chrony NTP 문제 해결 단계가 포함되어 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.

절차

  1. chronyd 데몬이 Ceph Monitor 호스트에서 실행 중인지 확인합니다.

    예제

    [root@mon ~]# systemctl status chronyd
    Copy to Clipboard Toggle word wrap

  2. chronyd 가 실행 중이 아니면 활성화한 후 시작합니다.

    예제

    [root@mon ~]# systemctl enable chronyd
    [root@mon ~]# systemctl start chronyd
    Copy to Clipboard Toggle word wrap

  3. chronyd 가 시계를 올바르게 동기화하는지 확인합니다.

    예제

    [root@mon ~]# chronyc sources
    [root@mon ~]# chronyc sourcestats
    [root@mon ~]# chronyc tracking
    Copy to Clipboard Toggle word wrap

4장. Ceph 모니터 문제 해결

이 장에서는 Ceph 모니터와 관련된 가장 일반적인 오류를 수정하는 방법에 대해 설명합니다.

사전 요구 사항

  • 네트워크 연결을 확인합니다.

4.1. 가장 일반적인 Ceph Monitor 오류

다음 표에는 ceph health detail 명령에서 반환하거나 Ceph 로그에 포함된 가장 일반적인 오류 메시지가 나열되어 있습니다. 표는 오류를 설명하고 문제를 해결하기 위해 특정 절차를 가리키는 해당 섹션에 대한 링크를 제공합니다.

사전 요구 사항

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

4.1.1. Ceph Monitor 오류 메시지

일반적인 Ceph Monitor 오류 메시지와 잠재적인 수정으로 구성된 테이블입니다.

Expand
오류 메시지참조

HEALTH_WARN

Mon.X가 다운됨(쿼터 부족)

Ceph Monitor가 쿼럼이 없음

Clock Skew

Clock Skew

점포가 너무 커지고 있습니다!

Ceph Monitor 저장소가 너무 커지고 있습니다.

4.1.2. Ceph 로그의 일반적인 Ceph Monitor 오류 메시지

Ceph 로그에 있는 일반적인 Ceph Monitor 오류 메시지와 잠재적인 수정에 대한 링크입니다.

Expand
오류 메시지로그 파일참조

Clock Skew

기본 클러스터 로그

Clock Skew

시계가 동기화되지 않음

기본 클러스터 로그

Clock Skew

corruption: error in middle of record

로그 모니터링

Ceph Monitor가 쿼럼이 없음

Ceph Monitor 저장소 복구

손상: 1개의 누락된 파일

로그 모니터링

Ceph Monitor가 쿼럼이 없음

Ceph Monitor 저장소 복구

catch된 신호(오류)

로그 모니터링

Ceph Monitor가 쿼럼이 없음

4.1.3. Ceph Monitor가 쿼럼이 없음

하나 이상의 Ceph 모니터가 다운 된 것으로 표시되지만 다른 Ceph 모니터는 여전히 쿼럼을 구성할 수 있습니다. 또한 ceph health detail 명령은 다음과 유사한 오류 메시지를 반환합니다.

HEALTH_WARN 1 mons down, quorum 1,2 mon.b,mon.c
mon.a (rank 0) addr 127.0.0.1:6789/0 is down (out of quorum)
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

Ceph는 여러 가지 이유로 Ceph Monitor를 아래로 표시합니다.

ceph-mon 데몬이 실행 중이 아니면 손상된 저장소가 있거나 다른 오류로 인해 데몬이 시작되지 않을 수 있습니다. 또한 /var/ 파티션이 가득 찼을 수 있습니다. 결과적으로 ceph-mon 은 기본적으로 /var/lib/ceph/mon-SHORT_HOST_NAME/store.db 에 있는 저장소에 대한 작업을 수행할 수 없습니다.

ceph-mon 데몬이 실행 중이지만 Ceph Monitor가 쿼럼이 아니며 down 으로 표시되는 경우 문제의 원인은 Ceph Monitor 상태에 따라 달라집니다.

  • Ceph Monitor가 예상보다 길면 다른 Ceph 모니터를 찾을 수 없습니다. 이 문제는 네트워킹 문제로 인해 발생할 수 있습니다. 또는 Ceph Monitor에 오래된 Ceph Monitor 맵(monmap)이 있을 수 있으며 잘못된 IP 주소에서 다른 Ceph 모니터에 도달하려고 할 수 있습니다. 또는 monmap 이 최신 상태인 경우 Ceph Monitor의 클럭이 동기화되지 않을 수 있습니다.
  • Ceph Monitor가 예상보다 긴 선택 상태에 있는 경우 Ceph Monitor의 클럭이 동기화되지 않을 수 있습니다.
  • Ceph Monitor가 동기화 에서 선택으로 상태를 변경하면 클러스터 상태가 진행 중입니다. 즉, 동기화 프로세스에서 처리할 수 있는 것보다 새 맵이 더 빠르게 생성됩니다.
  • Ceph Monitor가 리더 또는 반원으로 표시되면 쿼럼이 있는 것으로 간주하지만 나머지 클러스터는 그렇지 않은 것으로 간주합니다. 이 문제는 실패한 클럭 동기화로 인해 발생할 수 있습니다.

문제 해결 방법

  1. ceph-mon 데몬이 실행 중인지 확인합니다. 그렇지 않은 경우 다음을 시작합니다.

    구문

    systemctl status ceph-FSID@DAEMON_NAME
    systemctl start ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    [root@mon ~]# systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

  2. ceph-mon을 시작할 수 없는 경우 ceph-mon 데몬의 단계를 시작할 수 없습니다.
  3. ceph-mon 데몬을 시작할 수 있지만 down 으로 표시되면 ceph-mon 데몬의 단계에 따라 실행되고 있지만 '다운'으로 표시됩니다.

ceph-mon 데몬을 시작할 수 없음

  1. 기본적으로 /var/log/ceph/CLUSTER_FSID/ceph-mon에 있는 해당 Ceph 모니터 로그를 확인합니다. 기본적으로HOST_NAME.log.

    참고

    기본적으로 모니터 로그는 로그 폴더에 없습니다. 로그가 폴더에 표시되도록 파일에 로깅을 활성화해야 합니다. 파일에 로깅할 수 있도록 Ceph 데몬 로그를 참조하십시오.

  2. 로그에 다음과 유사한 오류 메시지가 포함된 경우 Ceph Monitor에 손상된 저장소가 있을 수 있습니다.

    Corruption: error in middle of record
    Corruption: 1 missing files; example: /var/lib/ceph/mon/mon.0/store.db/1234567.ldb
    Copy to Clipboard Toggle word wrap

    이 문제를 해결하려면 Ceph 모니터를 교체합니다. 실패한 모니터 교체를 참조하십시오.

  3. 로그에 다음과 유사한 오류 메시지가 포함된 경우 /var/ 파티션이 가득 찼을 수 있습니다. /var/ 에서 불필요한 데이터를 삭제합니다.

    Caught signal (Bus error)
    Copy to Clipboard Toggle word wrap
    중요

    Monitor 디렉토리에서 데이터를 수동으로 삭제하지 마십시오. 대신 ceph-monstore-tool 을 사용하여 압축합니다. 자세한 내용은 Ceph Monitor 저장소에서 참조하십시오.

  4. 다른 오류 메시지가 표시되면 지원 티켓을 엽니 다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.

ceph-mon Daemon이 실행 중이지만 Still은 아래로표시되었습니다.

  1. 쿼럼이 없는 Ceph Monitor 호스트에서 mon_status 명령을 사용하여 상태를 확인합니다.

    [root@mon ~]# ceph daemon ID mon_status
    Copy to Clipboard Toggle word wrap

    ID 를 Ceph 모니터의 ID로 바꿉니다. 예를 들면 다음과 같습니다.

    [ceph: root@host01 /]# ceph daemon mon.host01 mon_status
    Copy to Clipboard Toggle word wrap
  2. 상태가 probing 인 경우 mon_status 출력에서 다른 Ceph 모니터의 위치를 확인합니다.

    1. 주소가 올바르지 않으면 Ceph Monitor에 잘못된 Ceph Monitor 맵(monmap)이 있습니다. 이 문제를 해결하려면 Ceph Monitor 맵 Injecting a Ceph Monitor map 을 참조하십시오.
    2. 주소가 올바르면 Ceph Monitor 클럭이 동기화되는지 확인합니다. 자세한 내용은 Clock skew 를 참조하십시오.
  3. 상태가 옵트인 경우 Ceph Monitor 클럭이 동기화되었는지 확인합니다. 자세한 내용은 Clock skew 를 참조하십시오.
  4. 상태가 동기화 선택에서 변경되면 지원 티켓을 엽니다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.
  5. Ceph Monitor가 리더 이거나 반원인 경우 Ceph Monitor 클럭이 동기화되는지 확인합니다. 자세한 내용은 Clock skew 를 참조하십시오. 시계를 동기화해도 문제가 해결되지 않으면 지원 티켓을 엽니다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.

4.1.4. Clock Skew

Ceph Monitor는 쿼럼이 아니며 ceph health detail 명령 출력에는 다음과 같은 오류 메시지가 포함되어 있습니다.

mon.a (rank 0) addr 127.0.0.1:6789/0 is down (out of quorum)
mon.a addr 127.0.0.1:6789/0 clock skew 0.08235s > max 0.05s (latency 0.0045s)
Copy to Clipboard Toggle word wrap

또한 Ceph 로그에는 다음과 유사한 오류 메시지가 포함되어 있습니다.

2022-05-04 07:28:32.035795 7f806062e700 0 log [WRN] : mon.a 127.0.0.1:6789/0 clock skew 0.14s > max 0.05s
2022-05-04 04:31:25.773235 7f4997663700 0 log [WRN] : message from mon.1 was stamped 0.186257s in the future, clocks not synchronized
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

클럭 스케일 오류 메시지는 Ceph Monitors의 시계가 동기화되지 않음을 나타냅니다. Ceph 모니터는 시간 정확도에 따라 달라지고 클럭이 동기화되지 않으면 예기치 않게 동작하기 때문에 클럭 동기화가 중요합니다.

mon_clock_drift_allowed 매개변수는 클럭이 허용되는 차이를 결정합니다. 기본적으로 이 매개변수는 0.05초로 설정됩니다.

중요

이전 테스트없이 mon_clock_drift_allowed 의 기본값을 변경하지 마십시오. 이 값을 변경하면 일반적으로 Ceph Monitor 및 Ceph Storage 클러스터의 안정성에 영향을 미칠 수 있습니다.

클럭 불일치 오류의 가능한 원인에는 네트워크 문제 또는 구성된 경우 NTP(Network Time Protocol) 동기화의 문제가 포함됩니다. 또한 가상 머신에 배포된 Ceph Monitor에서 시간 동기화가 제대로 작동하지 않습니다.

문제 해결 방법

  1. 네트워크가 올바르게 작동하는지 확인합니다.
  2. 원격 NTP 서버를 사용하는 경우 네트워크에 자체 chrony NTP 서버를 배포하는 것이 좋습니다. 자세한 내용은 Red Hat 고객 포털에서 {os-product for your OS 버전에 대한 제품 설명서에서 기본 시스템 설정 구성 가이드에서 Chrony Suite를 사용하여 NTP 구성 장을 참조하십시오.
참고

Ceph는 5분마다 시간 동기화를 평가하므로 문제를 수정하고 클럭 불일치 메시지를 지우는 사이에 지연이 발생합니다.

4.1.5. Ceph Monitor 저장소가 너무 커지고 있습니다.

ceph health 명령은 다음과 유사한 오류 메시지를 반환합니다.

mon.ceph1 store is getting too big! 48031 MB >= 15360 MB -- 62% avail
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

Ceph Monitors 저장소는 실제로 항목을 키-값 쌍으로 저장하는 CloudEventsDB 데이터베이스입니다. 데이터베이스에는 클러스터 맵이 포함되어 있으며 기본적으로 /var/lib/ceph/CLUSTER_FSID/mon.HOST_NAME/store.db 에 있습니다.

대규모 모니터 저장소를 쿼리하는 데 시간이 걸릴 수 있습니다. 결과적으로 클라이언트 쿼리에 응답하는 데 Ceph 모니터가 지연될 수 있습니다.

또한 /var/ 파티션이 가득 차 있는 경우 Ceph Monitor는 저장소에 대한 쓰기 작업을 수행할 수 없으며 종료됩니다. 이 문제 해결에 대한 자세한 내용은 Ceph Monitor가 쿼럼 이 아닌 것을 참조하십시오.

문제 해결 방법

  1. 데이터베이스 크기를 확인합니다.

    구문

    du -sch /var/lib/ceph/CLUSTER_FSID/mon.HOST_NAME/store.db/
    Copy to Clipboard Toggle word wrap

    클러스터의 이름과 ceph-mon 이 실행 중인 호스트의 짧은 호스트 이름을 지정합니다.

    예제

    [root@mon ~]# du -sh  /var/lib/ceph/b341e254-b165-11ed-a564-ac1f6bb26e8c/mon.host01/
    109M	/var/lib/ceph/b341e254-b165-11ed-a564-ac1f6bb26e8c/mon.host01/
    47G     /var/lib/ceph/mon/ceph-ceph1/store.db/
    47G     total
    Copy to Clipboard Toggle word wrap

  2. Ceph 모니터 저장소를 압축합니다. 자세한 내용은 Ceph Monitor Store를 참조하십시오.

4.1.6. Ceph Monitor 상태 이해

mon_status 명령은 다음과 같은 Ceph Monitor에 대한 정보를 반환합니다.

  • 상태
  • 랭크
  • Eepoch
  • 모니터링 맵 (monmap)

Ceph 모니터가 쿼럼을 구성할 수 있는 경우 ceph 명령줄 유틸리티와 함께 mon_status 를 사용합니다.

Ceph Monitors가 쿼럼을 구성할 수 없지만 ceph-mon 데몬이 실행 중인 경우 관리 소켓을 사용하여 mon_status 를 실행합니다.

mon_status의 출력 예

{
    "name": "mon.3",
    "rank": 2,
    "state": "peon",
    "election_epoch": 96,
    "quorum": [
        1,
        2
    ],
    "outside_quorum": [],
    "extra_probe_peers": [],
    "sync_provider": [],
    "monmap": {
        "epoch": 1,
        "fsid": "d5552d32-9d1d-436c-8db1-ab5fc2c63cd0",
        "modified": "0.000000",
        "created": "0.000000",
        "mons": [
            {
                "rank": 0,
                "name": "mon.1",
                "addr": "172.25.1.10:6789\/0"
            },
            {
                "rank": 1,
                "name": "mon.2",
                "addr": "172.25.1.12:6789\/0"
            },
            {
                "rank": 2,
                "name": "mon.3",
                "addr": "172.25.1.13:6789\/0"
            }
        ]
    }
}
Copy to Clipboard Toggle word wrap

Ceph 모니터 상태

리더
선택 단계에서 Ceph 모니터는 리더를 선택합니다. 리더는 순위가 가장 높은 Ceph 모니터이며 값이 가장 낮은 순위입니다. 위의 예에서 리더는 mon.1 입니다.
peon
페ons는 리더가 아닌 쿼럼의 Ceph 모니터입니다. 리더가 실패하면 순위가 가장 높은 페이온이 새로운 리더가 됩니다.
probing
다른 Ceph 모니터를 찾고 있는 경우 Ceph Monitor가 확인 중입니다. 예를 들어 Ceph Monitor를 시작한 후 쿼럼을 구성하기 위해 Ceph Monitor 맵(monmap)에 지정된 Ceph 모니터를 충분히 찾을 때까지 프로빙 됩니다.
선택
리더 선택 프로세스인 경우 Ceph Monitor가 선택됨 상태에 있습니다. 일반적으로 이 상태는 빠르게 변경됩니다.
동기화
쿼럼에 참여하도록 다른 Ceph 모니터와 동기화하는 경우 Ceph Monitor가 동기화 상태에 있습니다. Ceph 모니터가 더 작을수록 동기화 프로세스가 빨라집니다. 따라서 큰 저장소가 있는 경우 동기화 시간이 더 오래 걸립니다.

추가 리소스

4.2. monmap삽입

Ceph Monitor에 오래되었거나 손상된 Ceph Monitor 맵(monmap)이 있는 경우 잘못된 IP 주소에서 다른 Ceph Monitor에 연결을 시도하므로 쿼럼에 참여할 수 없습니다.

이 문제를 해결하는 가장 안전한 방법은 다른 Ceph Monitor에서 실제 Ceph Monitor 맵을 확보하고 삽입하는 것입니다.

참고

이 작업은 Ceph Monitor에서 보관하는 기존 Ceph Monitor 맵을 덮어씁니다.

다음 절차에서는 다른 Ceph Monitor가 쿼럼을 구성할 수 있거나 하나 이상의 Ceph Monitor 맵에 올바른 Ceph Monitor 맵이 있는 경우 Ceph Monitor 맵을 삽입하는 방법을 설명합니다. 모든 Ceph 모니터가 저장소가 손상되어 Ceph Monitor 맵도 손상된 경우 Ceph Monitor 저장소 복구를 참조하십시오.

사전 요구 사항

  • Ceph 모니터 맵에 액세스할 수 있습니다.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.

절차

  1. 나머지 Ceph Monitor가 쿼럼을 구성할 수 있는 경우 ceph mon getmap 명령을 사용하여 Ceph Monitor 맵을 가져옵니다.

    예제

    [ceph: root@host01 /]# ceph mon getmap -o /tmp/monmap
    Copy to Clipboard Toggle word wrap

  2. 나머지 Ceph 모니터에서 쿼럼을 구성할 수 없고 올바른 Ceph Monitor 맵이 있는 Ceph Monitor가 하나 이상 있는 경우 해당 Ceph Monitor에서 복사합니다.

    1. Ceph Monitor 맵을 복사하려는 Ceph 모니터를 중지합니다.

      구문

      systemctl stop ceph-FSID@DAEMON_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [root@mon ~]# systemctl stop ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
      Copy to Clipboard Toggle word wrap

    2. Ceph Monitor 맵을 복사합니다.

      구문

      ceph-mon -i ID --extract-monmap /tmp/monmap
      Copy to Clipboard Toggle word wrap

      ID 를 Ceph Monitor 맵을 복사하려는 Ceph Monitor의 ID로 바꿉니다.

      예제

      [ceph: root@host01 /]#  ceph-mon -i mon.a  --extract-monmap /tmp/monmap
      Copy to Clipboard Toggle word wrap

  3. 손상되거나 오래된 Ceph Monitor 맵으로 Ceph 모니터를 중지합니다.

    구문

    systemctl stop ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl stop ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

  4. Ceph Monitor 맵을 삽입합니다.

    구문

    ceph-mon -i ID --inject-monmap /tmp/monmap
    Copy to Clipboard Toggle word wrap

    ID 를 Ceph Monitor의 ID를 손상되거나 오래된 Ceph Monitor 맵으로 바꿉니다.

    예제

    [root@mon ~]# ceph-mon -i mon.host01 --inject-monmap /tmp/monmap
    Copy to Clipboard Toggle word wrap

  5. Ceph 모니터를 시작합니다.

    구문

    systemctl start ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

    다른 Ceph Monitor에서 Ceph Monitor 맵을 복사한 경우 해당 Ceph Monitor도 시작합니다.

    구문

    systemctl start ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

4.3. 실패한 모니터 교체

Ceph Monitor에 손상된 저장소가 있는 경우 스토리지 클러스터의 모니터를 교체할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 쿼럼을 구성할 수 있습니다.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.

절차

  1. 모니터 호스트에서 기본적으로 /var/lib/ceph/mon/CLUSTER_NAME-SHORT_HOST_NAME 에 있는 모니터 저장소를 제거합니다.

    rm -rf /var/lib/ceph/mon/CLUSTER_NAME-SHORT_HOST_NAME
    Copy to Clipboard Toggle word wrap

    모니터 호스트의 짧은 호스트 이름과 클러스터 이름을 지정합니다. 예를 들어 remote 라는 클러스터에서 host1 에서 실행되는 Monitor의 모니터 저장소를 제거하려면 다음을 수행합니다.

    [root@mon ~]# rm -rf /var/lib/ceph/mon/remote-host1
    Copy to Clipboard Toggle word wrap
  2. 모니터 맵에서 모니터 제거 (monmap):

    ceph mon remove SHORT_HOST_NAME --cluster CLUSTER_NAME
    Copy to Clipboard Toggle word wrap

    모니터 호스트의 짧은 호스트 이름과 클러스터 이름을 지정합니다. 예를 들어 host1 에서 실행 중인 모니터를 remote 라는 클러스터에서 제거하려면 다음을 수행합니다.

    [ceph: root@host01 /]# ceph mon remove host01 --cluster remote
    Copy to Clipboard Toggle word wrap
  3. 모니터 호스트의 기본 파일 시스템 또는 하드웨어와 관련된 문제를 해결하고 수정합니다.

4.4. 모니터 저장소 압축

모니터 저장소 크기가 크게 증가하면 압축할 수 있습니다.

  • ceph tell 명령을 사용하여 동적으로 수행할 수 있습니다.
  • ceph-mon 데몬을 시작할 때입니다.
  • ceph-mon 데몬이 실행되지 않는 경우 ceph-monstore-tool 을 사용합니다. 이전에 언급한 방법이 Monitor 저장소를 압축하지 못하거나 모니터가 쿼럼이 없고 해당 로그에 Caught signal (Bus error) 오류 메시지가 포함된 경우 이 방법을 사용합니다.
중요

클러스터가 active+clean 상태가 아니거나 재조정 프로세스 중에 저장소 크기 변경을 모니터링합니다. 따라서 재조정이 완료되면 모니터 저장소를 압축합니다. 또한 배치 그룹이 active+clean 상태에 있는지 확인합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.

절차

  1. ceph-mon 데몬이 실행 중인 경우 모니터 저장소를 압축하려면 다음을 수행합니다.

    구문

    ceph tell mon.HOST_NAME compact
    Copy to Clipboard Toggle word wrap

  2. HOST_NAMEceph-mon 이 실행 중인 호스트의 짧은 호스트 이름으로 바꿉니다. 확실하지 않은 경우 hostname -s 명령을 사용하십시오.

    예제

    [ceph: root@host01 /]# ceph tell mon.host01 compact
    Copy to Clipboard Toggle word wrap

  3. [mon] 섹션의 Ceph 구성에 다음 매개변수를 추가합니다.

    [mon]
    mon_compact_on_start = true
    Copy to Clipboard Toggle word wrap
  4. ceph-mon 데몬을 다시 시작합니다.

    구문

    systemctl restart ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl restart ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

  5. 모니터가 쿼럼을 구성했는지 확인합니다.

    [ceph: root@host01 /]# ceph mon stat
    Copy to Clipboard Toggle word wrap
  6. 필요한 경우 다른 모니터에서 이 단계를 반복합니다.

    참고

    시작하기 전에 ceph-test 패키지가 설치되어 있는지 확인합니다.

  7. 대규모 저장소의 ceph-mon 데몬이 실행되지 않는지 확인합니다. 필요한 경우 데몬을 중지합니다.

    구문

    systemctl status ceph-FSID@DAEMON_NAME
    systemctl stop ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    [root@mon ~]# systemctl stop ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

  8. 모니터 저장소를 압축합니다.

    구문

    ceph-monstore-tool /var/lib/ceph/CLUSTER_FSID/mon.HOST_NAME compact
    Copy to Clipboard Toggle word wrap

    HOST_NAME 을 Monitor 호스트의 짧은 호스트 이름으로 바꿉니다.

    예제

    [ceph: root@host01 /]# ceph-monstore-tool /var/lib/ceph/b404c440-9e4c-11ec-a28a-001a4a0001df/mon.host01 compact
    Copy to Clipboard Toggle word wrap

  9. ceph-mon 을 다시 시작합니다.

    구문

    systemctl start ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

4.5. Ceph 관리자용 오픈 포트

ceph-mgr 데몬은 ceph-osd 데몬과 동일한 포트 범위의 OSD에서 배치 그룹 정보를 받습니다. 이러한 포트가 열려 있지 않으면 클러스터가 HEALTH_OK 에서 HEALTH_WARN 으로 분리되며 PG가 수 없는 PG 수로 알 수 없음을 나타냅니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Manager에 대한 루트 수준 액세스.

절차

  1. 이 상황을 해결하려면 ceph-mgr 데몬을 실행하는 각 호스트에 대해 포트 6800-7300 을 엽니다.

    예제

    [root@ceph-mgr] # firewall-cmd --add-port 6800-7300/tcp
    [root@ceph-mgr] # firewall-cmd --add-port 6800-7300/tcp --permanent
    Copy to Clipboard Toggle word wrap

  2. ceph-mgr 데몬을 다시 시작합니다.

4.6. Ceph Monitor 저장소 복구

Ceph 모니터는 클러스터 맵을 TaskRunsDB와 같은 키-값 저장소에 저장합니다. 모니터에서 저장소가 손상되면 모니터가 예기치 않게 종료되고 다시 시작되지 않습니다. Ceph 로그에 다음 오류가 포함될 수 있습니다.

Corruption: error in middle of record
Corruption: 1 missing files; e.g.: /var/lib/ceph/mon/mon.0/store.db/1234567.ldb
Copy to Clipboard Toggle word wrap

Red Hat Ceph Storage 클러스터는 3개 이상의 Ceph Monitor를 사용하므로 실패하는 경우 다른 클러스터로 교체할 수 있습니다. 그러나 특정 상황에서 모든 Ceph 모니터에 저장소가 손상될 수 있습니다. 예를 들어 Ceph Monitor 노드가 디스크 또는 파일 시스템 설정을 잘못 구성한 경우 정전으로 인해 기본 파일 시스템이 손상될 수 있습니다.

모든 Ceph 모니터에 손상이 있는 경우 ceph-monstore-toolceph-objectstore-tool 이라는 유틸리티를 사용하여 OSD 노드에 저장된 정보로 복구할 수 있습니다.

중요

이러한 프로세스는 다음 정보를 복구할 수 없습니다.

  • 메타데이터 데몬 서버(MDS) 키링 및 맵
  • 배치 그룹 설정:

    • ceph pg set_ full _ratio 명령을 사용하여 전체 비율 설정
    • ceph pg set_ nearfull _ratio 명령을 사용하여 설정된 거의 전체 비율
중요

이전 백업에서 Ceph Monitor 저장소를 복원하지 마십시오. 다음 단계를 사용하여 현재 클러스터 상태에서 Ceph Monitor 저장소를 다시 빌드하고 복원하십시오.

4.6.1. BlueStore를 사용할 때 Ceph Monitor 저장소 복구

Ceph Monitor 저장소가 모든 Ceph Monitor에서 손상되고 BlueStore 백엔드를 사용하는 경우 다음 절차를 따르십시오.

컨테이너화된 환경에서는 이 방법을 사용하여 Ceph 리포지토리를 연결하고 컨테이너화되지 않은 Ceph Monitor로 복원해야 합니다.

주의

이 절차에서는 데이터 손실이 발생할 수 있습니다. 이 절차의 단계가 확실하지 않은 경우 복구 프로세스에 대한 지원을 받으려면 Red Hat 기술 지원에 문의하십시오.

사전 요구 사항

  • 모든 OSD 컨테이너가 중지됩니다.
  • 역할에 따라 Ceph 노드에서 Ceph 리포지토리를 활성화합니다.
  • ceph-testrsync 패키지가 OSD 및 모니터 노드에 설치되어 있습니다.
  • ceph-mon 패키지가 모니터 노드에 설치됩니다.
  • ceph-osd 패키지는 OSD 노드에 설치됩니다.

절차

  1. Ceph 데이터가 포함된 모든 디스크를 임시 위치에 마운트합니다. 모든 OSD 노드에 대해 이 단계를 반복합니다.

    1. ceph-volume 명령을 사용하여 데이터 파티션을 나열합니다.

      예제

      [ceph: root@host01 /]# ceph-volume lvm list
      Copy to Clipboard Toggle word wrap

    2. 데이터 파티션을 임시 위치에 마운트합니다.

      구문

      mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-$i
      Copy to Clipboard Toggle word wrap

    3. SELinux 컨텍스트를 복원합니다.

      구문

      for i in {OSD_ID}; do restorecon /var/lib/ceph/osd/ceph-$i; done
      Copy to Clipboard Toggle word wrap

      OSD_ID 를 OSD 노드에서 공백으로 구분된 숫자 목록으로 교체합니다.

    4. 소유자 및 그룹을 ceph:ceph 로 변경합니다.

      구문

      for i in {OSD_ID}; do chown -R ceph:ceph /var/lib/ceph/osd/ceph-$i; done
      Copy to Clipboard Toggle word wrap

      OSD_ID 를 OSD 노드에서 공백으로 구분된 숫자 목록으로 교체합니다.

      중요

      update-mon-db 명령이 Monitor 데이터베이스에 추가 db 및 db.slow 디렉터리를 사용하도록 하는 버그로 인해 이러한 디렉터리도 복사해야 합니다. 이렇게 하려면 다음을 수행합니다.

      1. 컨테이너 외부의 임시 위치를 준비하여 OSD 데이터베이스를 마운트 및 액세스하고 Ceph 모니터를 복원하는 데 필요한 OSD 맵을 추출합니다.

        구문

        ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev OSD-DATA --path /var/lib/ceph/osd/ceph-OSD-ID
        Copy to Clipboard Toggle word wrap

        OSD-DATA 를 OSD 데이터 및 OSD-ID 의 볼륨 그룹(VG) 또는 논리 볼륨(LV) 경로로 바꿉니다.

      2. BlueStore 데이터베이스와 block.db 사이에 심볼릭 링크를 생성

        구문

        ln -snf BLUESTORE DATABASE /var/lib/ceph/osd/ceph-OSD-ID/block.db
        Copy to Clipboard Toggle word wrap

        BLUESTORE-DATABASE 를 BlueStore 데이터베이스 및 OSD-ID 의 Volume Group(VG) 또는 LV(Logical Volume) 경로로 바꿉니다.

  2. 손상된 저장소와 함께 Ceph Monitor 노드에서 다음 명령을 사용합니다. 모든 노드의 모든 OSD에 대해 반복합니다.

    1. 모든 OSD 노드에서 클러스터 맵을 수집합니다.

      예제

      [root@host01 ~]# cd /root/
      [root@host01 ~]# ms=/tmp/monstore/
      [root@host01 ~]# db=/root/db/
      [root@host01 ~]# db_slow=/root/db.slow/
      
      [root@host01 ~]# mkdir $ms
      [root@host01 ~]# for host in $osd_nodes; do
                      echo "$host"
                      rsync -avz $ms $host:$ms
                      rsync -avz $db $host:$db
                      rsync -avz $db_slow $host:$db_slow
      
                      rm -rf $ms
                      rm -rf $db
                      rm -rf $db_slow
      
                      sh -t $host <<EOF
                        for osd in /var/lib/ceph/osd/ceph-*; do
                          ceph-objectstore-tool --type bluestore --data-path \$osd --op update-mon-db --mon-store-path $ms
      
                         done
                      EOF
      
                            rsync -avz $host:$ms $ms
                            rsync -avz $host:$db $db
                            rsync -avz $host:$db_slow $db_slow
                      done
      Copy to Clipboard Toggle word wrap

    2. 적절한 기능을 설정합니다.

      예제

      [ceph: root@host01 /]# ceph-authtool /etc/ceph/ceph.client.admin.keyring -n mon. --cap mon 'allow *' --gen-key
      [ceph: root@host01 /]# cat /etc/ceph/ceph.client.admin.keyring
        [mon.]
          key = AQCleqldWqm5IhAAgZQbEzoShkZV42RiQVffnA==
          caps mon = "allow *"
        [client.admin]
          key = AQCmAKld8J05KxAArOWeRAw63gAwwZO5o75ZNQ==
          auid = 0
          caps mds = "allow *"
          caps mgr = "allow *"
          caps mon = "allow *"
          caps osd = "allow *"
      Copy to Clipboard Toggle word wrap

    3. dbdb.slow 디렉토리에서 모든 sst 파일을 임시 위치로 이동합니다.

      예제

      [ceph: root@host01 /]# mv /root/db/*.sst /root/db.slow/*.sst /tmp/monstore/store.db
      Copy to Clipboard Toggle word wrap

    4. 수집된 맵에서 모니터 저장소를 다시 빌드합니다.

      예제

      [ceph: root@host01 /]# ceph-monstore-tool /tmp/monstore rebuild -- --keyring /etc/ceph/ceph.client.admin
      Copy to Clipboard Toggle word wrap

      참고

      이 명령을 사용한 후에는 OSD에서 추출된 인증 키와 ceph-monstore-tool 명령줄에 지정된 인증 키만 Ceph 인증 데이터베이스에 있습니다. 클라이언트가 클러스터에 액세스할 수 있도록 클라이언트, Ceph Manager, Ceph Object Gateway 등과 같은 기타 모든 인증 키를 다시 생성하거나 가져와야 합니다.

    5. 손상된 저장소를 백업하십시오. 모든 Ceph Monitor 노드에 대해 이 단계를 반복합니다.

      구문

      mv /var/lib/ceph/mon/ceph-HOSTNAME/store.db /var/lib/ceph/mon/ceph-HOSTNAME/store.db.corrupted
      Copy to Clipboard Toggle word wrap

      HOSTNAME 을 Ceph Monitor 노드의 호스트 이름으로 바꿉니다.

    6. 손상된 저장소를 교체합니다. 모든 Ceph Monitor 노드에 대해 이 단계를 반복합니다.

      구문

      scp -r /tmp/monstore/store.db HOSTNAME:/var/lib/ceph/mon/ceph-HOSTNAME/
      Copy to Clipboard Toggle word wrap

      HOSTNAME 을 Monitor 노드의 호스트 이름으로 바꿉니다.

    7. 새 저장소의 소유자를 변경합니다. 모든 Ceph Monitor 노드에 대해 이 단계를 반복합니다.

      구문

      chown -R ceph:ceph /var/lib/ceph/mon/ceph-HOSTNAME/store.db
      Copy to Clipboard Toggle word wrap

      HOSTNAME 을 Ceph Monitor 노드의 호스트 이름으로 바꿉니다.

  3. 임시로 마운트된 모든 OSD를 모든 노드에서 마운트 해제합니다.

    예제

    [root@host01 ~]# umount /var/lib/ceph/osd/ceph-*
    Copy to Clipboard Toggle word wrap

  4. 모든 Ceph Monitor 데몬을 시작합니다.

    구문

    systemctl start ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    Copy to Clipboard Toggle word wrap

  5. 모니터가 쿼럼을 구성할 수 있는지 확인합니다.

    구문

    ceph -s
    Copy to Clipboard Toggle word wrap

    HOSTNAME 을 Ceph Monitor 노드의 호스트 이름으로 바꿉니다.

  6. Ceph Manager 인증 키를 가져오고 모든 Ceph Manager 프로세스를 시작합니다.

    구문

    ceph auth import -i /etc/ceph/ceph.mgr.HOSTNAME.keyring
    systemctl start ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@mon ~]# systemctl start ceph-b341e254-b165-11ed-a564-ac1f6bb26e8c@mgr.extensa003.exrqql.service
    Copy to Clipboard Toggle word wrap

    HOSTNAME 을 Ceph Manager 노드의 호스트 이름으로 바꿉니다.

  7. 모든 OSD 노드에서 모든 OSD 프로세스를 시작합니다. 클러스터의 모든 OSD에 대해 반복합니다.

    구문

    systemctl start ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  8. OSD가 서비스로 돌아가고 있는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph -s
    Copy to Clipboard Toggle word wrap

5장. Ceph OSD 문제 해결

이 장에서는 Ceph OSD와 관련된 가장 일반적인 오류를 수정하는 방법에 대해 설명합니다.

사전 요구 사항

  • 네트워크 연결을 확인합니다. 자세한 내용은 네트워킹 문제 해결을 참조하십시오.
  • ceph health 명령을 사용하여 모니터에 쿼럼이 있는지 확인합니다. 명령에서 상태(HEALTH_OK,HEALTH_WARN 또는 HEALTH_ERR)를 반환하는 경우 모니터는 쿼럼을 구성할 수 있습니다. 그렇지 않은 경우 먼저 모니터 문제를 해결하십시오. 자세한 내용은 Ceph 모니터 문제 해결을 참조하십시오. ceph 상태에 대한 자세한 내용은 Ceph 상태이해를 참조하십시오.
  • 필요한 경우 리밸런싱 프로세스를 중지하여 시간과 리소스를 절약할 수 있습니다. 자세한 내용은 중지 및 재조정 시작을 참조하십시오.

5.1. 가장 일반적인 Ceph OSD 오류

다음 표에는 ceph health detail 명령에서 반환하거나 Ceph 로그에 포함된 가장 일반적인 오류 메시지가 나열되어 있습니다. 표는 오류를 설명하고 문제를 해결하기 위해 특정 절차를 가리키는 해당 섹션에 대한 링크를 제공합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.

5.1.1. Ceph OSD 오류 메시지

일반적인 Ceph OSD 오류 메시지와 잠재적인 수정으로 구성된 테이블입니다.

Expand
오류 메시지참조

HEALTH_ERR

전체 osds

전체 OSD

HEALTH_WARN

backfillfull osds

Backfillfull OSDS

nearfull osds

nearfull OSD

OSD가 다운됨

Downward OSD

플랫폼용 OSD

요청이 차단됨

느린 요청 또는 요청이 차단됨

요청 속도 저하

느린 요청 또는 요청이 차단됨

5.1.2. Ceph 로그의 일반적인 Ceph OSD 오류 메시지

Ceph 로그에 있는 일반적인 Ceph OSD 오류 메시지와 잠재적인 수정에 대한 링크입니다.

Expand
오류 메시지로그 파일참조

heartbeat_check: no reply from osd.X

기본 클러스터 로그

플랫폼용 OSD

잘못된 표시

기본 클러스터 로그

플랫폼용 OSD

OSD에 요청 속도가 느린 경우

기본 클러스터 로그

느린 요청 또는 요청이 차단됨

FAILED assert(0 == "hit persistent timeout")

OSD 로그

Downward OSD

5.1.3. 전체 OSD

ceph health detail 명령은 다음과 유사한 오류 메시지를 반환합니다.

HEALTH_ERR 1 full osds
osd.3 is full at 95%
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

Ceph는 클라이언트가 데이터 손실을 방지하기 위해 전체 OSD 노드에서 I/O 작업을 수행하지 못하도록 합니다. 클러스터가 mon _osd_full_ratio 매개변수로 설정된 용량에 도달하면 HEALTH_ERR 전체 osds 메시지를 반환합니다. 기본적으로 이 매개변수는 0.95 로 설정되어 있으며 이는 클러스터 용량의 95%를 의미합니다.

문제 해결 방법

원시 스토리지(%RAW USED)의 사용 백분율을 결정합니다.

ceph df
Copy to Clipboard Toggle word wrap

%RAW USED 가 70-75%를 초과하는 경우 다음을 수행할 수 있습니다.

  • 불필요한 데이터를 삭제합니다. 이는 프로덕션 다운타임을 방지하기 위한 단기 솔루션입니다.
  • 새 OSD 노드를 추가하여 클러스터를 확장합니다. 이는 Red Hat에서 권장하는 장기 솔루션입니다.

5.1.4. Backfillfull OSD

ceph health detail 명령은 다음과 유사한 오류 메시지를 반환합니다.

health: HEALTH_WARN
3 backfillfull osd(s)
Low space hindering backfill (add storage if this doesn't resolve itself): 32 pgs backfill_toofull
Copy to Clipboard Toggle word wrap

이것이 무엇을 의미합니까?

하나 이상의 OSD가 백필 전체 임계값을 초과한 경우 Ceph는 데이터가 이 장치로 재조정되지 않도록 합니다. 이는 재조정이 완료되지 않고 클러스터가 완전히 접근하고 있다는 초기 경고입니다. 백전체 임계값의 기본값은 90%입니다.

이 문제를 해결하려면

풀별 사용률 확인:

ceph df
Copy to Clipboard Toggle word wrap

%RAW USED 가 70-75%를 초과하는 경우 다음 작업 중 하나를 수행할 수 있습니다.

  • 불필요한 데이터를 삭제합니다. 이는 프로덕션 다운타임을 방지하기 위한 단기 솔루션입니다.
  • 새 OSD 노드를 추가하여 클러스터를 확장합니다. 이는 Red Hat에서 권장하는 장기 솔루션입니다.
  • 복구 프로세스를 계속할 수 있도록 backfull_toofull 에 멈춘 PG가 포함된 OSD의 백필 전체 비율을 늘립니다. 가능한 한 빨리 클러스터에 새 스토리지를 추가하거나 더 많은 OSD를 채우지 않도록 데이터를 제거합니다.

    구문

    ceph osd set-backfillfull-ratio VALUE
    Copy to Clipboard Toggle word wrap

    VALUE 의 범위는 0.0 ~ 1.0입니다.

    예제

    [ceph: root@host01/]# ceph osd set-backfillfull-ratio 0.92
    Copy to Clipboard Toggle word wrap

5.1.5. nearfull OSD

ceph health detail 명령은 다음과 유사한 오류 메시지를 반환합니다.

HEALTH_WARN 1 nearfull osds
osd.2 is near full at 85%
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

클러스터가 mon osd nearfull ratio defaults 매개변수에 의해 설정된 용량에 도달하면 Ceph에서 nearfull osds 메시지를 반환합니다. 기본적으로 이 매개변수는 0.85 로 설정되어 클러스터 용량의 85%를 의미합니다.

Ceph는 가능한 최상의 방식으로 data를 배포하지만 동일한 배포를 보장할 수는 없습니다. Even data distribution 및 nearfull osds 메시지의 주요 원인은 다음과 같습니다.

  • OSD는 클러스터의 OSD 노드 간에 균형을 맞추지 않습니다. 즉, 일부 OSD 노드는 다른 것보다 훨씬 더 많은 OSD를 호스팅하거나 DestinationRule 맵의 일부 OSD의 가중치는 용량에 적합하지 않습니다.
  • PG(배치 그룹) 수는 OSD 수, 사용 사례, OSD당 대상 PG 및 OSD 사용률에 따라 적합하지 않습니다.
  • 클러스터는 부적절한 DestinationRule 튜닝 가능 항목을 사용합니다.
  • OSD의 백엔드 스토리지는 거의 가득 차 있습니다.

이 문제를 해결하려면 다음을 수행하십시오.

  1. PG 수가 충분한지 확인하고 필요한 경우 늘립니다.
  2. 클러스터 버전에 최적으로 DestinationRule 튜닝 가능 항목을 사용하는지 확인하고 그렇지 않은 경우 조정할 수 있습니다.
  3. 사용률에 따라 OSD의 가중치를 변경합니다.
  4. OSD에서 사용하는 디스크에 남은 공간을 결정합니다.

    1. 일반적으로 OSD에서 사용하는 공간 크기를 보려면 다음을 수행합니다.

      [ceph: root@host01 /]# ceph osd df
      Copy to Clipboard Toggle word wrap
    2. 특정 노드에서 OSD가 사용하는 공간을 보려면 다음을 수행합니다. OSD가 거의 모든 노드를 포함하는 노드에서 다음 명령을 사용합니다.

      df
      Copy to Clipboard Toggle word wrap
    3. 필요한 경우 새 OSD 노드를 추가합니다.

5.1.6. Downward OSD

ceph health detail 명령은 다음과 유사한 오류를 반환합니다.

HEALTH_WARN 1/3 in osds are down
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

서비스 장애 또는 다른 OSD와의 통신 문제 때문에 ceph-osd 프로세스 중 하나를 사용할 수 없습니다. 그 결과 남아 있는 ceph-osd 데몬이 모니터에 실패를 보고했습니다.

ceph-osd 데몬이 실행 중이 아닌 경우 기본 OSD 드라이브 또는 파일 시스템이 손상되거나 키링 누락과 같은 기타 오류로 인해 데몬이 시작되지 않습니다.

대부분의 경우 ceph-osd 데몬이 실행 중이지만 여전히 down 으로 표시되는 경우 네트워킹 문제가 발생합니다.

문제 해결 방법

  1. 어떤 OSD가 다운 되었는지 확인합니다.

    [ceph: root@host01 /]# ceph health detail
    HEALTH_WARN 1/3 in osds are down
    osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
    Copy to Clipboard Toggle word wrap
  2. ceph-osd 데몬을 다시 시작합니다. OSD_ID 를 다운된 OSD의 ID로 바꿉니다.

    구문

    systemctl restart ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl restart ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

    1. ceph-osd 를 시작할 수 없는 경우 ceph-osd 데몬의 단계를 시작할 수 없습니다.
    2. ceph-osd 데몬을 시작할 수 있지만 down 으로 표시되면 ceph-osd 데몬의 단계가 실행 중이지만 여전히 '다운'으로 표시됩니다.

ceph-osd 데몬을 시작할 수 없음

  1. 여러 OSD(일반적으로 초과)를 포함하는 노드가 있는 경우 기본 최대 스레드(PID 수)가 충분한지 확인합니다. 자세한 내용은 PID 수 할당 을 참조하십시오.
  2. OSD 데이터 및 저널 파티션이 올바르게 마운트되었는지 확인합니다. ceph-volume lvm list 명령을 사용하여 Ceph Storage Cluster와 연결된 모든 장치 및 볼륨을 나열한 다음 제대로 마운트되었는지 수동으로 검사할 수 있습니다. 자세한 내용은 mount(8) 매뉴얼 페이지를 참조하십시오.
  3. ERROR: missing keyring이 있는 경우 인증 오류 메시지에 cephx를 사용할 수 없는 경우 OSD는 누락된 인증 키입니다.
  4. /var/lib/ceph/osd/ceph-1 오류 메시지에 OSD 슈퍼 블록을 열 수 없는 경우 ceph-osd 데몬에서 기본 파일 시스템을 읽을 수 없습니다. 이 오류를 해결하고 수정하는 방법에 대한 지침은 다음 단계를 참조하십시오.

    1. 해당 로그 파일을 확인하여 실패 원인을 확인합니다. 기본적으로 Ceph는 파일에 로깅된 후 /var/log/ceph/CLUSTER_FSID/ 디렉터리에 로그 파일을 저장합니다.
    2. EIO 오류 메시지는 기본 디스크 오류가 있음을 나타냅니다. 이 문제를 해결하려면 기본 OSD 디스크가 교체됩니다. 자세한 내용은 OSD 드라이브 교체를 참조하십시오.
    3. 로그에 다음과 같은 다른 FAILED 어설션 오류가 포함된 경우 지원 티켓을 엽니다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.

      FAILED assert(0 == "hit suicide timeout")
      Copy to Clipboard Toggle word wrap
  5. 기본 파일 시스템 또는 디스크에 오류가 있는지 dmesg 출력을 확인합니다.

    dmesg
    Copy to Clipboard Toggle word wrap
    1. 다음과 유사한 -5 오류 메시지는 기본 XFS 파일 시스템의 손상을 나타냅니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 Red Hat 고객 포털에서 "xfs_log_force: error -5 returned"의 의미는 무엇입니까?

      xfs_log_force: error -5 returned
      Copy to Clipboard Toggle word wrap
    2. dmesg 출력에 SCSI 오류 오류 메시지가 포함된 경우 Red Hat Customer Portal의 SCSI 오류 코드 솔루션 찾기 솔루션을 참조하여 문제를 해결하는 가장 좋은 방법을 결정합니다.
    3. 또는 기본 파일 시스템을 수정할 수 없는 경우 OSD 드라이브를 교체합니다. 자세한 내용은 OSD 드라이브 교체를 참조하십시오.
  6. 다음과 같은 세그먼트 장애로 OSD가 실패한 경우 필요한 정보를 수집하고 지원 티켓을 엽니다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.

    Caught signal (Segmentation fault)
    Copy to Clipboard Toggle word wrap

ceph-osd 가 실행 중이지만 여전히 down으로 표시됩니다.

  1. 해당 로그 파일을 확인하여 실패 원인을 확인합니다. 기본적으로 Ceph는 파일에 로깅된 후 /var/log/ceph/CLUSTER_FSID/ 디렉터리에 로그 파일을 저장합니다.

    1. 로그에 다음과 유사한 오류 메시지가 포함된 경우 Flapping OSD 를 참조하십시오.

      wrongly marked me down
      heartbeat_check: no reply from osd.2 since back
      Copy to Clipboard Toggle word wrap
    2. 다른 오류가 표시되면 지원 티켓을 엽니 다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.

5.1.7. 플랫폼용 OSD

ceph -w | grep osds 명령은 OSD를 반복적으로 down 으로 표시한 다음 짧은 시간 내에 다시 표시합니다.

ceph -w | grep osds
2022-05-05 06:27:20.810535 mon.0 [INF] osdmap e609: 9 osds: 8 up, 9 in
2022-05-05 06:27:24.120611 mon.0 [INF] osdmap e611: 9 osds: 7 up, 9 in
2022-05-05 06:27:25.975622 mon.0 [INF] HEALTH_WARN; 118 pgs stale; 2/9 in osds are down
2022-05-05 06:27:27.489790 mon.0 [INF] osdmap e614: 9 osds: 6 up, 9 in
2022-05-05 06:27:36.540000 mon.0 [INF] osdmap e616: 9 osds: 7 up, 9 in
2022-05-05 06:27:39.681913 mon.0 [INF] osdmap e618: 9 osds: 8 up, 9 in
2022-05-05 06:27:43.269401 mon.0 [INF] osdmap e620: 9 osds: 9 up, 9 in
2022-05-05 06:27:54.884426 mon.0 [INF] osdmap e622: 9 osds: 8 up, 9 in
2022-05-05 06:27:57.398706 mon.0 [INF] osdmap e624: 9 osds: 7 up, 9 in
2022-05-05 06:27:59.669841 mon.0 [INF] osdmap e625: 9 osds: 6 up, 9 in
2022-05-05 06:28:07.043677 mon.0 [INF] osdmap e628: 9 osds: 7 up, 9 in
2022-05-05 06:28:10.512331 mon.0 [INF] osdmap e630: 9 osds: 8 up, 9 in
2022-05-05 06:28:12.670923 mon.0 [INF] osdmap e631: 9 osds: 9 up, 9 in
Copy to Clipboard Toggle word wrap

또한 Ceph 로그에는 다음과 유사한 오류 메시지가 포함되어 있습니다.

2022-05-25 03:44:06.510583 osd.50 127.0.0.1:6801/149046 18992 : cluster [WRN] map e600547 wrongly marked me down
Copy to Clipboard Toggle word wrap
2022-05-25 19:00:08.906864 7fa2a0033700 -1 osd.254 609110 heartbeat_check: no reply from osd.2 since back 2021-07-25 19:00:07.444113 front 2021-07-25 18:59:48.311935 (cutoff 2021-07-25 18:59:48.906862)
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

각 OSD의 주요 원인은 다음과 같습니다.

  • 스크럽 또는 복구와 같은 특정 스토리지 클러스터 작업은 많은 인덱스 또는 대규모 배치 그룹이 있는 개체에서 이러한 작업을 수행하는 경우 비정상적으로 시간이 걸립니다. 일반적으로 이러한 작업이 완료되면 플립 OSD 문제가 해결됩니다.
  • 기본 하드웨어의 문제 이 경우 ceph health detail 명령은 느린 요청 오류 메시지도 반환합니다.
  • 네트워크에 문제가 있습니다.

Ceph OSD는 스토리지 클러스터의 프라이빗 네트워크가 실패하거나 공용 클라이언트 방향 네트워크에 있는 대기 시간이 많은 상황을 관리할 수 없습니다.

Ceph OSD는 사설 네트워크를 사용하여 서로 하트비트 패킷을 전송하여 실행 중임을 나타냅니다. 개인 스토리지 클러스터 네트워크가 제대로 작동하지 않으면 OSD에서 하트비트 패킷을 보내고 수신할 수 없습니다. 결과적으로 서로 Ceph 모니터가 중단되 는 것으로 보고되는 반면, 자체적으로 up 으로 표시됩니다.

Ceph 구성 파일의 다음 매개변수는 이 동작에 영향을 미칩니다.

Expand
매개변수설명기본값

osd_heartbeat_grace_time

OSD를 Ceph 모니터로 보고하기 전에 하트비트 패킷이 반환될 때까지 OSD가 대기하는 시간입니다.

20초

mon_osd_min_down_reporters

Ceph Monitors가 OSD를 아래로 표시하기 전에 다른 OSD를 down 으로 보고해야 하는 OSD 수

2

이 표에는 기본 구성에서 Ceph Monitor가 첫 번째 OSD에 대한 세 가지 보고서만 다운된 경우 OSD를 down 으로 표시합니다. 경우에 따라 단일 호스트에서 네트워크 문제가 발생하는 경우 전체 클러스터에 대해 OSD가 발생할 수 있습니다. 이는 호스트에 있는 OSD가 클러스터의 다른 OSD를 down 으로 보고하기 때문입니다.

참고

샘플링 OSD 시나리오에는 OSD 프로세스가 시작된 후 즉시 종료되는 상황이 포함되지 않습니다.

문제 해결 방법

  1. ceph health detail 명령 출력을 다시 확인합니다. 느린 요청 오류 메시지가 포함된 경우 이 문제 해결 방법에 대한 자세한 내용은 을 참조하십시오.

    ceph health detail
    HEALTH_WARN 30 requests are blocked > 32 sec; 3 osds have slow requests
    30 ops are blocked > 268435 sec
    1 ops are blocked > 268435 sec on osd.11
    1 ops are blocked > 268435 sec on osd.18
    28 ops are blocked > 268435 sec on osd.39
    3 osds have slow requests
    Copy to Clipboard Toggle word wrap
  2. 어떤 OSD가 down 으로 표시되는지 그리고 해당 OSD가 상주하는 노드를 확인합니다.

    ceph osd tree | grep down
    Copy to Clipboard Toggle word wrap
  3. OSD가 포함된 노드에서 네트워킹 문제를 해결하고 수정합니다.
  4. 또는 noupnodown 플래그를 설정하여 일시적으로 OSD를 아래로 표시하고 up 으로 표시하는 것을 중지할 수 있습니다.

    ceph osd set noup
    ceph osd set nodown
    Copy to Clipboard Toggle word wrap
    중요

    noupnodown 플래그를 사용하면 문제의 근본 원인이 해결되지 않고 OSD만 플레치되지 않습니다. 지원 티켓을 열려면 자세한 내용은 Red Hat 지원 문의 섹션을 참조하십시오.

중요

Ceph OSD 노드, 네트워크 스위치 수준 또는 둘 다에서 MTU 구성이 잘못되어 있을 수 있습니다. 이 문제를 해결하려면 다운타임이 예정되어 있는 코어 및 액세스 네트워크 스위치를 포함하여 MTU를 모든 스토리지 클러스터 노드의 균일한 크기로 설정합니다. 이 설정을 변경하면 네트워크 내에서 문제를 숨길 수 있으므로 osd heartbeat min 크기를 조정하지 마십시오. 실제 네트워크 불일치는 해결되지 않습니다.

5.1.8. 느린 요청 또는 요청이 차단됨

ceph-osd 데몬은 요청에 응답하는 속도가 느리고 ceph health detail 명령은 다음과 유사한 오류 메시지를 반환합니다.

HEALTH_WARN 30 requests are blocked > 32 sec; 3 osds have slow requests
30 ops are blocked > 268435 sec
1 ops are blocked > 268435 sec on osd.11
1 ops are blocked > 268435 sec on osd.18
28 ops are blocked > 268435 sec on osd.39
3 osds have slow requests
Copy to Clipboard Toggle word wrap

또한 Ceph 로그에는 다음과 유사한 오류 메시지가 포함됩니다.

2022-05-24 13:18:10.024659 osd.1 127.0.0.1:6812/3032 9 : cluster [WRN] 6 slow requests, 6 included below; oldest blocked for > 61.758455 secs
Copy to Clipboard Toggle word wrap
2022-05-25 03:44:06.510583 osd.50 [WRN] slow request 30.005692 seconds old, received at {date-time}: osd_op(client.4240.0:8 benchmark_data_ceph-1_39426_object7 [write 0~4194304] 0.69848840) v4 currently waiting for subops from [610]
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

요청이 느린 OSD는 osd_op_complaint_time 매개변수에 의해 정의된 시간 내에 대기열의 IOPS(초당 I/O 작업)를 서비스할 수 없는 모든 OSD입니다. 기본적으로 이 매개변수는 30초로 설정됩니다.

OSD 요청 속도가 느린 주요 원인은 다음과 같습니다.

  • 디스크 드라이브, 호스트, 랙 또는 네트워크 스위치와 같은 기본 하드웨어 문제
  • 네트워크에 문제가 있습니다. 이러한 문제는 일반적으로 플레치 OSD와 연결됩니다. 자세한 내용은 Flapping OSD 를 참조하십시오.
  • 시스템 로드

다음 표에서는 느린 요청 유형을 보여줍니다. dump_historic_ops 관리 소켓 명령을 사용하여 느린 요청 유형을 확인합니다. 관리 소켓에 대한 자세한 내용은 Red Hat Ceph Storage 6 관리 가이드의 Ceph 관리 소켓 사용 섹션을 참조하십시오.

Expand
느린 요청 유형설명

rw 잠금 대기

OSD는 작업용 배치 그룹에 잠금을 얻기 위해 대기 중입니다.

하위 항목 대기

OSD는 복제 OSD가 저널에 작업을 적용하기 위해 대기 중입니다.

플래그 포인트가 없음

OSD가 주요 작업 이정표에 도달하지 못했습니다.

성능 저하 오브젝트 대기

OSD는 아직 지정된 수의 오브젝트를 복제하지 않았습니다.

문제 해결 방법

  1. 느린 또는 블록 요청이 있는 OSD가 디스크 드라이브, 호스트, 랙 또는 네트워크 스위치와 같은 일반적인 하드웨어를 공유하는지 확인합니다.
  2. OSD가 디스크를 공유하는 경우:

    1. smartmontools 유틸리티를 사용하여 디스크 또는 로그의 상태를 확인하여 디스크의 오류를 확인합니다.

      참고

      smartmontools 유틸리티는 smartmontools 패키지에 포함되어 있습니다.

    2. iostat 유틸리티를 사용하여 OSD 디스크의 I/O 대기 보고서(%iowai)를 가져와서 디스크 부하가 많은지 확인합니다.

      참고

      iostat 유틸리티는 sysstat 패키지에 포함되어 있습니다.

  3. OSD가 노드를 다른 서비스와 공유하는 경우:

    1. RAM 및 CPU 사용률 확인
    2. netstat 유틸리티를 사용하여 NIC(Network Interface Controller)의 네트워크 통계를 확인하고 네트워킹 문제를 해결합니다.
  4. OSD가 랙을 공유하는 경우 랙에 대해 네트워크 스위치를 확인합니다. 예를 들어 점보 프레임을 사용하는 경우 경로의 NIC에 점보 프레임이 설정되어 있는지 확인합니다.
  5. OSD에서 느린 요청과 함께 공유하는 일반적인 하드웨어를 결정할 수 없거나 하드웨어 및 네트워킹 문제를 해결하고 수정하려면 지원 티켓을 엽니다. 자세한 내용은 서비스 관련 Red Hat 지원 문의를 참조하십시오.

5.2. 재조정 중지 및 시작

OSD에 실패하거나 중지하면ECDHE 알고리즘에서 재조정 프로세스를 자동으로 시작하여 나머지 OSD에서 데이터를 재배포합니다.

따라서 재조정에는 시간과 리소스가 필요할 수 있으므로 OSD 문제를 해결하거나 유지 관리하는 동안 재조정을 중지하는 것이 좋습니다.

참고

문제 해결 및 유지 관리 중에 중지된 OSD 내의 배치 그룹이 성능이 저하됩니다.

사전 요구 사항

  • Ceph Monitor 노드에 대한 루트 수준 액세스.

절차

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. OSD를 중지하기 전에 noout 플래그를 설정합니다.

    예제

    [ceph: root@host01 /]# ceph osd set noout
    Copy to Clipboard Toggle word wrap

  3. 문제 해결 또는 유지 관리를 완료하면 재조정을 시작하도록 noout 플래그를 설정 해제합니다.

    예제

    [ceph: root@host01 /]# ceph osd unset noout
    Copy to Clipboard Toggle word wrap

5.3. OSD 드라이브 교체

Ceph는 내결함성을 위해 설계되었습니다. 즉, 데이터 손실 없이 성능이 저하된 상태에서 작동할 수 있습니다. 결과적으로 데이터 스토리지 드라이브가 실패하더라도 Ceph가 작동할 수 있습니다. 실패한 드라이브의 컨텍스트에서 degraded 상태는 다른 OSD에 저장된 데이터의 추가 사본이 클러스터의 다른 OSD에 자동으로 다시 입력됨을 의미합니다. 그러나 이 경우 오류가 발생한 OSD 드라이브를 교체하고 OSD를 수동으로 다시 생성합니다.

드라이브에 오류가 발생하면 Ceph에서 OSD를 down 으로 보고합니다.

HEALTH_WARN 1/3 in osds are down
osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
Copy to Clipboard Toggle word wrap
참고

Ceph는 네트워킹 또는 권한 문제의 결과에서도 OSD를 down 으로 표시할 수 있습니다. 자세한 내용은 Down OSD 를 참조하십시오.

최신 서버는 일반적으로 hot-swappable 드라이브와 함께 배포되므로 실패한 드라이브를 가져와서 노드를 종료하지 않고 새 드라이브로 교체할 수 있습니다. 전체 절차에는 다음 단계가 포함됩니다.

  1. Ceph 클러스터에서 OSD를 제거합니다. 자세한 내용은 Ceph 클러스터에서 OSD 제거 절차를 참조하십시오.
  2. 드라이브를 교체하십시오. 자세한 내용은 Replacing the physical drive 섹션을 참조하십시오.
  3. OSD를 클러스터에 추가합니다. 자세한 내용은 Ceph 클러스터에 OSD 추가 절차를 참조하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.
  • 하나 이상의 OSD가 다운 되었습니다.

Ceph 클러스터에서 OSD 제거

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 어떤 OSD가 다운 되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph osd tree | grep -i down
    ID  CLASS  WEIGHT   TYPE NAME           STATUS  REWEIGHT  PRI-AFF
     0   hdd 0.00999        osd.0     down  1.00000          1.00000
    Copy to Clipboard Toggle word wrap

  3. OSD를 클러스터의 리밸런스로 표시하고 해당 데이터를 다른 OSD에 복사합니다.

    구문

    ceph osd out OSD_ID.
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph osd out osd.0
    marked out osd.0.
    Copy to Clipboard Toggle word wrap

    참고

    OSD가 다운되면 mon_osd_ down _ out _interval 매개변수를 기반으로 OSD에서 하트비트 패킷을 수신하지 않는 경우 Ceph에서 자동으로 600초 후에 표시되도록 표시합니다. 이 경우 실패한 OSD 데이터의 사본이 있는 다른 OSD는 클러스터에 필요한 복사본 수가 있는지 확인하기 위해 백필링을 시작합니다. 클러스터가 백필링하는 동안 클러스터는 성능이 저하됩니다.

  4. 실패한 OSD가 다시 입력되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph -w | grep backfill
    2022-05-02 04:48:03.403872 mon.0 [INF] pgmap v10293282: 431 pgs: 1 active+undersized+degraded+remapped+backfilling, 28 active+undersized+degraded, 49 active+undersized+degraded+remapped+wait_backfill, 59 stale+active+clean, 294 active+clean; 72347 MB data, 101302 MB used, 1624 GB / 1722 GB avail; 227 kB/s rd, 1358 B/s wr, 12 op/s; 10626/35917 objects degraded (29.585%); 6757/35917 objects misplaced (18.813%); 63500 kB/s, 15 objects/s recovering
    2022-05-02 04:48:04.414397 mon.0 [INF] pgmap v10293283: 431 pgs: 2 active+undersized+degraded+remapped+backfilling, 75 active+undersized+degraded+remapped+wait_backfill, 59 stale+active+clean, 295 active+clean; 72347 MB data, 101398 MB used, 1623 GB / 1722 GB avail; 969 kB/s rd, 6778 B/s wr, 32 op/s; 10626/35917 objects degraded (29.585%); 10580/35917 objects misplaced (29.457%); 125 MB/s, 31 objects/s recovering
    2022-05-02 04:48:00.380063 osd.1 [INF] 0.6f starting backfill to osd.0 from (0'0,0'0] MAX to 2521'166639
    2022-05-02 04:48:00.380139 osd.1 [INF] 0.48 starting backfill to osd.0 from (0'0,0'0] MAX to 2513'43079
    2022-05-02 04:48:00.380260 osd.1 [INF] 0.d starting backfill to osd.0 from (0'0,0'0] MAX to 2513'136847
    2022-05-02 04:48:00.380849 osd.1 [INF] 0.71 starting backfill to osd.0 from (0'0,0'0] MAX to 2331'28496
    2022-05-02 04:48:00.381027 osd.1 [INF] 0.51 starting backfill to osd.0 from (0'0,0'0] MAX to 2513'87544
    Copy to Clipboard Toggle word wrap

    배치 그룹 상태가 active+clean 에서 active , 일부 성능 저하된 오브젝트, 마지막으로 active +clean 으로 변경되어 마이그레이션이 완료될 때 표시됩니다.

  5. OSD를 중지합니다.

    구문

    ceph orch daemon stop OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch daemon stop osd.0
    Copy to Clipboard Toggle word wrap

  6. 스토리지 클러스터에서 OSD를 제거합니다.

    구문

    ceph orch osd rm OSD_ID --replace
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch osd rm 0 --replace
    Copy to Clipboard Toggle word wrap

    OSD_ID 는 유지됩니다.

물리적 드라이브 교체

물리 드라이브 교체에 대한 자세한 내용은 하드웨어 노드의 설명서를 참조하십시오.

  1. 드라이브가 hot-swappable인 경우 오류가 발생한 드라이브를 새 드라이브로 교체합니다.
  2. 드라이브를 핫 스왑할 수 없고 노드에 여러 OSD가 포함된 경우 전체 노드를 종료하고 물리적 드라이브를 교체해야 할 수 있습니다. 클러스터가 백필링되지 않도록 하는 것이 좋습니다. 자세한 내용은 Red Hat Ceph Storage 문제 해결 가이드중지 및 재조정 시작 장을 참조하십시오.
  3. 드라이브가 /dev/ 디렉토리에 표시되면 드라이브 경로를 기록해 둡니다.
  4. OSD를 수동으로 추가하려면 OSD 드라이브를 찾아 디스크를 포맷합니다.

Ceph 클러스터에 OSD 추가

  1. 새 드라이브가 삽입되면 다음 옵션을 사용하여 OSD를 배포할 수 있습니다.

    • --unmanaged 매개 변수가 설정되지 않은 경우 OSD는 Ceph Orchestrator에서 자동으로 배포합니다.

      예제

      [ceph: root@host01 /]# ceph orch apply osd --all-available-devices
      Copy to Clipboard Toggle word wrap

    • Unmanaged 매개 변수가 true 로 설정된 모든 사용 가능한 장치에 OSD를 배포합니다.

      예제

      [ceph: root@host01 /]# ceph orch apply osd --all-available-devices --unmanaged=true
      Copy to Clipboard Toggle word wrap

    • 특정 장치 및 호스트에 OSD를 배포합니다.

      예제

      [ceph: root@host01 /]# ceph orch daemon add osd host02:/dev/sdb
      Copy to Clipboard Toggle word wrap

  2. ECDHE 계층 구조의 정확한지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph osd tree
    Copy to Clipboard Toggle word wrap

5.4. PID 수 늘리기

12개 이상의 Ceph OSD를 포함하는 노드가 있는 경우 특히 복구 중에 기본 최대 스레드(PID 수)가 부족할 수 있습니다. 결과적으로 일부 ceph-osd 데몬이 종료되고 다시 시작되지 않을 수 있습니다. 이 경우 허용되는 최대 스레드 수를 늘립니다.

절차

일시적으로 번호를 늘리려면 다음을 수행하십시오.

[root@mon ~]# sysctl -w kernel.pid.max=4194303
Copy to Clipboard Toggle word wrap

번호를 영구적으로 늘리려면 다음과 같이 /etc/sysctl.conf 파일을 업데이트합니다.

kernel.pid.max = 4194303
Copy to Clipboard Toggle word wrap

5.5. 전체 스토리지 클러스터에서 데이터 삭제

Ceph는 mon_osd_full_ratio 매개변수로 지정된 용량에 도달한 OSD의 I/O 작업을 자동으로 방지하고 전체 osds 오류 메시지를 반환합니다.

다음 절차에서는 이 오류를 해결하기 위해 불필요한 데이터를 삭제하는 방법을 설명합니다.

참고

mon_osd_full_ratio 매개변수는 클러스터를 생성할 때 full_ratio 매개변수 값을 설정합니다. 이후에는 mon_osd_full_ratio 값을 변경할 수 없습니다. 일시적으로 full_ratio 값을 늘리려면 대신 set-full-ratio 를 늘립니다.

사전 요구 사항

  • Ceph Monitor 노드에 대한 루트 수준 액세스.

절차

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. full_ratio 의 현재 값을 결정합니다. 기본적으로 0.95 로 설정됩니다.

    [ceph: root@host01 /]# ceph osd dump | grep -i full
    full_ratio 0.95
    Copy to Clipboard Toggle word wrap
  3. 일시적으로 set-full-ratio 값을 0.97 로 늘립니다.

    [ceph: root@host01 /]# ceph osd set-full-ratio 0.97
    Copy to Clipboard Toggle word wrap
    중요

    Red Hat은 set-full-ratio 를 0.97보다 높은 값으로 설정할 것을 강력히 권장합니다. 이 매개 변수를 더 높은 값으로 설정하면 복구 프로세스가 어려워집니다. 따라서 전체 OSD를 복구하지 못할 수 있습니다.

  4. 매개변수를 0.97 로 성공적으로 설정했는지 확인하십시오.

    [ceph: root@host01 /]# ceph osd dump | grep -i full
    full_ratio 0.97
    Copy to Clipboard Toggle word wrap
  5. 클러스터 상태를 모니터링합니다.

    [ceph: root@host01 /]# ceph -w
    Copy to Clipboard Toggle word wrap

    클러스터가 상태를 완전히 변경하는 즉시 불필요한 데이터를 삭제합니다.

  6. full_ratio 값을 다시 0.95 로 설정합니다.

    [ceph: root@host01 /]# ceph osd set-full-ratio 0.95
    Copy to Clipboard Toggle word wrap
  7. 매개변수를 0.95 로 성공적으로 설정했는지 확인하십시오.

    [ceph: root@host01 /]# ceph osd dump | grep -i full
    full_ratio 0.95
    Copy to Clipboard Toggle word wrap

6장. 다중 사이트 Ceph Object Gateway 문제 해결

이 장에서는 다중 사이트 Ceph Object Gateway 구성 및 운영 조건과 관련된 가장 일반적인 오류를 수정하는 방법에 대해 설명합니다.

참고

radosgw-admin 버킷 동기화 상태 명령에서 데이터가 다중 사이트에서 일관된 경우에도 버킷이 shard의 뒤에 있는 것으로 보고되면 버킷에 대한 추가 쓰기를 실행합니다. 상태 보고서를 동기화하고 버킷이 소스와 함께 있음을 알리는 메시지를 표시합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 Ceph 오브젝트 게이트웨이.

6.1. Ceph Object Gateway에 대한 오류 코드 정의

Ceph Object Gateway 로그에는 사용자 환경의 조건 문제 해결에 도움이 되는 오류 및 경고 메시지가 포함되어 있습니다. 몇 가지 일반적인 해결 방법은 제안된 해결 방법과 함께 아래에 나열되어 있습니다.

일반적인 오류 메시지

data_sync: ERROR: 동기화 작업 반환 오류
하위 수준의 버킷 동기화 프로세스에서 오류를 반환했기 때문에 높은 수준의 데이터 동기화 프로세스가 오류를 반환했습니다. 이 메시지는 중복이므로 버킷 동기화 오류가 로그에 표시됩니다.
데이터 동기화: ERROR: failed to sync object: BUCKET_NAME:_OBJECT_NAME_
프로세스가 원격 게이트웨이에서 HTTP를 통해 필요한 오브젝트를 가져오지 못하거나 프로세스가 RADOS에 해당 오브젝트를 쓰지 못하여 다시 시도합니다.
데이터 동기화: ERROR: failure in sync, backing out(sync_status=2)
위의 조건 중 하나를 반영하는 낮은 수준 메시지, 특히 데이터가 동기화되기 전에 삭제되었다는 것을 반영하여 -2 ENOENT 상태를 표시합니다.
데이터 동기화: ERROR: failure in sync, backing out(sync_status=-5)
위 조건 중 하나를 반영하는 낮은 수준 메시지로, 특히 RADOS에 해당 오브젝트를 작성하지 못했기 때문에 -5 EIO 를 표시합니다.
ERROR: failed to fetch remote data log info: ret=11
libcurlEAGAIN 일반 오류 코드는 다른 게이트웨이의 오류 조건을 반영합니다. 기본적으로 다시 시도합니다.
메타 동기화: ERROR: failed to read mdlog info with (2) no such file or directory
mdlog의 shard는 생성되지 않았으므로 동기화할 항목이 없습니다.

오류 메시지 동기화

오브젝트를 동기화하지 못했습니다.
프로세스가 원격 게이트웨이에서 HTTP를 통해 이 오브젝트를 가져오지 못하거나 RADOS에 해당 오브젝트를 작성하지 못하고 다시 시도됩니다.
버킷 인스턴스를 동기화하지 못했습니다. (11) 리소스를 일시적으로 사용할 수 없음
기본 영역과 보조 영역 간의 연결 문제입니다.
버킷 인스턴스를 동기화하지 못했습니다. (125) 작업이 취소됨
동일한 RADOS 오브젝트에 대한 쓰기 사이에 경쟁 조건이 존재합니다.
ERROR: request failed: (13) 권한이 거부된 경우 마스터 영역에서 영역이 변경된 경우 이 사용자를 인식하기 위해 마스터 영역의 게이트웨이를 다시 시작해야 할 수 있습니다.

보조 사이트를 구성하는 동안 rgw realm pull --url http://primary_endpoint --access-key <> --secret <>에서 permission denied 오류와 함께 실패하는 경우가 있습니다.

이러한 경우 기본 사이트에서 시스템 사용자 인증 정보가 다음 명령을 통해 동일한지 확인합니다.

radosgw-admin user info --uid synchronization_user, and
radosgw-admin zone get
Copy to Clipboard Toggle word wrap

추가 리소스

6.2. 다중 사이트 Ceph Object Gateway 동기화

다중 사이트 동기화는 다른 영역에서 변경 로그를 읽습니다. 메타데이터 및 데이터 로그에서 동기화 진행 상황에 대한 상위 수준 보기를 가져오려면 다음 명령을 사용할 수 있습니다.

예제

[ceph: root@host01 /]# radosgw-admin sync status
Copy to Clipboard Toggle word wrap

이 명령은 소스 영역 뒤에 있는 로그 shard(있는 경우)를 나열합니다.

참고

경우에 따라 radosgw-admin sync status 명령을 실행할 때 shard 복구를 관찰할 수 있습니다. 데이터 동기화의 경우 각각 독립적으로 처리되는 복제 로그에는 128개의 shard가 있습니다. 이러한 복제 로그 이벤트에서 트리거한 조치로 인해 네트워크, 스토리지 또는 다른 위치에서 오류가 발생하면 해당 오류가 추적되어 작업이 나중에 다시 시도할 수 있습니다. 지정된 shard에는 재시도가 필요한 오류가 있지만 radosgw-admin sync status 명령은 shard를 복구 로 보고합니다. 이러한 복구는 자동으로 수행되므로 Operator가 문제를 해결하기 위해 개입할 필요가 없습니다.

로그 shard에서 실행한 동기화 상태 결과가 뒤에 있는 경우 X 용으로 shard-id를 대체한 다음 명령을 실행합니다.

구문

radosgw-admin data sync status --shard-id=X --source-zone=ZONE_NAME
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# radosgw-admin data sync status --shard-id=27 --source-zone=us-east
{
  "shard_id": 27,
  "marker": {
         "status": "incremental-sync",
         "marker": "1_1534494893.816775_131867195.1",
         "next_step_marker": "",
         "total_entries": 1,
         "pos": 0,
         "timestamp": "0.000000"
   },
   "pending_buckets": [],
   "recovering_buckets": [
         "pro-registry:4ed07bb2-a80b-4c69-aa15-fdc17ae6f5f2.314303.1:26"
   ]
}
Copy to Clipboard Toggle word wrap

출력에 동기화 옆에 있는 버킷과 이전 오류로 인해 어떤 버킷을 다시 시도할 것인지 목록이 표시됩니다.

다음 명령으로 개별 버킷의 상태를 검사하고 X 의 버킷 ID를 대체합니다.

구문

radosgw-admin bucket sync status --bucket=X.
Copy to Clipboard Toggle word wrap

X 를 버킷의 ID 번호로 바꿉니다.

결과는 소스 영역 뒤에 있는 버킷 인덱스 로그 shard를 보여줍니다.

동기화의 일반적인 오류는 다른 게이트웨이에서 종종 동기화가 이미 진행 중임을 의미합니다. 다음 명령을 사용하여 읽을 수 있는 동기화 오류 로그에 작성된 오류를 읽습니다.

radosgw-admin sync error list
Copy to Clipboard Toggle word wrap

동기화 프로세스는 성공할 때까지 다시 시도합니다. 개입이 필요할 수 있는 오류도 발생할 수 있습니다.

6.3. 다중 사이트 Ceph Object Gateway 데이터 동기화의 성능 카운터

데이터 동기화를 측정하기 위해 Ceph Object Gateway의 다중 사이트 구성에 다음 성능 카운터를 사용할 수 있습니다.

  • poll_latency 는 원격 복제 로그에 대한 요청 대기 시간을 측정합니다.
  • fetch_bytes 는 데이터 동기화에서 가져온 오브젝트 수와 바이트 수를 측정합니다.

ceph --admin-daemon 명령을 사용하여 성능 카운터의 현재 지표 데이터를 확인합니다.

구문

ceph --admin-daemon /var/run/ceph/ceph-client.rgw.RGW_ID.asok perf dump data-sync-from-ZONE_NAME
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.rgw.host02-rgw0.103.94309060818504.asok perf dump data-sync-from-us-west

{
    "data-sync-from-us-west": {
        "fetch bytes": {
            "avgcount": 54,
            "sum": 54526039885
        },
        "fetch not modified": 7,
        "fetch errors": 0,
        "poll latency": {
            "avgcount": 41,
            "sum": 2.533653367,
            "avgtime": 0.061796423
        },
        "poll errors": 0
    }
}
Copy to Clipboard Toggle word wrap

참고

데몬을 실행하는 노드에서 ceph --admin-daemon 명령을 실행해야 합니다.

추가 리소스

  • 성능 카운터 에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 성능 카운터 장을 참조하십시오.

6.4. 다중 사이트 Ceph Object Gateway 구성에서 데이터 동기화

스토리지 클러스터의 다중 사이트 Ceph Object Gateway 구성에서 페일오버 및 실패로 인해 데이터 동기화가 중지됩니다. radosgw-admin 동기화 상태 명령은 데이터 동기화가 장기간 뒤에 있음을 보고합니다.

radosgw-admin data sync init 명령을 실행하여 사이트 간 데이터를 동기화한 다음 Ceph Object Gateway를 다시 시작할 수 있습니다. 이 명령은 실제 오브젝트 데이터를 만지지 않고 지정된 소스 영역에 대한 데이터 동기화를 시작합니다. 이로 인해 영역이 소스 영역에서 전체 동기화를 다시 시작합니다.

중요

데이터 동기화 init 명령을 실행하기 전에 Red Hat 지원에 문의하십시오.

전체 동기화를 완전히 다시 시작하고 소스 영역에서 동기화해야 하는 데이터가 많이 있는 경우 대역폭 사용량이 높습니다.

참고

사용자가 보조 사이트에서 버킷을 실수로 삭제하는 경우 사이트에서 메타데이터 동기화 init 명령을 사용하여 데이터를 동기화할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway는 최소한 두 개의 사이트를 구성했습니다.

절차

  1. 사이트 간 동기화 상태를 확인합니다.

    예제

    [ceph: host04 /]# radosgw-admin sync status
              realm d713eec8-6ec4-4f71-9eaf-379be18e551b (india)
          zonegroup ccf9e0b2-df95-4e0a-8933-3b17b64c52b7 (shared)
               zone 04daab24-5bbd-4c17-9cf5-b1981fd7ff79 (primary)
       current time 2022-09-15T06:53:52Z
    zonegroup features enabled: resharding
      metadata sync no sync (zone is master)
          data sync source: 596319d2-4ffe-4977-ace1-8dd1790db9fb (secondary)
                            syncing
                            full sync: 0/128 shards
                            incremental sync: 128/128 shards
                            data is caught up with source
    Copy to Clipboard Toggle word wrap

  2. 보조 영역의 데이터를 동기화합니다.

    예제

    [ceph: root@host04 /]# radosgw-admin data sync init --source-zone primary
    Copy to Clipboard Toggle word wrap

  3. 사이트에서 모든 Ceph Object Gateway 데몬을 다시 시작합니다.

    예제

    [ceph: root@host04 /]# ceph orch restart rgw.myrgw
    Copy to Clipboard Toggle word wrap

7장. Ceph 배치 그룹 문제 해결

이 섹션에서는 Ceph PG(배치 그룹)와 관련된 가장 일반적인 오류를 수정하는 방법에 대해 설명합니다.

사전 요구 사항

  • 네트워크 연결을 확인합니다.
  • 모니터가 쿼럼을 구성할 수 있는지 확인합니다.
  • 정상적인 모든 OSD가 upin 이고 백필링 및 복구 프로세스가 완료되었는지 확인합니다.

7.1. 가장 일반적인 Ceph 배치 그룹 오류

다음 표에는 ceph health detail 명령에서 반환하는 가장 일반적인 오류 메시지가 나와 있습니다. 이 표에서는 오류를 설명하고 문제를 해결하기 위해 특정 절차를 가리키는 해당 섹션에 대한 링크를 제공합니다.

또한 최적이 아닌 상태로 고정되는 배치 그룹을 나열할 수 있습니다. 자세한 내용은 7.2절. “오래된,비활성 상태 또는 불명확한 상태로 설정된 배치 그룹 나열 을 참조하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 Ceph 오브젝트 게이트웨이.

7.1.1. 배치 그룹 오류 메시지

공통 배치 그룹 오류 메시지 및 잠재적인 수정으로 구성된 테이블입니다.

Expand
오류 메시지참조

HEALTH_ERR

PGS 다운

배치 그룹이 다운

PGS inconsistent

일관되지 않은 배치 그룹

스크럽 오류

일관되지 않은 배치 그룹

HEALTH_WARN

PGS 오래된

오래된 배치 그룹

unfound

unfound 오브젝트

7.1.2. 오래된 배치 그룹

ceph 상태 명령은 일부 PG(배치 그룹)를 오래된 상태로 나열합니다.

HEALTH_WARN 24 pgs stale; 3/300 in osds are down
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

모니터는 배치 그룹의 작동 세트의 기본 OSD에서 상태 업데이트를 받지 못하거나 기본 OSD가 다운 된 것으로 보고되는 경우 배치 그룹을 오래된 것으로 표시합니다.

일반적으로 스토리지 클러스터를 시작한 후 피어링 프로세스가 완료될 때까지 PG가 오래된 상태로 들어갑니다. 그러나 PG가 예상보다 오래 유지되는 경우 해당 PG의 기본 OSD가 다운 되었거나 PG 통계를 모니터에 보고하지 않음을 나타낼 수 있습니다. 오래된 PG를 저장하는 기본 OSD가 백업 되면 Ceph가 PG를 복구하기 시작합니다.

mon_osd_report_timeout 설정은 OSD가 모니터에 PGs 통계를 보고하는 빈도를 결정합니다. 기본적으로 이 매개변수는 0.5 로 설정되어 있습니다. 즉, OSD는 절반마다 통계를 보고합니다.

문제 해결 방법

  1. 오래된 PG와 해당 OSD가 저장되는 PG를 식별합니다. 오류 메시지에는 다음 예와 유사한 정보가 포함됩니다.

    예제

    [ceph: root@host01 /]# ceph health detail
    HEALTH_WARN 24 pgs stale; 3/300 in osds are down
    ...
    pg 2.5 is stuck stale+active+remapped, last acting [2,0]
    ...
    osd.10 is down since epoch 23, last address 192.168.106.220:6800/11080
    osd.11 is down since epoch 13, last address 192.168.106.220:6803/11539
    osd.12 is down since epoch 24, last address 192.168.106.220:6806/11861
    Copy to Clipboard Toggle word wrap

  2. 아래로 표시된 OSD의 문제를 해결합니다. 자세한 내용은 Down OSDs 를 참조하십시오.

7.1.3. 일관되지 않은 배치 그룹

일부 배치 그룹은 활성 + clean + 불일치 로 표시되고 ceph 상태 세부 정보에는 다음과 유사한 오류 메시지가 반환됩니다.

HEALTH_ERR 1 pgs inconsistent; 2 scrub errors
pg 0.6 is active+clean+inconsistent, acting [0,1,2]
2 scrub errors
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

Ceph가 배치 그룹에 있는 하나 이상의 오브젝트 복제본에서 불일치를 감지하면 배치 그룹을 일관되지 않은 것으로 표시합니다. 가장 일반적인 불일치는 다음과 같습니다.

  • 오브젝트에는 잘못된 크기가 있습니다.
  • 복구가 완료된 후 하나의 복제본에서 개체가 누락됩니다.

대부분의 경우, 스크럽하는 동안 오류는 배치 그룹 내에서 불일치를 발생시킵니다.

문제 해결 방법

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 일관되지 않은 상태에 있는 배치 그룹을 확인합니다.

    [ceph: root@host01 /]# ceph health detail
    HEALTH_ERR 1 pgs inconsistent; 2 scrub errors
    pg 0.6 is active+clean+inconsistent, acting [0,1,2]
    2 scrub errors
    Copy to Clipboard Toggle word wrap
  3. 배치 그룹이 일관성이 없는 이유를 확인합니다.

    1. 배치 그룹에서 딥 검사 프로세스를 시작합니다.

      구문

      ceph pg deep-scrub ID
      Copy to Clipboard Toggle word wrap

      일관되지 않은 배치 그룹의 ID 로 ID를 바꿉니다. 예를 들면 다음과 같습니다.

      [ceph: root@host01 /]# ceph pg deep-scrub 0.6
      instructing pg 0.6 on osd.0 to deep-scrub
      Copy to Clipboard Toggle word wrap
    2. ceph -w 의 출력에서 해당 배치 그룹과 관련된 메시지를 검색합니다.

      구문

      ceph -w | grep ID
      Copy to Clipboard Toggle word wrap

      일관되지 않은 배치 그룹의 ID 로 ID를 바꿉니다. 예를 들면 다음과 같습니다.

      [ceph: root@host01 /]# ceph -w | grep 0.6
      2022-05-26 01:35:36.778215 osd.106 [ERR] 0.6 deep-scrub stat mismatch, got 636/635 objects, 0/0 clones, 0/0 dirty, 0/0 omap, 0/0 hit_set_archive, 0/0 whiteouts, 1855455/1854371 bytes.
      2022-05-26 01:35:36.788334 osd.106 [ERR] 0.6 deep-scrub 1 errors
      Copy to Clipboard Toggle word wrap
  4. 출력에 다음과 유사한 오류 메시지가 포함된 경우 일관성 없는 배치 그룹을 복구할 수 있습니다. 자세한 내용은 일관성 없는 배치 그룹을 참조하십시오.

    구문

    PG.ID shard OSD: soid OBJECT missing attr , missing attr _ATTRIBUTE_TYPE
    PG.ID shard OSD: soid OBJECT digest 0 != known digest DIGEST, size 0 != known size SIZE
    PG.ID shard OSD: soid OBJECT size 0 != known size SIZE
    PG.ID deep-scrub stat mismatch, got MISMATCH
    PG.ID shard OSD: soid OBJECT candidate had a read error, digest 0 != known digest DIGEST
    Copy to Clipboard Toggle word wrap

  5. 출력에 다음 메시지와 유사한 오류 메시지가 포함된 경우 데이터를 손실할 수 있으므로 일관되지 않은 배치 그룹을 복구하는 것이 안전하지 않습니다. 이 경우 지원 티켓을 엽니 다. 자세한 내용은 Red Hat 지원 문의를 참조하십시오.

    PG.ID shard OSD: soid OBJECT digest DIGEST != known digest DIGEST
    PG.ID shard OSD: soid OBJECT omap_digest DIGEST != known omap_digest DIGEST
    Copy to Clipboard Toggle word wrap

7.1.4. 불명확한 배치 그룹

ceph health 명령은 다음과 유사한 오류 메시지를 반환합니다.

HEALTH_WARN 197 pgs stuck unclean
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

Ceph 구성 파일의 mon_pg_stuck_threshold 매개변수에 지정된 초 동안 active+clean 상태를 달성하지 않은 경우 배치 그룹을 불명확 하게 표시합니다. mon_pg_stuck_threshold 의 기본값은 300 초입니다.

배치 그룹이 불명확한 경우 osd_pool_default_size 매개변수에 지정된 횟수를 복제하지 않는 오브젝트가 포함됩니다. osd_pool_default_size 의 기본값은 3 이며, 이는 Ceph에서 세 개의 복제본을 생성합니다.

일반적으로 불명확한 배치 그룹은 일부 OSD가 다운 될 수 있음을 나타냅니다.

문제 해결 방법

  1. 어떤 OSD가 다운 되었는지 확인합니다.

    [ceph: root@host01 /]# ceph osd tree
    Copy to Clipboard Toggle word wrap
  2. OSD의 문제를 해결하고 해결합니다. 자세한 내용은 Down OSD 를 참조하십시오.

7.1.5. 비활성 배치 그룹

ceph health 명령은 다음과 유사한 오류 메시지를 반환합니다.

HEALTH_WARN 197 pgs stuck inactive
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

Ceph 구성 파일의 mon_pg_stuck_threshold 매개변수에 지정된 초 동안 활성화되지 않은 경우 배치 그룹을 비활성 으로 표시합니다. mon_pg_stuck_threshold 의 기본값은 300 초입니다.

일반적으로 비활성 배치 그룹은 일부 OSD가 다운 될 수 있음을 나타냅니다.

문제 해결 방법

  1. 어떤 OSD가 다운 되었는지 확인합니다.

    # ceph osd tree
    Copy to Clipboard Toggle word wrap
  2. OSD의 문제를 해결하고 해결합니다.

추가 리소스

7.1.6. 배치 그룹이 다운됨

ceph 상태 세부 정보 명령은 일부 배치 그룹이 다운 되었음을 보고합니다.

HEALTH_ERR 7 pgs degraded; 12 pgs down; 12 pgs peering; 1 pgs recovering; 6 pgs stuck unclean; 114/3300 degraded (3.455%); 1/3 in osds are down
...
pg 0.5 is down+peering
pg 1.4 is down+peering
...
osd.1 is down since epoch 69, last address 192.168.106.220:6801/8651
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

특정 경우에는 피어링 프로세스를 차단하여 배치 그룹이 활성 상태가 되지 않도록 할 수 있습니다. 일반적으로 OSD 실패로 인해 피어링이 실패합니다.

문제 해결 방법

피어링 프로세스를 차단하는 작업을 결정합니다.

구문

ceph pg ID query
Copy to Clipboard Toggle word wrap

ID아래 배치 그룹의 ID로 바꿉니다.

예제

[ceph: root@host01 /]#  ceph pg 0.5 query

{ "state": "down+peering",
  ...
  "recovery_state": [
       { "name": "Started\/Primary\/Peering\/GetInfo",
         "enter_time": "2021-08-06 14:40:16.169679",
         "requested_info_from": []},
       { "name": "Started\/Primary\/Peering",
         "enter_time": "2021-08-06 14:40:16.169659",
         "probing_osds": [
               0,
               1],
         "blocked": "peering is blocked due to down osds",
         "down_osds_we_would_probe": [
               1],
         "peering_blocked_by": [
               { "osd": 1,
                 "current_lost_at": 0,
                 "comment": "starting or marking this osd lost may let us proceed"}]},
       { "name": "Started",
         "enter_time": "2021-08-06 14:40:16.169513"}
   ]
}
Copy to Clipboard Toggle word wrap

recovery_state 섹션에는 피어링 프로세스가 차단되는 이유에 대한 정보가 포함되어 있습니다.

7.1.7. unfound 오브젝트

ceph health 명령은 unfound 키워드를 포함하는 다음 것과 유사한 오류 메시지를 반환합니다.

HEALTH_WARN 1 pgs degraded; 78/3778 unfound (2.065%)
Copy to Clipboard Toggle word wrap

이 의미는 무엇입니까?

Ceph는 이러한 오브젝트 또는 최신 복사본이 존재하는지 알 때 개체를 unfound 로 표시하지만 찾을 수 없습니다. 따라서 Ceph는 이러한 오브젝트를 복구할 수 없으며 복구 프로세스를 진행할 수 없습니다.

예시 설명

배치 그룹은 osd.1osd.2 에 데이터를 저장합니다.

  1. OSD.1다운 됩니다.
  2. OSD.2 에서는 일부 쓰기 작업을 처리합니다.
  3. OSD.1 이 시작됩니다.
  4. osd.1osd.2 간의 피어링 프로세스가 시작되고 osd.1 에서 누락된 오브젝트는 복구를 위해 큐에 추가됩니다.
  5. Ceph가 새 오브젝트를 복사하기 전에 osd.2다운 됩니다.

결과적으로 osd.1 은 이러한 오브젝트가 있음을 알고 있지만 오브젝트 복사본이 있는 OSD는 없습니다.

이 시나리오에서는 Ceph가 실패한 노드에 다시 액세스할 때까지 대기 중이며, unfound 오브젝트는 복구 프로세스를 차단합니다.

문제 해결 방법

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. unfound 오브젝트가 포함된 배치 그룹을 확인합니다.

    [ceph: root@host01 /]# ceph health detail
    HEALTH_WARN 1 pgs recovering; 1 pgs stuck unclean; recovery 5/937611 objects degraded (0.001%); 1/312537 unfound (0.000%)
    pg 3.8a5 is stuck unclean for 803946.712780, current state active+recovering, last acting [320,248,0]
    pg 3.8a5 is active+recovering, acting [320,248,0], 1 unfound
    recovery 5/937611 objects degraded (0.001%); **1/312537 unfound (0.000%)**
    Copy to Clipboard Toggle word wrap
  3. 배치 그룹에 대한 자세한 정보를 나열합니다.

    구문

    ceph pg ID query
    Copy to Clipboard Toggle word wrap

    unfound 오브젝트가 포함된 배치 그룹의 ID 로 ID를 바꿉니다.

    예제

    [ceph: root@host01 /]# ceph pg 3.8a5 query
    { "state": "active+recovering",
      "epoch": 10741,
      "up": [
            320,
            248,
            0],
      "acting": [
            320,
            248,
            0],
    <snip>
      "recovery_state": [
            { "name": "Started\/Primary\/Active",
              "enter_time": "2021-08-28 19:30:12.058136",
              "might_have_unfound": [
                    { "osd": "0",
                      "status": "already probed"},
                    { "osd": "248",
                      "status": "already probed"},
                    { "osd": "301",
                      "status": "already probed"},
                    { "osd": "362",
                      "status": "already probed"},
                    { "osd": "395",
                      "status": "already probed"},
                    { "osd": "429",
                      "status": "osd is down"}],
              "recovery_progress": { "backfill_targets": [],
                  "waiting_on_backfill": [],
                  "last_backfill_started": "0\/\/0\/\/-1",
                  "backfill_info": { "begin": "0\/\/0\/\/-1",
                      "end": "0\/\/0\/\/-1",
                      "objects": []},
                  "peer_backfill_info": [],
                  "backfills_in_flight": [],
                  "recovering": [],
                  "pg_backend": { "pull_from_peer": [],
                      "pushing": []}},
              "scrub": { "scrubber.epoch_start": "0",
                  "scrubber.active": 0,
                  "scrubber.block_writes": 0,
                  "scrubber.finalizing": 0,
                  "scrubber.waiting_on": 0,
                  "scrubber.waiting_on_whom": []}},
            { "name": "Started",
              "enter_time": "2021-08-28 19:30:11.044020"}],
    Copy to Clipboard Toggle word wrap

    might_have_unfound 섹션에는 Ceph가 unfound 오브젝트를 찾으려고 하는 OSD가 포함되어 있습니다.

    • 이미 프로브된 상태는 Ceph가 해당 OSD에서 unfound 오브젝트를 찾을 수 없음을 나타냅니다.
    • osd is down 상태는 Ceph가 해당 OSD에 연결할 수 없음을 나타냅니다.
  4. 아래로 표시된 OSD의 문제를 해결합니다. 자세한 내용은 Down OSD 를 참조하십시오.
  5. OSD를 중단하는 문제를 해결할 수 없는 경우 지원 티켓을 엽니다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.

실패 후 배치 그룹이 degraded 또는 peering 과 같은 상태를 입력합니다. 이 상태는 실패 복구 프로세스를 통해 정상적인 상태를 나타냅니다.

그러나 배치 그룹이 예상보다 더 오래 이러한 상태 중 하나에 남아 있으면 더 큰 문제를 나타낼 수 있습니다. 모니터는 배치 그룹이 최적이 아닌 상태로 유지될 때 보고됩니다.

Ceph 구성 파일의 mon_pg_stuck_threshold 옵션은 배치 그룹이 비활성 상태, 불명확 또는 오래된 것으로 간주되는 시간(초)을 결정합니다.

다음 표에는 이러한 상태와 짧은 설명이 나열되어 있습니다.

Expand
상태이는 무엇을 의미합니까?가장 일반적인 원인참조

inactive

PG는 읽기/쓰기 요청을 처리할 수 없습니다.

  • 피어링 문제

비활성 배치 그룹

불명확

PG에는 원하는 횟수를 복제하지 않는 오브젝트가 포함되어 있습니다. PG가 복구되지 않는 것이 있습니다.

  • unfound 오브젝트
  • OSD가 다운
  • 잘못된 구성

불명확한 배치 그룹

stale

PG의 상태는 ceph-osd 데몬에서 업데이트되지 않았습니다.

  • OSD가 다운

오래된 배치 그룹

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준 액세스.

절차

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 정지된 PG를 나열합니다.

    예제

    [ceph: root@host01 /]# ceph pg dump_stuck inactive
    [ceph: root@host01 /]# ceph pg dump_stuck unclean
    [ceph: root@host01 /]# ceph pg dump_stuck stale
    Copy to Clipboard Toggle word wrap

7.3. 배치 그룹 불일치 나열

rados 유틸리티를 사용하여 오브젝트의 다양한 복제본에서 불일치를 나열합니다. 더 자세한 출력을 나열하려면 --format=json-pretty 옵션을 사용합니다.

이 섹션에서는 다음 사항에 대해 설명합니다.

  • 풀의 일관되지 않은 배치 그룹
  • 배치 그룹의 일관되지 않은 오브젝트
  • 배치 그룹에서 일관되지 않은 스냅샷 세트

사전 요구 사항

  • 정상 상태의 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준 액세스.

절차

  • 풀의 일치하지 않는 배치 그룹을 모두 나열합니다.

    구문

    rados list-inconsistent-pg POOL --format=json-pretty
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# rados list-inconsistent-pg data --format=json-pretty
    [0.6]
    Copy to Clipboard Toggle word wrap

  • ID가 있는 배치 그룹의 일관되지 않은 오브젝트를 나열합니다.

    구문

    rados list-inconsistent-obj PLACEMENT_GROUP_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# rados list-inconsistent-obj 0.6
    {
        "epoch": 14,
        "inconsistents": [
            {
                "object": {
                    "name": "image1",
                    "nspace": "",
                    "locator": "",
                    "snap": "head",
                    "version": 1
                },
                "errors": [
                    "data_digest_mismatch",
                    "size_mismatch"
                ],
                "union_shard_errors": [
                    "data_digest_mismatch_oi",
                    "size_mismatch_oi"
                ],
                "selected_object_info": "0:602f83fe:::foo:head(16'1 client.4110.0:1 dirty|data_digest|omap_digest s 968 uv 1 dd e978e67f od ffffffff alloc_hint [0 0 0])",
                "shards": [
                    {
                        "osd": 0,
                        "errors": [],
                        "size": 968,
                        "omap_digest": "0xffffffff",
                        "data_digest": "0xe978e67f"
                    },
                    {
                        "osd": 1,
                        "errors": [],
                        "size": 968,
                        "omap_digest": "0xffffffff",
                        "data_digest": "0xe978e67f"
                    },
                    {
                        "osd": 2,
                        "errors": [
                            "data_digest_mismatch_oi",
                            "size_mismatch_oi"
                        ],
                        "size": 0,
                        "omap_digest": "0xffffffff",
                        "data_digest": "0xffffffff"
                    }
                ]
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

    다음 필드는 불일치의 원인을 파악하는 데 중요합니다.

    • name: 일치하지 않는 복제본이 있는 오브젝트의 이름입니다.
    • nSpace: 풀의 논리적 분리인 네임스페이스입니다. 기본적으로 비어 있습니다.
    • locator: 배치를 위해 오브젝트 이름의 대안으로 사용되는 키입니다.
    • snap: 오브젝트의 스냅샷 ID입니다. 오브젝트의 유일한 쓰기 가능 버전은 head 라고 합니다. 오브젝트가 복제인 경우 이 필드에는 순차 ID가 포함됩니다.
    • 버전: 일치하지 않는 복제본이 있는 오브젝트의 버전 ID입니다. 개체에 대한 각 쓰기 작업은 오브젝트를 늘립니다.
    • errors: 잘못된 shard 또는 shard를 확인하지 않고 shard 간에 불일치를 나타내는 오류 목록입니다. 오류를 더 자세히 조사하려면 shard 배열을 참조하십시오.

      • data_digest_mismatch: 하나의 OSD에서 읽은 복제본의 다이제스트는 다른 OSD와 다릅니다.
      • size_mismatch: 복제 또는 head 오브젝트의 크기가 예상과 일치하지 않습니다.
      • read_error:이 오류는 디스크 오류로 인해 발생하는 불일치를 나타냅니다.
    • union_shard_error: shard와 관련된 모든 오류의 결합 이러한 오류는 결함이 있는 shard에 연결됩니다. oi 로 끝나는 오류는 결함이 있는 개체의 정보와 선택된 오브젝트의 정보를 비교해야 함을 나타냅니다. 오류를 더 자세히 조사하려면 shard 배열을 참조하십시오.

      위 예에서 osd.2 에 저장된 오브젝트 복제본은 osd.0osd.1 에 저장된 복제본과 다른 다이제스트를 갖습니다. 특히, 복제본의 다이제스트는 osd.2 에서 읽은 shard에서 계산된 대로 0x ffffff가 아니지만 0xe978e67f 입니다. 또한 osd.2 에서 읽은 복제본의 크기는 0이며, osd.0osd.1 에서 보고한 크기는 968입니다.

  • 스냅샷의 일관되지 않은 세트를 나열합니다.

    구문

    rados list-inconsistent-snapset PLACEMENT_GROUP_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# rados list-inconsistent-snapset 0.23 --format=json-pretty
    {
        "epoch": 64,
        "inconsistents": [
            {
                "name": "obj5",
                "nspace": "",
                "locator": "",
                "snap": "0x00000001",
                "headless": true
            },
            {
                "name": "obj5",
                "nspace": "",
                "locator": "",
                "snap": "0x00000002",
                "headless": true
            },
            {
                "name": "obj5",
                "nspace": "",
                "locator": "",
                "snap": "head",
                "ss_attr_missing": true,
                "extra_clones": true,
                "extra clones": [
                    2,
                    1
                ]
            }
        ]
    Copy to Clipboard Toggle word wrap

    이 명령은 다음 오류를 반환합니다.

    • ss_attr_missing: 하나 이상의 속성이 누락되었습니다. 특성은 스냅샷으로 인코딩된 스냅샷에 대한 정보를 키-값 쌍 목록으로 설정합니다.
    • ss_attr_corrupted: 하나 이상의 속성이 디코딩되지 않습니다.
    • clone_missing: 클론이 없습니다.
    • snapset_mismatch: 스냅샷 세트가 그 자체로 일치하지 않습니다.
    • head_mismatch: 스냅샷 세트는 헤드 가 존재하는지 여부를 나타내지만 스크루브 결과는 그렇지 않은 것으로 보고합니다.
    • Headless: 스냅샷 세트의 헤드 가 없습니다.
    • size_mismatch: 복제 또는 head 오브젝트의 크기가 예상과 일치하지 않습니다.

7.4. 일관성 없는 배치 그룹 복구

스크래핑 중 오류 때문에 일부 배치 그룹에는 불일치가 포함될 수 있습니다. 일관성 없는 것과 같은 배치 그룹과 같은 Ceph 보고서:

HEALTH_ERR 1 pgs inconsistent; 2 scrub errors
pg 0.6 is active+clean+inconsistent, acting [0,1,2]
2 scrub errors
Copy to Clipboard Toggle word wrap
주의

특정 불일치만 복구할 수 있습니다.

Ceph 로그에 다음 오류가 포함된 경우 배치 그룹을 복구하지 마십시오.

_PG_._ID_ shard _OSD_: soid _OBJECT_ digest _DIGEST_ != known digest _DIGEST_
_PG_._ID_ shard _OSD_: soid _OBJECT_ omap_digest _DIGEST_ != known omap_digest _DIGEST_
Copy to Clipboard Toggle word wrap

대신 지원 티켓을 엽니 다. 자세한 내용은 Red Hat 지원 팀에 문의하십시오.

사전 요구 사항

  • Ceph Monitor 노드에 대한 루트 수준 액세스.

절차

  • 일관성 없는 배치 그룹을 복구합니다.

    구문

    ceph pg repair ID
    Copy to Clipboard Toggle word wrap

    일관되지 않은 배치 그룹의 ID 로 ID를 바꿉니다.

7.5. 배치 그룹 늘리기

PG(배치 그룹) 수가 부족하면 Ceph 클러스터 및 데이터 배포 성능에 영향을 미칩니다. 이는 nearfull osds 오류 메시지의 주요 원인 중 하나입니다.

권장 비율은 OSD당 100~300 PG 사이입니다. 이러한 비율은 클러스터에 OSD를 더 추가할 때 감소할 수 있습니다.

pg_numpgp_num 매개변수는 PG 수를 결정합니다. 이러한 매개변수는 각 풀별로 구성되므로 PG 수가 낮은 각 풀을 별도로 조정해야 합니다.

중요

PG 수를 늘리는 것은 Ceph 클러스터에서 수행할 수 있는 가장 집약적인 프로세스입니다. 이 프로세스는 느리고 체계적인 방식으로 완료되지 않으면 심각한 성능에 영향을 미칠 수 있습니다. pgp_num 을 늘리면 프로세스를 중지하거나 취소할 수 없으며 완료해야 합니다. PG 수를 비즈니스 크리티컬 처리 시간 할당 외부에서 늘리는 것을 고려하고 모든 고객에게 잠재적 성능에 미치는 영향을 경고하는 것이 좋습니다. 클러스터가 HEALTH_ERR 상태에 있는 경우 PG 수를 변경하지 마십시오.

사전 요구 사항

  • 정상 상태의 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준 액세스.

절차

  1. 개별 OSD 및 OSD 호스트에서 데이터 재배포 및 복구의 영향을 줄입니다.

    1. osd max backfills,osd_recovery_max_active, osd_recovery_op_priority 매개변수 값을 낮추십시오.

      [ceph: root@host01 /]# ceph tell osd.* injectargs '--osd_max_backfills 1 --osd_recovery_max_active 1 --osd_recovery_op_priority 1'
      Copy to Clipboard Toggle word wrap
    2. shallow 및 deep scrubbing을 비활성화합니다.

      [ceph: root@host01 /]# ceph osd set noscrub
      [ceph: root@host01 /]# ceph osd set nodeep-scrub
      Copy to Clipboard Toggle word wrap
  2. 풀 계산기당 Ceph PG(배치 그룹) 를 사용하여 pg_numpgp_num 매개변수의 최적 값을 계산합니다.
  3. 원하는 값에 도달할 때까지 pg_num 값을 작은 단위로 늘립니다.

    1. 시작 증분 값을 결정합니다. 2의 힘인 매우 낮은 값을 사용하고 클러스터에 미치는 영향을 결정할 때 늘립니다. 최적 값은 풀 크기, OSD 수 및 클라이언트 I/O 로드에 따라 달라집니다.
    2. pg_num 값을 늘립니다.

      구문

      ceph osd pool set POOL pg_num VALUE
      Copy to Clipboard Toggle word wrap

      풀 이름과 새 값을 지정합니다. 예를 들면 다음과 같습니다.

      예제

      [ceph: root@host01 /]# ceph osd pool set data pg_num 4
      Copy to Clipboard Toggle word wrap

    3. 클러스터 상태를 모니터링합니다.

      예제

      [ceph: root@host01 /]# ceph -s
      Copy to Clipboard Toggle word wrap

      PG 상태는 creating 에서 active+clean 으로 변경됩니다. 모든 PG가 active+clean 상태가 될 때까지 기다립니다.

  4. 원하는 값에 도달할 때까지 pgp_num 값을 작은 단위로 늘립니다.

    1. 시작 증분 값을 결정합니다. 2의 힘인 매우 낮은 값을 사용하고 클러스터에 미치는 영향을 결정할 때 늘립니다. 최적 값은 풀 크기, OSD 수 및 클라이언트 I/O 로드에 따라 달라집니다.
    2. pgp_num 값을 늘립니다.

      구문

      ceph osd pool set POOL pgp_num VALUE
      Copy to Clipboard Toggle word wrap

      풀 이름과 새 값을 지정합니다. 예를 들면 다음과 같습니다.

      [ceph: root@host01 /]# ceph osd pool set data pgp_num 4
      Copy to Clipboard Toggle word wrap
    3. 클러스터 상태를 모니터링합니다.

      [ceph: root@host01 /]# ceph -s
      Copy to Clipboard Toggle word wrap

      PG 상태는 피어링,wait_backfill, 백필링, 복구 및 기타를 통해 변경됩니다. 모든 PG가 active+clean 상태가 될 때까지 기다립니다.

  5. PG 수가 충분하지 않은 모든 풀에 대해 이전 단계를 반복합니다.
  6. osd max backfills,osd_recovery_max_active, osd_recovery_op_priority 를 기본값으로 설정합니다.

    [ceph: root@host01 /]# ceph tell osd.* injectargs '--osd_max_backfills 1 --osd_recovery_max_active 3 --osd_recovery_op_priority 3'
    Copy to Clipboard Toggle word wrap
  7. shallow 및 deep scrubbing을 활성화합니다.

    [ceph: root@host01 /]# ceph osd unset noscrub
    [ceph: root@host01 /]# ceph osd unset nodeep-scrub
    Copy to Clipboard Toggle word wrap

8장. Ceph 오브젝트 문제 해결

스토리지 관리자는 ceph-objectstore-tool 유틸리티를 사용하여 수준 또는 하위 수준 오브젝트 작업을 수행할 수 있습니다. ceph-objectstore-tool 유틸리티를 사용하면 특정 OSD 또는 배치 그룹 내의 오브젝트 관련 문제를 해결할 수 있습니다.

중요

개체를 조작하면 복구할 수 없는 데이터 손실이 발생할 수 있습니다. ceph-objectstore-tool 유틸리티를 사용하기 전에 Red Hat 지원에 문의하십시오.

사전 요구 사항

  • 네트워크 관련 문제가 없는지 확인합니다.

8.1. 상위 수준 오브젝트 작업 문제 해결

스토리지 관리자는 ceph-objectstore-tool 유틸리티를 사용하여 고급 오브젝트 작업을 수행할 수 있습니다. ceph-objectstore-tool 유틸리티는 다음과 같은 상위 수준 오브젝트 작업을 지원합니다.

  • 오브젝트 나열
  • 손실된 오브젝트 나열
  • 손실된 오브젝트 수정
중요

개체를 조작하면 복구할 수 없는 데이터 손실이 발생할 수 있습니다. ceph-objectstore-tool 유틸리티를 사용하기 전에 Red Hat 지원에 문의하십시오.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.

8.1.1. 오브젝트 나열

OSD에는 많은 배치 그룹이 포함될 수 있으며 배치 그룹(PG) 내에 있는 많은 오브젝트에 0이 포함될 수 있습니다. ceph-objectstore-tool 유틸리티를 사용하면 OSD 내에 저장된 오브젝트를 나열할 수 있습니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  2. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  3. 배치 그룹에 관계없이 OSD 내의 모든 오브젝트를 식별합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --op list
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list
    Copy to Clipboard Toggle word wrap

  4. 배치 그룹 내의 모든 오브젝트를 식별합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list
    Copy to Clipboard Toggle word wrap

  5. 오브젝트가 속하는 PG를 식별합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --op list OBJECT_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list default.region
    Copy to Clipboard Toggle word wrap

8.1.2. 손실된 오브젝트 수정

ceph-objectstore-tool 유틸리티를 사용하여 Ceph OSD에 저장된 손실된 오브젝트와 unfound objects를 나열하고 수정할 수 있습니다. 이 절차는 기존 오브젝트에만 적용됩니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  2. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  3. 손실된 레거시 오브젝트를 모두 나열하려면 다음을 수행합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost --dry-run
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost --dry-run
    Copy to Clipboard Toggle word wrap

  4. ceph-objectstore-tool 유틸리티를 사용하여 손실되거나 검색되지 않은 오브젝트를 수정합니다. 적절한 기능을 선택합니다.

    1. 손실된 모든 개체를 수정하려면 다음을 수행합니다.

      구문

      ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost
      Copy to Clipboard Toggle word wrap

    2. 배치 그룹 내에서 손실된 모든 개체를 수정하려면 다음을 수행합니다.

      구문

      ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op fix-lost
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op fix-lost
      Copy to Clipboard Toggle word wrap

    3. 식별자로 손실된 개체를 수정하려면 다음을 수행합니다.

      구문

      ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost OBJECT_ID
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost default.region
      Copy to Clipboard Toggle word wrap

8.2. 하위 수준 오브젝트 작업 문제 해결

스토리지 관리자는 ceph-objectstore-tool 유틸리티를 사용하여 하위 수준 오브젝트 작업을 수행할 수 있습니다. ceph-objectstore-tool 유틸리티는 다음과 같은 하위 수준 오브젝트 작업을 지원합니다.

  • 오브젝트의 콘텐츠 조작
  • 오브젝트 제거
  • 오브젝트 맵(OMAP) 나열
  • OMAP 헤더 조작
  • OMAP 키 조작
  • 오브젝트의 속성 나열
  • 오브젝트의 특성 키를 조작
중요

개체를 조작하면 복구할 수 없는 데이터 손실이 발생할 수 있습니다. ceph-objectstore-tool 유틸리티를 사용하기 전에 Red Hat 지원에 문의하십시오.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.

8.2.1. 오브젝트의 콘텐츠 조작

ceph-objectstore-tool 유틸리티를 사용하면 오브젝트에서 바이트를 가져오거나 설정할 수 있습니다.

중요

개체에서 바이트를 설정하면 복구할 수 없는 데이터 손실이 발생할 수 있습니다. 데이터 손실을 방지하려면 개체의 백업 복사본을 만듭니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  2. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  3. OSD 또는 배치 그룹(PG)의 오브젝트를 나열하여 오브젝트를 찾습니다.
  4. 오브젝트에서 바이트를 설정하기 전에 백업과 오브젝트의 작업 사본을 만듭니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \
    OBJECT \
    get-bytes > OBJECT_FILE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \
    '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  \
    get-bytes > zone_info.default.backup
    
    [ceph: root@host01 /]#  ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \
    '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  \
    get-bytes > zone_info.default.working-copy
    Copy to Clipboard Toggle word wrap

  5. 작업 복사 오브젝트 파일을 편집하고 그에 따라 오브젝트 콘텐츠를 수정합니다.
  6. 오브젝트의 바이트를 설정합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \
    OBJECT \
    set-bytes < OBJECT_FILE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \
    '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \
    set-bytes < zone_info.default.working-copy
    Copy to Clipboard Toggle word wrap

8.2.2. 오브젝트 제거

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트를 제거합니다. 오브젝트를 제거하면 해당 콘텐츠와 참조가 배치 그룹(PG)에서 제거됩니다.

중요

제거되면 오브젝트를 다시 생성할 수 없습니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  2. 오브젝트를 제거합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \
    OBJECT \
    remove
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \
    '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \
    remove
    Copy to Clipboard Toggle word wrap

8.2.3. 오브젝트 맵 나열

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트 맵(OMAP)의 콘텐츠를 나열합니다. 출력에서 키 목록을 제공합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-osd@OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  2. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  3. 오브젝트 맵을 나열합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \
    OBJECT \
    list-omap
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \
    '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \
    list-omap
    Copy to Clipboard Toggle word wrap

8.2.4. 오브젝트 맵 헤더 조작

ceph-objectstore-tool 유틸리티는 오브젝트의 키와 연결된 값을 사용하여 OMAP(오브젝트 맵) 헤더를 출력합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  2. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  3. 오브젝트 맵 헤더를 가져옵니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD \
    --pgid PG_ID OBJECT \
    get-omaphdr > OBJECT_MAP_FILE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
    --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  \
    get-omaphdr > zone_info.default.omaphdr.txt
    Copy to Clipboard Toggle word wrap

  4. 오브젝트 맵 헤더를 설정합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD \
    --pgid PG_ID OBJECT \
    get-omaphdr < OBJECT_MAP_FILE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
    --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  \
    set-omaphdr < zone_info.default.omaphdr.txt
    Copy to Clipboard Toggle word wrap

8.2.5. 오브젝트 맵 키 조작

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트 맵(OMAP) 키를 변경합니다. OMAP에 데이터 경로, 배치 그룹 식별자(PG ID), 오브젝트 및 키를 제공해야 합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  2. 오브젝트 맵 키를 가져옵니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD \
    --pgid PG_ID OBJECT \
    get-omap KEY > OBJECT_MAP_FILE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
    --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  \
    get-omap "" > zone_info.default.omap.txt
    Copy to Clipboard Toggle word wrap

    • 오브젝트 맵 키를 설정합니다.

      구문

      ceph-objectstore-tool --data-path PATH_TO_OSD \
      --pgid PG_ID OBJECT \
      set-omap KEY < OBJECT_MAP_FILE_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
      --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  \
      set-omap "" < zone_info.default.omap.txt
      Copy to Clipboard Toggle word wrap

    • 오브젝트 맵 키를 제거합니다.

      구문

      ceph-objectstore-tool --data-path PATH_TO_OSD \
      --pgid PG_ID OBJECT \
      rm-omap KEY
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
      --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  \
      rm-omap ""
      Copy to Clipboard Toggle word wrap

8.2.6. 오브젝트의 속성 나열

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트의 속성을 나열합니다. 출력에서는 오브젝트의 키와 값을 제공합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  2. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  3. 오브젝트의 속성을 나열합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD \
    --pgid PG_ID OBJECT \
    list-attrs
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
    --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \
    list-attrs
    Copy to Clipboard Toggle word wrap

8.2.7. 개체 특성 키 조작

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트의 속성을 변경합니다. 오브젝트의 특성을 조작하려면 데이터 경로, PG ID(배치 그룹 식별자), 오브젝트 및 오브젝트 속성의 키가 필요합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬을 중지합니다.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-FSID@osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
    Copy to Clipboard Toggle word wrap

  2. OSD 컨테이너에 로그인합니다.

    구문

    cephadm shell --name osd.OSD_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cephadm shell --name osd.0
    Copy to Clipboard Toggle word wrap

  3. 오브젝트의 특성을 가져옵니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD \
    --pgid PG_ID OBJECT \
    get-attr KEY > OBJECT_ATTRS_FILE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
    --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \
    get-attr "oid" > zone_info.default.attr.txt
    Copy to Clipboard Toggle word wrap

  4. 오브젝트의 특성을 설정합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD \
    --pgid PG_ID OBJECT \
    set-attr KEY < OBJECT_ATTRS_FILE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
    --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \
    set-attr "oid" < zone_info.default.attr.txt
    Copy to Clipboard Toggle word wrap

  5. 오브젝트의 특성을 제거합니다.

    구문

    ceph-objectstore-tool --data-path PATH_TO_OSD \
    --pgid PG_ID OBJECT  \
    rm-attr KEY
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \
    --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \
    rm-attr "oid"
    Copy to Clipboard Toggle word wrap

9장. 스트레치 모드에서 클러스터 문제 해결

실패한 타이버 모니터를 교체하고 제거할 수 있습니다. 필요한 경우 클러스터를 복구 또는 정상 모드로 강제 수행할 수도 있습니다.

9.1. 쿼럼의 모니터로 tiebreaker 교체

tiebreaker 모니터가 실패하면 쿼럼의 기존 모니터로 교체하여 클러스터에서 제거할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터
  • 클러스터에서 스트레치 모드 활성화

절차

  1. 자동화된 모니터 배포를 비활성화합니다.

    예제

    [ceph: root@host01 /]# ceph orch apply mon --unmanaged
    
    Scheduled mon update…
    Copy to Clipboard Toggle word wrap

  2. 쿼럼의 모니터를 확인합니다.

    예제

    [ceph: root@host01 /]# ceph -s
    
    mon: 5 daemons, quorum host01, host02, host04, host05 (age 30s), out of quorum: host07
    Copy to Clipboard Toggle word wrap

  3. 쿼럼의 모니터를 새 짝수로 설정합니다.

    구문

    ceph mon set_new_tiebreaker NEW_HOST
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph mon set_new_tiebreaker host02
    Copy to Clipboard Toggle word wrap

    중요

    모니터가 기존 non-tiebreaker 모니터와 동일한 위치에 있는 경우 오류 메시지가 표시됩니다.

    예제

    [ceph: root@host01 /]# ceph mon set_new_tiebreaker host02
    
    Error EINVAL: mon.host02 has location DC1, which matches mons host02 on the datacenter dividing bucket for stretch mode.
    Copy to Clipboard Toggle word wrap

    이 경우 모니터의 위치를 변경합니다.

    구문

    ceph mon set_location HOST datacenter=DATACENTER
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph mon set_location host02 datacenter=DC3
    Copy to Clipboard Toggle word wrap

  4. 실패한 연결 모니터를 제거합니다.

    구문

    ceph orch daemon rm FAILED_TIEBREAKER_MONITOR --force
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch daemon rm mon.host07 --force
    
    Removed mon.host07 from host 'host07'
    Copy to Clipboard Toggle word wrap

  5. 모니터가 호스트에서 제거되면 모니터를 재배포합니다.

    구문

    ceph mon add HOST IP_ADDRESS datacenter=DATACENTER
    ceph orch daemon add mon HOST
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph mon add host07 213.222.226.50 datacenter=DC1
    [ceph: root@host01 /]# ceph orch daemon add mon host07
    Copy to Clipboard Toggle word wrap

  6. 쿼럼에 모니터 5개가 있는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph -s
    
    mon: 5 daemons, quorum host01, host02, host04, host05, host07 (age 15s)
    Copy to Clipboard Toggle word wrap

  7. 모든 항목이 올바르게 구성되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph mon dump
    
    epoch 19
    fsid 1234ab78-1234-11ed-b1b1-de456ef0a89d
    last_changed 2023-01-17T04:12:05.709475+0000
    created 2023-01-16T05:47:25.631684+0000
    min_mon_release 16 (pacific)
    election_strategy: 3
    stretch_mode_enabled 1
    tiebreaker_mon host02
    disallowed_leaders host02
    0: [v2:132.224.169.63:3300/0,v1:132.224.169.63:6789/0] mon.host02; crush_location {datacenter=DC3}
    1: [v2:220.141.179.34:3300/0,v1:220.141.179.34:6789/0] mon.host04; crush_location {datacenter=DC2}
    2: [v2:40.90.220.224:3300/0,v1:40.90.220.224:6789/0] mon.host01; crush_location {datacenter=DC1}
    3: [v2:60.140.141.144:3300/0,v1:60.140.141.144:6789/0] mon.host07; crush_location {datacenter=DC1}
    4: [v2:186.184.61.92:3300/0,v1:186.184.61.92:6789/0] mon.host03; crush_location {datacenter=DC2}
    dumped monmap epoch 19
    Copy to Clipboard Toggle word wrap

  8. 모니터를 재배포합니다.

    구문

    ceph orch apply mon --placement="HOST_1, HOST_2, HOST_3, HOST_4, HOST_5
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch apply mon --placement="host01, host02, host04, host05, host07"
    
    Scheduled mon update...
    Copy to Clipboard Toggle word wrap

9.2. 연결기를 새 모니터로 교체

tiebreaker 모니터가 실패하면 새 모니터로 교체하여 클러스터에서 제거할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터
  • 클러스터에서 활성화된 스트레치 모드

절차

  1. 클러스터에 새 모니터를 추가합니다.

    1. 새 모니터에 crush_location 을 수동으로 추가합니다.

      구문

      ceph mon add NEW_HOST IP_ADDRESS datacenter=DATACENTER
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph mon add host06 213.222.226.50 datacenter=DC3
      
      adding mon.host06 at [v2:213.222.226.50:3300/0,v1:213.222.226.50:6789/0]
      Copy to Clipboard Toggle word wrap

      참고

      새 모니터는 기존의 비티베이터 모니터와 다른 위치에 있어야 합니다.

    2. 자동화된 모니터 배포를 비활성화합니다.

      예제

      [ceph: root@host01 /]# ceph orch apply mon --unmanaged
      
      Scheduled mon update…
      Copy to Clipboard Toggle word wrap

    3. 새 모니터를 배포합니다.

      구문

      ceph orch daemon add mon NEW_HOST
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch daemon add mon host06
      Copy to Clipboard Toggle word wrap

  2. 쿼럼에 6개의 모니터가 있는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph -s
    
    mon: 6 daemons, quorum host01, host02, host04, host05, host06 (age 30s), out of quorum: host07
    Copy to Clipboard Toggle word wrap

  3. 새 모니터를 새 연결 관리자로 설정합니다.

    구문

    ceph mon set_new_tiebreaker NEW_HOST
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph mon set_new_tiebreaker host06
    Copy to Clipboard Toggle word wrap

  4. 실패한 연결 모니터를 제거합니다.

    구문

    ceph orch daemon rm FAILED_TIEBREAKER_MONITOR --force
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch daemon rm mon.host07 --force
    
    Removed mon.host07 from host 'host07'
    Copy to Clipboard Toggle word wrap

  5. 모든 항목이 올바르게 구성되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph mon dump
    
    epoch 19
    fsid 1234ab78-1234-11ed-b1b1-de456ef0a89d
    last_changed 2023-01-17T04:12:05.709475+0000
    created 2023-01-16T05:47:25.631684+0000
    min_mon_release 16 (pacific)
    election_strategy: 3
    stretch_mode_enabled 1
    tiebreaker_mon host06
    disallowed_leaders host06
    0: [v2:213.222.226.50:3300/0,v1:213.222.226.50:6789/0] mon.host06; crush_location {datacenter=DC3}
    1: [v2:220.141.179.34:3300/0,v1:220.141.179.34:6789/0] mon.host04; crush_location {datacenter=DC2}
    2: [v2:40.90.220.224:3300/0,v1:40.90.220.224:6789/0] mon.host01; crush_location {datacenter=DC1}
    3: [v2:60.140.141.144:3300/0,v1:60.140.141.144:6789/0] mon.host02; crush_location {datacenter=DC1}
    4: [v2:186.184.61.92:3300/0,v1:186.184.61.92:6789/0] mon.host05; crush_location {datacenter=DC2}
    dumped monmap epoch 19
    Copy to Clipboard Toggle word wrap

  6. 모니터를 재배포합니다.

    구문

    ceph orch apply mon --placement="HOST_1, HOST_2, HOST_3, HOST_4, HOST_5
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch apply mon --placement="host01, host02, host04, host05, host06"
    
    Scheduled mon update…
    Copy to Clipboard Toggle word wrap

9.3. 클러스터 확장을 복구 또는 정상 모드로 강제 적용

성능 저하 모드에서 연결이 끊긴 데이터 센터가 다시 돌아간 후 클러스터가 복구 모드로 자동 전환됩니다. 이러한 상황이 발생하지 않거나 복구 모드를 조기에 활성화하려면 확장 클러스터를 복구 모드로 강제 적용할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터
  • 클러스터에서 활성화된 스트레치 모드

절차

  1. 확장 클러스터를 복구 모드로 강제 적용합니다.

    예제

    [ceph: root@host01 /]#  ceph osd force_recovery_stretch_mode --yes-i-really-mean-it
    Copy to Clipboard Toggle word wrap

    참고

    복구 상태는 클러스터를 HEALTH_WARN 상태가 됩니다.

  2. 복구 모드에서 배치 그룹이 정상이면 클러스터가 정상으로 돌아가야 합니다. 이러한 상황이 발생하지 않으면 확장 클러스터를 정상 모드로 강제 적용할 수 있습니다.

    예제

    [ceph: root@host01 /]#  ceph osd force_healthy_stretch_mode --yes-i-really-mean-it
    Copy to Clipboard Toggle word wrap

    참고

    또한 데이터 센터 간 피어링을 조기에 강제 적용하고 데이터 다운 타임 위험을 감수하려는 경우 또는 모든 배치 그룹이 완전히 복구되지 않은 경우에도 피어링할 수 있음을 별도로 확인하려는 경우에도 이 명령을 실행할 수 있습니다.

    복구 상태에 의해 생성되는 HEALTH_WARN 상태를 제거하기 위해 정상 모드를 호출하려고 할 수도 있습니다.

    참고

    force_recovery_stretch_modeforce_recovery_healthy_mode 명령은 예기치 않은 상황을 관리하는 프로세스에 포함되어 있으므로 필요하지 않아야 합니다.

10장. 서비스에 대한 Red Hat 지원에 문의

이 가이드의 정보가 문제를 해결하는 데 도움이 되지 않은 경우 이 장에서는 Red Hat 지원 서비스에 문의하는 방법을 설명합니다.

사전 요구 사항

  • Red Hat 지원 계정.

10.1. Red Hat 지원 엔지니어에게 정보 제공

Red Hat Ceph Storage와 관련된 문제를 해결할 수 없는 경우 Red Hat 지원 서비스에 문의하여 지원 엔지니어가 발생하는 문제를 보다 신속하게 해결할 수 있도록 충분한 정보를 제공합니다.

사전 요구 사항

  • 노드에 대한 루트 수준 액세스.
  • Red Hat 지원 계정.

절차

  1. Red Hat 고객 포털에서 지원 티켓을 엽니 다.
  2. 티켓에 sosreport 를 연결하는 것이 좋습니다. 자세한 내용은 sosreport란 무엇이며 Red Hat Enterprise Linux에서 하나의 솔루션을 생성하는 방법을 참조하십시오.
  3. Ceph 데몬이 세그먼트 장애로 실패하는 경우 사람이 읽을 수 있는 코어 덤프 파일을 생성하는 것이 좋습니다. 자세한 내용은 읽기 가능한 코어 덤프 파일 생성 을 참조하십시오.

10.2. 읽을 수 있는 코어 덤프 파일 생성

Ceph 데몬이 세그먼트 장애로 예기치 않게 종료되면 해당 실패에 대한 정보를 수집하여 Red Hat 지원 엔지니어에게 제공합니다.

이러한 정보는 초기 조사 속도를 높입니다. 또한 지원 엔지니어는 코어 덤프 파일의 정보를 Red Hat Ceph Storage 클러스터의 알려진 문제와 비교할 수 있습니다.

사전 요구 사항

  1. 아직 설치되지 않은 경우 debuginfo 패키지를 설치합니다.

    1. 다음 리포지토리를 활성화하여 필요한 debuginfo 패키지를 설치합니다.

      예제

      [root@host01 ~]# subscription-manager repos --enable=rhceph-6-tools-for-rhel-9-x86_64-rpms
      [root@host01 ~]# yum --enable=rhceph-6-tools-for-rhel-9-x86_64-debug-rpms
      Copy to Clipboard Toggle word wrap

      리포지토리가 활성화되면 지원되는 패키지 목록에서 필요한 디버그 정보 패키지를 설치할 수 있습니다.

      ceph-base-debuginfo
      ceph-common-debuginfo
      ceph-debugsource
      ceph-fuse-debuginfo
      ceph-immutable-object-cache-debuginfo
      ceph-mds-debuginfo
      ceph-mgr-debuginfo
      ceph-mon-debuginfo
      ceph-osd-debuginfo
      ceph-radosgw-debuginfo
      cephfs-mirror-debuginfo
      Copy to Clipboard Toggle word wrap
  2. gdb 패키지가 설치되어 있는지 확인하고 없는 경우 설치합니다.

    예제

    [root@host01 ~]# dnf install gdb
    Copy to Clipboard Toggle word wrap

10.2.1. 컨테이너화된 배포에서 읽을 수 있는 코어 덤프 파일 생성

코어 덤프 파일을 캡처하는 두 가지 시나리오를 포함하는 Red Hat Ceph Storage 6의 코어 덤프 파일을 생성할 수 있습니다.

  • SIGILL, SIGTRAP, SIGABRT 또는 SIGSEGV 오류로 인해 Ceph 프로세스가 예기치 않게 종료되면.

또는

  • 예를 들어 Ceph 프로세스와 같은 문제를 디버깅하는 경우 수동으로 CPU 사이클을 사용하거나 응답하지 않습니다.

사전 요구 사항

  • Ceph 컨테이너를 실행하는 컨테이너 노드에 대한 루트 수준 액세스.
  • 적절한 디버깅 패키지 설치
  • GNU Project Debugger(gdb) 패키지 설치
  • 호스트에 8GB 이상의 RAM이 있는지 확인합니다. 호스트에 데몬이 여러 개 있는 경우 Red Hat은 더 많은 RAM을 권장합니다.

절차

  1. SIGILL, SIGTRAP, SIGABRT 또는 SIGSEGV 오류로 인해 Ceph 프로세스가 예기치 않게 종료되면 다음을 수행합니다.

    1. 오류가 발생한 Ceph 프로세스가 실행 중인 노드에서 코어 패턴을 systemd-coredump 서비스로 설정합니다.

      예제

      [root@mon]# echo "| /usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" > /proc/sys/kernel/core_pattern
      Copy to Clipboard Toggle word wrap

    2. Ceph 프로세스로 인해 다음 컨테이너 실패를 조사하고 /var/lib/systemd/coredump/ 디렉토리에서 코어 덤프 파일을 검색합니다.

      예제

      [root@mon]# ls -ltr /var/lib/systemd/coredump
      total 8232
      -rw-r-----. 1 root root 8427548 Jan 22 19:24 core.ceph-osd.167.5ede29340b6c4fe4845147f847514c12.15622.1584573794000000.xz
      Copy to Clipboard Toggle word wrap

  2. Ceph MonitorsCeph OSD 의 코어 덤프 파일을 수동으로 캡처하려면 다음을 수행합니다.

    1. MONITOR_ID 또는 OSD_ID 를 가져와서 컨테이너를 입력합니다.

      구문

      podman ps
      podman exec -it MONITOR_ID_OR_OSD_ID bash
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# podman ps
      [root@host01 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-osd-2 bash
      Copy to Clipboard Toggle word wrap

    2. 컨테이너 내부에 procps-nggdb 패키지를 설치합니다.

      예제

      [root@host01 ~]# dnf install procps-ng gdb
      Copy to Clipboard Toggle word wrap

    3. 프로세스 ID를 찾습니다.

      구문

      ps -aef | grep PROCESS | grep -v run
      Copy to Clipboard Toggle word wrap

      PROCESS 를 실행 중인 프로세스의 이름으로 교체합니다(예: ceph-mon 또는 ceph-osd ).

      예제

      [root@host01 ~]# ps -aef | grep ceph-mon | grep -v run
      ceph       15390   15266  0 18:54 ?        00:00:29 /usr/bin/ceph-mon --cluster ceph --setroot ceph --setgroup ceph -d -i 5
      ceph       18110   17985  1 19:40 ?        00:00:08 /usr/bin/ceph-mon --cluster ceph --setroot ceph --setgroup ceph -d -i 2
      Copy to Clipboard Toggle word wrap

    4. 코어 덤프 파일을 생성합니다.

      구문

      gcore ID
      Copy to Clipboard Toggle word wrap

      ID 를 이전 단계에서 얻은 프로세스의 ID로 바꿉니다(예: 18110 ).

      예제

      [root@host01 ~]# gcore 18110
      warning: target file /proc/18110/cmdline contained unexpected null characters
      Saved corefile core.18110
      Copy to Clipboard Toggle word wrap

    5. 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.

      예제

      [root@host01 ~]# ls -ltr
      total 709772
      -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110
      Copy to Clipboard Toggle word wrap

    6. Ceph Monitor 컨테이너 외부에서 코어 덤프 파일을 복사합니다.

      구문

      podman cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp
      Copy to Clipboard Toggle word wrap

      MONITOR_ID 를 Ceph Monitor의 ID 번호로 바꾸고 MONITOR_PID 를 프로세스 ID 번호로 교체합니다.

  3. 다른 Ceph 데몬의 코어 덤프 파일을 수동으로 캡처하려면 다음을 수행합니다.

    1. cephadm 쉘에 로그인합니다.

      예제

      [root@host03 ~]# cephadm shell
      Copy to Clipboard Toggle word wrap

    2. 데몬에 ptrace 를 활성화합니다.

      예제

      [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/allow_ptrace true
      Copy to Clipboard Toggle word wrap

    3. 데몬 서비스를 재배포합니다.

      구문

      ceph orch redeploy SERVICE_ID
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch redeploy mgr
      [ceph: root@host01 /]# ceph orch redeploy rgw.rgw.1
      Copy to Clipboard Toggle word wrap

    4. cephadm 쉘 을 종료하고 데몬이 배포된 호스트에 로그인합니다.

      예제

      [ceph: root@host01 /]# exit
      [root@host01 ~]# ssh root@10.0.0.11
      Copy to Clipboard Toggle word wrap

    5. DAEMON_ID 를 가져와서 컨테이너를 입력합니다.

      예제

      [root@host04 ~]# podman ps
      [root@host04 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-rgw-rgw-1-host04 bash
      Copy to Clipboard Toggle word wrap

    6. procps-nggdb 패키지를 설치합니다.

      예제

      [root@host04 /]# dnf install procps-ng gdb
      Copy to Clipboard Toggle word wrap

    7. 프로세스의 PID를 가져옵니다.

      예제

      [root@host04 /]# ps aux | grep rados
      ceph           6  0.3  2.8 5334140 109052 ?      Sl   May10   5:25 /usr/bin/radosgw -n client.rgw.rgw.1.host04 -f --setuser ceph --setgroup ceph --default-log-to-file=false --default-log-to-stderr=true --default-log-stderr-prefix=debug
      Copy to Clipboard Toggle word wrap

    8. 코어 덤프 수집:

      구문

      gcore PID
      Copy to Clipboard Toggle word wrap

      예제

      [root@host04 /]# gcore 6
      Copy to Clipboard Toggle word wrap

    9. 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.

      예제

      [root@host04 /]# ls -ltr
      total 108798
      -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.6
      Copy to Clipboard Toggle word wrap

    10. 컨테이너 외부에서 코어 덤프 파일을 복사합니다.

      구문

      podman cp ceph-mon-DAEMON_ID:/tmp/mon.core.PID /tmp
      Copy to Clipboard Toggle word wrap

      DAEMON_ID 를 Ceph 데몬의 ID 번호로 바꾸고 PID 를 프로세스 ID 번호로 바꿉니다.

  4. systemd-coredump 가 충돌된 ceph 데몬의 코어 덤프를 성공적으로 저장할 수 있도록 하려면 다음을 수행합니다.

    1. 충돌된 프로세스의 코어 덤프 컬렉션을 허용하려면 DefaultLimitCORE/etc/systemd/system.conf 에서 무한 으로 설정합니다.

      구문

      # cat /etc/systemd/system.conf
      
      DefaultLimitCORE=infinity
      Copy to Clipboard Toggle word wrap

    2. systemd 또는 노드를 다시 시작하여 업데이트된 systemd 설정을 적용합니다.

      구문

      # sudo systemctl daemon-reexec
      Copy to Clipboard Toggle word wrap

    3. 이전 데몬과 관련된 코어 덤프 파일이 충돌하는지 확인합니다.

      구문

      # ls -ltr /var/lib/systemd/coredump/
      Copy to Clipboard Toggle word wrap

  5. 분석을 위해 코어 덤프 파일을 Red Hat 지원 케이스에 업로드합니다. 자세한 내용은 Red Hat 지원 엔지니어에게 정보 제공 에서 참조하십시오.

부록 A. Ceph 하위 시스템의 기본 로깅 수준 값

다양한 Ceph 하위 시스템의 기본 로깅 수준 값 테이블입니다.

Expand
하위 시스템로그 수준메모리 수준

asok

1

5

auth

1

5

buffer

0

0

클라이언트

0

5

context

0

5

crush

1

5

default

0

5

Filer

0

5

bluestore

1

5

완료자

1

5

heartbeatmap

1

5

javaclient

1

5

journaler

0

5

journal

1

5

lockdep

0

5

MDS 밸런서

1

5

MDS 잠금기

1

5

MDS 로그 만료

1

5

MDS 로그

1

5

MDS migrator

1

5

mds

1

5

monc

0

5

Mon

1

5

ms

0

5

objclass

0

5

objectcacher

0

5

Objecter

0

0

optracker

0

5

osd

0

5

Paxos

0

5

Perfcounter

1

5

rados

0

5

rbd

0

5

rgw

1

5

throttle

1

5

타이머

0

5

tp

0

5

부록 B. Ceph 클러스터의 상태 메시지

Red Hat Ceph Storage 클러스터에서 발생할 수 있는 한정된 상태 메시지 세트가 있습니다. 이러한 값은 고유 식별자가 있는 상태 점검으로 정의됩니다. 식별자는 도구에서 상태 점검을 감지하고 의미를 반영하는 방식으로 제시할 수 있도록 설계된 terse pseudo-human-readable 문자열입니다.

Expand
표 B.1. 모니터
상태 코드설명

DAEMON_OLD_VERSION

이전 버전의 Ceph가 모든 데몬에서 실행 중인 경우 경고합니다. 여러 버전이 감지되면 상태 오류가 발생합니다.

MON_DOWN

현재 하나 이상의 Ceph Monitor 데몬이 다운되었습니다.

MON_CLOCK_SKEW

ceph-mon 데몬을 실행하는 노드의 클럭은 잘 동기화되지 않습니다. ECDHE 또는 chrony 를 사용하여 시계를 동기화하여 문제를 해결합니다.

MON_MSGR2_NOT_ENABLED

ms_bind_msgr2 옵션은 활성화되어 있지만 하나 이상의 Ceph Monitors는 클러스터의 monmap에서 v2 포트에 바인딩하도록 구성되지 않습니다. ceph mon enable-msgr2 명령을 실행하여 이 문제를 해결합니다.

MON_DISK_LOW

디스크 공간에서 하나 이상의 Ceph 모니터가 낮습니다.

MON_DISK_CRIT

디스크 공간에서는 하나 이상의 Ceph 모니터가 매우 낮습니다.

MON_DISK_BIG

하나 이상의 Ceph 모니터의 데이터베이스 크기는 매우 큽니다.

AUTH_INSECURE_GLOBAL_ID_RECLAIM

Ceph Monitor에 다시 연결할 때 global_id 를 안전하게 회수하지 않는 하나 이상의 클라이언트 또는 데몬이 스토리지 클러스터에 연결됩니다.

AUTH_INSECURE_GLOBAL_ID_RECLAIM_ALLOWED

현재는 auth_allow_insecure_ global_id _reclaim 설정이 true 로 설정되었기 때문에 비보안 프로세스를 사용하여 클라이언트가 모니터에 다시 연결할 수 있도록 구성되어 있습니다.

Expand
표 B.2. 관리자
상태 코드설명

MGR_DOWN

현재 모든 Ceph Manager 데몬이 다운되었습니다.

MGR_MODULE_DEPENDENCY

활성화된 Ceph Manager 모듈이 종속성 확인에 실패했습니다.

MGR_MODULE_ERROR

Ceph Manager 모듈에서 예기치 않은 오류가 발생했습니다. 일반적으로 이는 모듈 서비스 함수에서 처리되지 않은 예외가 발생했음을 의미합니다.

Expand
표 B.3. OSDs
상태 코드설명

OSD_DOWN

하나 이상의 OSD가 아래로 표시됩니다.

OSD_CRUSH_TYPE_DOWN

특정 subtree 내의 모든 OSD가 다운됨(예: 호스트의 모든 OSD)이 표시됩니다. 예를 들어 OSD_HOST_DOWN 및 OSD_ROOT_DOWN

OSD_ORPHAN

OSD는 map 계층 구조에서 참조되지만 존재하지 않습니다. ceph osd crush rm osd._OSD_ID 명령을 실행하여 OSD를 제거합니다.

OSD_OUT_OF_ORDER_FULL

nearfull,backfillfull, full , or, failsafefull 에 대한 사용률 임계값은 true입니다. ceph osd set-nearfull-ratio RATIO, ceph osd set-backfillfull-ratio RATIOceph osd set-full-ratio RATIO 를 실행하여 임계값을 조정합니다.

OSD_FULL

하나 이상의 OSD가 전체 임계값을 초과하여 스토리지 클러스터가 쓰기를 서비스하지 못하도록 합니다. 작은 마진 ceph osd set-full-ratio RATIO 로 전체 임계값을 높여 쓰기 가용성을 복원합니다.

OSD_BACKFILLFULL

하나 이상의 OSD가 백필 전체 임계값을 초과하여 이 장치로 데이터를 재조정할 수 없습니다.

OSD_NEARFULL

하나 이상의 OSD가 nearfull 임계값을 초과했습니다.

OSDMAP_FLAGS

하나 이상의 스토리지 클러스터 플래그가 설정되었습니다. 이러한 플래그에는 전체,pauserd,pausewr,noup,no in ,noin,no in ,nobackfill,norecover,norebalance,nodeep_scrub,nodeep_scrub, notieragent 가 포함됩니다. 전체 플래그를 제외하고 ceph osd setECDHEAG 및 ceph osd unsetECDHE AG 명령을 사용하여 플래그를 지울 있습니다.

OSD_FLAGS

하나 이상의 OSD 또는ECDHE에는 관심 플래그가 있습니다. 이러한 플래그에는 noup,nodown,noin, noout 가 포함됩니다.

OLD_CRUSH_TUNABLES

ECDHE 맵은 매우 오래된 설정을 사용하고 있으며 업데이트해야 합니다.

OLD_CRUSH_STRAW_CALC_VERSION

DestinationRule 맵은 straw 버킷에 대한 중간 가중치 값을 계산하기 위해 최적화되지 않은 이전 방법을 사용하고 있습니다.

CACHE_POOL_NO_HIT_SET

사용률을 추적하기 위해 하나 이상의 캐시 풀이 구성되지 않아 계층화 에이전트가 캐시에서 플러시하고 제거할 수 있는 콜드 오브젝트를 식별할 수 없습니다. ceph osd pool set_POOL_NAME_ hit_set_type TYPE, ceph osd pool set POOL_NAME hit_set_period PERIOD_IN_SECONDS, ceph osd pool set POOL_ NAME hit_set_NAME hit_set_count NUMBER_HIT_SETS, . 및 ceph osd pool set POOL_NAME hit_set_fpp TARGET_FALSE_POSITIVE_RATE 명령

OSD_NO_SORTBITWISE

sortbit flag 가 설정되지 않았습니다. ceph osd set sortbitECDHE 명령을 사용하여 플래그를 설정합니다.

POOL_FULL

하나 이상의 풀이 할당량에 도달했으며 더 이상 쓰기를 허용하지 않습니다. ceph osd pool set-quota POOL_NAME max_objects NUMBER_OF_OBJECTSceph osd 풀 set-quota POOL_NAME max_bytes BYTES 를 사용하여 풀 할당량을 늘리거나, 사용률을 줄이기 위해 기존 데이터를 삭제합니다.

BLUEFS_SPILLOVER

BlueStore 백엔드를 사용하는 하나 이상의 OSD는 db 파티션이 할당되지만 해당 공간이 채워져 메타데이터가 정상적인 느린 장치에 "사용"되었습니다. ceph config set osd bluestore_warn_on_bluefs_spillover false 명령을 사용하여 이 작업을 비활성화합니다.

BLUEFS_AVAILABLE_SPACE

이 출력에서는 BDEV_DB 무료 ,BDEV_SLOW 무료available_ from_bluestore 의 세 가지 값을 제공합니다.

BLUEFS_LOW_SPACE

사용 가능한 여유 공간에 BlueStore File System (BlueFS)이 부족하고 available_from_bluestore 가 거의 없는 경우 BlueFS 할당 단위 크기를 줄일 수 있습니다.

BLUESTORE_FRAGMENTATION

BlueStore는 기본 스토리지에서 사용 가능한 공간을 조각화할 수 있습니다. 이는 정상적이고 피할 수 없지만 과도한 조각화로 인해 속도가 느려집니다.

BLUESTORE_LEGACY_STATFS

Bluestore는 내부 사용량 통계를 풀당 세분화하여 추적하고 하나 이상의 OSD에는 BlueStore 볼륨이 있습니다. ceph config set global bluestore_warn_on_legacy_statfs false 명령을 사용하여 경고를 비활성화합니다.

BLUESTORE_NO_PER_POOL_OMAP

Bluestore는 풀로 omap 공간 사용률을 추적합니다. ceph config set global bluestore_warn_on_no_per_pool_omap false 명령을 사용하여 경고를 비활성화합니다.

BLUESTORE_NO_PER_PG_OMAP

Bluestore는 PG로 omap 공간 사용률을 추적합니다. ceph config set global bluestore_warn_on_no_per_pg_omap false 명령을 사용하여 경고를 비활성화합니다.

BLUESTORE_DISK_SIZE_MISMATCH

BlueStore를 사용하는 하나 이상의 OSD는 물리적 장치의 크기와 해당 크기를 추적하는 메타데이터 사이에 내부 불일치가 있습니다.

BLUESTORE_NO_COMPRESSION `

BlueStore 압축 플러그인을 로드할 수 없는 OSD 하나 이상 이는 ceph-osd 바이너리가 압축 플러그인과 일치하지 않는 설치 또는 ceph-osd 데몬 재시작이 포함되지 않은 최근 업그레이드로 인해 발생할 수 있습니다.

BLUESTORE_SPURIOUS_READ_ERRORS

BlueStore를 사용하는 하나 이상의 OSD는 기본 장치에서 잘못된 읽기 오류를 감지합니다. Bluestore는 디스크 읽기를 다시 시도하여 이러한 오류에서 복구되었습니다.

Expand
표 B.4. 장치 상태
상태 코드설명

DEVICE_HEALTH

하나 이상의 장치가 곧 실패할 것으로 예상됩니다. 여기서 경고 임계값은 mgr/devicehealth/warn_threshold 설정 옵션에 의해 제어됩니다. 장치를 표시 하여 데이터를 마이그레이션하고 하드웨어를 교체합니다.

DEVICE_HEALTH_IN_USE

하나 이상의 장치가 곧 실패할 것으로 예상되며 mgr/devicehealth/mark_out_threshold 를 기반으로 스토리지 클러스터의 "아웃"으로 표시되지만 여전히 하나의 PG에 참여하고 있습니다.

DEVICE_HEALTH_TOOMANY

곧 너무 많은 장치가 실패할 것으로 예상되고 mgr/devicehealth/self_heal 동작이 활성화되므로 실링 장치를 모두 표시하면 너무 많은 OSD가 자동으로 표시되지 않게 하는 클러스터 mon_osd_min_in_ratio 비율 초과합니다.

Expand
표 B.5. 풀 및 배치 그룹
상태 코드설명

PG_AVAILABILITY

데이터 가용성이 감소합니다. 즉, 스토리지 클러스터가 클러스터의 일부 데이터에 대한 잠재적인 읽기 또는 쓰기 요청을 처리할 수 없습니다.

PG_DEGRADED

일부 데이터에 대해 데이터 중복성이 감소합니다. 즉, 스토리지 클러스터에 복제된 풀 또는 배경 코드 조각에 대해 원하는 복제본 수가 없습니다.

PG_RECOVERY_FULL

스토리지 클러스터에서 사용 가능한 공간 부족, 특히 하나 이상의 PG에 recovery_too full 플래그가 설정되어 있기 때문에 데이터 중복이 감소하거나 위험할 수 있습니다. 즉, 하나 이상의 OSD가 전체 임계값보다 크므로 클러스터에서 데이터를 마이그레이션하거나 복구할 수 없습니다.

PG_BACKFILL_FULL

스토리지 클러스터에서 사용 가능한 공간 부족, 특히 하나 이상의 PG에 backfill_toofull 플래그가 설정되어 있기 때문에 데이터 중복이 감소하거나 위험할 수 있습니다. 즉, 하나 이상의 OSD가 백필 풀 임계값 위에 있기 때문에 클러스터에서 데이터를 마이그레이션하거나 복구할 수 없습니다.

PG_DAMAGED

데이터 스크럽은 스토리지 클러스터에서 데이터 일관성과 관련된 일부 문제, 특히 하나 이상의 PG가 일관되지 않거나 snaptrim_error 플래그가 설정되어 있어 이전 스크루브 작업으로 인해 문제가 발견되거나 복구 플래그가 설정되어 있습니다. 즉, 이러한 불일치에 대한 복구가 현재 진행 중입니다.

OSD_SCRUB_ERRORS

최근 OSD 스크럽에서 불일치를 발견했습니다.

OSD_TOO_MANY_REPAIRS

읽기 오류가 발생하고 다른 복제본을 사용할 수 있는 경우 클라이언트가 개체 데이터를 가져올 수 있도록 오류를 즉시 복구하는 데 사용됩니다.

LARGE_OMAP_OBJECTS

하나 이상의 풀은 osd_deep_scrub_large_omap_object_key_threshold 또는 osd_deep_scrub_object_value_sum_threshold 또는 둘 다에 의해 결정되는 큰 omap 오브젝트 를 포함합니다. ceph 구성 세트 osd osd_deep_scrub_large_omap_object_threshold KEYSceph config set osd osd_scrub_large_omap_object_value_sum_threshold BYTES 명령을 사용하여 임계값을 조정합니다.

CACHE_POOL_NEAR_FULL

캐시 계층 풀이 가득 차 있습니다. ceph osd 풀 설정 CACHE_POOL_NAME target_max_bytes BYTESceph osd 풀 설정 CACHE_ POOL_NAME target_max_bytes BYTES 명령을 사용하여 캐시 풀 대상 크기를 조정합니다.

TOO_FEW_PGS

스토리지 클러스터에서 사용되는 PG 수는 OSD당 구성 가능한 mon_pg_warn_min_per_osd PG의 임계값보다 낮습니다.

POOL_PG_NUM_NOT_POWER_OF_TWO

하나 이상의 풀에는 2의 권한이 아닌 pg_num 값이 있습니다. ceph config set global mon_warn_on_pool_pg_not_power_of_two false 명령을 사용하여 경고를 비활성화합니다.

POOL_TOO_FEW_PGS

풀에 현재 저장된 데이터 양에 따라 하나 이상의 풀이 PG를 가질 수 있습니다. ceph osd pool set POOL_NAME pg_autoscale_mode off 명령을 사용하여 PG의 자동 확장을 비활성화하고, ceph osd pool set POOL_ NAME pg_autoscale_mode 명령을 사용하여 PG의 수를 자동으로 조정하거나, ceph osd pool set POOL_NAME pg_autoscale_mode 명령을 사용하여 PG 수 를 수동으로 설정할 수 있습니다.

TOO_MANY_PGS

스토리지 클러스터에서 사용되는 PG 수는 OSD당 구성 가능한 mon_max_pg_per_osd PGs보다 큽니다. 하드웨어를 추가하여 클러스터에서 OSD 수를 늘립니다.

POOL_TOO_MANY_PGS

풀에 현재 저장된 데이터 양에 따라 하나 이상의 풀이 PG를 가질 수 있습니다. ceph osd pool set POOL_NAME pg_autoscale_mode off 명령을 사용하여 PG의 자동 확장을 비활성화하고, ceph osd pool set POOL_ NAME pg_autoscale_mode 명령을 사용하여 PG의 수를 자동으로 조정하거나, ceph osd pool set POOL_NAME pg_autoscale_mode 명령을 사용하여 PG 수 를 수동으로 설정할 수 있습니다.

POOL_TARGET_SIZE_BYTES_OVERCOMMITTED

하나 이상의 풀에는 풀의 예상 크기를 추정하도록 target_size_bytes 속성이 설정되어 있지만 값은 사용 가능한 총 스토리지를 초과합니다. ceph osd 풀이 POOL_NAME target_size_bytes 0 명령을 설정하여 풀 값을 0 으로 설정합니다.

POOL_HAS_TARGET_SIZE_BYTES_AND_RATIO

풀의 예상 크기를 추정하기 위해 하나 이상의 풀에 target_size_bytestarget_size_ratio 가 모두 설정됩니다. ceph osd 풀이 POOL_NAME target_size_bytes 0 명령을 설정하여 풀 값을 0 으로 설정합니다.

TOO_FEW_OSDS

스토리지 클러스터의 OSD 수는 o'sd_pool_default_size 의 구성 가능한 임계값보다 낮습니다.

SMALLER_PGP_NUM

하나 이상의 풀은 pgp_num 보다 작은 pgp _num 값을 갖습니다. 이는 일반적으로 배치 동작을 늘리지 않고 PG 수가 증가했음을 나타냅니다. ceph osd pool set POOL _NAME pgp _ NUM_VALUE명령을 사용하여 pg_num 과 일치하도록 pgp_num 을 설정하여 이 문제를 해결합니다.

MANY_OBJECTS_PER_PG

하나 이상의 풀은 PG당 평균 오브젝트 수가 있으며 이는 전체 스토리지 클러스터 평균보다 훨씬 높습니다. 특정 임계값은 mon_pg_warn_max_object_skew 구성 값에 의해 제어됩니다.

POOL_APP_NOT_ENABLED

하나 이상의 오브젝트를 포함하지만 특정 애플리케이션에서 사용하기 위해 태그되지 않은 풀이 있습니다. rbd 풀 init POOL_NAME명령이 있는 애플리케이션에서 사용할 풀에 레이블을 지정하여 이 경고를 해결합니다.

POOL_FULL

하나 이상의 풀이 할당량에 도달했습니다. 이 오류 조건을 트리거할 임계값은 mon_pool_quota_crit_threshold 구성 옵션에 의해 제어됩니다.

POOL_NEAR_FULL

하나 이상의 풀이 구성된 완전성 임계값에 도달합니다. ceph osd pool set-quota POOL_NAME max_objects NUMBER_OF_OBJECTSceph osd 풀 set-quota POOL_NAME max_bytes BYTES 명령을 사용하여 풀 할당량을 조정합니다.

OBJECT_MISPLACED

스토리지 클러스터에서 하나 이상의 오브젝트는 스토리지 클러스터가 저장하려는 노드에 저장되지 않습니다. 이는 일부 최근 스토리지 클러스터 변경으로 인한 데이터 마이그레이션이 아직 완료되지 않았음을 나타냅니다.

OBJECT_UNFOUND

특히 OSD는 스토리지 클러스터에 있는 하나 이상의 오브젝트를 찾을 수 없지만 현재 온라인 OSD에서 해당 오브젝트 버전의 복사본이 존재하지 않음을 알 수 있습니다.

SLOW_OPS

하나 이상의 OSD 또는 모니터링 요청을 처리하는 데 시간이 오래 걸립니다. 이는 과도한 부하, 느린 저장 장치 또는 소프트웨어 버그의 표시일 수 있습니다.

PG_NOT_SCRUBBED

최근에 하나 이상의 PG가 스크럽되지 않았습니다. PGS는 일반적으로 전 세계적으로 osd_scrub_max_interval 로 지정된 모든 구성 간격 내에서 스크럽됩니다. ceph pg scrub PG_ID 명령을 사용하여 스크루브를 시작합니다.

PG_NOT_DEEP_SCRUBBED

최근에 하나 이상의 PG가 깊은 스크럽되지 않았습니다. ceph pg 딥-scrub PG_ID 명령을 사용하여 스크루브를 시작합니다. PGS는 일반적으로 모든 osd_deep_scrub_interval 초를 스크럽하고, 이 경고는 mon_warn_pg_not_deep_scrubbed_ratio 간격이 있기 때문에 스크루브 없이 경과할 때 트리거됩니다.

PG_SLOW_SNAP_TRIMMING

하나 이상의 PG에 대한 스냅샷 트래킹 대기열이 구성된 경고 임계값을 초과했습니다. 이는 최근에 매우 많은 스냅샷이 삭제되었거나 OSD가 새 스냅샷 삭제 속도를 유지하기 위해 스냅샷을 빠르게 트리트할 수 없음을 나타냅니다.

Expand
표 B.6. 기타
상태 코드설명

RECENT_CRASH

최근에 하나 이상의 Ceph 데몬이 충돌했으며 충돌은 아직 관리자가 확인하지 않았습니다.

TELEMETRY_CHANGED

Telemetry가 활성화되었지만 해당 시간 이후 Telemetry 보고서의 내용이 변경되었으므로 원격 분석 보고서가 전송되지 않습니다.

AUTH_BAD_CAPS

하나 이상의 auth 사용자에게는 모니터에서 구문 분석할 수 없는 기능이 있습니다. ceph auth ENTITY_NAME DAEMON_TYPE CAPS 명령을 사용하여 사용자의 기능을 업데이트합니다.

OSD_NO_DOWN_OUT_INTERVAL

mon_osd_down_out_interval 옵션은 0으로 설정됩니다. 즉, OSD가 실패한 후 복구 또는 복구 작업을 자동으로 수행하지 않습니다. ceph config global mon_warn_on_osd_down_out_interval_zero false 명령을 사용하여 간격을 음소거합니다.

DASHBOARD_DEBUG

대시보드 디버그 모드가 활성화되어 있습니다. 즉, REST API 요청을 처리하는 동안 오류가 있는 경우 HTTP 오류 응답에 Python 추적이 포함됩니다. ceph dashboard debug 명령을 사용하여 디버그 모드를 비활성화합니다.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동