Ceph

名称 = Cephコンピューター科学の分野において、Cephは、単一の分散コンピュータ・クラスター上でオブジェクトストレージを実装したフリーソフトウェアのストレージプラットフォームである。オブジェクト、ブロック、ファイルレベルのストレージインタフェースを提供し、単一障害点がなく、エクサバイトレベルまで拡張可能な、フリーで利用できる完全な分散オペレーションを主な目的としている。

Cephは、特別なハードウェアサポートを必要としない汎用ハードウェアを使用して、データを複製することで耐障害性を持たせている。管理時間やその他のコストを最小にすることを目指す設計の結果として、Cephのシステムは、自己修復機能と自己管理機能の両方を備える。

2016年4月21日、Cephの開発チームは、CephFSが安定したと思われる最初のバージョンである「Jewel」をリリースした。このバージョンにおいて、CephFSの修復および障害復旧ツールは、必要な機能を完備した。

2017年8月のリリースでは、本番環境対応のBlueStoreストレージフォーマットが導入された。BlueStoreは、古いファイルシステムベースのファイルストアの多数の欠点を解決し、レイテンシの改善や追加のストレージ機能を提供している。

1. 設計
-----

Cephは、独立した4種類のデーモンを使用する。

クラスタモニタ 。クラスタノードの稼働・障害状態をトラッキングする。
メタデータサーバ 。iノードとディレクトリのメタデータを格納する。
オブジェクトストレージデバイス 。直接ジャーナルディスクストレージを使用するか、ファイルシステムにファイルの内容を格納します。
Representational State Transfer  ゲートウェイ 。Cephのオブジェクトストレージレイヤを、Amazon S3またはOpenStack Swift APIと互換性のあるインタフェースとして公開する。これらすべてのデーモンは完全に分散して動作し、同じサーバ群で動作させることもできる。

Cephは、高いスループットを達成するために、標準RAIDレベルが複数のハードドライブにまたがってパーティションをストライプするのと同様に、個々のファイルを複数のノードにまたがってデータストライピングする。頻繁にアクセスされるオブジェクトがより多くのノードに複製される、適応的なロードバランシングがサポートされているdate=July 2014}}。2017、BlueStoreが本番環境でのデフォルトの推奨ストレージタイプである。BlueStoreはCeph独自のストレージ実装であり、以前使用されていたFilestoreバックエンドよりも優れたレイテンシと高い拡張性を提供し、追加の処理やレイヤのキャッシュなどが必要なファイルシステムベースのストレージの欠点を解消している。Filestoreバックエンドはまだ有用で非常に安定していると考えられており、その場合には本番環境ではXFSを使用することが推奨されており、非本番環境ではBtrfsも推奨されている。RADOSオブジェクトの最大長に制限があるため、ext4ファイルシステムの使用は非推奨であり、すでにテストも行われなくなっている。

1.1. オブジェクトストレージ
----------------

Cephは分散オブジェクトストレージ実装している。Cephのソフトウェア・ライブラリが提供するクライアント・アプリケーションlibradosを利用することで、RADOSと呼ばれるCeph独自のオブジェクトベースのストレージ・システムに直接アクセスすることができる。また、libradosは、//RADOSブロックデバイス 、RADOS// //Gateway//、Ceph File System  などのCephの主要インタフェースの基盤を提供している。

libradosソフトウェアライブラリは、C、C++、Java、PHP、およびPythonでのアクセスを提供する。RADOS Gatewayは、RADOSオブジェクトストアを、ネイティブのAmazon S3 APIとOpenStack Swift APIの両方から利用できるRESTfulインタフェースとして公開する。

1.2. ブロックストレージ
--------------

Cephのオブジェクトストレージシステムは、Cephをシン・プロビジョニングされたブロックデバイスとしてマウントすることを可能にする。アプリケーションがブロックデバイスを使用してCephにデータを書き込むと、Cephは自動的にデータをストライプ化し、クラスタ全体に複製する。また、Cephの//RADOS Block Device//  は、Kernel-based Virtual Machines  と統合されている。

