process가 파일을 open하면, client가 MDS cluster에 request를 전송. mds는 file name을
프로세스가 파일을 열 때, 클라이언트는 MDS(Metadata Server) 클러스터에 요청을 보냄.
MDS는 파일 시스템 계층 구조를 탐색해 파일 이름을 파일 inode로 변환.
현재 capability는 클라이언트가 읽기, 읽기 캐시, 쓰기, 쓰기 버퍼를 사용할 수 있는지 제어하는 네 가지 비트를 포함하며, 향후 클라이언트가 데이터를 읽거나 쓸 권한이 있음을 OSD에 증명할 수 있는 보안 키도 포함될 예정입니다(현재 프로토타입에서는 모든 클라이언트를 신뢰).
파일 열기 이후, MDS는 파일 일관성을 유지하고 파일 시스템의 동작 규칙을 보장하기 위해 파일 입출력 작업에 직접적으로 관여하지 않고, 클라이언트의 권한(capabilities)만 관리.
Ceph는 다양한 스트라이핑(striping) 전략을 일반화하여 파일 데이터를 일련의 오브젝트로 매핑. - 파일 할당 메타데이터(file allocation metadata)가 필요 없도록, 오브젝트 이름은 파일의 inode 번호와 스트라이프 번호를 단순히 조합하여 생성
생성된 오브젝트의 복제본은 CRUSH(글로벌 매핑 함수, 5.1절 참고)를 사용해 OSD에 할당됩니다.
예를 들어, 하나 이상의 클라이언트가 파일을 읽기 목적으로 열 경우, MDS는 파일 내용을 읽고 캐싱할 수 있는 capability를 부여.
클라이언트는 inode 번호, 레이아웃(layout), 파일 크기를 활용하여 파일 데이터를 포함하는 모든 오브젝트의 이름을 생성하고, OSD 클러스터에서 데이터를 직접 읽어옴.
클라이언트가 파일을 쓰기 목적으로 열면, MDS는 데이터를 버퍼링하며 쓸 수 있는 capability를 부여합니다. 클라이언트는 파일 내 임의의 오프셋에서 생성한 데이터를 적절한 OSD의 적절한 오브젝트에 바로 기록합니다. 파일을 닫을 때, 클라이언트는 capability를 반납하고, MDS에 새 파일 크기(가장 큰 오프셋)를 전달합니다. 이를 통해 MDS는 데이터가 포함될 수 있는 오브젝트의 범위를 다시 정의.