Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ceph アーキテクチャ概説

25,178 views

Published on

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

Published in: Engineering
  • Be the first to comment

Ceph アーキテクチャ概説

  1. 1. Ceph アーキテクチャ概説 Gluster Community Day, 20 May 2014 Haruka Iwao
  2. 2. もくじ Ceph とは何か Ceph のアーキテクチャ Ceph と OpenStack まとめ
  3. 3. Ceph とは何か
  4. 4. 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/
  5. 5. 頭足類?
  6. 6. Ceph は... { } オブジェクトストレージと ファイルシステムです オープンソースで 大規模にスケールする ソフトウェアによる
  7. 7. Cephの歴史 2003 UCSCで開発開始 2006 オープンソース化 主要な論文が発表 2012 Inktank 創業 “Argonaut” がリリース UCSC: カリフォルニア大学サンタクルーズ校
  8. 8. 2014年5月 Red HatがIntankを買収
  9. 9. Cephのリリース 3ヶ月おきのメジャーリリース Argonaut Bobtail Cuttlefish Dumpling Emperor Firefly Giant (7月リリース予定)
  10. 10. Cephのアーキテクチャ
  11. 11. Cephの概略図
  12. 12. Cephのレイヤー RADOS = /dev/sda Ceph FS = ext4 /dev/sda ext4
  13. 13. RADOS(レイドス) 信頼性のある(Reliable) データ消失を避けるため複製を作成 自律的な(Autonomic) お互いに通信し、障害を検知 レプリケーションが透過的に行われる 分散(Distributed) オブジェクトストア(Object Store)
  14. 14. RADOS (2) Cephの中核 すべてのデータはRADOSに保 存される Ceph FS が用いるメタデータを 含む mon と osd の2つから成る CRUSHアルゴリズムが特徴
  15. 15. OSD Object storage daemon 1ディスクにつき1OSD xfs/btrfs をバックエンドに使用 Btrfs のサポートは実験的 整合性担保と性能向上のため、 Write-aheadなジャーナルを利用 OSDの台数は3〜数万
  16. 16. OSD (2) DISK FS DISK DISK OSD DISK DISK OSD OSD OSD OSD FS FS FSFS btrfs xfs ext4
  17. 17. MON Monitoring daemon クラスタマップとクラスタの 状態を管理 3, 5など奇数で少ない台数
  18. 18. オブジェクトの配置 RADOS は “CRUSH” アルゴリズ ムを用いてオブジェクトを配置 オブジェクトの場所は100%計算の みで求められる メタデータサーバーが不要 SPoFなし 非常に良いスケーラビリティ
  19. 19. CRUSHについて 1. Placement group(PG) を割り当て PG = Hash(オブジェクト名) % PG数 2. OSD = CRUSH(PG, クラスタマップ, ルール) 1 2
  20. 20. クラスタマップ  階層的なOSDのマップ 障害単位(ラックやスイッチ)をまたいで複製 トラフィックの集中を防止
  21. 21. オブジェクト配置の求め方 0100111010100111011 オブジェクト名: abc, プール: test Hash(“abc”) % 256 = 0x23 “test” = 3 Placement Group: 3.23
  22. 22. PG から OSDへの割り当て Placement Group: 3.23 CRUSH(PG 3.23, クラスタマップ, ルール) → osd.1, osd.5, osd.9 1 5 9
  23. 23. 同期レプリケーション 強い一貫性を保つため、レプリ ケーションは同期
  24. 24. 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
  25. 25. CRUSHまとめ オブジェクト名 + クラスタ マップ → オブジェクトの場所 決定的なアルゴリズム メタデータを完全に排除 計算はクライアント側で可能 クラスタマップはネットワー クの階層を反映
  26. 26. RADOSGW RADOS A reliable, autonomous, distributed object store comprised of self-healing, self-managing, intelligent storage nodes LIBRADOS A library allowing apps to directly access RADOS, with support for C, 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
  27. 27. RADOSGW S3 / Swift 互換なRADOS用の ゲートウェイ
  28. 28. RBD RADOS A reliable, autonomous, distributed object store comprised of self-healing, self-managing, intelligent storage nodes LIBRADOS A library allowing apps to directly access RADOS, with support for C, 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
  29. 29. RBD RADOS Block Devices ブロックデバイス
  30. 30. RBDの利用の仕方 直接マウントできる rbd map foo --pool rbd mkfs -t ext4 /dev/rbd/rbd/foo OpenStack 統合 CinderとGlanceから利用可能 後ほど詳しく説明
  31. 31. Ceph FS RADOS A reliable, autonomous, distributed object store comprised of self-healing, self-managing, intelligent storage nodes LIBRADOS A library allowing apps to directly access RADOS, with support for C, 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
  32. 32. Ceph FS POSIX互換のファイルシステム RADOS上に構築 Linuxのネイティブドライバ (cephfs)またはFUSEでマウント メタデータサーバー(mds)がファ イルシステムツリーを管理
  33. 33. Ceph FSの信頼性 MDSはファイルシステムに対 する変更をジャーナルとして RADOSに記録 MDSが停止した場合はジャーナ ルから状態を復元 HAまたは負荷分散のために、 複数のMDSを利用可能
  34. 34. Ceph FS と OSD MDS OSDOSDOSD POSIX メタデータ (ツリー, 時間, 所有者など) MDS メタデータの変更を記録 データの読み書き メタデータはメモリ上で管理
  35. 35. DYNAMIC SUBTREE PARTITIONING
  36. 36. Ceph FS はまだ実験的
  37. 37. その他の機能 ローリングアップグレード Erasure Coding 階層化キャッシュ KVSによるOSDバックエンド 独立したバックエンドネット ワーク
  38. 38. ローリングアップグレード サービスを止めずにバージョ ンアップが可能 デーモンを一つずつstop/start mon → osd → mds → radowgw の順で実施
  39. 39. Erasure coding レプリケーションの代わりに、 Erasure coding(消失訂正符号) を用いてデータを保護 アクセス頻度の少ないデータ に適している Erasure Coding レプリケーション 容量オーバーヘッド (2台の故障に耐える) およそ40% 200% CPU負荷 高い 低い レイテンシ 高い 低い
  40. 40. 階層化キャッシュ キャッシュtier 例) SSD ベースtier 例) HDD, erasure coding librados クライアントには透過的 読み書き キャッシュミス時の 読み込み キャッシュミス時のfetch ベースtierへフラッシュ
  41. 41. KVSによるOSDバックエンド OSDのバックエンドに LevelDBを使用(xfsの代替) 特に小さなオブジェクトのパ フォーマンスが向上 不揮発メモリKVSやRocksDB などのサポートも計画
  42. 42. 独立したバックエンドネットワーク レプリケーションのための バックエンドネットワーク クライアント サービス用フロント エンドネットワーク OSD 1. 書き込み 2. レプリケーション
  43. 43. OpenStack 統合
  44. 44. OpenStack と Ceph
  45. 45. RADOSGW と Keystone Keystoneサーバ RADOSGW RESTfulオブジェクトストア トークン問い合わせ トークンを用いて アクセス アクセス権付与
  46. 46. Glanceでの利用 RBD Glance サーバ /etc/glance/glance-api.conf default_store=rbd rbd_store_user=glance rbd_store_pool=images 保存, ダウンロード 3行の設定で 利用可能 イメー ジ
  47. 47. Cinder/Nova 統合 RBD Cinder サーバー qemu VM librbd nova-compute ボリュームからブート 管理 ボリューム イメー ジ Copy-on-writeによるクローン
  48. 48. を で用いるメリット イメージとボリュームに単一 のストレージを提供 Copy-on-writeによるクロー ンとスナップショットの利用 qemu, KVMのネイティブサ ポートによる高い性能
  49. 49. まとめ
  50. 50. Ceph とは 高いスケーラビリティを持つ ストレージ オブジェクト、ブロック、 POSIXファイルシステムすべて に単一のアーキテクチャ OpenStackとの統合はすでに 実績がある
  51. 51. Ceph と GlusterFS の比較 Ceph GlusterFS データ配置 オブジェクト単位 ファイル単位 ファイルの場所 決定的なアルゴリ ズムによる (CRUSH) 分散ハッシュテー ブル, xattrに保存 レプリケーション サーバーサイド クライアントサイ ド 主な使い道 オブジェクト/ブ ロックストア POSIX互換のファイ ルシステム 課題 POSIXファイルシス テムに改善が必要 オブジェクト/ブ ロックストアに改 善が必要
  52. 52. 参考資料 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/
  53. 53. One more thing
  54. 54. 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
  55. 55. Calamariの画面
  56. 56. Thank you!

×