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