6장. 버그 수정
이 섹션에서는 Red Hat Ceph Storage 릴리스에서 수정된 사용자에게 상당한 영향을 미치는 버그를 설명합니다. 또한 이 섹션에는 이전 버전에서 발견된 수정된 알려진 문제에 대한 설명이 포함되어 있습니다.
6.1. Ceph Ansible 유틸리티
/targets
URL에 Prometheus가 down으로 표시
이전에는 Prometheus 대상 URL이 localhost
값으로 구성되었습니다. 대상 상태가 중단된 경우 Prometheus 서비스가
주소에서 수신 대기하지 않게 되었습니다. 이번 릴리스에서는 대상 URL 값에 대한 IP 주소를 사용하도록 Prometheus 구성 파일이 업데이트되었습니다. 결과적으로 Prometheus 대상 상태가 올바르게 보고됩니다.
localhost
Ceph 배포 중에 OSD를 생성할 때 Ceph -volume
에서 메타데이터 손상이 발생할 수 있습니다.
이전 버전에서는 ceph-volume
에서 볼륨 그룹 생성, 논리 볼륨, 태그 설정 등의 LVM 명령을 발행하면 Ceph 배포 중에 OSD를 생성할 때 손상된 메타데이터가 발생할 수 있었습니다. 이번 릴리스에서는 호스트의 group_vars/all.yml
파일에서
매개변수를 lvmetad
_disabledtrue
로 설정하여 lvmetad 서비스를 조건부로 비활성화할 수 있으므로 메타데이터 손상을 방지할 수 있습니다.
ceph-ansible
의 ceph-dashboard
역할은 자체 서명된 인증서의 일반 이름을 ceph-dashboard
에 적용
이전 버전에서는 ceph-ansible
에서 생성한 자체 서명 인증서를 사용할 때 CN(일반 이름)을 ceph-dashboard
에 적용했기 때문에 인증서가 클라이언트에 인증서를 보내는 노드의 호스트 이름이 일치하지 않아 Prometheus와 같은 애플리케이션이 오류가 발생했습니다.
이번 릴리스에서는 ceph-ansible
이 적절한 값으로 CN을 설정하고 Prometheus가 예상대로 작동합니다.
Ceph 컨테이너가 배치되면 롤링 업그레이드가 실패합니다.
Ceph Monitor 및 Ceph Object Gateway 데몬이 컨테이너와 함께 배치되고 다중 사이트 Ceph Object Gateway가 활성화되면 rolling_update.yml
Ansible 플레이북이 실패합니다. 이 오류는 업그레이드 프로세스 중에 Ceph Monitor 컨테이너가 중지되어 radosgw-admin
명령을 실행할 수 없기 때문에 발생했습니다. 이번 릴리스에서는 업그레이드 프로세스 중에 ceph-handler
역할의 다중 사이트 Ceph Object Gateway 코드를 건너뜁니다. 그 결과 rolling_update.yml
Ansible 플레이북이 성공적으로 실행됩니다.
컨테이너화된 데몬으로 전환할 때 Ceph Monitor 쿼럼 검사가 실패합니다.
회귀 버그는 switch-from-containerized-to-containerized-ceph-daemons.yml
Ansible 플레이북에서 도입되었습니다. 이 회귀 버그로 인해 현재 노드의 호스트 이름이 테스트되지 않았기 때문에 Ceph Monitor 쿼럼 검사가 실패했습니다. 이번 릴리스에서는 현재 Ceph Monitor 노드의 ansible_hostname
팩트가 올바르게 사용됩니다. 그 결과 Ceph Monitor 쿼럼 검사가 성공적으로 수행됩니다.
업그레이드 실패 시 새 Ceph Object Gateway 인스턴스 추가
radosgw_frontend_port
옵션은 두 개 이상의 Ceph Object Gateway 인스턴스를 고려하지 않았으며 모든 인스턴스에 포트 8080
을 구성했습니다. 이번 릴리스에서는 각 Ceph Object Gateway 인스턴스에 대해 radosgw_frontend_port
옵션이 증가하여 Ceph Object Gateway 인스턴스를 두 개 이상 사용할 수 있습니다.
Ceph Ansible은 소켓 파일을 제거하고 클러스터 재배포를 활성화합니다.
이전 버전에서는 *.asok 파일이 제거 플레이북이 완료되어 클러스터를 재배포하는 동안 오류가 발생했습니다. 이번 업데이트를 통해 ceph-ansible
은 존재할 수 있는 소켓 파일을 제거하고 클러스터를 안전하게 재배포할 수 있습니다.
컨테이너화된 Red Hat Ceph Storage 배포에서 tcmu-runner 프로세스에 대한 로그 순환 지원 추가
이전에는 iSCSI가 있는 Red Hat Ceph Storage를 컨테이너에 배포할 때 tcmu-runner 프로세스에 대한 로그 회전이 없어 컨테이너의 모든 공간을 소비했습니다. 이번 릴리스에서는 tcmu-runner 프로세스에 로그 회전 지원이 추가되고 로그 파일은 주기적으로 공간 사용량을 줄입니다.
FileStore to BlueStore 마이그레이션 프로세스에서는 FileStore OSD와 BlueStore OSD가 혼합된 OSD 노드에 실패할 수 있습니다.
이전에는 3.2 미만의 Red Hat Ceph Storage 버전을 실행하는 배포에 group_vars
,host_vars
또는 인벤토리
에서 osd_objectstore
가 명시적으로 설정되지 않은 경우 배포에 FileStore OSD가 있었습니다. 파일 저장소는 Red Hat Ceph Storage 3.2 이전의 기본값입니다.
배포된 스토리지 클러스터를 Red Hat Ceph Storage 3.2로 업그레이드한 후 기존 OSD 노드에 추가된 새 OSD는 BlueStore 백엔드를 사용합니다. 이로 인해 동일한 노드에서 FileStore 및 BlueStore OSD가 혼합되었습니다. 특정 경우 파일 저장소 OSD는 BlueStore OSD와 저널 또는 DB 장치를 공유할 수 있습니다. 이러한 경우 모든 OSD를 재배포하면 파티션을 lvm 배치
또는 GPT 헤더로 전달할 수 없기 때문에 ceph-volume
오류가 발생합니다.
이번 릴리스에서는 여러 FileStore 및 BlueStore 구성을 사용하여 OSD를 마이그레이션하는 두 가지 옵션이 있습니다.
-
filestore-to-bluestore.yml
플레이북을 실행할 때 추가 변수force_filestore_to_bluestore
를true
로 설정합니다. 이 설정은 플레이북이 이미 BlueStore를 사용하는 OSD를 모두 자동으로 마이그레이션하도록 강제 적용합니다. -
force_file
to-bluestore를 실행합니다(기본값은store_to_bluestore
를 설정하지 않고 filestore-false
임). 이로 인해 플레이북이 FileStore 및 BlueStore OSD가 혼합된 노드에서 자동으로 마이그레이션을 건너뜁니다. FileStore OSD만 있는 노드를 마이그레이션합니다. 플레이북 실행이 끝나면 어떤 노드를 건너뛰었다는 보고서가 표시됩니다.
Red Hat Ceph Storage 3에서 4로 업그레이드하기 전에 OSD 마이그레이션을 위한 최상의 방법을 결정하기 위해 건너뛰었던 각 노드를 수동으로 검사합니다.
Docker 레지스트리 암호로 특수 문자를 설정할 수 있습니다.
이전에는 Docker 레지스트리 암호에 설정된 특수 문자가 올바르게 처리되지 않았습니다. 이번 릴리스에서는 Docker 레지스트리 암호에 특수 문자가 설정된 경우 Ansible 플레이북이 실패하지 않습니다. 이제 Docker 레지스트리 암호에서 특수 문자를 사용할 수 있으며 Ansible 플레이북이 예상대로 작동합니다.
Ceph-volume
Ansible 모듈은 논리 볼륨 및 볼륨 그룹에 대한 올바른 정보를 보고합니다.
이전에는 OSD에서 Red Hat Enterprise Linux 8 기반 컨테이너를 사용하여 Red Hat Enterprise Linux 7 호스트에서 ceph-volume lvm zap --destroy
명령을 적용할 때 호스트의 경우 lvm 캐시가 새로 고쳐지지 않았으며 여전히 존재하는 논리 볼륨 및 볼륨 그룹을 보고했습니다. 이번 릴리스에서는ceph_volume
Ansible 모듈을 통해 호스트에서 명령을 트리거하여 lvm 캐시가 새로 고쳐지고 논리 볼륨 및 볼륨 그룹에 대한 올바른 정보를 보고합니다.
journalctl
명령을 사용하여 Ceph 컨테이너 로그를 볼 수 있습니다.
이전 버전에서는 Ceph 컨테이너 로그가 journald에 없었습니다. Podman은 분리된 모드에서 컨테이너를 실행할 때 Kubernetes 파일을 기본 로그 드라이버로 사용하고 systemd 유형 forking을 사용했습니다. 이번 릴리스에서는 Ceph 컨테이너가 journald 로그 드라이버로 구성되며 journalctl
명령을 사용하여 로그를 사용할 수 있습니다.
Ceph Ansible은 파일 및 디렉터리 소유권 값을 nobody:nobody
로 설정합니다.
이전에는 Ceph Ansible에서 파일 및 디렉터리 소유권 값을 root:root
로 설정했습니다. 이로 인해 alertmanager
및 prometheus
서비스에 대한 권한 문제가 발생했습니다.
이번 릴리스에서는 Ceph Ansible에서 소유권을 nobody:nobody
로 설정합니다. 이렇게 하면 권한 문제가 제거됩니다.