Ceph Vs Swift
Ceph Vs Swift
About me
Vincenzo Pii
Researcher @
Leading research initiative on Cloud Storage
Under the theme IaaS
INTRODUCTION
Cloud storage
Cloud storage
Based on distributed, parallel, fault-tolerant file systems
Distributed resources exposed through a single homogeneous
interface
Typical requirements
Highly scalable
Replication management
Redundancy (no single point of failure)
Data distribution
Object storage
A way to manage/access data in a storage system
Typical alternatives
Block storage
File storage
Supported by Inktank
Recently purchased by RedHat (owners of GlusterFS)
Mostly developed in C++
Started as PhD thesis project in 2006
Block, file and object storage
Swift (launchpad.net/swift)
OpenStack object storage
Completely written in Python
RESTful HTTP APIs
Jul 24, 2014
Private storage
Storage backend for own-apps with limited requirements
in size
Experimental environments
3. Hands-on experience
Configuration
Tooling
Network configuration
Three servers on a dedicated VLAN
1 Gbps NICs
100BaseT cabling
Node 1
(.2)
Node 2
(.3)
10.0.5.x/24
Node 3
(.4)
Servers configuration
Hardware
Operating system
Ubuntu 14.04 Server Edition with Kernel 3.13.0-24generic
Jul 24, 2014
Disks performance
READ:
$ sudo hdparm -t --direct /dev/sdb1
/dev/sdb1:
Timing O_DIRECT disk reads: 430 MB in
WRITE:
$ dd if=/dev/zero of=anof bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 8.75321 s, 123 MB/s
Network performance
$ iperf -c ceph-osd0
-----------------------------------------------------------Client connecting to ceph-osd0, TCP port 5001
TCP window size: 85.0 KByte (default)
-----------------------------------------------------------[ 3] local 10.0.5.2 port 41012 connected with 10.0.5.3 port 5001
[ ID] Interval
Transfer
Bandwidth
[ 3] 0.0-10.0 sec 1.10 GBytes
942 Mbits/sec
Ceph OSDs
cluster-admin@ceph-mon0:~$ ceph status
cluster ff0baf2c-922c-4afc-8867-dee72b9325bb
health HEALTH_OK
monmap e1: 1 mons at {ceph-mon0=10.0.5.2:6789/0}, election epoch 1,
quorum 0 ceph-mon0
osdmap e139: 4 osds: 4 up, 4 in
pgmap v17348: 632 pgs, 13 pools, 1834 bytes data, 52 objects
199 MB used, 3724 GB / 3724 GB avail
632 active+clean
cluster-admin@ceph-mon0:~$ ceph osd tree
# id
weight
type name
up/down
-1
3.64
root default
-2
1.82
host ceph-osd0
0
0.91
osd.0
up
1
0.91
osd.1
up
-3
1.82
host ceph-osd1
2
0.91
osd.2
up
3
0.91
osd.3
up
reweight
1
1
1
1
Monitor
(mon0)
St. node 0
St. node 1
HDD1 (OS)
Not used
Not used
Not used
HDD1 (OS)
osd0 XFS
osd1 XFS
Journal
HDD1 (OS)
osd2 XFS
osd3 XFS
Journal
Swift devices
Building rings on storage devices
(No separation of Accounts, Containers and Objects)
export ZONE=
# set the zone number for that storage device
export STORAGE_LOCAL_NET_IP=
# and the IP address
export WEIGHT=100
# relative weight (higher for bigger/faster disks)
export DEVICE=
swift-ring-builder account.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6002/$DEVICE $WEIGHT
swift-ring-builder container.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6001/$DEVICE $WEIGHT
swift-ring-builder object.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6000/$DEVICE $WEIGHT
Swift
Proxy
St. node 0
St. node 1
HDD1 (OS)
Not used
Not used
Not used
HDD1 (OS)
dev1 XFS
dev2 XFS
Not used
HDD1 (OS)
dev3 XFS
dev4 XFS
Not used
Highlighting a difference
LibRados used to access Ceph
WORKLOADS
Tools
Supported metrics
Developed by Intel
Benchmarking for Cloud Object Storage
Supports both Swift and Ceph
Workloads gist
Workload matrix
Containers
Objects size
Workers
4 kB
80/15/5
20
128 kB
100/0/0
16
512 kB
0/100/0
64
1024 kB
128
5 MB
256
10 MB
512
Workloads
216 workstages (all the combinations of the
values of the workload matrix)
12 minutes per workstage
2 minutes warmup
10 minutes running time
Performance Results
READING
Performance Results
WRITING
Performance Results
READ/WRITE/DELETE
CONCLUSIONS
General considerations:
challenges
Equivalency
Comparing two similar systems that are not exactly overlapping
Creating fair setups (e.g., Journals on additional disks for Ceph)
Transposing corresponding concepts
Configuration
Choosing the right/best settings for the context (e.g., number of Swift
workers)
Identifying bottlenecks
To be done in advance to create meaningful workloads
Workloads
Run many tests to identify saturating conditions
Huge decision space
General considerations:
lessons learnt
Publication medium (blog post)
Excellent feedback (e.g., Rackspace developer)
Immediate right of reply and real comments
Neutrality
When analyzing the results
When drawing conclusions
Future works
Performance evaluation necessary for cloud
storage
More object storage evaluations
Interesting because its very close to the application
level
Seagate Kinetic
Possible opportunity to work on a Kinetic setup
Jul 24, 2014
THANKS!
QUESTIONS?
Jul 24, 2014