2.9. Ceph BlueStore
BlueStore
는 Ceph의 현재 스토리지 구현입니다. k/v 데이터베이스에 대해 작은 파티션에서 매우 간단한 BlueFS
파일 시스템을 사용하고, 배치 그룹을 나타내는 디렉터리, 메타데이터를 나타내는 오브젝트 및 파일 XATTR을 나타내는 파일의 패러다임을 제거합니다.
BlueStore
는 다음과 같이 데이터를 저장합니다.
-
오브젝트 데이터:
BlueStore
에서 Ceph는 오브젝트를 원시 블록 장치에 직접 블록으로 저장합니다. 오브젝트 데이터를 저장하는 원시 블록 장치의 부분에는 파일 시스템이 포함되어 있지 않습니다. 파일 시스템을 생략하면 간접 계층이 제거되어 성능이 향상됩니다. 그러나BlueStore
성능 향상의 대부분은 블록 데이터베이스 및 쓰기 로그에서 가져온 것입니다. -
블록 데이터베이스:
BlueStore
에서 블록 데이터베이스는 일관성을 보장하기 위해 오브젝트 의미 체계를 처리합니다. 오브젝트의 고유 식별자는 블록 데이터베이스의 키입니다. block 데이터베이스의 값은 저장된 오브젝트 데이터, 오브젝트 배치 그룹 및 오브젝트 메타데이터를 참조하는 일련의 블록 주소로 구성됩니다. 블록 데이터베이스는 오브젝트 데이터를 저장하는 동일한 원시 블록 장치의BlueFS
파티션에 상주하거나, 일반적으로 기본 블록 장치가 하드 디스크 드라이브이고 SSD 또는 NVMe가 성능을 향상시킬 때 별도의 블록 장치에 상주할 수 있습니다.BlueStore
의 주요/값 의미 체계는 파일 시스템 XATTR의 제한으로 인해 영향을 받지 않습니다.BlueStore
는 한 디렉토리에서 다른 디렉토리로 파일을 이동하는 오버헤드 없이 블록 데이터베이스 내의 다른 배치 그룹에 개체를 빠르게 할당할 수 있습니다. block 데이터베이스는 저장된 오브젝트 데이터 및 해당 메타데이터의 체크섬을 저장할 수 있으므로 각 읽기에 대한 전체 데이터 체크섬 작업을 수행할 수 있으며 이는 비트 스러블을 감지하기 위해 주기적인 스크럽보다 효율적입니다.BlueStore
는 오브젝트를 압축할 수 있으며 블록 데이터베이스는 개체를 압축하는 데 사용되는 알고리즘을 저장할 수 있으므로 읽기 작업이 압축 해제를 위한 적절한 알고리즘을 선택하도록 합니다. -
쓰기 로그:
BlueStore
에서 쓰기 로그는 Atomicity 를 확인하고 각 트랜잭션의 모든 측면을 기록합니다.BlueStore
쓰기 로그 또는 WAL은 이 기능을 동시에 수행할 수 있습니다. BlueStore는 오브젝트 데이터를 저장하기 위해 동일한 장치에 WAL을 배포할 수 있거나 일반적으로 기본 블록 장치가 하드 디스크 드라이브이고 SSD 또는 NVMe가 성능을 향상시킬 때 다른 장치에 WAL을 배포할 수 있습니다.
참고
별도의 장치가 기본 스토리지 장치보다 빠른 경우 블록 데이터베이스 또는 쓰기 로그를 별도의 블록 장치에 저장하는 데에만 유용합니다. 예를 들어 SSD 및 NVMe 장치는 일반적으로 HDD보다 빠릅니다. 블록 데이터베이스와 WAL을 별도의 장치에 배치하면 워크로드의 차이로 인해 성능 이점이 있을 수 있습니다.