CephのRBDインタフェースは、libradosインタフェースとCephFSファイルシステムを提供するのと同じCephオブジェクトストレージシステムを利用しており、ブロックデバイスのイメージをオブジェクトとして保存する。RBDはlibrados上に構築されているため、RBDは、libradosが持つ読み取り専用スナップショットの作成や、スナップショットの復元などの機能を継承している。クラスタ全体でイメージをストライピングすることで、大きなブロックデバイスイメージの読み取りアクセス性能を向上させている。

ブロックデバイスは仮想化できるため、Apache CloudStack、OpenStack、OpenNebula、Ganeti、Proxmox Virtual Environmentなどの仮想化プラットフォームにおいて、仮想マシンにブロックストレージを提供できる。

1.3. ファイルシステム
-------------

Cephのファイルシステム  は、オブジェクトストレージとブロックデバイスインタフェースを提供するのと同じCephのオブジェクトストレージシステム上で動作する。Cephメタデータサーバクラスタは、ファイルシステムのディレクトリやファイル名を、RADOSクラスタ内に保存されているオブジェクトにマッピングするサービスを提供する。メタデータサーバクラスタは、拡大・縮小することができ、ファイルシステムを動的にリバランスしてクラスタホスト間でデータを均等に分散させることができる。この機能のおかげで、高い性能が維持され、クラスタ内の特定のホストに大きな負荷がかかるのを防ぐことが保証される。

クライアントは、Linuxカーネルクライアントを使用して、POSIX互換ファイルシステムとしてマウントする。2010年3月19日、リーナス・トーバルズは、2010年5月16日にリリースされたLinuxカーネルバージョン2.6.34にCephクライアントをマージした。また、古いFUSEベースのクライアントも利用可能である。サーバは、通常のUnixデーモンとして動作する。

2. 歴史
-----

Cephは、2006 USENIX Conference on Operating System Design  において、Weil、Brandt、Miller、Long、Maltzahnによる論文内で初めて提案された。さらに詳細な記述が、翌年にSage Weilの博士論文として出版された。

2007年秋に大学院を卒業した後も、WeilはフルタイムでCephに取り組み続け、Cephのコア開発チームにはYehuda Sadeh WeinraubとGregory Farnumが新たに参加した。2012年、WeilはCephのプロフェッショナルサービスおよびサポートのための会社Inktank Storageを設立した。

2014年4月、Inktankはレッドハットに買収され、Ceph開発の大部分はレッドハット社内で行われるようになった。

2015年10月、オープンソースのソフトウェア定義型ストレージ技術の方向性を推進することでコミュニティを支援するために、Ceph Community Advisory Boardが設立された。チャーターアドバイザリボードには、カノニカル、CERN、シスコシステムズ、富士通、インテル、レッドハット、SanDisk、SUSEなどのグローバルなIT組織から、Cephプロジェクトにコミットしている所属メンバーが参加している。

