Object Storage & Backups
Distributed storage system providing object, block, and file storage in one unified system
Single cluster provides object, block, and file storage with consistent management and monitoring
Scale from gigabytes to exabytes by simply adding more nodes without downtime or data migration
Automatically detects failures, replicates data, and rebalances cluster without manual intervention
Distributed architecture with CRUSH algorithm ensures high availability and fault tolerance
Native support for RBD block storage, CephFS filesystem, and S3/Swift object storage APIs
Snapshots, cloning, thin provisioning, erasure coding, tiering, and multi-site replication
# Update system
sudo apt update && sudo apt upgrade -y
# Set hostnames (on each node)
sudo hostnamectl set-hostname ceph-node1 # ceph-node2, ceph-node31. Install Cephadm (Bootstrap Node):# Install dependencies
sudo apt install -y python3 python3-pip curl
# Download cephadm
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm
chmod +x cephadm
# Install cephadm
sudo ./cephadm add-repo --release quincy
sudo ./cephadm install2. Bootstrap Cluster (Node 1):# Bootstrap first node
sudo cephadm bootstrap --mon-ip 10.0.0.10 --cluster-network 10.0.1.0/24
# Save output - contains dashboard URL and admin password
# Dashboard: https://ceph-node1:8443/
# Username: admin
# Password: <generated-password>3. Add Additional Nodes:# Copy SSH key to other nodes
ssh-copy-id root@ceph-node2
ssh-copy-id root@ceph-node3
# Add hosts to cluster
sudo ceph orch host add ceph-node2 10.0.0.11
sudo ceph orch host add ceph-node3 10.0.0.12
# Label nodes for specific roles
sudo ceph orch host label add ceph-node1 mon
sudo ceph orch host label add ceph-node2 mon
sudo ceph orch host label add ceph-node3 mon4. Deploy MON and MGR Daemons:# Deploy monitors (3 for quorum)
sudo ceph orch apply mon --placement="3 ceph-node1 ceph-node2 ceph-node3"
# Deploy managers (2 for HA)
sudo ceph orch apply mgr --placement="2 ceph-node1 ceph-node2"5. Add OSD Storage:# List available devices
sudo ceph orch device ls
# Add all available devices as OSDs
sudo ceph orch apply osd --all-available-devices
# Or add specific devices
sudo ceph orch daemon add osd ceph-node1:/dev/sdb
sudo ceph orch daemon add osd ceph-node2:/dev/sdb
sudo ceph orch daemon add osd ceph-node3:/dev/sdb6. Deploy MDS for CephFS (Optional):# Create CephFS
sudo ceph fs volume create cephfs --placement="2 ceph-node1 ceph-node2"7. Enable Dashboard:# Enable dashboard module
sudo ceph mgr module enable dashboard
# Create dashboard admin user
sudo ceph dashboard ac-user-create admin <password> administrator
# Check dashboard status
sudo ceph mgr services8. Create RBD Pool for Block Storage:# Create replicated pool (3 replicas)
sudo ceph osd pool create rbd 64 64
# Enable RBD application
sudo ceph osd pool application enable rbd rbd
# Initialize pool
sudo rbd pool init rbd9. Verify Cluster Health:# Check cluster status
sudo ceph -s
# Check OSD status
sudo ceph osd status
# Check MON status
sudo ceph mon stat
# Create replicated pool (size=3, min_size=2)
ceph osd pool create mypool 128 128
ceph osd pool set mypool size 3
ceph osd pool set mypool min_size 2
# Create erasure-coded pool (k=4, m=2)
ceph osd erasure-code-profile set myprofile k=4 m=2
ceph osd pool create mypool-ec 128 128 erasure myprofile2. RBD Block Device Management:# Create RBD image (10GB)
rbd create mypool/myimage --size 10G
# List images
rbd ls mypool
# Map image to local device
sudo rbd map mypool/myimage
# Format and mount
sudo mkfs.ext4 /dev/rbd0
sudo mount /dev/rbd0 /mnt/ceph-disk
# Create snapshot
rbd snap create mypool/myimage@snap1
# Clone snapshot
rbd snap protect mypool/myimage@snap1
rbd clone mypool/myimage@snap1 mypool/clone13. CephFS Mount (Client):# Install ceph-fuse
sudo apt install ceph-fuse
# Get admin keyring
sudo ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs_data'
# Mount CephFS
sudo ceph-fuse -n client.cephfs /mnt/cephfs
# Or kernel mount
sudo mount -t ceph ceph-node1:6789:/ /mnt/cephfs -o name=cephfs,secret=<key>4. RADOS Gateway (S3/Swift):# Deploy RGW
ceph orch apply rgw myrgw --placement="2 ceph-node1 ceph-node2" --port=8080
# Create S3 user
radosgw-admin user create --uid=s3user --display-name="S3 User" --access-key=ACCESSKEY --secret-key=SECRETKEY
# Test with s3cmd
s3cmd --access_key=ACCESSKEY --secret_key=SECRETKEY --host=http://ceph-node1:8080 ls5. Performance Tuning:# Set scrub intervals (reduce I/O impact)
ceph osd set noscrub
ceph osd set nodeep-scrub
# Adjust backfill and recovery
ceph tell 'osd.*' injectargs '--osd-max-backfills 1'
ceph tell 'osd.*' injectargs '--osd-recovery-max-active 1'
# Enable RBD caching
rbd config global set rbd_cache true
rbd config global set rbd_cache_size 67108864 # 64MB6. Monitoring:# Check cluster health
ceph health detail
# Monitor real-time stats
ceph -w
# Check pool usage
ceph df
# Check OSD performance
ceph osd perf
# View PG statistics
ceph pg statBest Practices:Get started in minutes with our simple VPS deployment process
Deploy in about 2 minutes • Full root access • Support by ticket and email