1.9. 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 성능 개선의 대부분은 블록 데이터베이스 및 쓰기 로그에서 비롯됩니다.
  • 블록 데이터베이스: BlueStore 에서 블록 데이터베이스는 일관성 을 보장하기 위해 오브젝트 의미 체계를 처리합니다. 오브젝트의 고유 식별자는 블록 데이터베이스의 키입니다. 블록 데이터베이스의 값은 저장된 오브젝트 데이터, 오브젝트의 배치 그룹 및 오브젝트 메타데이터를 참조하는 일련의 블록 주소로 구성됩니다. 블록 데이터베이스는 오브젝트 데이터를 저장하는 동일한 원시 블록 장치의 BlueFS 파티션에 상주하거나, 주 블록 장치가 하드 디스크 드라이브이고 SSD 또는 NVMe가 성능을 향상시킬 때 별도의 블록 장치에 상주할 수 있습니다. 블록 데이터베이스는 FileStore 에 비해 여러 개선사항을 제공합니다. 즉 BlueStore 의 키/값 의미는 파일 시스템 XATTRs의 제한으로 인한 영향을 받지 않습니다. Bluestore는 FileStore 의 경우와 같이 한 디렉토리에서 다른 디렉토리로 파일을 이동하는 오버헤드 없이 블록 데이터베이스 내의 다른 배치 그룹에 오브젝트를 빠르게 할당할 수 있습니다. Bluestore 에는 새로운 기능도 도입되었습니다. 블록 데이터베이스는 저장된 오브젝트 데이터 및 해당 메타데이터의 체크섬을 저장할 수 있으므로 각 읽기에 대한 전체 데이터 체크섬 작업을 수행할 수 있습니다. 이는 비트 로드를 감지하기 위해 주기적으로 스크럽하는 것보다 더 효율적입니다. bluestore 는 개체를 압축할 수 있으며 블록 데이터베이스는 읽기 작업에서 압축을 해제하기 위한 적절한 알고리즘을 선택하는 데 사용되는 알고리즘을 저장할 수 있습니다.
  • 쓰기 로그: BlueStore 에서 쓰기 로그는 FileStore 의 저널링 기능과 유사하게 Atomicity 를 보장합니다. FileStore 와 마찬가지로BlueStore 는 각 트랜잭션의 모든 측면을 기록합니다. 그러나 BlueStore 쓰기 로그 또는 WAL은 이 기능을 동시에 수행할 수 있으므로 FileStore 의 이중 쓰기 페널티가 제거됩니다. 결과적으로 BlueStore 는 대부분의 워크로드에 대한 쓰기 작업에서 FileStore 보다 약 두 배 빠릅니다. Bluestore는 오브젝트 데이터를 저장하기 위해 동일한 장치에 WAL을 배포하거나 기본 블록 장치가 하드 디스크 드라이브이고 SSD 또는 NVMe가 성능을 향상시킬 때 다른 장치에 WAL을 배포할 수 있습니다.
참고

별도의 장치가 주 저장 장치보다 빠른 경우에만 블록 데이터베이스 또는 미리 쓰기 로그를 별도의 블록 장치에 저장하는 데 유용합니다. 예를 들어, SSD 및 NVMe 장치는 일반적으로ECDHEs보다 빠릅니다. 블록 데이터베이스와 WAL을 별도의 장치에 배치하면 워크로드의 차이로 인해 성능 이점을 얻을 수 있습니다.