2.9. Ceph BlueStore
BlueStore
は、Ceph の現在のストレージ実装です。k/v データベースの小さなパーティション上で非常に軽量な BlueFS
ファイルシステムを使用し、配置グループを表すディレクトリー、オブジェクトを表すファイル、メタデータを表すファイル XATTR のパラダイムを排除します。
BlueStore
は以下のようにデータを保存します。
-
オブジェクトデータ:
BlueStore
では、Ceph はオブジェクトを raw ブロックデバイスに直接ブロックとして保存します。オブジェクトデータを格納する raw ブロックデバイスの部分にはファイルシステムが含まれません。ファイルシステム省略により間接的な層が排除され、パフォーマンスが向上します。ただし、BlueStore
のパフォーマンスのほとんどは、ブロックデータベースと write-ahead ログにより向上されます。 -
ブロックデータベース:
BlueStore
では、整合性 を保証するために、ブロックデータベースがオブジェクトのセマンティクスを処理します。オブジェクトの一意の ID はブロックデータベースのキーです。ブロックデータベースの値は、格納したオブジェクトデータ、オブジェクトの配置グループ、およびオブジェクトメタデータを参照する一連のブロックアドレスで構成されます。ブロックデータベースは、オブジェクトデータを格納する同じ raw ブロックデバイス上のBlueFS
パーティションに存在する場合もあれば、別のブロックデバイスに存在する場合もあります。通常、ハードディスクドライブがプライマリーリブロックデバイスであり、SSD または NVMe によってパフォーマンスが向上します。BlueStore
のキー/値セマンティクスは、ファイルシステム XATTR の制限の影響を受けません。BlueStore
は、あるディレクトリーから別のディレクトリーにファイルを移動するオーバーヘッドなしで、ブロックデータベース内でオブジェクトを他の配置グループにすばやく割り当てることができます。ブロックデータベースは、保存されたオブジェクトデータとそのメタデータのチェックサムを保存できるため、読み取りごとに完全なデータチェックサム操作が可能になります。これは、ビットロットを検出するための定期的なスクラブよりも効率的です。BlueStore
はオブジェクトを圧縮でき、ブロックデータベースはオブジェクトの圧縮に使用されるアルゴリズムを保存できます。これにより、読み取り操作で解凍に適切なアルゴリズムが選択されます。 -
先行書き込みログ:
BlueStore
では、先行書き込みログによって アトミック性 が確保され、各トランザクションのあらゆる側面が記録されます。BlueStore
先行書き込みログまたは WAL は、この機能を同時に実行できます。BlueStore は、オブジェクトデータを保存するために同じデバイスに WAL をデプロイできます。または、通常、プライマリーブロックデバイスがハードディスクドライブである場合や、SSD または NVMe によってパフォーマンスが向上する場合は、WAL を別のデバイスにデプロイできます。
注記
個別のデバイスがプライマリーストレージデバイスよりも高速である場合にのみ、ブロックデータベースまたは先行書き込みログを別のブロックデバイスに保存すると便利です。たとえば、SSD デバイスおよび NVMe デバイスは通常 HDD よりも高速です。ブロックデータベースと WAL を別のデバイスに配置すると、ワークロードの違いにより、パフォーマンス上の利点があります。