//Argonaut//2012年7月3日、Ceph開発チームはArgonautをリリースした。Ceph初のstableなメジャーリリースである。このリリースは安定性向上のための修正とパフォーマンスのためのアップデートのみとなり、新しい機能は将来のリリースに含まれる。
//Bobtail// 2013年1月1日、Cephの開発チームはBobtailをリリースした。Cephの2番目のstableなメジャーリリースである。このリリースでは、第1に安定性の向上、性能、前バージョンArgonautのstableシリーズからのアップデート性を主に注力された。
//Cuttlefish// 2013年5月7日、Ceph開発チームはCuttlefishをリリースした。Cephの3番目のstableなメジャーリリースである。このリリースには多数の機能の追加と性能の拡張が含まれる。また、mkcephfsに代わるCephクラスタのデプロイツールceph-deployの最初のstableなリリースである。
//Dumpling// 2013年8月14日、Ceph開発チームはDumplingをリリースした。Cephの4番目のstableなメジャーリリースである。このリリースでは、初めてグローバルな名前空間とリージョンのサポートを実装された。また、監視と管理機能のためのREST APIが実装された。そして、Red Hat Enterprise Linux系  ベースのプラットフォームでのサポートが向上した。
//Emperor// 2013年11月9日、Ceph開発チームはEmperorをリリースした。Cephの5番目のstableなメジャーリリースである。このリリースではいくつかの新機能が実装された。radosgwの複数データセンター間でのレプリケーション機能、ユーザビリティーの向上、多数の小さな性能向上、次のFireflyのリリースに向けた内部実装のリファクタリングなどである。
//Firefly// 2014年5月7日、Cephの開発チームはFireflyをリリースした。Cephの6番目のstableなメジャーリリースである。このリリースでは、いくつかの新機能が実装された。イレージャーコーディング、キャッシュ・ティアリング、プライマリ・アフィニティ、キー/バリューOSDバックエンド、スタンドアロンのradosgwなどである。
//Giant// 2014年10月29日、Ceph開発チームはGiantをリリースした。Cephの7番目のstableなメジャーリリースである。
//Hammer// 2015年4月7日、Ceph開発チームはHammerをリリースした。Cephの8番目のstableなメジャーリリースである。次の長期のstableシリーズの基礎となることが期待されている。v0.80.x Fireflyに取って代わるバージョンとなるものと開発された。
//Infernalis// 2015年11月6日、Ceph開発チームはInfernalisをリリースした。Cephの9番目のstableなメジャーリリースである。次のstableシリーズの基礎となるものである。v0.94.x Hammerから大きな変更がいくつか行われたため、アップグレード手順が複雑になっている。
//Jewel// 2016年4月21日、Ceph開発チームはJewelをリリースした。CephFSがstableとみなされた最初のリリースである。CephFSの修復および障害回復ツールは全機能を網羅しているが、いくつかの機能はデフォルトではオフになっている。このリリースでは、BlueStoreと呼ばれる新しい実験的なRADOSのバックエンドが含まれている。このBlueStoreは、将来のリリースでデフォルトのストレージバックエンドとなる計画である。
//Kraken// 2017年1月20日、Ceph開発チームはKrakenをリリースした。Jewelで導入された新しいBlueStoreストレージフォーマットがstableなon-diskフォーマットとなり、テストスイートの一分に含まれるようになった。まだ実験的であるとされているが、すでにBlueStoreは本番環境での使用にほぼ問題がない段階に到達し、Luminousでは使用可能となる予定である。
//Luminous// 2017年8月29日、Ceph開発チームはLuminousをリリースした。いくつかの機能とともに、BlueStoreストレージフォーマットがstableとなり、使用が推奨されるようになった。
//Mimic// 2018年6月1日、Ceph開発チームはMimicをリリースした。Mimicのリリースより、複数のMDSデーモンを組み合わせた場合のスナップショットがstableとなった。また、RESTful gatewayのフロントエンドBeastがstableとされ、本番環境で使用可能となった。

3. 語源
-----

「Ceph」という名前は、タコを含む軟体動物のクラスである「頭足類  」の略語である。ロゴが強調しているように、この名前は、分散システムを示唆するタコの非常に並列的な振る舞いから来ている。また、「サミー」という名前のバナナナメクジがCephが誕生したUCSCのマスコットであるため選ばれた。タコもバナナナメクジも、ともに軟体動物であり、頭足類である。

4. 関連項目
-------

BeeGFS
Distributed file system
Distributed parallel fault-tolerant file systems
Gfarmファイルシステム
GlusterFS
IBM General Parallel File System 
LizardFS
Lustre
MapR FS
Moose File System
OrangeFS
Parallel Virtual File System
Quantcast File System
RozoFS
XtreemFS
ZFS

5. 参考文献
-------

[1]

6. 脚注
-----

6.1. 注釈
-------

6.2. 出典
-------

7. 外部リンク
--------

[2]
[3]
[4]
[5], Ceph Day Frankfurt  at Slideshare