4.3. Ceph 파일 시스템

대기열된 각 작업 후 MDS 데몬에서 각 스레드의 하트비트 재설정

이전에는 스레드가 많은 작업을 수행하는 경우 오랜 시간 동안 mds_lock 을 보유했습니다. 이로 인해 다른 스레드가 리소스가 중단되고 장기간 중단되어 MDS 데몬이 시간 내에 모니터하고 클러스터에서 시작되도록 하트비트를 보고하지 못했습니다.

이번 수정으로 MDS 데몬은 대기열에 있는 각 스레드의 하트비트를 다시 설정합니다.

(BZ#2060989)

동시 조회 및 연결 해제 작업 중에 Ceph Metadata Server가 더 이상 충돌하지 않음

이전에는 코드에 배치된 어설션이 Ceph 클라이언트에서 동시 조회 및 연결 해제 작업에 도달하여 Ceph Metadata Server 충돌이 발생했습니다.

이번 수정을 통해 동시 조회 및 연결 해제 작업 중에 가정이 유효하여 Ceph 클라이언트 작업을 중단하지 않고 Ceph 클라이언트 작업을 지속적으로 제공하는 관련 위치로 어설션됩니다.

(BZ#2074162)

클라이언트가 getattr 클라이언트 요청을 생성한 직후에 보내는 경우 복제본 MDS가 더 이상 고정되지 않습니다.

이전 버전에서는 클라이언트가 복제본 MDS를 생성한 직후 getattr 클라이언트 요청을 보낸 경우 CInode 가 아직 연결되지 않았기 때문에 클라이언트가 #INODE-NUMBER 의 경로를 만들 수 있었습니다. 복제본 MDS는 auth MDS가 mdlogC_MDS_openc_finish 를 플러시할 때까지 계속 재시도하고 link_primary_inode 는 최대 5초 후에 호출되었습니다.

이번 수정을 통해 auth MDS에서 CInode 를 찾기 위해 복제본 MDS에서 mdslog 플러시 를 수동으로 트리거합니다.

(BZ#2091491)

사용자가 생성한 Ceph File System 하위 볼륨 그룹이 이제 하위 볼륨 그룹을 나열할 때 표시됩니다.

이전에는 Ceph File System(CephFS) 하위 볼륨 그룹에 사용자가 생성한 CephFS 하위 볼륨 그룹 대신 CephFS 내부 그룹이 포함되어 있었습니다.

이번 수정을 통해 CephFS 하위 볼륨 그룹 목록에서 내부 그룹이 필터링됩니다. 결과적으로 사용자가 생성한 CephFS 하위 볼륨 그룹이 표시됩니다.

(BZ#2093258)

저장된 snap-schedule가 Ceph 스토리지에서 다시 로드됨

이전에는 Ceph Manager를 다시 시작하면 Ceph 스토리지에 저장되지 않았기 때문에 보존 정책 사양이 손실되었습니다. 결과적으로 보존은 작동을 중지했습니다.

이번 수정을 통해 이제 snap-schedule에 대한 모든 변경 사항이 Ceph 스토리지에 유지되므로 Ceph Manager가 다시 시작되면 저장된 snap-schedule가 Ceph 스토리지에서 다시 로드되고 지정된 보존 정책 사양으로 다시 시작됩니다.

(BZ#2125773)

RADOS 오브젝트 삭제를 위한 API가 업데이트됨

이전 버전에서는 RADOS 오브젝트를 삭제하면 프로그램이 충돌하여 로그에 역추적이 생성되었습니다.

이번 수정으로 업그레이드 후 RADOS 오브젝트를 올바르게 제거하고 로그에 스택 추적이 덤프되지 않도록 API가 업데이트되었습니다.

(BZ#2126269)

MDS에서 손상된 모든 dentries를 저장합니다.

이전 버전에서는 메타데이터 서버(MDS)가 dentry 손상이 해당 dirfrag 에 없는 경우 dirfrag 에 대한 dentry 손상만 저장했습니다. 그 결과, 첫 번째 손상된 dentry만 손상 테이블에 저장되고 dirfrag 의 후속 손상은 무시됩니다.

이번 수정으로 MDS는 이제 손상된 모든 dentries를 올바르게 저장할 수 있습니다.

(BZ#2129968)

업그레이드 중에 ceph-mds 데몬이 더 이상 충돌하지 않음

이전에는 inode를 복구할 때 메타데이터 서버에서 잘못된 가정으로 인해 업그레이드 중에 Ceph Metadata Server 데몬(ceph-mds)이 충돌했습니다. 이로 인해 업그레이드 중에 ceph-mds 가 어설션에 도달했습니다.

이번 수정으로 inode 복구 중에 ceph-mds 가 올바른 가정을 하고 업그레이드 중에 ceph-mds 가 더 이상 충돌하지 않습니다.

(BZ#2130081)

standby-replay Metadata Server 데몬이 더 이상 예기치 않게 제거되지 않음

이전에는 Ceph Monitor에서 특정 조건에서 MDS 맵에서 standby-replay Metadata Server(MDS) 데몬이 제거되었습니다. 이로 인해 standby-replay MDS 데몬이 Metadata Server 클러스터에서 제거되어 클러스터 경고가 생성되었습니다.

이번 수정을 통해 MDS 맵에서 MDS 데몬을 제거하는 동안 Ceph Monitor에 사용된 논리에는 이제 순위를 가진 standby-replay MDS 데몬에 대한 정보가 포함됩니다. 결과적으로 standby-replay MDS 데몬이 더 이상 MDS 클러스터에서 예기치 않게 제거되지 않습니다.

(BZ#2130118)

하위 볼륨 snapshot info 명령에 더 이상 출력에 size 필드가 없습니다

이전에는 subvolume snapshot 명령의 출력에서 잘못된 스냅샷 크기를 반환했습니다. 이는 snapshot info 명령이 rstats 를 사용하여 스냅샷 크기를 추적하기 때문입니다. rstats 는 스냅샷 자체 대신 해당 하위 볼륨에서 스냅샷 크기를 추적합니다.

이번 수정을 통해 rstats 가 수정될 때까지 snapshot info 명령의 출력에서 size 필드가 제거됩니다.

(BZ#2130422)

디스크 전체 시나리오에서는 구성 파일이 더 이상 손상되지 않습니다.

이전에는 기존 구성 파일을 자르고 구성 데이터를 쓰는 데 필요한 임시 파일을 사용하지 않고 구성 파일을 디스크에 직접 작성했습니다. 이로 인해 디스크가 truncate에 성공했기 때문에 디스크가 가득 차면 구성 파일이 비어 있지만 공간 오류 없이 새 구성 데이터를 쓸 수 없었습니다. 또한 해당 하위 볼륨에 대한 모든 작업이 실패했습니다.

이번 수정을 통해 구성 데이터가 임시 구성 파일에 기록되고 원래 구성 파일로 이름이 변경되고 원래 구성 파일이 잘리지 않습니다.

(BZ#2130450)

알 수 없는 메시지의 경우 MDS를 중단하지 마십시오.

이전에는 메타데이터 서버(MDS)가 이해할 수 없는 메시지가 수신되면 중단되었습니다. 결과적으로 모든 악의적인 클라이언트가 새 유형의 메시지를 서버로 전송하여 서버를 충돌시킵니다. 악의적인 클라이언트 측에서도 이는 새 클라이언트가 서버에 새 메시지를 잘못 보내는 것과 같은 프로토콜 문제가 있을 때마다 새 클라이언트 대신 전체 시스템이 충돌할 수 있음을 의미합니다.

이번 수정을 통해 클라이언트의 알 수 없는 요청이 수신되면 MDS가 더 이상 중단되지 않고 세션을 종료하고 클라이언트를 제거합니다. 이렇게 하면 모든 악의적인 클라이언트로부터 서비스 거부와 같은 의도적인 공격으로부터 MDS 및 전체 시스템을 보호합니다.

(BZ#2130984)

이제 NFS 클라이언트의 디렉터리 목록이 NFS-Ganesha 내보내기에 대해 예상대로 작동함

이전에는 Ceph 파일 시스템(CephFS) 메타데이터 서버(MDS)가 CephFS 작업 중에 디렉터리 inode의 변경 특성 (change_attr)을 늘리지 않고 디렉터리 inode의 ctime 만 변경했습니다. 따라서 다음과 같이 가정할 때 NFS 커널 클라이언트가 readdir 캐시를 무효화하지 않습니다. CephFS에서 지원하는 NFS Ganesha 서버에서 디렉터리 inode의 잘못된 변경 속성 값을 보고하는 경우가 있기 때문입니다. 결과적으로 NFS 클라이언트는 CephFS에서 지원하는 NFS Ganesha 내보내기에 대한 오래된 디렉터리 콘텐츠를 나열했습니다.

이번 수정으로 CephFS MDS는 작업 중에 디렉터리 inode의 변경 속성을 증가시키고 NFS 클라이언트의 디렉터리 목록이 CephFS에서 지원하는 NFS Ganesha 서버 내보내기에 대해 예상대로 작동합니다.

(BZ#2135573)

CephFS가 올바른 디렉터리 액세스 권한을 갖습니다.

이전에는 잘못된 Discretionary Access Control(DAC) 관리로 인해 UID가 0 인 경우에도 디렉터리 액세스가 거부되었습니다.

이번 수정을 통해 디렉터리 사용자, 그룹 및 기타에 대한 실제 권한이 UID 0 에 대해 허용되지 않는 경우에도 디렉터리 액세스가 UID 0 에 허용됩니다. 그러면 수퍼유저 권한을 효과적으로 부여하여 UID 0에 대한 디렉터리 액세스에 대한 올바른 Ceph 파일 시스템(CephFS) 동작이 생성됩니다.

(BZ#2147460)