Cephアーキテクチャ概説Gluster Community Day, 20 May 2014
Haruka Iwao
もくじ
Ceph とは何か Ceph のアーキテクチャ Ceph と OpenStack まとめ
Ceph とは何か
Ceph
“Ceph” は頭足類を意味する “ cephalopod” の略で、よくタコにつけられるあだ名である。
http://techcrunch.com/2014/04/30/red-hat-buys-ceph-provider-inktank-for-175m-in-cash-to-beef-up-its-cloud-storage-offerings/
頭足類 ?
Ceph は ...
{ }オブジェクトストレージとファイルシステムです
オープンソースで大規模にスケールするソフトウェアによる
Ceph の歴史
2003 UCSC で開発開始
2006 オープンソース化 主要な論文が発表
2012 Inktank 創業 “Argonaut” がリリース
UCSC: カリフォルニア大学サンタクルーズ校
2014 年 5 月Red Hat が Intank を買収
Ceph のリリース
3 ヶ月おきのメジャーリリース Argonaut Bobtail Cuttlefish Dumpling Emperor Firefly Giant (7 月リリース予定 )
Ceph のアーキテクチャ
Ceph の概略図
Ceph のレイヤー
RADOS = /dev/sda Ceph FS = ext4
/dev/sda
ext4
RADOS( レイドス )
信頼性のある (Reliable) データ消失を避けるため複製を作成
自律的な (Autonomic) お互いに通信し、障害を検知 レプリケーションが透過的に行われる
分散 (Distributed) オブジェクトストア (Object Store)
RADOS (2)
Ceph の中核 すべてのデータは RADOS に保
存される Ceph FS が用いるメタデータを
含む mon と osd の 2 つから成る CRUSH アルゴリズムが特徴
OSD
Object storage daemon 1 ディスクにつき 1OSD xfs/btrfs をバックエンドに使用
Btrfs のサポートは実験的 整合性担保と性能向上のた
め、 Write-ahead なジャーナルを利用
OSD の台数は 3 〜数万
OSD (2)
DISK
FS
DISK DISK
OSD
DISK DISK
OSD OSD OSD OSD
FS FS FSFS btrfsxfsext4
MON
Monitoring daemon クラスタマップとクラスタの状
態を管理 3, 5 など奇数で少ない台数
オブジェクトの配置
RADOS は “ CRUSH” アルゴリズムを用いてオブジェクトを配置 オブジェクトの場所は 100% 計算
のみで求められる メタデータサーバーが不要
SPoF なし 非常に良いスケーラビリティ
CRUSH について1. Placement group(PG) を割り当て PG = Hash( オブジェクト名 ) % PG 数2. OSD = CRUSH(PG, クラスタマップ , ルール )
1
2
クラスタマップ 階層的な OSD のマップ
障害単位 ( ラックやスイッチ ) をまたいで複製 トラフィックの集中を防止
オブジェクト配置の求め方0100111010100111011
オブジェクト名 : abc, プール : test
Hash(“abc”) % 256 = 0x23“test” = 3
Placement Group: 3.23
PG から OSD への割り当て
Placement Group: 3.23
CRUSH(PG 3.23, クラスタマップ , ルール ) → osd.1, osd.5, osd.9
15
9
同期レプリケーション
強い一貫性を保つため、レプリケーションは同期
OSD が fail したら
OSD が“ down” 状態になる 5 分後 , “out” 状態に変わる
クラスタマップが更新される
CRUSH(PG 3.23, クラスタマップ 1, ルール ) → osd.1, osd.5, osd.9
CRUSH(PG 3.23, クラスタマップ 2, ルール ) → osd.1, osd.3, osd.9
CRUSH まとめ
オブジェクト名 + クラスタマップ → オブジェクトの場所 決定的なアルゴリズム
メタデータを完全に排除 計算はクライアント側で可能 クラスタマップはネットワー
クの階層を反映
RADOSGW
RADOS
A reliable, autonomous, distributed object store comprised of self-healing, self-managing, intelligent storage nodes
LIBRADOS
A library allowingapps to directlyaccess RADOS,with support forC, C++, Java,Python, Ruby,and PHP
RBD
A reliable and fully-distributed block device, with a Linux kernel client and a QEMU/KVM driver
CEPH FS
A POSIX-compliant distributed file system, with a Linux kernel client and support for FUSE
RADOSGW
A bucket-based REST gateway, compatible with S3 and Swift
RADOSGW
S3 / Swift 互換な RADOS 用のゲートウェイ
RBD
RADOS
A reliable, autonomous, distributed object store comprised of self-healing, self-managing, intelligent storage nodes
LIBRADOS
A library allowingapps to directlyaccess RADOS,with support forC, C++, Java,Python, Ruby,and PHP
RBD
A reliable and fully-distributed block device, with a Linux kernel client and a QEMU/KVM driver
CEPH FS
A POSIX-compliant distributed file system, with a Linux kernel client and support for FUSE
RADOSGW
A bucket-based REST gateway, compatible with S3 and Swift
RBD
RADOS Block Devices ブロックデバイス
RBD の利用の仕方
直接マウントできる rbd map foo --pool rbd mkfs -t ext4 /dev/rbd/rbd/foo
OpenStack 統合 Cinder と Glance から利用可能 後ほど詳しく説明
Ceph FS
RADOS
A reliable, autonomous, distributed object store comprised of self-healing, self-managing, intelligent storage nodes
LIBRADOS
A library allowingapps to directlyaccess RADOS,with support forC, C++, Java,Python, Ruby,and PHP
RBD
A reliable and fully-distributed block device, with a Linux kernel client and a QEMU/KVM driver
CEPH FS
A POSIX-compliant distributed file system, with a Linux kernel client and support for FUSE
RADOSGW
A bucket-based REST gateway, compatible with S3 and Swift
Ceph FS
POSIX 互換のファイルシステム RADOS 上に構築 Linux のネイティブドライバ
(cephfs) または FUSE でマウント
メタデータサーバー (mds) がファイルシステムツリーを管理
Ceph FS の信頼性
MDS はファイルシステムに対する変更をジャーナルとしてRADOS に記録 MDS が停止した場合はジャーナ
ルから状態を復元 HA または負荷分散のために、
複数の MDS を利用可能
Ceph FS と OSD
MDS
OSDOSDOSD
POSIX メタデータ( ツリー , 時間 , 所有者など )
MDS
メタデータの変更を記録
データの読み書き
メタデータはメモリ上で管理
DYNAMIC SUBTREE PARTITIONING
Ceph FS はまだ実験的
その他の機能
ローリングアップグレード Erasure Coding 階層化キャッシュ KVS による OSD バックエンド 独立したバックエンドネット
ワーク
ローリングアップグレード
サービスを止めずにバージョンアップが可能
デーモンを一つずつ stop/start mon → osd → mds →
radowgw の順で実施
Erasure coding
レプリケーションの代わりに、Erasure coding( 消失訂正符号 ) を用いてデータを保護
アクセス頻度の少ないデータに適している
Erasure Coding
レプリケーション
容量オーバーヘッド(2 台の故障に耐える )
およそ 40% 200%
CPU 負荷 高い 低いレイテンシ 高い 低い
階層化キャッシュ
キャッシュ tier例 ) SSD
ベース tier例 ) HDD,erasure coding
librados
クライアントには透過的
読み書き
キャッシュミス時の読み込み
キャッシュミス時の fetchベース tier へフラッシュ
KVS による OSD バックエンド
OSD のバックエンドにLevelDB を使用 (xfs の代替 )
特に小さなオブジェクトのパフォーマンスが向上
不揮発メモリ KVS やRocksDB などのサポートも計画
独立したバックエンドネットワーク
レプリケーションのためのバックエンドネットワーク
クライアント
サービス用フロントエンドネットワーク
OSD
1. 書き込み
2. レプリケーション
OpenStack 統合
OpenStack と Ceph
RADOSGW と Keystone
Keystone サーバ
RADOSGW
RESTful オブジェクトストア
トークン問い合わせ
トークンを用いてアクセス
アクセス権付与
Glance での利用
RBD
Glance サーバ
/etc/glance/glance-api.conf
default_store=rbdrbd_store_user=glancerbd_store_pool=images
保存 , ダウンロード
3 行の設定で利用可能
イメージ
Cinder/Nova 統合
RBD
Cinder サーバー
qemu
VM
librbd
nova-compute
ボリュームからブート
管理
ボリューム イメージ
Copy-on-write によるクローン
を で用いるメリット
イメージとボリュームに単一のストレージを提供
Copy-on-write によるクローンとスナップショットの利用
qemu, KVM のネイティブサポートによる高い性能
まとめ
Ceph とは
高いスケーラビリティを持つストレージ
オブジェクト、ブロック、 POSIX ファイルシステムすべてに単一のアーキテクチャ
OpenStack との統合はすでに実績がある
Ceph と GlusterFS の比較Ceph GlusterFS
データ配置 オブジェクト単位 ファイル単位
ファイルの場所 決定的なアルゴリズムによる(CRUSH)
分散ハッシュテーブル , xattr に保存
レプリケーション サーバーサイド クライアントサイド
主な使い道 オブジェクト / ブロックストア
POSIX 互換のファイルシステム
課題 POSIX ファイルシステムに改善が必要
オブジェクト / ブロックストアに改善が必要
参考資料Ceph Documents
https://ceph.com/docs/master/
Well documented.
Sébastien Han
http://www.sebastien-han.fr/blog/
An awesome blog.
CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data
http://ceph.com/papers/weil-crush-sc06.pdf
CRUSH algorithm paper
Ceph: A Scalable, High-Performance Distributed File System
http://www.ssrc.ucsc.edu/Papers/weil-osdi06.pdf
Ceph paper
Ceph の覚え書きのインデックスhttp://www.nminoru.jp/~nminoru/unix/ceph/
One more thing
Calamari がオープンソース化
“Calamari, the monitoring and diagnostics tool that Inktank has developed as part of the Inktank Ceph Enterprise product, will soon be open sourced.”
http://ceph.com/community/red-hat-to-acquire-inktank/#sthash.1rB0kfRS.dpuf
Calamari の画面
Thank you!