Skip to content

Instantly share code, notes, and snippets.

@pauldardeau
Last active December 6, 2016 22:23
Show Gist options
  • Save pauldardeau/2b0557498137d921e0d0259e17c0164e to your computer and use it in GitHub Desktop.
Save pauldardeau/2b0557498137d921e0d0259e17c0164e to your computer and use it in GitHub Desktop.
Quick Intro to Ceph from Swift Perspective
Quick Intro to Ceph from Swift Perspective
- Paul Dardeau
- December 6, 2016
Major Components of Ceph
- RADOS - core part of Ceph
- librados - library for talking with RADOS
- RBD - RADOS block device
- CephFS - POSIX distributed FS interface
- RADOSGW - HTTP gateway with S3/Swift compliant API
What is RADOS?
- RADOS = Reliable Autonomic Distributed Object Store
- Fancy acronym for core part of Ceph
Required Components
- RADOS
- librados
Optional Components
- RBD
- CephFS
- RADOSGW
What is Ceph's Concept of Proxy Server?
- Unlike Swift, no centralized proxy needed
- RADOSGW allows you to treat cluster as S3 or Swift
- Common for clients to talk directly with 'object servers'
What is Ceph's Concept of Ring?
- Ceph has a 'CRUSH map' and 'CRUSH algorithm'
- CRUSH = Controlled Replication Under Scalable Hashing
- No ring files
- Make changes, and they're live
- Monitor(s) keep master copy of configuration
What is Ceph's Concept of Object Server?
- Ceph has 1:1 mapping of a server daemon and a storage device
- This daemon is called 'OSD' (object storage daemon)
- Every storage device is owned by a single OSD
- An OSD only has responsibility for a single device
What is Ceph's Concept of Consistency?
- Ceph has a strong consistency model
- An update gets all 3 updates successful, or it fails
- No concept of separate replicator (built-in; automatic)
What is Ceph's Version of Auditor?
- Ceph calls it 'scrubbing'
What is Ceph's Concept of Account?
- Aside from RADOSGW, Ceph doesn't have this concept
- Ceph has users
- Users have capabilities/restrictions
What is Ceph's Concept of Container?
- Ceph has 'pools'
- Every object within pool has a unique name
What is Ceph's Concept of Partitions?
- Ceph has 'placement groups'
- 'pg_num' is similar to Swift 'part power'
What is Ceph's Concept of DiskFile?
- Ceph has generic concept of 'object store'
- Pluggable backend
- Not limited to filesystem
- See https://github.com/ceph/ceph/tree/master/src/os
What Language is Used to Implement Ceph?
- C++
- https://github.com/ceph/ceph
What is Ceph's Concept of Middleware?
- It doesn't have the concept
Who Created Ceph?
- A bright guy named Sage Weil
- As part of PhD
- http://ceph.com/papers/weil-rados-pdsw07.pdf
- Created company named InkTank
- InkTank bought by RedHat
First Few Commands
- Create a pool: ceph osd pool create my_pool {pg-num}
- Put an object: rados -p my_pool put my_object my_object_file.txt
- List pools: rados lspools
- List of objects within pool: rados -p my_pool -o my_pool_contents.txt
- Download object: rados -p my_pool get my_object downloaded_my_object_file.txt
A Traditional Ceph Application
- Just make use of librados
- C code
- Other language libraries exist
HTTP Interface
- Use RADOSGW
- Use either S3 or Swift API
Ceph RBD
- Imagine having a Cinder-like module within your object storage system
Object Sizes
- Ceph allows configurable max object size
- Typically set at 2MB or 4MB
- Does Ceph automatically shard objects larger than max size?? (don't remember)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment