Ceph アーキテクチャ概説

Preview:

DESCRIPTION

Gluster Community Day 2014 で発表した Ceph の解説スライドを、日本語に翻訳したものです。

Citation preview

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!

Recommended