Ceph is open-source, software-defined storage for block, file, and object data. It separates data from the physical storage hardware through a software layer. This lets a cluster scale across standard hardware and handle failures without using a separate storage system for each data type. Because it runs on standard hardware, its capital and operating costs stay tied to the price of that hardware instead of specialized storage equipment.
Common uses include private cloud infrastructure, OpenStack, Kubernetes, container workloads, large data sets, media storage, and private alternatives to public cloud storage.
Parts of a Ceph cluster
A Ceph cluster uses several types of daemons:
- Cluster monitors (
ceph-mon) keep the cluster map, configuration, authentication data, data placement information, and the state of active or failed nodes. - Managers (
ceph-mgr) collect runtime metrics, provide dashboard features, and connect the cluster to external monitoring systems. - Object storage devices (
ceph-osd) store the data and handle replication, erasure coding, recovery, and rebalancing. An OSD can be viewed as a share of CPU and RAM together with its SSD or HDD. - RADOS Gateways (
ceph-rgw) provide Swift and S3 object storage APIs over HTTP or HTTPS. - Metadata servers (
ceph-mds) map Ceph File System filenames and directories to RADOS objects and provide POSIX file access. - iSCSI Gateways (
ceph-iscsi) provide iSCSI targets for workloads such as VMware and Windows Server.
Ceph stores data as objects inside logical pools. A cluster can have several pools with different performance or capacity settings. Pools are divided into placement groups so the system can scale, rebalance, and recover efficiently. The CRUSH algorithm chooses the placement group for an object and the OSDs that store it.
Ceph features
- Thin provisioning for block storage
- Partial and complete reads and writes
- Atomic transactions
- Replication and erasure coding
- Snapshot history, cloning, and layering
- POSIX file system semantics
- Object-level key-value mappings
- Swift and AWS S3 compatible object APIs