Saifudin Badani


Learning Ceph by Building a Three-Node Lab

Started: 1st Oct 2026 · Last updated: 5th Oct 2026 · Lab status: three nodes healthy; storage experiments in progress

Why I started

Ceph in my own words

I've worked in a warehouse in my previous life so I will explain CEPH using that analogy. Imagine a big datacentre that datacentre is like a warehouse where products are kept, moved, have labels, each product has designated section, if the warehouse is efficient then product is kept at its designated place but come on if that's was the case then we wouldnt see problem of lost parcels. Okay okay thrown that imagination in bin, another one..imagine data as products and disks as racks in a warehouse, now each product needs a place and depending on importance of product n number of copies are made which is decided by owner of warehouse.

CEPH is an open-source distributed storage system that handles this kind of placement of data. CEPH uses this algorithm called CRUSH (Controlled Replication Under Scalable Hashing) which lets customers(clients) find data location directly instead of querying a central service which then goes to find data.

The storage interfaces

CEPH offers 3 ways of storing data.

RADOS: It is the object store which sits at bottom layer and all interfaces are made on top of this.

The parts I needed to understand

A CEPH cluster is made of daemons that run on hosts.

My lab design

For this lab I chose 3 rocky linux 9 VMs, connected to a private switch called CephLab. Each VM has a 20 GB OS disk and three 20 GB virtual disks for Ceph data.

VM CephLab address CPU RAM Data disks
ceph1 192.168.100.11 2 vCPU 6 GB 3 × 20 GB
ceph2 192.168.100.12 2 vCPU 6 GB 3 × 20 GB
ceph3 192.168.100.13 2 vCPU 6 GB 3 × 20 GB

The private switch worked for communication between the VMs, but it had no route to the internet. I found that out when package installation failed. I added a second NIC to each VM on Hyper-V’s Default Switch so they could reach package repositories.

The two NICs separate my lab traffic from internet access. They do not give Ceph separate public and cluster networks: both Ceph traffic types currently use 192.168.100.0/24. I understood that distinction only after building the lab.

Milestones completed

4/10/2026 6pm

  1. VM, disk, and network setup
  2. SSH, package access, and time synchronisation
  3. Bootstrap and adding the other hosts
  4. OSD deployment and health verification

Current verified state

Command used ceph -s

Ceph status showing three monitors in quorum, nine OSDs up and in, and HEALTH_OK

5/10/2026 2:00pm - Object storage and my first failure test

Deploying RGW

RGW pool lists before the bucket data pool appears

My first S3 round trip

Ceph pool configuration and storage usage after creating the S3 bucket

Understanding the storage usage

Stopping one OSD

Ceph watch output recording osd.0 going down and placement group health warnings

Ceph health detail listing active, undersized and degraded placement groups

Ceph status with one OSD down, 145 placement groups undersized and 94 degraded

Ceph OSD tree showing osd.0 down on ceph1 while the other eight OSDs remain up

S3 download during the OSD outage and matching SHA-256 hashes for file1.bin and check1.bin

Restarting it and watching recovery

Restart command for osd.0 followed by HEALTH_OK and 449 active and clean placement groups