2.6. ObjectStore インターフェース
Objectstore
は、OSD の raw ブロックデバイスに低レベルのインターフェースを提供します。クライアントがデータの読み取りまたは書き込みを行うと、ObjectStore
インターフェースと対話します。Ceph 書き込み操作は、基本的に ACID トランザクションです。つまり、原子性、一貫性、分離、および 耐久性 を提供します。ObjectStore
は、トランザクション
が 原子性 を提供するために、オールオアナッシングになるようにします。ObjectStore
は、オブジェクトセマンティクスも処理します。Overview セクションにあるように、ストレージクラスターに保存されているオブジェクトには、一意の識別子、オブジェクトデータ、およびメタデータがあります。したがって、ObjectStore
は Ceph オブジェクトセマンティクスが正しいことを確認して 整合性
を提供します。ObjectStore
は、書き込み操作で Sequencer
を呼び出して ACID トランザクションの 分離 部分も提供し、Ceph 書き込み操作が順番に実行されるようにします。これとは対照的に、OSD のレプリケーションまたはイレイジャーコーディング機能は ACID トランザクションの Durability コンポーネントを提供します。ObjectStore
は、ストレージメディアへの低レベルのインターフェースであるため、パフォーマンスの統計も提供します。
Ceph は、データを保管するための具体的な方法を実装します。
- FileStore: オブジェクトデータを保存するファイルシステムを使用した実稼働グレードの実装。
- BlueStore: オブジェクトデータを保存するために raw ブロックデバイスを使用した実稼働クラスの実装。
- Memstore: RAM で読み取り/書き込み操作を直接テストするための開発者の実装。
- K/V Store: Ceph がキー/値データベースを使用する内部実装。
通常、管理者は FileStore
および BlueStore
にのみ対応するため、以下のセクションではこれらの実装についてのみ詳しく説明します。
2.6.1. FileStore
FileStore
は Ceph の元のストレージ実装の 1 つで、最も広く使用されている実装です。Ceph プロジェクトは 2004 年に開始した場合、Ceph はストレージのハードディスクドライブのみに依存します。これは、ソリッドステートドライブまたは PCI 表現を介した不揮発性メモリーへの有線性もありませんでした。FileStore
は、raw ブロックデバイスと直接対話するのではなく、ファイルシステム(通常は xfs
)と対話します。ObjectStore
がオブジェクトのセマンティクスを処理して FileStore
に渡すと、FileStore
は配置グループをディレクトリー、オブジェクトをファイルとして扱い、メタデータを XATTR または omap
エントリーとして扱います。
![FileStore](https://access.redhat.com/webassets/avalon/d/Red_Hat_Ceph_Storage-3-Architecture_Guide-ja-JP/images/c9efb096b16f0adea163e8fc72e8a060/Ceph_Architecture-Guide_378927_1017_02.png)
FileStore
は、オープンソースのファイルシステムのセマンティクスを活用し、別のドライブでジャーナルトランザクションを使用する利点を提供します。FileStore には
不利な点もあります。FileStore
の欠点の 1 つは、Ceph 書き込み操作は基本的に ACID トランザクションであることです。原子性 を実現するため、Ceph FileStore
はデータを書き込む前に すべて
のトランザクションをジャーナル化します。データのジャーナリングと書き込みに同じドライブを使用する場合は、書き込みレイテンシーが大きくなり、書き込みペナルティーが発生します。開発者は、トランザクションがあるのにコピーオンライトセマンティクスがあり、データを同時に書き込む可能性があるため、btrfs
ファイルシステムのフォーマットが最終的にデフォルトのファイルシステムフォーマットであると見なしています。ただし、btrfs
は、実稼働システムの Ceph プロジェクトの信頼性要件を満たさない。したがって、FileStore
は通常 btrfs
の代わりに ext4
ファイルシステムおよび xfs
ファイルシステムを使用します。
ext4
の短所の 1 つは、XATTRs(約 4k)のストレージが非常に制限されていることです。したがって、xfs
は FileStore
の推奨ファイルシステムになりました。これは、特に約 64k の XATR のストレージが多いためです。ただし、64k は、大規模なサムネイル画像を持つ可能性のあるムービルの図など、大規模なメタデータを必要とするオブジェクトの制限です。ObjectStore
および FileStore
は ObjectMap
または omap
で拡張されました。
Ceph の商用サポートが 2012 で起動されると、SSD は引き続き高価でした。ただし、SSD ドライブでジャーナル書き込み操作を実行し、高速 SAS ハードディスクドライブにオブジェクトデータを保存する機能を使用すると、高スループットおよび高 I/o ワークロードのパフォーマンス特性が提供されます。SSD へのジャーナリングによりパフォーマンスが大幅に向上しましたが、xfs
は引き続きトランザクションを書き込んでから書き込んでいました。そのため、SSD でペナルティーが低くしても、FileStore
では 2 回書き込みペナルティーが維持されます。
FileStore
は配置グループをディレクトリーとして処理します。初期クラスターの場合、問題の有無はほとんど表示されません。ただし、Ceph クラスターは拡張する傾向があります。管理者は新規ノードおよび OSD を追加する際に、配置グループの数を増やす必要があります。FileStore
では、オブジェクトデータはディレクトリー内のファイルとして、配置グループを表すディレクトリーに置かれます。したがって、配置グループの数を増やす場合は、ファイル内のオブジェクトデータは異なるディレクトリーに移動する必要があります。Ceph は 32 ビットのハッシュアルゴリズムを使用してオブジェクトをランダムに分散します。その一部はオブジェクトのファイル名に組み込まれています。これは、データをアドレス指定および再分配するための非効率的なアプローチです。