62
Ceph アアアアアアアアア Gluster Community Day, 20 May 2014 Haruka Iwao

Ceph アーキテクチャ概説

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Ceph アーキテクチャ概説

Cephアーキテクチャ概説Gluster Community Day, 20 May 2014

Haruka Iwao

Page 2: Ceph アーキテクチャ概説

もくじ

Ceph とは何か Ceph のアーキテクチャ Ceph と OpenStack まとめ

Page 3: Ceph アーキテクチャ概説

Ceph とは何か

Page 4: 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/

Page 5: Ceph アーキテクチャ概説

頭足類 ?

Page 6: Ceph アーキテクチャ概説
Page 7: Ceph アーキテクチャ概説

Ceph は ...

{ }オブジェクトストレージとファイルシステムです

オープンソースで大規模にスケールするソフトウェアによる

Page 8: Ceph アーキテクチャ概説

Ceph の歴史

2003 UCSC で開発開始

2006 オープンソース化 主要な論文が発表

2012 Inktank 創業 “Argonaut” がリリース

UCSC: カリフォルニア大学サンタクルーズ校

Page 9: Ceph アーキテクチャ概説

2014 年 5 月Red Hat が Intank を買収

Page 10: Ceph アーキテクチャ概説

Ceph のリリース

3 ヶ月おきのメジャーリリース Argonaut Bobtail Cuttlefish Dumpling Emperor Firefly Giant (7 月リリース予定 )

Page 11: Ceph アーキテクチャ概説

Ceph のアーキテクチャ

Page 12: Ceph アーキテクチャ概説

Ceph の概略図

Page 13: Ceph アーキテクチャ概説

Ceph のレイヤー

RADOS = /dev/sda Ceph FS = ext4

/dev/sda

ext4

Page 14: Ceph アーキテクチャ概説

RADOS( レイドス )

信頼性のある (Reliable) データ消失を避けるため複製を作成

自律的な (Autonomic) お互いに通信し、障害を検知 レプリケーションが透過的に行われる

分散 (Distributed) オブジェクトストア (Object Store)

Page 15: Ceph アーキテクチャ概説

RADOS (2)

Ceph の中核 すべてのデータは RADOS に保

存される Ceph FS が用いるメタデータを

含む mon と osd の 2 つから成る CRUSH アルゴリズムが特徴

Page 16: Ceph アーキテクチャ概説

OSD

Object storage daemon 1 ディスクにつき 1OSD xfs/btrfs をバックエンドに使用

Btrfs のサポートは実験的 整合性担保と性能向上のた

め、 Write-ahead なジャーナルを利用

OSD の台数は 3 〜数万

Page 17: Ceph アーキテクチャ概説

OSD (2)

DISK

FS

DISK DISK

OSD

DISK DISK

OSD OSD OSD OSD

FS FS FSFS btrfsxfsext4

Page 18: Ceph アーキテクチャ概説

MON

Monitoring daemon クラスタマップとクラスタの状

態を管理 3, 5 など奇数で少ない台数

Page 19: Ceph アーキテクチャ概説

オブジェクトの配置

RADOS は “ CRUSH” アルゴリズムを用いてオブジェクトを配置 オブジェクトの場所は 100% 計算

のみで求められる メタデータサーバーが不要

SPoF なし 非常に良いスケーラビリティ

Page 20: Ceph アーキテクチャ概説

CRUSH について1. Placement group(PG) を割り当て PG = Hash( オブジェクト名 ) % PG 数2. OSD = CRUSH(PG, クラスタマップ , ルール )

1

2

Page 21: Ceph アーキテクチャ概説

クラスタマップ 階層的な OSD のマップ

障害単位 ( ラックやスイッチ ) をまたいで複製 トラフィックの集中を防止

Page 22: Ceph アーキテクチャ概説

オブジェクト配置の求め方0100111010100111011

オブジェクト名 : abc, プール : test

Hash(“abc”) % 256 = 0x23“test” = 3

Placement Group: 3.23

Page 23: Ceph アーキテクチャ概説

PG から OSD への割り当て

Placement Group: 3.23

CRUSH(PG 3.23, クラスタマップ , ルール ) → osd.1, osd.5, osd.9

15

9

Page 24: Ceph アーキテクチャ概説

同期レプリケーション

強い一貫性を保つため、レプリケーションは同期

Page 25: Ceph アーキテクチャ概説

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

Page 26: Ceph アーキテクチャ概説

CRUSH まとめ

オブジェクト名 + クラスタマップ → オブジェクトの場所 決定的なアルゴリズム

メタデータを完全に排除 計算はクライアント側で可能 クラスタマップはネットワー

クの階層を反映

Page 27: Ceph アーキテクチャ概説

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

Page 28: Ceph アーキテクチャ概説

RADOSGW

S3 / Swift 互換な RADOS 用のゲートウェイ

Page 29: Ceph アーキテクチャ概説

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

Page 30: Ceph アーキテクチャ概説

RBD

RADOS Block Devices ブロックデバイス

Page 31: Ceph アーキテクチャ概説

RBD の利用の仕方

直接マウントできる rbd map foo --pool rbd mkfs -t ext4 /dev/rbd/rbd/foo

OpenStack 統合 Cinder と Glance から利用可能 後ほど詳しく説明

