ObjectStore
ObjectStore provides a low-level interface to an OSD’s raw block device. When a
client reads or writes data, it interacts with the ObjectStore interface. Ceph
write operations are essentially ACID transactions: that is, they provide Atomicity,
Consistency, Isolation and Durability. ObjectStore ensures
that a Transaction is all-or-nothing to provide Atomicity. The
ObjectStore also handles object semantics. An object stored in the storage cluster
has a unique identifier, object data and metadata. So ObjectStore provides
Consistency by ensuring that Ceph object semantics are correct.
ObjectStore also provides the Isolation portion of an ACID transaction by
invoking a Sequencer on write operations to ensure that Ceph write operations occur
sequentially. In contrast, an OSDs replication or erasure coding functionality provides the
Durability component of the ACID transaction. Since ObjectStore is a
low-level interface to storage media, it also provides performance statistics.
Ceph implements several concrete methods for storing data:
- BlueStore
-
A production grade implementation using a raw block device to store object data.
- Memstore
-
A developer implementation for testing read/write operations directly in RAM.
- K/V Store
-
An internal implementation for Ceph’s use of key/value databases.
Since administrators will generally only address BlueStore, the following
sections will only describe those implementations in greater detail.