Last active
December 6, 2016 22:23
-
-
Save pauldardeau/2b0557498137d921e0d0259e17c0164e to your computer and use it in GitHub Desktop.
Quick Intro to Ceph from Swift Perspective
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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