Page 32: Ceph アーキテクチャ概説

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

Page 33: Ceph アーキテクチャ概説

Ceph FS

POSIX 互換のファイルシステム RADOS 上に構築 Linux のネイティブドライバ

(cephfs) または FUSE でマウント

メタデータサーバー (mds) がファイルシステムツリーを管理

Page 34: Ceph アーキテクチャ概説

Ceph FS の信頼性

MDS はファイルシステムに対する変更をジャーナルとしてRADOS に記録 MDS が停止した場合はジャーナ

ルから状態を復元 HA または負荷分散のために、

複数の MDS を利用可能

Page 35: Ceph アーキテクチャ概説

Ceph FS と OSD

MDS

OSDOSDOSD

POSIX メタデータ( ツリー , 時間 , 所有者など )

MDS

メタデータの変更を記録

データの読み書き

メタデータはメモリ上で管理

Page 36: Ceph アーキテクチャ概説
Page 37: Ceph アーキテクチャ概説
Page 38: Ceph アーキテクチャ概説
Page 39: Ceph アーキテクチャ概説
Page 40: Ceph アーキテクチャ概説

DYNAMIC SUBTREE PARTITIONING

Page 41: Ceph アーキテクチャ概説

Ceph FS はまだ実験的

Page 42: Ceph アーキテクチャ概説

その他の機能

ローリングアップグレード Erasure Coding 階層化キャッシュ KVS による OSD バックエンド 独立したバックエンドネット

ワーク

Page 43: Ceph アーキテクチャ概説

ローリングアップグレード

サービスを止めずにバージョンアップが可能

デーモンを一つずつ stop/start mon → osd → mds →

radowgw の順で実施

Page 44: Ceph アーキテクチャ概説

Erasure coding

レプリケーションの代わりに、Erasure coding( 消失訂正符号 ) を用いてデータを保護

アクセス頻度の少ないデータに適している

Erasure Coding

レプリケーション

容量オーバーヘッド(2 台の故障に耐える )

およそ 40% 200%

CPU 負荷 高い 低いレイテンシ 高い 低い

Page 45: Ceph アーキテクチャ概説

階層化キャッシュ

キャッシュ tier例 ) SSD

ベース tier例 ) HDD,erasure coding

librados

クライアントには透過的

読み書き

キャッシュミス時の読み込み

キャッシュミス時の fetchベース tier へフラッシュ

Page 46: Ceph アーキテクチャ概説

KVS による OSD バックエンド

OSD のバックエンドにLevelDB を使用 (xfs の代替 )

特に小さなオブジェクトのパフォーマンスが向上

不揮発メモリ KVS やRocksDB などのサポートも計画

Page 47: Ceph アーキテクチャ概説

独立したバックエンドネットワーク

レプリケーションのためのバックエンドネットワーク

クライアント

サービス用フロントエンドネットワーク

OSD

1. 書き込み

2. レプリケーション

Page 48: Ceph アーキテクチャ概説

OpenStack 統合

Page 49: Ceph アーキテクチャ概説

OpenStack と Ceph

Page 50: Ceph アーキテクチャ概説

RADOSGW と Keystone

Keystone サーバ

RADOSGW

RESTful オブジェクトストア

トークン問い合わせ

トークンを用いてアクセス

アクセス権付与

Page 51: Ceph アーキテクチャ概説

Glance での利用

RBD

Glance サーバ

/etc/glance/glance-api.conf

default_store=rbdrbd_store_user=glancerbd_store_pool=images

保存 , ダウンロード

3 行の設定で利用可能

イメージ

Page 52: Ceph アーキテクチャ概説

Cinder/Nova 統合

RBD

Cinder サーバー

qemu

VM

librbd

nova-compute

ボリュームからブート

管理

ボリューム イメージ

Copy-on-write によるクローン

Page 53: Ceph アーキテクチャ概説

を で用いるメリット

イメージとボリュームに単一のストレージを提供

Copy-on-write によるクローンとスナップショットの利用

qemu, KVM のネイティブサポートによる高い性能

Page 54: Ceph アーキテクチャ概説
Page 55: Ceph アーキテクチャ概説

まとめ

Page 56: Ceph アーキテクチャ概説

Ceph とは

高いスケーラビリティを持つストレージ

オブジェクト、ブロック、 POSIX ファイルシステムすべてに単一のアーキテクチャ

OpenStack との統合はすでに実績がある

Page 57: Ceph アーキテクチャ概説

Ceph と GlusterFS の比較Ceph GlusterFS

データ配置 オブジェクト単位 ファイル単位

ファイルの場所 決定的なアルゴリズムによる(CRUSH)

分散ハッシュテーブル , xattr に保存

レプリケーション サーバーサイド クライアントサイド

主な使い道 オブジェクト / ブロックストア

POSIX 互換のファイルシステム

課題 POSIX ファイルシステムに改善が必要

オブジェクト / ブロックストアに改善が必要

Page 58: Ceph アーキテクチャ概説

参考資料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/

Page 59: Ceph アーキテクチャ概説

One more thing

Page 60: Ceph アーキテクチャ概説

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

Page 61: Ceph アーキテクチャ概説

Calamari の画面

Page 62: Ceph アーキテクチャ概説

Thank you!