4.7. RADOS
진행 속도 저하 및 백필 중 높은 CPU 사용률이 확인됨
이전에는 OSD shard에서 가장 작은 인덱스가 있는 작업자 스레드가 mClock 대기열에서 또는 알림까지 항목을 예약할 때까지 기다리지 않고 기본 작업자 루프로 반환되었습니다. 이로 인해 사용량이 많은 루프와 CPU 사용률이 증가했습니다.
이번 수정을 통해 가장 작은 스레드 인덱스가 있는 작업자 스레드는 적절한 잠금을 다시 작성하고 알림까지 대기하거나 mClock 스케줄러에서 나타내는 대로 시간이 경과할 때까지 기다립니다. 작업자 스레드는 이제 mClock 대기열에서 항목을 예약할 수 있을 때까지 기다립니다. 또는 알림이 표시될 때까지 기다린 다음 기본 작업자 루프로 반환하여 사용량이 많은 루프를 제거하고 높은 CPU 사용률 문제를 해결합니다.
STS에서 반환된 임시 인증 정보를 사용하는 경우 대용량 오브젝트의 이름 변경이 더 이상 실패하지 않음
이전 버전에서는 대규모 오브젝트의 이름을 변경하는 동안 iam
정책에 대한 잘못된 권한 평가로 인해 STS에서 반환된 임시 인증 정보를 사용할 때 대용량 오브젝트의 이름을 변경할 수 없었습니다.
이번 수정을 통해 STS에서 반환된 임시 인증 정보를 사용하여 큰 오브젝트의 이름을 바꾸는 경우 iam
정책이 올바르게 평가됩니다.
작은 쓰기가 지연됩니다.
이전에는 장치를 할당하는 동안 Ceph에서 쓰기를 지연했습니다. 할당 단위가 64K와 같이 큰 경우 작은 쓰기가 지연되지 않았습니다.
이번 업데이트를 통해 대규모 할당 단위가 지연되는 경우에도 디스크 블록에서 작동하도록 작은 쓰기가 지연됩니다.
모니터 수를 줄이면 Ceph Monitor가 더 이상 충돌하지 않음
이전 버전에서는 사용자가 ceph orch apply mon NUMBER
명령을 사용하여 쿼럼의 모니터 수를 줄이면 cephadm
에서 모니터를 종료하기 전에 모니터를 제거했습니다. Ceph는 모니터를 제거하기 전에 모니터가 종료되었다고 가정하기 때문에 어설션이 트리거됩니다.
이번 수정을 통해 모니터의 현재 순위가 쿼럼 순위보다 크거나 같은 경우 케이스를 처리하기 위해 sanity 검사가 추가됩니다. 모니터 맵에 모니터가 더 이상 존재하지 않으므로 해당 피어는 주소가 더 이상 존재하지 않기 때문에 이 모니터를 ping하지 않습니다. 결과적으로 모니터가 종료되기 전에 제거되면 어설션이 트리거되지 않습니다.
Ceph Manager에서 초기 서비스 맵을 처리하는 작업이 완화되었는지 확인합니다.
이전 버전에서는 클러스터를 업그레이드할 때 Ceph Manager에서 이전에 활성 Ceph 관리자에서 여러 service_map
버전을 수신했습니다. 이로 인해 새로 활성화된 관리자가 이전에 활성 관리자가 보낸 더 높은 버전의 맵을 수신했을 때 코드의 잘못된 검사로 인해 manager 데몬이 충돌했습니다.
이번 수정을 통해 초기 서비스 맵을 처리하는 Ceph Manager의 검사가 완화되어 서비스 맵을 올바르게 확인하고 Ceph Manager 장애 조치 중에 어설션이 발생하지 않습니다.
이제 ceph --help
명령에 yaml 형식도 ceph orch
명령에만 유효한 것으로 표시됩니다.
이전에는 ceph --help
명령의 사양 부족으로 인해 yaml formatter 옵션이 ceph config dump
명령을 포함하여 모든 ceph 명령에 유효했습니다.
이번 수정을 통해 ceph --help
명령의 출력은 yaml 형식도 ceph orch
명령에만 유효함을 보여줍니다.
PG 로그의 손상된 dups 항목은 오프라인 및 온라인 트리밍으로 제거할 수 있습니다.
이전 버전에서는 PG 로그 dups 항목의 트리밍을 방지할 수 있었습니다. 낮은 수준의 PG 분할 작업에서는 작업자가 훨씬 더 높은 빈도를 가진 PG 자동 스케일러에 의해 사용됩니다. 트리밍을 중단하면 PG 로그 메모리가 크게 증가하여 메모리가 부족할 때 OSD 충돌이 발생했습니다. OSD를 다시 시작하면 PG 로그가 디스크에 저장되고 시작 시 RAM에 다시 로드되므로 문제가 해결되지 않습니다.
이번 수정을 통해 ceph-objectstore-tool
명령 및 OSD 내에서 온라인을 사용하여 오프라인에서 모두 트리밍 작업을 중단하고 메모리 증가를 담당하는 PG 로그의 손상된 dups 항목을 제거할 수 있습니다. 향후 조사를 돕기 위해 OSD 로그에 dups 항목 수를 출력하는 디버그 개선이 구현됩니다.
시작
메시지는 scrub 또는 deep-scrub 프로세스가 시작되었음을 알리기 위해 추가됩니다.
이전에는 클러스터 로그에서 starts
메시지가 누락되었기 때문에 배치 그룹(PG)에 대한 스크럽 프로세스가 시작된 시기를 확인할 수 없었습니다. 이로 인해 PG 스크러브 또는 딥 스크럽에 걸리는 시간을 계산하기 어려웠습니다.
이번 수정으로 scrub가 시작
되거나 deep-scrub 시작
메시지가 사용자에게 scrub 또는 deep-scrub 프로세스가 PG에 대해 시작되었음을 알리는 것으로 나타납니다.
PG-autoscaling이 비활성화된 경우 autoscale-status
명령이 더 이상 NEW PG_NUM
값을 표시하지 않음
이전에는 PG-autoscaling이 활성화되지 않은 경우에도 autoscale-status
명령에 NEW PG_NUM
값이 표시되었습니다. 이는 PG 자동 스케일러가 NEW PG_NUM
값을 풀에 적용하는 것을 제안하여 최종 사용자를 위태롭게 합니다.
이번 수정을 통해 noautoscale
플래그가 설정된 경우 autoscale-status
명령 출력에 NEW PG_NUM
값이 표시되지 않습니다.
사용자가 클러스터를 업그레이드한 후 복제된 오브젝트를 제거할 수 있습니다.
이전 버전에서는 Red Hat Ceph Storage 4에서 Red Hat Ceph Storage 5로 클러스터를 업그레이드한 후 이전 버전에서 생성된 오브젝트의 스냅샷을 제거하면 복제본이 제거되지 않았습니다. 이는 SnapMapper 키가 잘못 변환되었기 때문입니다.
이번 수정을 통해 이전 버전의 Ceph에서 새 키 형식과 복제된 개체와 일치하도록 SnapMapper의 레거시 대화가 업데이트되어 업그레이드 후 쉽게 제거할 수 있습니다.
ceph daemon heap stats
명령에서 데몬에 필요한 사용 세부 정보를 반환합니다.
이전에는 ceph 데몬 osd.x heap stats
명령에서 Ceph 데몬의 현재 힙 사용량 대신 빈 출력을 반환했습니다. 그 결과 사용자가 ceph tell heap stats
명령을 사용하여 원하는 힙 사용량을 가져오도록 유도되었습니다.
이번 수정으로 ceph daemon heap stats
명령은 ceph tell
명령을 사용하여 얻은 것과 유사한 Ceph 데몬의 힙 사용 정보를 반환합니다.
이제 요청할 때마다 Prometheus 지표가 모든 Ceph 모니터에 대한 올바른 Ceph 버전을 반영합니다.
이전에는 모니터가 업그레이드될 때 Prometheus 지표에서 Ceph Monitor의 Ceph 버전이 일치하지 않는 것으로 보고되었습니다. 결과적으로 이 불일치를 해결하려면 활성 Ceph Manager 데몬을 다시 시작해야 했습니다. 또한 handle_mon_map
매개변수를 통해 모니터 메타데이터를 업데이트하는 데 사용되는 Ceph 관리자는 모니터가 제거되거나 클러스터에서 추가되거나 활성 mgr
이 다시 시작되거나 mgr
실패하는 경우 트리거됩니다.
이번 수정을 통해 ceph mon metadata
명령을 사용하여 mon
메타데이터를 가져오는 대신 MON은 이제 mon
메타데이터를 mgr
로 명시적으로 전송합니다.
올바른 복제본 세트가 재맵된
배치 그룹에 사용됩니다.
이전 버전에서는 재맵된
배치 그룹의 경우 존재하지 않는 불일치를 식별한 후 scrub 정보에 대해 잘못된 복제본 세트를 쿼리했습니다.
이번 수정으로 올바른 복제본 세트를 쿼리합니다.
대상 rank_removed
가 더 이상 live_pinging
및 dead_ping 상태로 유지되지
않음
이전 버전에서는 모니터 크기가 변경되기 전에 모니터 맵의 paxos_size
가 업데이트되었습니다. 예를 들어 paxos_size
는 5에서 4로 줄어들지만 모니터의 가장 높은 순위는 여전히 4이므로 이전 코드는 dead_pinging
상태에서 순위 삭제를 건너뜁니다. 이로 인해 대상 순위가 dead_pinging
에 영구적으로 유지되므로 선택 전략에서 비정상적인
.
peer_tracker
점수가 발생합니다. 3
이번 수정으로 rank_removed == paxos_size()
가 live_pinging
및 dead_ping 상태 모두에서 대상
를 지우고 순위는 이러한 세트 중 하나에 영구적으로 고정되지 않습니다.
rank_
removed
사이트의 장애 조치 중에 Ceph Monitor가 고정되지 않음
이전에는 removed_ranks
변수가 Monitor 맵의 모든 업데이트에 대한 콘텐츠를 삭제하지 않았습니다. 따라서 2 사이트 스트레치 클러스터의 모니터를 교체하고 사이트 중 하나에 장애로 인해 점수와 관련된 순위를 포함한 연결 점수가 일관되지 않게 됩니다.
모니터 선택 기간 동안 일관되지 않은 연결 점수가 발생하여 Ceph가 응답하지 않습니다. 이 경우 자체적으로 수정하기 위해 연결 점수와 연결된 모니터 순위를 지정할 방법이 없었습니다.
이번 수정으로 removed_ranks
변수가 모니터 맵의 모든 업데이트로 지워집니다. 모니터는 더 이상 선택 기간에 중단되지 않으며 모니터를 교체하고 사이트를 통해 실패할 때 Ceph가 더 이상 응답하지 않습니다. 또한 ceph 데몬 mon을 사용하여 연결 점수를 수동으로 강제로 수정할 수 있습니다.NAME 연결 점수 reset
명령.
이제 사용자가 복제본 크기를
1
로 설정할 수 있습니다.
이전에는 사용자가 풀 크기를
1
로 설정할 수 없었습니다. check_pg_num()
함수가 풀의 예상 배치 그룹 번호를 잘못 계산하여 underflow가 발생했습니다. 잘못된 결과 때문에 pg_num
이 최대 제한보다 큰 것으로 표시되었습니다.
이번 수정을 통해 최근 check_pg_num()
함수 편집이 복원되고 이제 축소가 발생하지 않고 계산이 제대로 작동하므로 사용자가 복제본 크기를 1
로 설정할 수 있습니다.
클러스터 업그레이드 후 require-osd-release
플래그가 적절한 릴리스로 설정되지 않은 경우 Ceph 클러스터에서 상태 경고를 발행합니다.
이전에는 코드 리팩토링 작업 중에 업그레이드가 의도치 않게 제거된 후 require-osd-release
플래그를 감지하는 코드의 논리가 일치하지 않았습니다. 업그레이드 후 ceph -s
출력에서 경고가 발생하지 않았으므로 적절한 릴리스로 플래그를 설정하지 않고 클러스터의 변경으로 인해 특정 상태에 멈춘 배치 그룹(PG)과 같은 문제가 발생했습니다. 과도한 Ceph 프로세스 메모리 사용량, 느린 요청 등 문제가 발생했습니다.
이번 수정으로 클러스터 업그레이드 후 require-osd-release
플래그가 적절한 릴리스로 설정되지 않은 경우 Ceph 클러스터에서 상태 경고를 발행합니다.