Appendix F
Bibliography and Official Sources
This bibliography gathers every source listed in the chapters' “Sources” sections, together with general references. All links were checked in November 2026. Official project documentation is always the most current source; read the documentation for your own version before using any feature in production.
General sources#
Official Ceph documentation#
- Ceph documentation
https://docs.ceph.com/en/latest/ - Releases and release cycle
https://docs.ceph.com/en/latest/releases/ - RADOS: configuration and operations
https://docs.ceph.com/en/latest/rados/ - RBD
https://docs.ceph.com/en/latest/rbd/ - RGW
https://docs.ceph.com/en/latest/radosgw/ - CephFS
https://docs.ceph.com/en/latest/cephfs/ - cephadm
https://docs.ceph.com/en/latest/cephadm/ - Developer guide
https://docs.ceph.com/en/latest/dev/developer_guide/ - Developer docs: RGW bucket index
https://docs.ceph.com/en/latest/dev/radosgw/bucket_index/ - RGW placement and storage classes
https://docs.ceph.com/en/latest/radosgw/placement/ - RGW multisite
https://docs.ceph.com/en/latest/radosgw/multisite/
Code and community#
- Ceph source repository
https://github.com/ceph/ceph - Rook
https://rook.io/docs/rook/latest/ - Ceph blog
https://ceph.io/en/news/blog/
Foundational papers#
- Weil et al., Ceph, OSDI 2006
https://www.usenix.org/legacy/event/osdi06/tech/full_papers/weil/weil.pdf - Weil et al., CRUSH, SC 2006
https://ceph.io/assets/pdfs/weil-crush-sc06.pdf - Weil et al., RADOS, PDSW 2007
https://ceph.io/assets/pdfs/weil-rados-pdsw07.pdf - Aghayev et al., File Systems Unfit as Distributed Storage Backends (BlueStore), SOSP 2019
https://www.pdl.cmu.edu/PDL-FTP/Storage/ceph-exp-sosp19.pdf
Sources by chapter#
Chapter 1: Ceph: A New Era — Architecture, Planning and Your First Cluster#
- Ceph documentation — Architecture
https://docs.ceph.com/en/latest/architecture/ - Ceph documentation — Hardware recommendations
https://docs.ceph.com/en/latest/start/hardware-recommendations/ - cephadm documentation — Deploying a new cluster
https://docs.ceph.com/en/latest/cephadm/install/ - cephadm documentation — Host management
https://docs.ceph.com/en/latest/cephadm/host-management/ - cephadm documentation — Service specifications and placement
https://docs.ceph.com/en/latest/cephadm/services/ - Ceph documentation — Network configuration
https://docs.ceph.com/en/latest/rados/configuration/network-config-ref/ - Ceph documentation — Releases and the release cycle
https://docs.ceph.com/en/latest/releases/ - Umbrella release notes
https://docs.ceph.com/en/latest/releases/umbrella/ - Tentacle release notes
https://docs.ceph.com/en/latest/releases/tentacle/ - Weil et al., "Ceph: A Scalable, High-Performance Distributed File System", OSDI 2006
https://www.usenix.org/legacy/event/osdi06/tech/weil.html - Weil et al., "CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data", SC 2006
https://ceph.io/assets/pdfs/weil-crush-sc06.pdf - Weil et al., "RADOS: A Scalable, Reliable Storage Service for Petabyte-scale Storage Clusters", PDSW 2007
https://ceph.io/assets/pdfs/weil-rados-pdsw07.pdf - Rook documentation
https://rook.io/docs/rook/latest-release/
Chapter 2: Working with the Ceph Block Device (RBD)#
- Ceph documentation — Ceph Block Device
https://docs.ceph.com/en/latest/rbd/ - Ceph documentation — Basic RBD commands
https://docs.ceph.com/en/latest/rbd/rados-rbd-cmds/ - Ceph documentation — RBD snapshots and clones
https://docs.ceph.com/en/latest/rbd/rbd-snapshot/ - Ceph documentation — RBD mirroring
https://docs.ceph.com/en/latest/rbd/rbd-mirroring/ - Ceph documentation — Image live migration
https://docs.ceph.com/en/latest/rbd/rbd-live-migration/ - Ceph documentation — Image encryption
https://docs.ceph.com/en/latest/rbd/rbd-encryption/ - Ceph documentation — librbd configuration reference and QoS
https://docs.ceph.com/en/latest/rbd/rbd-config-ref/ - Ceph documentation — The NVMe-oF gateway
https://docs.ceph.com/en/latest/rbd/nvmeof-overview/ - Ceph documentation — The iSCSI gateway (maintenance status
https://docs.ceph.com/en/latest/rbd/iscsi-overview/ - Ceph documentation — krbd
https://docs.ceph.com/en/latest/rbd/rbd-ko/ - cephadm documentation — Deploying rbd-mirror
https://docs.ceph.com/en/latest/rbd/rbd-mirroring/ - Squid release notes
https://docs.ceph.com/en/latest/releases/squid/
Chapter 3: Ceph and OpenStack#
- Ceph documentation — Block Devices and OpenStack
https://docs.ceph.com/en/latest/rbd/rbd-openstack/ - Ceph documentation — librbd configuration reference
https://docs.ceph.com/en/latest/rbd/rbd-config-ref/ - Ceph documentation — User management
https://docs.ceph.com/en/latest/rados/operations/user-management/ - Cinder documentation — The Ceph RBD driver
https://docs.openstack.org/cinder/latest/configuration/block-storage/drivers/ceph-rbd-volume-driver.html - Glance documentation — Configuring backends
https://docs.openstack.org/glance/latest/configuration/configuring.html - Manila documentation — The CephFS driver
https://docs.openstack.org/manila/latest/configuration/shared-file-systems/drivers/cephfs_driver.html - Kolla-Ansible documentation — External Ceph integration
https://docs.openstack.org/kolla-ansible/latest/reference/storage/external-ceph-guide.html - libvirt documentation — Secrets
https://libvirt.org/formatsecret.html
Chapter 4: Object Storage with the RADOS Gateway#
- Ceph documentation — Ceph Object Gateway
https://docs.ceph.com/en/latest/radosgw/ - cephadm documentation — The RGW and ingress services
https://docs.ceph.com/en/latest/cephadm/services/rgw/ - Ceph documentation — Managing RGW with radosgw-admin
https://docs.ceph.com/en/latest/radosgw/admin/ - Ceph documentation — User Accounts
https://docs.ceph.com/en/latest/radosgw/account/ - Ceph documentation — Keystone integration
https://docs.ceph.com/en/latest/radosgw/keystone/ - Ceph documentation — Placement and storage classes
https://docs.ceph.com/en/latest/radosgw/placement/ - Ceph documentation — Dynamic resharding
https://docs.ceph.com/en/latest/radosgw/dynamicresharding/ - Ceph documentation — Bucket event notification
https://docs.ceph.com/en/latest/radosgw/notifications/ - Ceph documentation — Server-side encryption
https://docs.ceph.com/en/latest/radosgw/encryption/ - Ceph documentation — S3 API compatibility
https://docs.ceph.com/en/latest/radosgw/s3/ - Apache Hadoop documentation — The S3A connector
https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html - AWS documentation — S3 Object Lock
https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html
Chapter 5: Multi-Site Object Storage with RGW Multi-Site#
- Ceph documentation — Multi-Site
https://docs.ceph.com/en/latest/radosgw/multisite/ - Ceph documentation — Multisite Sync Policy
https://docs.ceph.com/en/latest/radosgw/multisite-sync-policy/ - Ceph documentation — Zone Features
https://docs.ceph.com/en/latest/radosgw/zone-features/ - Ceph documentation — The rgw module in the MGR
https://docs.ceph.com/en/latest/mgr/rgw/ - Ceph documentation — Archive Sync Module
https://docs.ceph.com/en/latest/radosgw/archive-sync-module/ - Ceph documentation — Cloud Sync Module
https://docs.ceph.com/en/latest/radosgw/cloud-sync-module/ - cephadm documentation — The RGW service in multisite
https://docs.ceph.com/en/latest/cephadm/services/rgw/ - Umbrella release notes (Multisite section
https://docs.ceph.com/en/latest/releases/umbrella/
Chapter 6: The Ceph File System (CephFS)#
- CephFS
https://docs.ceph.com/en/latest/cephfs/ - FS volumes and subvolumes
https://docs.ceph.com/en/latest/cephfs/fs-volumes/ - Mount using kernel driver
https://docs.ceph.com/en/latest/cephfs/mount-using-kernel-driver/ - Mount using FUSE
https://docs.ceph.com/en/latest/cephfs/mount-using-fuse/ - Client authentication
https://docs.ceph.com/en/latest/cephfs/client-auth/ - Configuring multiple active MDS
https://docs.ceph.com/en/latest/cephfs/multimds/ - Standby daemons
https://docs.ceph.com/en/latest/cephfs/standby/ - MDS cache configuration
https://docs.ceph.com/en/latest/cephfs/cache-configuration/ - Snapshot scheduling
https://docs.ceph.com/en/latest/cephfs/snap-schedule/ - CephFS mirroring
https://docs.ceph.com/en/latest/cephfs/cephfs-mirroring/ - NFS module
https://docs.ceph.com/en/latest/mgr/nfs/ - SMB module
https://docs.ceph.com/en/latest/mgr/smb/ - Quotas
https://docs.ceph.com/en/latest/cephfs/quota/ - File layouts
https://docs.ceph.com/en/latest/cephfs/file-layouts/ - Health messages
https://docs.ceph.com/en/latest/cephfs/health-messages/ - Disaster recovery
https://docs.ceph.com/en/latest/cephfs/disaster-recovery/ - Tentacle release notes
https://docs.ceph.com/en/latest/releases/tentacle/
Chapter 7: Operating and Managing a Ceph Cluster#
- cephadm operations
https://docs.ceph.com/en/latest/cephadm/operations/ - Host management
https://docs.ceph.com/en/latest/cephadm/host-management/ - OSD service
https://docs.ceph.com/en/latest/cephadm/services/osd/ - Upgrading Ceph (cephadm
https://docs.ceph.com/en/latest/cephadm/upgrade/ - Configuring Ceph
https://docs.ceph.com/en/latest/rados/configuration/ceph-conf/ - ceph command reference
https://docs.ceph.com/en/latest/man/8/ceph/ - mClock config reference
https://docs.ceph.com/en/latest/rados/configuration/mclock-config-ref/ - Device management
https://docs.ceph.com/en/latest/rados/operations/devices/ - Monitor/OSD interaction
https://docs.ceph.com/en/latest/rados/configuration/mon-osd-interaction/ - Adding/removing monitors
https://docs.ceph.com/en/latest/rados/operations/add-or-rm-mons/ - Release index
https://docs.ceph.com/en/latest/releases/ - Tentacle release notes
https://docs.ceph.com/en/latest/releases/tentacle/
Chapter 8: Ceph Under the Hood: CRUSH, Maps, Authentication and PGs#
- CRUSH maps
https://docs.ceph.com/en/latest/rados/operations/crush-map/ - CRUSH map edits
https://docs.ceph.com/en/latest/rados/operations/crush-map-edits/ - Placement groups
https://docs.ceph.com/en/latest/rados/operations/placement-groups/ - PG states
https://docs.ceph.com/en/latest/rados/operations/pg-states/ - Monitoring OSDs and PGs
https://docs.ceph.com/en/latest/rados/operations/monitoring-osd-pg/ - User management
https://docs.ceph.com/en/latest/rados/operations/user-management/ - Cephx config
https://docs.ceph.com/en/latest/rados/configuration/auth-config-ref/ - Messenger v2
https://docs.ceph.com/en/latest/rados/configuration/msgr2/ - Architecture
https://docs.ceph.com/en/latest/architecture/ - Health checks
https://docs.ceph.com/en/latest/rados/operations/health-checks/ - Read balancer
https://docs.ceph.com/en/latest/rados/operations/read-balancer/ - Squid release notes
https://docs.ceph.com/en/latest/releases/squid/ - Umbrella release notes
https://docs.ceph.com/en/latest/releases/umbrella/ - Weil et al., CRUSH (SC 2006
https://ceph.io/assets/pdfs/weil-crush-sc06.pdf
Chapter 9: From VSM to the Ceph Dashboard: Graphical Cluster Management#
- Ceph Dashboard
https://docs.ceph.com/en/latest/mgr/dashboard/ - Ceph RESTful API (Dashboard API
https://docs.ceph.com/en/latest/mgr/ceph_api/ - Management gateway
https://docs.ceph.com/en/latest/cephadm/services/mgmt-gateway/ - OAuth2 proxy service
https://docs.ceph.com/en/latest/cephadm/services/oauth2-proxy/ - Monitoring services (cephadm
https://docs.ceph.com/en/latest/cephadm/services/monitoring/ - Ceph Manager daemon
https://docs.ceph.com/en/latest/mgr/ - Tentacle release notes
https://docs.ceph.com/en/latest/releases/tentacle/ - Intel VSM (archived
https://github.com/intel/virtual-storage-manager
Chapter 10: Benchmarking and Expert Tools for Ceph#
- rados manual
https://docs.ceph.com/en/latest/man/8/rados/ - rbd manual
https://docs.ceph.com/en/latest/man/8/rbd/ - Control commands (osd bench
https://docs.ceph.com/en/latest/rados/operations/control/ - Memory profiling
https://docs.ceph.com/en/latest/rados/troubleshooting/memory-profiling/ - ceph-objectstore-tool manual
https://docs.ceph.com/en/latest/man/8/ceph-objectstore-tool/ - Troubleshooting OSDs
https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-osd/ - Ceph API
https://docs.ceph.com/en/latest/mgr/ceph_api/ - librados Python
https://docs.ceph.com/en/latest/rados/api/python/ - fio documentation
https://fio.readthedocs.io/en/latest/fio_doc.html - iperf3
https://software.es.net/iperf/ - warp (S3 benchmark
https://github.com/minio/warp - IOR and mdtest
https://github.com/hpc/ior - ceph-medic repository
https://github.com/ceph/ceph-medic - Tentacle release notes
https://docs.ceph.com/en/latest/releases/tentacle/
Chapter 11: Deploying Ceph: Lab, cephadm, Ansible and Rook#
- Deploying a new cluster (cephadm
https://docs.ceph.com/en/latest/cephadm/install/ - Host management
https://docs.ceph.com/en/latest/cephadm/host-management/ - OSD service specs
https://docs.ceph.com/en/latest/cephadm/services/osd/ - Service management
https://docs.ceph.com/en/latest/cephadm/services/ - Converting an existing cluster to cephadm
https://docs.ceph.com/en/latest/cephadm/adoption/ - ceph-ansible
https://github.com/ceph/ceph-ansible - cephadm-ansible
https://github.com/ceph/cephadm-ansible - ceph-deploy (archived
https://github.com/ceph/ceph-deploy - Rook documentation
https://rook.io/docs/rook/latest-release/ - Rook CephCluster CRD
https://rook.io/docs/rook/latest-release/CRDs/Cluster/ceph-cluster-crd/ - vagrant-libvirt
https://vagrant-libvirt.github.io/vagrant-libvirt/ - Umbrella release notes
https://docs.ceph.com/en/latest/releases/umbrella/
Chapter 12: BlueStore: The OSD Storage Engine#
- BlueStore configuration reference
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - BlueStore migration
https://docs.ceph.com/en/latest/rados/operations/bluestore-migration/ - ceph-bluestore-tool
https://docs.ceph.com/en/latest/man/8/ceph-bluestore-tool/ - ceph-volume lvm migrate
https://docs.ceph.com/en/latest/ceph-volume/lvm/migrate/ - Health checks
https://docs.ceph.com/en/latest/rados/operations/health-checks/ - Source: src/os/bluestore (BlueStore.cc, BlueStore_components.h, Writer.cc, HybridAllocator.h
https://github.com/ceph/ceph/tree/main/src/os/bluestore - Source: option definitions
https://github.com/ceph/ceph/blob/main/src/common/options/global.yaml.in - Aghayev et al., "File Systems Unfit as Distributed Storage Backends: Lessons from 10 Years of Ceph Evolution" (SOSP 2019
https://www.pdl.cmu.edu/PDL-FTP/Storage/ceph-exp-sosp19.pdf - Squid release notes
https://docs.ceph.com/en/latest/releases/squid/ - Reef release notes
https://docs.ceph.com/en/latest/releases/reef/
Chapter 13: Erasure Coding for Storage Efficiency#
- Erasure code
https://docs.ceph.com/en/latest/rados/operations/erasure-code/ - Erasure code profiles
https://docs.ceph.com/en/latest/rados/operations/erasure-code-profile/ - ISA plugin
https://docs.ceph.com/en/latest/rados/operations/erasure-code-isa/ - LRC plugin
https://docs.ceph.com/en/latest/rados/operations/erasure-code-lrc/ - CLAY plugin
https://docs.ceph.com/en/latest/rados/operations/erasure-code-clay/ - SHEC plugin
https://docs.ceph.com/en/latest/rados/operations/erasure-code-shec/ - Tentacle release notes
https://docs.ceph.com/en/latest/releases/tentacle/ - Source: src/erasure-code
https://github.com/ceph/ceph/tree/main/src/erasure-code - Source: src/osd/ECTransaction.cc, ECSwitch.h, OSDMap.cc
https://github.com/ceph/ceph/tree/main/src/osd - Intel ISA-L
https://github.com/intel/isa-l - Plank, "A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems"
https://web.eecs.utk.edu/~jplank/plank/papers/CS-96-332.pdf
Chapter 14: Programming with librados#
- librados introduction
https://docs.ceph.com/en/latest/rados/api/librados-intro/ - librados C API
https://docs.ceph.com/en/latest/rados/api/librados/ - librados C++ API
https://docs.ceph.com/en/latest/rados/api/libradospp/ - librados Python API
https://docs.ceph.com/en/latest/rados/api/python/ - Objclass and RADOS classes
https://docs.ceph.com/en/latest/rados/api/objclass-sdk/ - Source: src/include/rados/librados.h, librados.hpp
https://github.com/ceph/ceph/tree/main/src/include/rados - Source: src/osdc/Objecter.cc
https://github.com/ceph/ceph/blob/main/src/osdc/Objecter.cc - Source: src/pybind/rados/rados.pyx
https://github.com/ceph/ceph/blob/main/src/pybind/rados/rados.pyx - Source: src/osd/PrimaryLogPG.cc
https://github.com/ceph/ceph/blob/main/src/osd/PrimaryLogPG.cc - Weil et al., "RADOS: A Scalable, Reliable Storage Service for Petabyte-scale Storage Clusters" (PDSW 2007
https://ceph.io/assets/pdfs/weil-rados-pdsw07.pdf
Chapter 15: RADOS Classes: Computing Next to the Data#
- SDK for Ceph Object Classes
https://docs.ceph.com/en/latest/rados/api/objclass-sdk/ - OSD config reference (classes
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/ - User management and capabilities
https://docs.ceph.com/en/latest/rados/operations/user-management/ - Source: src/cls
https://github.com/ceph/ceph/tree/main/src/cls - Source: src/osd/ClassHandler.cc
https://github.com/ceph/ceph/blob/main/src/osd/ClassHandler.cc - Source: src/osd/OSDCap.cc
https://github.com/ceph/ceph/blob/main/src/osd/OSDCap.cc - Source: src/include/rados/objclass.h (v20.2.0
https://github.com/ceph/ceph/blob/v20.2.0/src/include/rados/objclass.h - Source: src/include/rados/cls_traits.hpp
https://github.com/ceph/ceph/blob/main/src/include/rados/cls_traits.hpp - Source: src/cls/lua/cls_lua.cc
https://github.com/ceph/ceph/blob/main/src/cls/lua/cls_lua.cc
Chapter 16: Storage Tiering: From Cache Tiering to Device Classes and Storage Classes#
- Cache Tiering (deprecation notice
https://docs.ceph.com/en/latest/rados/operations/cache-tiering/ - CRUSH maps and device classes
https://docs.ceph.com/en/latest/rados/operations/crush-map/ - Read balancer
https://docs.ceph.com/en/latest/rados/operations/read-balancer/ - RGW placement and storage classes
https://docs.ceph.com/en/latest/radosgw/placement/ - RGW cloud transition
https://docs.ceph.com/en/latest/radosgw/cloud-transition/ - Erasure code (overwrites
https://docs.ceph.com/en/latest/rados/operations/erasure-code/ - Source: src/osd/PrimaryLogPG.cc (agent_*, hit_set_*
https://github.com/ceph/ceph/blob/main/src/osd/PrimaryLogPG.cc - Source: src/osd/TierAgentState.h
https://github.com/ceph/ceph/blob/main/src/osd/TierAgentState.h - Source: src/osd/HitSet.h
https://github.com/ceph/ceph/blob/main/src/osd/HitSet.h - ceph-devel (2017-11), "About the "temperature histogram" of tier-agent"
https://www.spinics.net/lists/ceph-devel/msg39274.html
Chapter 17: Troubleshooting Ceph: From HEALTH_WARN to the Peering State Machine#
- Health checks
https://docs.ceph.com/en/latest/rados/operations/health-checks/ - Monitoring OSDs and PGs
https://docs.ceph.com/en/latest/rados/operations/monitoring-osd-pg/ - Placement group states
https://docs.ceph.com/en/latest/rados/operations/pg-states/ - Troubleshooting PGs
https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-pg/ - Troubleshooting OSDs
https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-osd/ - Troubleshooting monitors
https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-mon/ - Peering (developer guide
https://docs.ceph.com/en/latest/dev/peering/ - Source: src/osd/PeeringState.h / .cc
https://github.com/ceph/ceph/blob/main/src/osd/PeeringState.h - Source: src/osd/scrubber
https://github.com/ceph/ceph/tree/main/src/osd/scrubber - Source: src/osd/OpRequest.h
https://github.com/ceph/ceph/blob/main/src/osd/OpRequest.h
Chapter 18: Disaster Recovery: rbd-mirror, Stretch Mode and Cluster Rescue#
- RBD mirroring
https://docs.ceph.com/en/latest/rbd/rbd-mirroring/ - Stretch mode (Tentacle
https://docs.ceph.com/en/tentacle/rados/operations/stretch-mode/ - Stretch mode (Umbrella
https://docs.ceph.com/en/umbrella/rados/operations/stretch-mode/ - Stretch mode (latest/dev
https://docs.ceph.com/en/latest/rados/operations/stretch-mode/ - Troubleshooting monitors (Monitor Store Failures
https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-mon/ - CephFS mirroring
https://docs.ceph.com/en/latest/cephfs/cephfs-mirroring/ - RGW S3 bucket operations (object lock config
https://docs.ceph.com/en/latest/radosgw/s3/bucketops/ - Source: src/tools/rbd_mirror
https://github.com/ceph/ceph/tree/main/src/tools/rbd_mirror - Source: src/cls/rbd/cls_rbd_types.h
https://github.com/ceph/ceph/blob/main/src/cls/rbd/cls_rbd_types.h - Source: src/librbd/mirror/snapshot
https://github.com/ceph/ceph/tree/main/src/librbd/mirror/snapshot
Chapter 19: Day-to-Day Operations: Upgrades, Disk Replacement, Autoscaler and Balancer#
- cephadm upgrade
https://docs.ceph.com/en/latest/cephadm/upgrade/ - cephadm upgrade (Umbrella
https://docs.ceph.com/en/umbrella/cephadm/upgrade/ - cephadm host management
https://docs.ceph.com/en/latest/cephadm/host-management/ - cephadm OSD service
https://docs.ceph.com/en/latest/cephadm/services/osd/ - Placement groups and autoscaling
https://docs.ceph.com/en/latest/rados/operations/placement-groups/ - Balancer
https://docs.ceph.com/en/latest/rados/operations/balancer/ - Configuring Ceph (central config
https://docs.ceph.com/en/latest/rados/configuration/ceph-conf/ - Source: src/mon/ConfigMonitor.cc (config log / reset
https://github.com/ceph/ceph/blob/main/src/mon/ConfigMonitor.cc - Device management
https://docs.ceph.com/en/latest/rados/operations/devices/ - Ceph releases
https://docs.ceph.com/en/latest/releases/ - Source: src/pybind/mgr/pg_autoscaler/module.py
https://github.com/ceph/ceph/blob/main/src/pybind/mgr/pg_autoscaler/module.py - Source: src/pybind/mgr/balancer/module.py
https://github.com/ceph/ceph/blob/main/src/pybind/mgr/balancer/module.py - Source: src/osd/OSDMap.cc (calc_pg_upmaps
https://github.com/ceph/ceph/blob/main/src/osd/OSDMap.cc
Chapter 20: Monitoring Ceph: Prometheus, ceph-exporter, Alerts and Observability#
- Monitoring overview
https://docs.ceph.com/en/latest/monitoring/ - cephadm monitoring services
https://docs.ceph.com/en/latest/cephadm/services/monitoring/ - Prometheus manager module
https://docs.ceph.com/en/latest/mgr/prometheus/ - mgmt-gateway
https://docs.ceph.com/en/latest/cephadm/services/mgmt-gateway/ - oauth2-proxy
https://docs.ceph.com/en/latest/cephadm/services/oauth2-proxy/ - Ceph Dashboard
https://docs.ceph.com/en/latest/mgr/dashboard/ - Crash module
https://docs.ceph.com/en/latest/mgr/crash/ - ceph-mixin alerts
https://github.com/ceph/ceph/blob/main/monitoring/ceph-mixin/prometheus_alerts.yml - Source: src/common/perf_counters.h
https://github.com/ceph/ceph/blob/main/src/common/perf_counters.h - Source: src/common/options/ceph-exporter.yaml.in
https://github.com/ceph/ceph/blob/main/src/common/options/ceph-exporter.yaml.in - Prometheus security model
https://prometheus.io/docs/operating/security/
Chapter 21: Ceph Performance Tuning: From mClock to the Kernel and Network#
- mClock config reference
https://docs.ceph.com/en/latest/rados/configuration/mclock-config-ref/ - OSD config reference
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/ - BlueStore config reference
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - cephadm OSD service (memory autotune
https://docs.ceph.com/en/latest/cephadm/services/osd/ - Hardware recommendations
https://docs.ceph.com/en/latest/start/hardware-recommendations/ - Network config reference
https://docs.ceph.com/en/latest/rados/configuration/network-config-ref/ - CBT (Ceph Benchmarking Tool
https://github.com/ceph/cbt - Source: src/dmclock
https://github.com/ceph/ceph/tree/main/src/dmclock - Source: src/osd/scheduler/mClockScheduler.cc
https://github.com/ceph/ceph/blob/main/src/osd/scheduler/mClockScheduler.cc - Source: src/common/options/osd.yaml.in
https://github.com/ceph/ceph/blob/main/src/common/options/osd.yaml.in - Gulati, Merchant, Varman, "mClock: Handling Throughput Variability for Hypervisor IO Scheduling" (OSDI 2010
https://www.usenix.org/conference/osdi10/mclock-handling-throughput-variability-hypervisor-io-scheduling - tracker 69078
https://tracker.ceph.com/issues/69078
Chapter 22: Ceph Code Architecture and the Request Path from the Inside#
- The Ceph repository
https://github.com/ceph/ceph - Developer guide
https://docs.ceph.com/en/latest/dev/developer_guide/ - Running vstart
https://docs.ceph.com/en/latest/dev/dev_cluster_deployment/ - OSD internals documentation
https://docs.ceph.com/en/latest/dev/osd_internals/ - encoding
https://docs.ceph.com/en/latest/dev/encoding/ - BlueStore
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - crimson
https://docs.ceph.com/en/latest/dev/crimson/ - Weil et al., "Ceph: A Scalable, High-Performance Distributed File System", OSDI 2006
https://www.usenix.org/legacy/event/osdi06/tech/full_papers/weil/weil.pdf
Chapter 23: Lower Layers (1): Block Device, bufferlist, mempool and crc32c#
- KernelDevice code
https://github.com/ceph/ceph/blob/main/src/blk/kernel/KernelDevice.cc - libaio in Ceph
https://github.com/ceph/ceph/blob/main/src/blk/aio/aio.cc - bufferlist
https://github.com/ceph/ceph/blob/main/src/include/buffer.h - mempool
https://github.com/ceph/ceph/blob/main/src/include/mempool.h - crc32c
https://github.com/ceph/ceph/blob/main/src/common/crc32c.cc - BlueStore configuration (checksum and compression
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - io_uring
https://kernel.dk/io_uring.pdf - CRC-32C (RFC 3720, appendix B.4
https://www.rfc-editor.org/rfc/rfc3720
Chapter 24: Lower Layers (2): BlueStore and BlueFS On-Disk Format#
- BlueStore types
https://github.com/ceph/ceph/blob/main/src/os/bluestore/bluestore_types.h - BlueFS types
https://github.com/ceph/ceph/blob/main/src/os/bluestore/bluefs_types.h - denc encoding
https://github.com/ceph/ceph/blob/main/src/include/denc.h - Fragmentation score
https://github.com/ceph/ceph/blob/main/src/os/bluestore/Allocator.cc - BitmapFreelistManager
https://github.com/ceph/ceph/blob/main/src/os/bluestore/BitmapFreelistManager.cc - BlueStore configuration
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - ceph-bluestore-tool
https://docs.ceph.com/en/latest/man/8/ceph-bluestore-tool/ - The BlueStore paper (SOSP 2019
https://www.pdl.cmu.edu/PDL-FTP/Storage/ceph-exp-sosp19.pdf - 2Q (Johnson and Shasha, VLDB 1994
https://www.vldb.org/conf/1994/P439.PDF
Chapter 25: Lower Layers (3): RocksDB Inside BlueStore#
- RocksDBStore
https://github.com/ceph/ceph/blob/main/src/kv/RocksDBStore.cc - BlueStore configuration and sharding
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - RocksDB WAL format
https://github.com/facebook/rocksdb/wiki/Write-Ahead-Log-File-Format - Block-based table format
https://github.com/facebook/rocksdb/wiki/Rocksdb-BlockBasedTable-Format - Leveled compaction
https://github.com/facebook/rocksdb/wiki/Leveled-Compaction - Column families
https://github.com/facebook/rocksdb/wiki/Column-Families - log_format.h
https://github.com/facebook/rocksdb/blob/main/db/log_format.h - LSM-tree (O'Neil et al., 1996
https://www.cs.umb.edu/~poneil/lsmtree.pdf
Chapter 26: Lower Layers (4): msgr2 at the Byte Level, AsyncConnection and EventCenter#
- msgr2 design document
https://docs.ceph.com/en/latest/dev/msgr2/ - frames_v2.h
https://github.com/ceph/ceph/blob/main/src/msg/async/frames_v2.h - ProtocolV2.cc
https://github.com/ceph/ceph/blob/main/src/msg/async/ProtocolV2.cc - crypto_onwire.cc
https://github.com/ceph/ceph/blob/main/src/msg/async/crypto_onwire.cc - Messenger configuration
https://docs.ceph.com/en/latest/rados/configuration/msgr2/ - The ms_mode option in the kernel
https://docs.kernel.org/filesystems/ceph.html - NIST SP 800-38D (GCM
https://csrc.nist.gov/pubs/sp/800/38/d/final - epoll(7
https://man7.org/linux/man-pages/man7/epoll.7.html
Chapter 27: Lower Layers (5): Erasure-Coding Math, from GF(2⁸) to FastEC#
- Erasure code documentation
https://docs.ceph.com/en/latest/rados/operations/erasure-code/ - Profiles
https://docs.ceph.com/en/latest/rados/operations/erasure-code-profile/ - The CLAY plugin
https://docs.ceph.com/en/latest/rados/operations/erasure-code-clay/ - The LRC plugin
https://docs.ceph.com/en/latest/rados/operations/erasure-code-lrc/ - The SHEC plugin
https://docs.ceph.com/en/latest/rados/operations/erasure-code-shec/ - ErasureCodeIsa.cc
https://github.com/ceph/ceph/blob/main/src/erasure-code/isa/ErasureCodeIsa.cc - ISA-L ec_base.c
https://github.com/intel/isa-l/blob/master/erasure_code/ec_base.c - The Clay codes paper (FAST 2018
https://www.usenix.org/conference/fast18/presentation/vajha - Reed-Solomon tutorial (Plank
https://web.eecs.utk.edu/~jplank/plank/papers/CS-96-332.html
Chapter 28: Lower Layers (6): CRUSH at the Bit Level, from rjenkins to upmap#
- The CRUSH paper (Weil et al., SC 2006
https://ceph.io/assets/pdfs/weil-crush-sc06.pdf - mapper.c
https://github.com/ceph/ceph/blob/main/src/crush/mapper.c - hash.c
https://github.com/ceph/ceph/blob/main/src/crush/hash.c - CRUSH maps
https://docs.ceph.com/en/latest/rados/operations/crush-map/ - Editing a CRUSH map
https://docs.ceph.com/en/latest/rados/operations/crush-map-edits/ - upmap
https://docs.ceph.com/en/latest/rados/operations/upmap/ - balancer
https://docs.ceph.com/en/latest/rados/operations/balancer/ - crushtool
https://docs.ceph.com/en/latest/man/8/crushtool/ - Bob Jenkins's hash function
https://burtleburtle.net/bob/hash/doobs.html
Chapter 29: Lower Layers (7): Linux Kernel Clients — libceph, krbd and ceph.ko#
- net/ceph in the kernel
https://github.com/torvalds/linux/tree/master/net/ceph - drivers/block/rbd.c
https://github.com/torvalds/linux/blob/master/drivers/block/rbd.c - fs/ceph
https://github.com/torvalds/linux/tree/master/fs/ceph - Kernel CephFS documentation
https://docs.kernel.org/filesystems/ceph.html - rbd (man
https://docs.ceph.com/en/latest/man/8/rbd/ - krbd in the Ceph documentation
https://docs.ceph.com/en/latest/rbd/rbd-ko/ - caps in CephFS
https://docs.ceph.com/en/latest/cephfs/capabilities/ - The CephFS kernel client
https://docs.ceph.com/en/latest/cephfs/mount-using-kernel-driver/
Chapter 30: Lower Layers (8): Crimson and Seastar — Shard-per-Core OSD and SeaStore#
- Crimson in the documentation (main
https://github.com/ceph/ceph/blob/main/doc/crimson/crimson.rst - Crimson developer guide
https://github.com/ceph/ceph/blob/main/doc/dev/crimson/index.rst - SeaStore design
https://github.com/ceph/ceph/blob/main/doc/dev/crimson/seastore.rst - Crimson code
https://github.com/ceph/ceph/tree/main/src/crimson - Crimson options
https://github.com/ceph/ceph/blob/main/src/common/options/crimson.yaml.in - Seastar
https://seastar.io/ - Seastar tutorial
https://github.com/scylladb/seastar/blob/master/doc/tutorial.md - The Crimson project on the Ceph blog
https://ceph.io/en/news/crimson/ - Rosenblum and Ousterhout, The Design and Implementation of a Log-Structured File System (1992
https://people.eecs.berkeley.edu/~brewer/cs262/LFS.pdf
Chapter 31: Lower Layers (9): SPDK and NVMe — from Hardware Queues to the NVMe-oF Gateway#
- The NVMe-oF gateway in the Ceph documentation
https://docs.ceph.com/en/latest/rbd/nvmeof-overview/ - Configuring the NVMe-oF target
https://docs.ceph.com/en/latest/rbd/nvmeof-target-configure/ - Gateway requirements
https://docs.ceph.com/en/latest/rbd/nvmeof-requirements/ - Using SPDK in BlueStore
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - NVMEDevice code
https://github.com/ceph/ceph/blob/main/src/blk/spdk/NVMEDevice.cc - NVMeofGwMap code
https://github.com/ceph/ceph/blob/main/src/mon/NVMeofGwMap.cc - The ceph-nvmeof project
https://github.com/ceph/ceph-nvmeof - The Linux kernel NVMe driver
https://github.com/torvalds/linux/blob/master/drivers/nvme/host/pci.c - NVMe and NVMe/TCP structures
https://github.com/torvalds/linux/blob/master/include/linux/nvme.h - The bdev_rbd module in SPDK
https://github.com/spdk/spdk/blob/master/module/bdev/rbd/bdev_rbd.c - SPDK documentation
https://spdk.io/doc/ - The NVMe specifications
https://nvmexpress.org/specifications/
Chapter 32: Lower Layers (10): Scrub, Recovery, Backfill and Repair at Code Level#
- scrub in the Ceph documentation
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/#scrubbing - scrub developer documentation
https://docs.ceph.com/en/latest/dev/osd_internals/scrub/ - backfill reservation and priority
https://docs.ceph.com/en/latest/dev/osd_internals/backfill_reservation/ - recovery in the developer documentation
https://docs.ceph.com/en/latest/dev/osd_internals/recovery_reservation/ - scrubber code
https://github.com/ceph/ceph/tree/main/src/osd/scrubber - PeeringState
https://github.com/ceph/ceph/blob/main/src/osd/PeeringState.cc - AsyncReserver
https://github.com/ceph/ceph/blob/main/src/common/AsyncReserver.h - PrimaryLogPG
https://github.com/ceph/ceph/blob/main/src/osd/PrimaryLogPG.cc - OSD options
https://github.com/ceph/ceph/blob/main/src/common/options/osd.yaml.in - Troubleshooting PGs and repairing inconsistencies
https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-pg/
Chapter 33: Lower Layers (11): Memory and CPU Inside the OSD — from mempool to NUMA and Profiling#
- BlueStore memory configuration
https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/ - OSD option reference
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/ - mempool
https://github.com/ceph/ceph/blob/main/src/include/mempool.h - PriorityCache
https://github.com/ceph/ceph/blob/main/src/common/PriorityCache.cc - BlueStore MempoolThread
https://github.com/ceph/ceph/blob/main/src/os/bluestore/BlueStore.cc - NUMA in the OSD
https://github.com/ceph/ceph/blob/main/src/osd/OSD.cc - tcmalloc (gperftools
https://github.com/gperftools/gperftools - perf
https://perfwiki.github.io/main/ - bpftrace
https://github.com/bpftrace/bpftrace - uftrace
https://github.com/namhyung/uftrace - Flame graphs
https://www.brendangregg.com/flamegraphs.html
Chapter 34: Specialist Part (1): RADOS — Object Identity, Metadata and the Op Path Inside the OSD#
- hobject.h and hobject.cc
https://github.com/ceph/ceph/blob/main/src/common/hobject.h - osd_types.h (object_info_t, pg_log_entry_t, pgmeta keys
https://github.com/ceph/ceph/blob/main/src/osd/osd_types.h - PrimaryLogPG.cc (do_op, execute_ctx, finish_ctx
https://github.com/ceph/ceph/blob/main/src/osd/PrimaryLogPG.cc - OSD.cc (enqueue_op and the sharded queue
https://github.com/ceph/ceph/blob/main/src/osd/OSD.cc - Developer documentation on op execution
https://docs.ceph.com/en/latest/dev/osd_internals/ - OSD options
https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/
Chapter 35: Specialist Part (2): RADOS — The PG Log, Intervals, Missing Sets, and How Recovery and Backfill Work#
- osd_types.cc and osd_types.h (PastIntervals, PriorSet, pg_info_t, pg_missing_item
https://github.com/ceph/ceph/blob/main/src/osd/osd_types.cc - PGLog.cc and PGLog.h (merge_log, divergent
https://github.com/ceph/ceph/blob/main/src/osd/PGLog.h - PeeringState.cc (activate, calc_trim_to
https://github.com/ceph/ceph/blob/main/src/osd/PeeringState.cc - PrimaryLogPG.cc (start_recovery_ops, recover_backfill
https://github.com/ceph/ceph/blob/main/src/osd/PrimaryLogPG.cc - Developer documentation on peering
https://docs.ceph.com/en/latest/dev/peering/ - Developer documentation on the log-based PG
https://docs.ceph.com/en/latest/dev/osd_internals/log_based_pg/ - PG troubleshooting
https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-pg/
Chapter 36: Specialist Part (3): RADOS — Snapshots and Clones, Watch/Notify, OSD-Side cls, and the rados and pool Reference#
- PrimaryLogPG.cc (make_writeable, find_object_context, trim_object, CALL
https://github.com/ceph/ceph/blob/main/src/osd/PrimaryLogPG.cc - SnapMapper.cc
https://github.com/ceph/ceph/blob/main/src/osd/SnapMapper.cc - Watch.cc
https://github.com/ceph/ceph/blob/main/src/osd/Watch.cc - osd_types.h (SnapSet
https://github.com/ceph/ceph/blob/main/src/osd/osd_types.h - rados.cc (the list of rados commands
https://github.com/ceph/ceph/blob/main/src/tools/rados/rados.cc - Developer documentation on snapshots
https://docs.ceph.com/en/latest/dev/osd_internals/snaps/ - watch/notify documentation
https://docs.ceph.com/en/latest/dev/osd_internals/watch_notify/ - Pool reference
https://docs.ceph.com/en/latest/rados/operations/pools/
Chapter 37: Specialist Part (4): RBD — Layout on RADOS, Striping, Object Map and Fast-Diff, and the rbd Reference#
- cls_rbd.cc
https://github.com/ceph/ceph/blob/main/src/cls/rbd/cls_rbd.cc - rbd_types.h and features.h
https://github.com/ceph/ceph/blob/main/src/include/rbd/features.h - Striper.cc
https://github.com/ceph/ceph/blob/main/src/osdc/Striper.cc - bit_vector.hpp
https://github.com/ceph/ceph/blob/main/src/common/bit_vector.hpp - librbd/object_map/DiffRequest.cc
https://github.com/ceph/ceph/blob/main/src/librbd/object_map/DiffRequest.cc - RBD layering and striping documentation
https://docs.ceph.com/en/latest/dev/rbd-layering/ - rbd command reference
https://docs.ceph.com/en/latest/man/8/rbd/ - rbd-nbd reference
https://docs.ceph.com/en/latest/man/8/rbd-nbd/
Chapter 38: Specialist Part (5): RBD — The librbd I/O Path, Layering and Copyup, Exclusive Lock, Caches and QoS#
- librbd/io (Types.h, ImageDispatcher, ObjectRequest, CopyupRequest
https://github.com/ceph/ceph/tree/main/src/librbd/io - librbd/managed_lock and ExclusiveLock.cc
https://github.com/ceph/ceph/tree/main/src/librbd/managed_lock - WriteAroundObjectDispatch.cc
https://github.com/ceph/ceph/blob/main/src/librbd/cache/WriteAroundObjectDispatch.cc - Throttle.cc (TokenBucketThrottle
https://github.com/ceph/ceph/blob/main/src/common/Throttle.cc - RBD options
https://docs.ceph.com/en/latest/rbd/rbd-config-ref/ - Persistent cache
https://docs.ceph.com/en/latest/rbd/rbd-persistent-write-log-cache/ - Exclusive lock documentation
https://docs.ceph.com/en/latest/rbd/rbd-exclusive-locks/ - rbd(8) and krbd features
https://docs.ceph.com/en/latest/man/8/rbd/
Chapter 39: Specialist Part (6): RBD — Inside rbd-mirror: Journal versus Snapshot#
- The journal library (Entry.cc, JournalRecorder.cc, Journaler.cc
https://github.com/ceph/ceph/tree/main/src/journal - cls_journal.cc
https://github.com/ceph/ceph/blob/main/src/cls/journal/cls_journal.cc - librbd/journal and Types.h
https://github.com/ceph/ceph/tree/main/src/librbd/journal - rbd-mirror
https://github.com/ceph/ceph/tree/main/src/tools/rbd_mirror - cls_rbd_types.h (MirrorSnapshotNamespace
https://github.com/ceph/ceph/blob/main/src/cls/rbd/cls_rbd_types.h - Mirroring documentation
https://docs.ceph.com/en/latest/rbd/rbd-mirroring/ - rbd-mirror options
https://docs.ceph.com/en/latest/rbd/rbd-config-ref/
Chapter 40: Specialist Part (7): RGW — The Data Model on RADOS: Metadata, Bucket Index, Versioning, Manifest and Multipart#
- cls_rgw.cc and cls_rgw_types.h
https://github.com/ceph/ceph/blob/main/src/cls/rgw/cls_rgw.cc - rgw_zone.cc (pool names
https://github.com/ceph/ceph/blob/main/src/rgw/rgw_zone.cc - rgw_putobj_processor.cc
https://github.com/ceph/ceph/blob/main/src/rgw/driver/rados/rgw_putobj_processor.cc - rgw_sal_rados.cc (multipart
https://github.com/ceph/ceph/blob/main/src/rgw/driver/rados/rgw_sal_rados.cc - Bucket index and layout documentation
https://docs.ceph.com/en/latest/dev/radosgw/bucket_index/ - Placement and storage class documentation
https://docs.ceph.com/en/latest/radosgw/placement/ - radosgw-admin
https://docs.ceph.com/en/latest/man/8/radosgw-admin/
Chapter 41: Specialist Part (8): RGW — The Request Path, SigV4, Quotas, Rate Limits, GC and Lifecycle#
- rgw_process.cc
https://github.com/ceph/ceph/blob/main/src/rgw/rgw_process.cc - rgw_auth_s3.cc
https://github.com/ceph/ceph/blob/main/src/rgw/rgw_auth_s3.cc - rgw_ratelimit.h
https://github.com/ceph/ceph/blob/main/src/rgw/rgw_ratelimit.h - rgw_quota.cc
https://github.com/ceph/ceph/blob/main/src/rgw/rgw_quota.cc - rgw_gc.cc
https://github.com/ceph/ceph/blob/main/src/rgw/driver/rados/rgw_gc.cc - rgw_lc.cc
https://github.com/ceph/ceph/blob/main/src/rgw/rgw_lc.cc - AWS Signature Version 4
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-create-signed-request.html - Ceph gc and lifecycle documentation
https://docs.ceph.com/en/latest/radosgw/config-ref/
Chapter 42: Specialist Part (9): RGW — Inside Multisite: Periods, Log Formats, Bucket Generations and the Sync Engine#
- rgw_zone.cc (commit_period
https://github.com/ceph/ceph/blob/main/src/rgw/rgw_zone.cc - rgw_data_sync.cc and rgw_data_sync.h
https://github.com/ceph/ceph/blob/main/src/rgw/driver/rados/rgw_data_sync.cc - rgw_sync.cc (metadata sync
https://github.com/ceph/ceph/blob/main/src/rgw/driver/rados/rgw_sync.cc - rgw_datalog.h
https://github.com/ceph/ceph/blob/main/src/rgw/driver/rados/rgw_datalog.h - cls_rgw_types.h (rgw_bi_log_entry
https://github.com/ceph/ceph/blob/main/src/cls/rgw/cls_rgw_types.h - Multisite documentation
https://docs.ceph.com/en/latest/radosgw/multisite/ - Dynamic resharding documentation (including multisite
https://docs.ceph.com/en/latest/radosgw/dynamicresharding/