Ceph
オブジェクトストレージ
Cephは分散オブジェクトストレージ実装している。Cephのソフトウェア・ライブラリが提供するクライアント・アプリケーションlibradosを利用することで、RADOS（reliable autonomic distributed object store; 信頼性の高い自律分散オブジェクトストア）と呼ばれるCeph独自のオブジェクトベースのストレージ・システムに直接アクセスすることができる。また、libradosは、RADOSブロックデバイス (RBD)、RADOS Gateway、Ceph File System (CephFS) などのCephの主要インタフェースの基盤を提供している。
libradosソフトウェアライブラリは、C、C++、Java、PHP、およびPythonでのアクセスを提供する。RADOS Gatewayは、RADOSオブジェクトストアを、ネイティブのAmazon S3 APIとOpenStack Swift APIの両方から利用できるRESTfulインタフェースとして公開する。
ブロックストレージ
Cephのオブジェクトストレージシステムは、Cephをシン・プロビジョニングされたブロックデバイスとしてマウントすることを可能にする。アプリケーションがブロックデバイスを使用してCephにデータを書き込むと、Cephは自動的にデータをストライプ化し、クラスタ全体に複製する。また、CephのRADOS Block Device (RBD) は、Kernel-based Virtual Machines (KVM) と統合されている。
CephのRBDインタフェースは、libradosインタフェースとCephFSファイルシステムを提供するのと同じCephオブジェクトストレージシステムを利用しており、ブロックデバイスのイメージをオブジェクトとして保存する。RBDはlibrados上に構築されているため、RBDは、libradosが持つ読み取り専用スナップショットの作成や、スナップショットの復元などの機能を継承している。クラスタ全体でイメージをストライピングすることで、大きなブロックデバイスイメージの読み取りアクセス性能を向上させている。
ブロックデバイスは仮想化できるため、Apache CloudStack、OpenStack、OpenNebula、Ganeti、Proxmox Virtual Environmentなどの仮想化プラットフォームにおいて、仮想マシンにブロックストレージを提供できる。
ファイルシステム
Cephのファイルシステム (CephFS) は、オブジェクトストレージとブロックデバイスインタフェースを提供するのと同じCephのオブジェクトストレージシステム上で動作する。Cephメタデータサーバクラスタは、ファイルシステムのディレクトリやファイル名を、RADOSクラスタ内に保存されているオブジェクトにマッピングするサービスを提供する。メタデータサーバクラスタは、拡大・縮小することができ、ファイルシステムを動的にリバランスしてクラスタホスト間でデータを均等に分散させることができる。この機能のおかげで、高い性能が維持され、クラスタ内の特定のホストに大きな負荷がかかるのを防ぐことが保証される。
クライアントは、Linuxカーネルクライアントを使用して、POSIX互換ファイルシステムとしてマウントする。2010年3月19日、リーナス・トーバルズは、2010年5月16日にリリースされたLinuxカーネルバージョン2.6.34にCephクライアントをマージした。また、古いFUSEベースのクライアントも利用可能である。サーバは、通常のUnixデーモンとして動作する。
語源
「Ceph」という名前は、タコを含む軟体動物のクラスである「頭足類 (cephalopod) 」の略語である。ロゴが強調しているように、この名前は、分散システムを示唆するタコの非常に並列的な振る舞いから来ている。また、「サミー」という名前のバナナナメクジがCephが誕生したUCSCのマスコットであるため選ばれた。タコもバナナナメクジも、ともに軟体動物であり、頭足類である。