Ceph
作者 | Inktank Storage (Sage Weil, Yehuda Sadeh Weinraub, Gregory Farnum, Josh Durgin, Samuel Just, Wido den Hollander) |
---|---|
開発元 | カノニカル、CERN、シスコシステムズ、富士通、インテル、レッドハット、SanDisk、SUSE[1] |
最新版 |
17.2.6 "Quincy"[2]
/ 2023年4月10日 |
最新評価版 |
13.1.0 "Mimic"[3]
/ 2018年5月11日 |
リポジトリ | |
プログラミング 言語 | C++、Python[4] |
対応OS | Linux、FreeBSD[5] |
種別 | 分散オブジェクトストア |
ライセンス | LGPL 2.1[6] |
公式サイト |
ceph |
コンピューター科学の分野において、Ceph([ˈsɛf]または[ˈkɛf]と発音する)は、単一の分散コンピュータ・クラスター上でオブジェクトストレージを実装したフリーソフトウェアのストレージプラットフォームである。オブジェクト、ブロック、ファイルレベルのストレージインタフェースを提供し、単一障害点がなく、エクサバイトレベルまで拡張可能な、フリーで利用できる完全な分散オペレーションを主な目的としている。
Cephは、特別なハードウェアサポートを必要としない汎用ハードウェアを使用して、データを複製することで耐障害性を持たせている[7]。管理時間やその他のコストを最小にすることを目指す設計の結果として、Cephのシステムは、自己修復機能と自己管理機能の両方を備える。
2016年4月21日、Cephの開発チームは、CephFSが安定したと思われる最初のバージョンである「Jewel」をリリースした。このバージョンにおいて、CephFSの修復および障害復旧ツールは、必要な機能を完備した(スナップショット機能など。複数のアクティブなメタデータサーバなどの機能は、環境によっては不安定になるため、デフォルトでは無効化されている)[8]。
2017年8月のリリース(コードネーム「Luminous」)では、本番環境対応のBlueStoreストレージフォーマットが導入された[9]。BlueStoreは、古いファイルシステムベースのファイルストアの多数の欠点を解決し、レイテンシの改善や追加のストレージ機能を提供している。
設計
[編集]- クラスタモニタ (Cluster monitor; ceph-mon)。クラスタノードの稼働・障害状態をトラッキングする。
- メタデータサーバ (Metadata server; ceph-mds)。iノードとディレクトリのメタデータを格納する。
- オブジェクトストレージデバイス (Object storage devices; ceph-osd)。直接ジャーナルディスクストレージ(v12.xリリース以降はBlueStore[11])を使用するか、ファイルシステムにファイルの内容を格納します(XFSの場合、Filestoreという名前のストレージ)[12]。
- Representational State Transfer (RESTful) ゲートウェイ (ceph-rgw)。Cephのオブジェクトストレージレイヤを、Amazon S3またはOpenStack Swift APIと互換性のあるインタフェースとして公開する。
これらすべてのデーモンは完全に分散して動作し、同じサーバ群で動作させることもできる[13]。
Cephは、高いスループットを達成するために、RAID0が複数のハードドライブにまたがってパーティションをストライプするのと同様に、個々のファイルを複数のノードにまたがってストライピングする。頻繁にアクセスされるオブジェクトがより多くのノードに複製される、適応的なロードバランシングがサポートされている[要出典]。2017年9月 現在[update]、BlueStoreが本番環境でのデフォルトの推奨ストレージタイプである[9]。BlueStoreはCeph独自のストレージ実装であり、以前使用されていたFilestoreバックエンドよりも優れたレイテンシと高い拡張性を提供し、追加の処理やレイヤのキャッシュなどが必要なファイルシステムベースのストレージの欠点を解消している。Filestoreバックエンドはまだ有用で非常に安定していると考えられており、その場合には本番環境ではXFSを使用することが推奨されており、非本番環境ではBtrfsも推奨されている。RADOSオブジェクトの最大長に制限があるため、ext4ファイルシステムの使用は非推奨であり、すでにテストも行われなくなっている[14]。
オブジェクトストレージ
[編集]Cephは分散オブジェクトストレージ実装している。Cephのソフトウェア・ライブラリが提供するクライアント・アプリケーションlibrados
を利用することで、RADOS(reliable autonomic distributed object store; 信頼性の高い自律分散オブジェクトストア)と呼ばれるCeph独自のオブジェクトベースのストレージ・システムに直接アクセスすることができる。また、librados
は、RADOSブロックデバイス (RBD)、RADOS Gateway、Ceph File System (CephFS) などのCephの主要インタフェースの基盤を提供している。
librados
ソフトウェアライブラリは、C、C++、Java、PHP、およびPythonでのアクセスを提供する。RADOS Gatewayは、RADOSオブジェクトストアを、ネイティブのAmazon S3 APIとOpenStack Swift APIの両方から利用できるRESTfulインタフェースとして公開する。
ブロックストレージ
[編集]Cephのオブジェクトストレージシステムは、Cephをシン・プロビジョニングされたブロックデバイスとしてマウントすることを可能にする。アプリケーションがブロックデバイスを使用してCephにデータを書き込むと、Cephは自動的にデータをストライプ化し、クラスタ全体に複製する。また、CephのRADOS Block Device (RBD) は、Kernel-based Virtual Machines (KVM) と統合されている。
CephのRBDインタフェースは、librados
インタフェースとCephFSファイルシステムを提供するのと同じCephオブジェクトストレージシステムを利用しており、ブロックデバイスのイメージをオブジェクトとして保存する。RBDはlibrados
上に構築されているため、RBDは、librados
が持つ読み取り専用スナップショットの作成や、スナップショットの復元などの機能を継承している。クラスタ全体でイメージをストライピングすることで、大きなブロックデバイスイメージの読み取りアクセス性能を向上させている。
ブロックデバイスは仮想化できるため、Apache CloudStack、OpenStack、OpenNebula、Ganeti、Proxmox Virtual Environmentなどの仮想化プラットフォームにおいて、仮想マシンにブロックストレージを提供できる。
ファイルシステム
[編集]Cephのファイルシステム (CephFS) は、オブジェクトストレージとブロックデバイスインタフェースを提供するのと同じCephのオブジェクトストレージシステム上で動作する。Cephメタデータサーバクラスタは、ファイルシステムのディレクトリやファイル名を、RADOSクラスタ内に保存されているオブジェクトにマッピングするサービスを提供する。メタデータサーバクラスタは、拡大・縮小することができ、ファイルシステムを動的にリバランスしてクラスタホスト間でデータを均等に分散させることができる。この機能のおかげで、高い性能が維持され、クラスタ内の特定のホストに大きな負荷がかかるのを防ぐことが保証される。
クライアントは、Linuxカーネルクライアントを使用して、POSIX互換ファイルシステムとしてマウントする。2010年3月19日、リーナス・トーバルズは、2010年5月16日にリリースされたLinuxカーネルバージョン2.6.34にCephクライアントをマージした[15]。また、古いFUSEベースのクライアントも利用可能である。サーバは、通常のUnixデーモンとして動作する。
歴史
[編集]Cephは、2006 USENIX Conference on Operating System Design (OSDI 2006) において、Weil、Brandt、Miller、Long、Maltzahnによる論文内で初めて提案された[注釈 1]。さらに詳細な記述が、翌年にSage Weilの博士論文として出版された[16]。
2007年秋に大学院を卒業した後も、WeilはフルタイムでCephに取り組み続け、Cephのコア開発チームにはYehuda Sadeh WeinraubとGregory Farnumが新たに参加した。2012年、WeilはCephのプロフェッショナルサービスおよびサポートのための会社Inktank Storageを設立した[17][18]。
2014年4月、Inktankはレッドハットに買収され、Ceph開発の大部分はレッドハット社内で行われるようになった[19]。
2015年10月、オープンソースのソフトウェア定義型ストレージ技術の方向性を推進することでコミュニティを支援するために、Ceph Community Advisory Boardが設立された。チャーターアドバイザリボードには、カノニカル、CERN、シスコシステムズ、富士通、インテル、レッドハット、SanDisk、SUSEなどのグローバルなIT組織から、Cephプロジェクトにコミットしている所属メンバーが参加している[1]。
- Argonaut – 2012年7月3日、Ceph開発チームはArgonautをリリースした。Ceph初のstableなメジャーリリースである。このリリースは安定性向上のための修正とパフォーマンスのためのアップデートのみとなり、新しい機能は将来のリリースに含まれる[20]。
- Bobtail (v0.56) – 2013年1月1日、Cephの開発チームはBobtailをリリースした。Cephの2番目のstableなメジャーリリースである。このリリースでは、第1に安定性の向上、性能、前バージョンArgonautのstableシリーズ(v0.48.x)からのアップデート性を主に注力された[21]。
- Cuttlefish (v0.61) – 2013年5月7日、Ceph開発チームはCuttlefishをリリースした。Cephの3番目のstableなメジャーリリースである。このリリースには多数の機能の追加と性能の拡張が含まれる。また、
mkcephfs
に代わるCephクラスタのデプロイツールceph-deploy
の最初のstableなリリースである[22]。 - Dumpling (v0.67) – 2013年8月14日、Ceph開発チームはDumplingをリリースした。Cephの4番目のstableなメジャーリリースである。このリリースでは、初めてグローバルな名前空間とリージョンのサポートを実装された。また、監視と管理機能のためのREST APIが実装された。そして、Red Hat Enterprise Linux系 (RHEL) ベースのプラットフォームでのサポートが向上した[23]。
- Emperor (v0.72) – 2013年11月9日、Ceph開発チームはEmperorをリリースした。Cephの5番目のstableなメジャーリリースである。このリリースではいくつかの新機能が実装された。radosgwの複数データセンター間でのレプリケーション機能、ユーザビリティーの向上、多数の小さな性能向上、次のFireflyのリリースに向けた内部実装のリファクタリングなどである[24]。
- Firefly (v0.80) – 2014年5月7日、Cephの開発チームはFireflyをリリースした。Cephの6番目のstableなメジャーリリースである。このリリースでは、いくつかの新機能が実装された。イレージャーコーディング、キャッシュ・ティアリング、プライマリ・アフィニティ(primary affinity)、キー/バリューOSDバックエンド(実験的)、スタンドアロンのradosgw(実験的)などである[25]。
- Giant (v0.87) – 2014年10月29日、Ceph開発チームはGiantをリリースした。Cephの7番目のstableなメジャーリリースである[26]。
- Hammer (v0.94) – 2015年4月7日、Ceph開発チームはHammerをリリースした。Cephの8番目のstableなメジャーリリースである。次の長期のstableシリーズの基礎となることが期待されている。v0.80.x Fireflyに取って代わるバージョンとなるものと開発された[27]。
- Infernalis (v9.2.0) – 2015年11月6日、Ceph開発チームはInfernalisをリリースした。Cephの9番目のstableなメジャーリリースである。次のstableシリーズの基礎となるものである。v0.94.x Hammerから大きな変更がいくつか行われたため、アップグレード手順が複雑になっている[28]。
- Jewel (v10.2.0) – 2016年4月21日、Ceph開発チームはJewelをリリースした。CephFSがstableとみなされた最初のリリースである。CephFSの修復および障害回復ツールは全機能を網羅している(双方向フェイルオーバーや、active/active設定)が、いくつかの機能はデフォルトではオフになっている。このリリースでは、BlueStoreと呼ばれる新しい実験的なRADOSのバックエンドが含まれている。このBlueStoreは、将来のリリースでデフォルトのストレージバックエンドとなる計画である[8]。
- Kraken (v11.2.0) – 2017年1月20日、Ceph開発チームはKrakenをリリースした。Jewelで導入された新しいBlueStoreストレージフォーマットがstableなon-diskフォーマットとなり、テストスイートの一分に含まれるようになった。まだ実験的であるとされているが、すでにBlueStoreは本番環境での使用にほぼ問題がない段階に到達し、Luminousでは使用可能となる予定である[29]。
- Luminous (v12.2.0) – 2017年8月29日、Ceph開発チームはLuminousをリリースした[9]。いくつかの機能とともに、BlueStoreストレージフォーマット(ファイルシステムの代わりに生のディスクを使用するCeph独自のディスクフォーマット)がstableとなり、使用が推奨されるようになった。
- Mimic (v13.2.0) – 2018年6月1日、Ceph開発チームはMimicをリリースした[30]。Mimicのリリースより、複数のMDSデーモンを組み合わせた場合のスナップショットがstableとなった。また、RESTful gatewayのフロントエンドBeastがstableとされ、本番環境で使用可能となった。
語源
[編集]「Ceph」という名前は、タコを含む軟体動物のクラスである「頭足類 (cephalopod) 」の略語である。ロゴが強調しているように、この名前は、分散システムを示唆するタコの非常に並列的な振る舞いから来ている。また、「サミー」という名前のバナナナメクジがCephが誕生したUCSCのマスコットであるため選ばれた[10]。タコもバナナナメクジも、ともに軟体動物であり、頭足類である。
関連項目
[編集]参考文献
[編集]- Ceph公式ドキュメント
- M. Tim Jones (2010-05-04). “Ceph: A Linux petabyte-scale distributed file system”. developerWorks > Linux > Technical library 2010年5月6日閲覧。.
- Jeffrey B. Layton (2010-04-20). “Ceph: The Distributed File System Creature from the Object Lagoon”. Linux Magazine 2010年4月24日閲覧。.
- Carlos Maltzahn; Esteban Molina-Estolano; Amandeep Khurana; Alex J. Nelson; Scott A. Brandt; Sage Weil (August 2010). “Ceph as a scalable alternative to the Hadoop Distributed File System”. ;login: 35 (4) 2012年3月9日閲覧。.
- Martin Loschwitz (April 24, 2012). “The RADOS Object Store and Ceph Filesystem”. HPC ADMIN Magazine 2012年4月25日閲覧。.
脚注
[編集]注釈
[編集]- ^ "Ceph:スケーラブルで高性能な分散ファイルシステム、SA Weil、SA Brandt、EL Miller、DDE Long、C Maltzahn、Proc。
出典
[編集]- ^ a b “Ceph Community Forms Advisory Board” (2015年10月28日). 2016年1月20日閲覧。
- ^ “17.2.6 Quincy released”. 2023年4月10日閲覧。
- ^ “v13.1.0 Mimic RC1 released”. 2019年1月28日閲覧。
- ^ “GitHub Repository”. 2019年1月28日閲覧。
- ^ “FreeBSD Quarterly Status Report”. 2019年1月28日閲覧。
- ^ “LGPL2.1 license file in the Ceph sources” (2014年10月24日). 2014年10月24日閲覧。
- ^ Jeremy Andrews (2007年11月15日). “Ceph Distributed Network File System”. KernelTrap. 2007年11月17日時点のオリジナルよりアーカイブ。2007年11月15日閲覧。
- ^ a b Sage Weil (2016年4月21日). “v10.2.0 Infernalis Released”. Ceph Blog. 2016年4月21日閲覧。
- ^ a b c Sage Weil (2017年8月29日). “v12.2.0 Luminous Released”. Ceph Blog. 2017年9月1日閲覧。
- ^ a b c M. Tim Jones (2010年6月4日). “Ceph: A Linux petabyte-scale distributed file system” (PDF). IBM. 2014年12月3日閲覧。
- ^ “BlueStore”. Ceph. 2017年9月29日閲覧。
- ^ “Hard Disk and File System Recommendations”. 2017年3月17日閲覧。[リンク切れ]
- ^ Jake Edge (2007年11月14日). “The Ceph filesystem”. LWN.net. 2019年1月28日閲覧。
- ^ “Hard Disk and File System Recommendations”. ceph.com. 2017年6月26日閲覧。[リンク切れ]
- ^ Sage Weil (2010年2月19日). “Client merged for 2.6.34”. ceph.newdream.net. 2019年1月28日閲覧。
- ^ Sage Weil (2007年12月1日). “Ceph: Reliable, Scalable, and High-Performance Distributed Storage”. University of California, Santa Cruz. 2019年1月28日閲覧。
- ^ Bryan Bogensberger (2012年5月3日). “And It All Comes Together”. Inktank Blog. 2012年7月19日時点のオリジナルよりアーカイブ。2012年7月10日閲覧。
- ^ Joseph F. Kovar (July 10, 2012). “The 10 Coolest Storage Startups Of 2012 (So Far)”. CRN July 19, 2013閲覧。
- ^ Red Hat Inc (2014年4月30日). “Red Hat to Acquire Inktank, Provider of Ceph”. レッドハット. 2014年8月19日閲覧。
- ^ Sage Weil (2012年7月3日). “v0.48 "Argonaut" Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2013年1月1日). “v0.56 Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2013年5月17日). “v0.61 "Cuttlefish" Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2013年8月14日). “v0.67 Dumpling Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2013年11月9日). “v0.72 Emperor Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2014年5月7日). “v0.80 Firefly Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2014年10月29日). “v0.87 Giant Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2015年4月7日). “v0.94 Hammer Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Sage Weil (2015年11月6日). “v9.2.0 Infernalis Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Abhishek L (2017年1月20日). “v11.2.0 Kraken Released”. Ceph Blog. 2019年1月28日閲覧。
- ^ Abhishek L (2018年6月1日). “v13.2.0 Mimic Released”. Ceph Blog. 2019年1月28日閲覧。