2.10. Ceph BlueStore
bluestore
는 Ceph를 위한 차세대 스토리지 구현입니다. 스토리지 장치 시장에는 이제 SSD 또는 PCI Express 또는 NVMe를 통한 SSD 및 비휘발성 메모리가 포함되어 있으므로 Ceph에서 사용하는 것은 FileStore
스토리지 구현의 몇 가지 제한 사항을 보여줍니다. FileStore
는 SSD 및 NVMe 스토리지를 원활하게하기 위해 많은 개선사항을 가지고 있지만 다른 제한 사항은 유지됩니다. 그 중에서 배치 그룹을 늘리면 컴퓨팅 비용이 많이 들고 이중 쓰기 페널티는 그대로 유지됩니다. 반면, FileStore
는 블록 장치의 파일 시스템과 상호 작용하며 BlueStore
는 이러한 간접성을 제거하고 개체 스토리지에 원시 블록 장치를 직접 사용합니다. bluestore
는 k/v 데이터베이스에 대해 작은 파티션에서 매우 가벼운 BlueFS
파일 시스템을 사용합니다. bluestore
는 배치 그룹, 오브젝트 및 파일 XATTR을 나타내는 파일인 배치 그룹을 나타내는 디렉터리의 패러다임을 제거합니다. 또한 bluestore는 FileStore
의 이중 쓰기 저하를 제거하므로 쓰기 작업은 대부분의 워크로드에서
와 거의 두 배 빠릅니다.
BlueStore
bluestore는 다음과 같은 데이터를 저장합니다
.
-
오브젝트 데이터:
BlueStore
에서 Ceph는 오브젝트를 원시 블록 장치에 직접 블록으로 저장합니다. 오브젝트 데이터를 저장하는 원시 블록 장치의 일부에는 파일 시스템이 포함되어 있지 않습니다. 파일 시스템 해제는 간접적인 계층을 제거하여 성능을 향상시킵니다. 그러나 대부분의BlueStore
성능 개선 사항은 블록 데이터베이스와 write-ahead 로그에서 비롯됩니다. -
블록 데이터베이스:
BlueStore
에서 블록 데이터베이스는 일관성 을 보장하기 위해 개체의 의미를 처리합니다. 오브젝트의 고유 식별자는 블록 데이터베이스의 키입니다. 블록 데이터베이스의 값은 저장된 오브젝트 데이터, 개체의 배치 그룹 및 개체 메타데이터를 참조하는 일련의 블록 주소로 구성됩니다. 블록 데이터베이스는 오브젝트 데이터를 저장하는 동일한 원시 블록 장치의BlueFS
파티션에 있거나 일반적으로 기본 블록 장치가 하드 디스크 드라이브이고 SSD 또는 NVMe가 성능을 향상시킬 때 별도의 블록 장치에 존재할 수 있습니다. 블록 데이터베이스는FileStore
에 비해 여러 개선사항을 제공합니다. 즉BlueStore
의 키/값 의미는 파일 시스템 XATTR의 제한으로 인한 영향을 받지 않습니다.bluestore는
의 경우와 같이 한 디렉터리에서 다른 디렉터리로 파일을 이동하는 오버헤드 없이 블록 데이터베이스 내의 다른 배치 그룹에 오브젝트를 빠르게 할당할 수 있습니다.FileStore
bluestore
에는 새로운 기능도 도입되었습니다. 블록 데이터베이스는 저장된 오브젝트 데이터 및 해당 메타데이터의 체크섬을 저장할 수 있으므로 각 읽기에 대한 전체 데이터 체크섬 작업을 허용하므로 비트 회전을 감지하는 데 주기적인 스크럽보다 효율적입니다.bluestore
는 개체를 압축할 수 있으며 블록 데이터베이스는 개체를 압축하는 데 사용되는 알고리즘을 저장할 수 있으며 읽기 작업에서 압축을 풀기 위한 적절한 알고리즘을 선택합니다. -
write-ahead Log:
BlueStore
에서 write-ahead 로그는FileStore
의 저널링 기능과 유사하게 Atomicity 를 보장합니다.FileStore
와 마찬가지로BlueStore
는 각 트랜잭션의 모든 측면을 기록합니다. 그러나BlueStore
쓰기 로그 또는 WAL은 이 기능을 동시에 수행할 수 있으므로FileStore
의 이중 쓰기 저하가 제거됩니다. 결과적으로BlueStore
는 대부분의 워크로드에 대한 쓰기 작업에FileStore
만큼 거의 두 배 빠릅니다. bluestore는 개체 데이터를 저장하기 위해 동일한 장치에 WAL을 배포하거나 일반적으로 기본 블록 장치가 하드 디스크 드라이브이고 SSD 또는 NVMe가 성능을 향상시킬 때 다른 장치에 WAL을 배포할 수 있습니다.
별도의 장치가 기본 스토리지 장치보다 빠른 경우 블록 데이터베이스 또는 미리 쓰기 로그를 별도의 블록 장치에 저장하는 것이 유용합니다. 예를 들어 SSD 및 NVMe 장치는 일반적으로 HDD보다 빠릅니다. 블록 데이터베이스와 별도의 장치에 WAL을 배치하면 워크로드의 차이로 인해 성능상의 이점이 있을 수 있습니다.