6.8. RADOS
클러스터 업그레이드 후 require-osd-release
플래그가 적절한 릴리스로 설정되지 않은 경우 Ceph 클러스터에서 상태 경고를 발행합니다.
이전에는 코드 리팩토링 작업 중에 업그레이드가 의도치 않게 제거된 후 require-osd-release
플래그를 감지하는 코드의 논리가 일치하지 않았습니다. 업그레이드 후 ceph -s
출력에서 경고가 발생하지 않았으므로 적절한 릴리스로 플래그를 설정하지 않고 클러스터의 변경으로 인해 특정 상태에 멈춘 배치 그룹(PG)과 같은 문제가 발생했습니다. 과도한 Ceph 프로세스 메모리 사용량, 느린 요청 등 문제가 발생했습니다.
이번 수정으로 클러스터 업그레이드 후 require-osd-release
플래그가 적절한 릴리스로 설정되지 않은 경우 Ceph 클러스터에서 상태 경고를 발행합니다.
PGS가 더 이상 스트레치 모드에서 remapped+peering
상태로 잘못 고정되지 않음
이전 버전에서는 논리 오류로 인해 스트레치 모드에서 클러스터를 작동할 때 일부 배치 그룹(PG)이 특정 클러스터 조건에서 다시 매핑된 + 피어링
상태로 영구적으로 중단되어 OSD가 오프라인 상태가 될 때까지 데이터를 사용할 수 없게 되었습니다.
이번 수정으로 PG는 안정적인 OSD 세트를 선택하고 더 이상 스트레치 모드에서 remapped+peering
상태로 잘못 고정되지 않습니다.
OSD 배포 툴에서 클러스터를 변경하는 동안 모든 OSD를 성공적으로 배포
KVMonitor paxos 서비스는 클러스터 변경을 수행할 때 추가, 제거 또는 수정되는 키를 관리합니다. 이전 버전에서는 OSD 배포 도구를 사용하여 새 OSD를 추가하는 동안 서비스가 쓸 수 있는지 확인하지 않고 키가 추가되었습니다. 이로 인해 paxos 코드에서 어설션 오류가 발생하여 모니터가 충돌합니다.
최신 수정을 통해 새 OSD를 추가하기 전에 KVMonitor 서비스를 쓸 수 있습니다. 그렇지 않으면 나중에 다시 시도하도록 명령 백업을 관련 큐로 푸시합니다. OSD 배포 툴에서 모든 OSD를 문제 없이 성공적으로 배포합니다.
PG 로그의 손상된 dups 항목은 오프라인 및 온라인 트리밍으로 제거할 수 있습니다.
이전 버전에서는 PG 로그 dups 항목의 트리밍을 방지할 수 있었습니다. 낮은 수준의 PG 분할 작업에서는 작업자가 훨씬 더 높은 빈도를 가진 PG 자동 스케일러에 의해 사용됩니다. 트리밍을 중단하면 PG 로그 메모리가 크게 증가하여 메모리가 부족할 때 OSD 충돌이 발생했습니다. OSD를 다시 시작해도 PG 로그가 디스크에 저장되고 시작 시 RAM에 다시 로드되므로 문제가 해결되지 않았습니다.
이번 수정을 통해 오프라인( ceph-objectstore-tool
명령 사용)과 온라인( OSD 내) 트리밍은 온라인 트리밍 작업을 중단하고 메모리 증가를 담당하는 PG 로그의 손상된 dups 항목을 제거할 수 있습니다. 향후 조사를 돕기 위해 OSD 로그에 dups 항목 수를 출력하는 디버그 개선이 구현됩니다.