1.4. Ceph 파일 시스템 제한 및 POSIX 표준
Ceph 파일 시스템은 다음과 같은 방식으로 엄격한 POSIX 의미 체계와 다릅니다.
-
클라이언트의 파일 쓰기 시도가 실패하면 쓰기 작업이 반드시 원자성되지는 않습니다. 즉, 클라이언트는
O_SYNC
플래그로 열린 파일에서write()
시스템 호출을 호출한 다음 8MB 버퍼로 시작한 다음 예기치 않게 종료되고 쓰기 작업을 부분적으로 적용할 수 있습니다. 거의 모든 파일 시스템, 심지어 로컬 파일 시스템도 이러한 동작을 가지고 있습니다. - 쓰기 작업이 동시에 발생하는 경우 오브젝트 경계를 초과하는 쓰기 작업이 반드시 원자적이지는 않습니다. 예를 들어 A writeer A writes "aa|aa" and writer B 는 동시에 "bb|bb" 를 동시에 씁니다. 여기서 "|" 는 오브젝트 경계이며 "aa|aa" 또는 "bb|bb" 대신 "aa|bb" 가 작성됩니다.
-
POSIX에는 현재 디렉토리 오프셋을 확보하고 다시 할 수 있는
tell
시스템 호출이 포함됩니다. CephFS는 언제든지 디렉터리를 조각화할 수 있으므로 디렉터리에 대한 안정적인 정수 오프셋을 반환하기 어렵습니다. 따라서 0이 아닌 오프셋에 대한 behalfdir()
및 behalfdir()dir()
시스템 호출을 호출하는 것이 자주 작동하지만 그렇게 할 수는 없습니다. 0을 오프셋하기 위해 asidedir()
을 호출하면 항상 작동합니다. 이는rewinddir()
시스템 호출과 동일합니다. -
스파스 파일은
stat()
시스템 호출의st_blocks
필드로 잘못 전파됩니다. CephFS는 할당되거나 작성된 파일의 일부를 명시적으로 추적하지 않습니다.st_blocks
필드는 항상 블록 크기로 나눠진 파일 크기의 몫으로 채워집니다. 이러한 동작은du
와 같은 유틸리티를 사용한 공간을 초과하여 발생시킵니다. -
mmap()
시스템 호출이 파일을 여러 호스트의 메모리에 매핑하면 쓰기 작업이 다른 호스트의 캐시에 일관되게 전파되지 않습니다. 즉, 페이지가 호스트 A에 캐시된 다음 호스트 B에서 업데이트되면 호스트 A 페이지가 일관되게 무효화되지 않습니다. -
CephFS 클라이언트에는 스냅샷에 액세스, 생성, 삭제, 이름 변경에 사용되는 숨겨진
.snap
디렉터리가 있습니다. 이 디렉터리는readdir()
시스템 호출에서 제외되지만 이름이 동일한 파일 또는 디렉터리를 만들려고 하는 모든 프로세스에서 오류를 반환합니다. 이 숨겨진 디렉터리의 이름은-o snapdirname=.<new_name> 옵션을 사용하거나
구성 옵션을 사용하여 마운트 시 변경할 수 있습니다.client_
snapdir
추가 리소스
- Ceph 메타데이터 서버 설치를 위해 파일 시스템 가이드 의 Ceph Orchestrator 섹션을 사용하여 MDS 서비스 관리 섹션을 참조하십시오.
- Ceph 파일 시스템을 생성하려면 Red Hat Ceph Storage 파일 시스템 가이드의 Ceph 파일 시스템배포 섹션을 참조하십시오.