4.9. Ceph File System 스냅샷 고려 사항
스토리지 관리자는 Ceph File System(CephFS) 스냅샷을 관리하는 데이터 구조, 시스템 구성 요소 및 고려 사항을 이해할 수 있습니다.
스냅샷은 생성 시점의 파일 시스템의 변경 불가능한 뷰를 생성합니다. 디렉터리 내에 스냅샷을 생성할 수 있으며, 해당 디렉터리의 파일 시스템에 있는 모든 데이터를 다룹니다.
4.9.1. Ceph 파일 시스템의 스냅샷 메타데이터 저장
스냅샷 디렉터리 항목 및 해당 inode의 스토리지는 스냅샷 당시에 있는 디렉터리의 일부로 인라인으로 수행됩니다. 모든 디렉터리 항목에는 유효한 첫 번째 및 마지막 snapid
가 포함됩니다.
4.9.2. Ceph 파일 시스템 스냅샷 쓰기
Ceph 스냅샷은 클라이언트에 따라 스냅샷 및 플러시 스냅샷 데이터 및 메타데이터에 적용되는 작업을 OSD 및 MDS 클러스터로 결정하는 데 도움이 됩니다. 스냅샷 쓰기 처리는 스냅샷이 파일 계층 구조의 하위 트리에 적용되며 스냅샷 생성이 언제든지 발생할 수 있기 때문에 관련 프로세스입니다.
동일한 스냅샷 세트에 속하는 파일 계층 구조의 일부는 단일 SnapRealm
에 의해 참조됩니다. 각 스냅샷은 디렉토리 아래에 중첩된 하위 디렉터리에 적용되며, 영역에 포함된 모든 파일이 동일한 스냅샷 세트를 공유하는 여러 개의 "realms"로 파일 계층을 나눕니다.
Ceph Metadata Server(MDS)는 각 inode의 기능(caps)을 발행하여 inode 메타데이터 및 파일 데이터에 대한 클라이언트 액세스를 제어합니다. 스냅샷을 생성하는 동안 클라이언트는 해당 시점에서 파일 상태를 설명하는 기능을 사용하여 inode에서 더티 메타데이터를 확보합니다. 클라이언트가 ClientSnap
메시지를 수신하면 로컬 SnapRealm
과 해당 링크를 특정 inode에 업데이트하고 inode에 대한 capSnap
을 생성합니다. 기능 백백은 capSnap
을 플러시하고, 더티 데이터가 있는 경우 스냅
샷이 OSD에 플러시될 때까지 새 데이터 쓰기를 차단하는 데 사용됩니다.
MDS는 플러시를 위한 일상적인 프로세스의 일부로 스냅샷 관련 디렉터리 항목을 생성합니다. MDS는 쓰기 프로세스가 플러시될 때까지 메모리 및 저널에 고정되어 있는 미결제 데이터를 사용하여 디렉터리 항목을 유지합니다.
추가 리소스
4.9.3. Ceph 파일 시스템 스냅샷 및 하드 링크
Ceph는 여러 하드 링크가 있는 inode를 더미 글로벌 SnapRealm
으로 이동합니다. 이 더미 SnapRealm
은 파일 시스템의 모든 스냅샷을 다룹니다. 새 스냅샷은 inode의 데이터를 보존합니다. 이 보존된 데이터는 inode의 모든 링크에 대한 스냅샷을 다룹니다.
4.9.4. Ceph 파일 시스템의 스냅샷 업데이트
스냅샷 업데이트 프로세스는 스냅샷을 삭제하는 프로세스와 유사합니다.
상위 SnapRealm
에서 inode를 제거하면 SnapRealm
이 아직 존재하지 않는 경우 Ceph는 이름이 변경된 inode에 대한 새 SnapRealm
을 생성합니다. Ceph는 원래 상위 SnapRealm
에 적용되는 스냅샷 ID를 새 SnapRealm
의 past_parent_snaps
데이터 구조에 저장한 다음 스냅샷을 생성하는 것과 유사한 프로세스를 따릅니다.
추가 리소스
- 스냅샷 데이터 구조에 대한 자세한 내용은 Red Hat Ceph Storage 파일 시스템 가이드의 Ceph 파일 시스템 스냅샷 데이터 구조를 참조하십시오.
4.9.5. Ceph 파일 시스템 스냅샷 및 여러 파일 시스템
스냅샷은 여러 파일 시스템에서 제대로 작동하지 않는 것으로 알려져 있습니다.
네임스페이스와 단일 Ceph 풀을 공유하는 여러 파일 시스템이 있는 경우 스냅샷은 충돌하며 하나의 스냅샷을 삭제하면 동일한 Ceph 풀을 공유하는 다른 스냅샷에 필요한 파일 데이터가 누락됩니다.
4.9.6. Ceph File System 스냅샷 데이터 구조
Ceph 파일 시스템(CephFS)은 다음과 같은 스냅샷 데이터 구조를 사용하여 데이터를 효율적으로 저장합니다.
SnapRealm
-
SnapRealm
은 파일 계층 구조에서 새 시점에서 스냅샷을 만들 때마다 또는 스냅샷된 inode를 상위 스냅샷 외부에서 이동할 때마다 생성됩니다. 단일SnapRealm
은 동일한 스냅샷 세트에 속하는 파일 계층 구조의 부분을 나타냅니다.SnapRealm
에는 스냅샷의 일부인sr_t_srnode
및inodes_with_caps
가 포함되어 있습니다. sr_t
-
sr_t
는 디스크상의 스냅샷 메타데이터입니다. 여기에는 시퀀스 카운터, 타임 스탬프, 관련 스냅샷 ID 목록 및past_parent_snaps
목록이 포함됩니다. SnapServer
-
SnapServer
는 스냅샷 ID 할당, 스냅샷 삭제 및 파일 시스템에서 누적 스냅샷 목록을 유지 관리합니다. 파일 시스템에는SnapServer
인스턴스 하나만 있습니다. SnapContext
SnapContext
는 스냅샷 시퀀스 ID(snapid) 및 개체에 대해 현재 정의된 모든 스냅샷 ID로 구성됩니다. 쓰기 작업이 발생하면 Ceph 클라이언트에서 오브젝트에 존재하는 스냅샷 세트를 지정하는SnapContext
를 제공합니다. Ceph는SnapContext
목록을 생성하기 위해SnapRealm
과 관련된 snapids와past_parent_snaps
데이터 구조를 결합합니다.파일 데이터는 RADOS 자체 관리 스냅샷을 사용하여 저장됩니다. 자체 관리 스냅샷에서 클라이언트는 각 쓰기에서 현재
SnapContext
를 제공해야 합니다. 클라이언트는 파일 데이터를 Ceph OSD에 작성할 때 올바른SnapContext
를 사용해야 합니다.SnapClient
의 유효 스냅샷은 오래된 snapid를 필터링합니다.SnapClient
-
SnapClient
는SnapServer
및 캐시 누적 스냅샷과 로컬에서 통신하는 데 사용됩니다. 각 메타데이터 서버(MDS) 순위에는SnapClient
인스턴스가 있습니다.