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.