本稿では、分散ストレージのOSS実装として注目を集めるCeph/RADOSを紹介していきます。
IaaS構築・運用環境として注目を集める「OpenStack」でストレージを使用する場面としては、Compute service(Nova)が使用するファイルシステム、Image service(Glance)、Volume service(Cinder)、Object storage(Swift)などが挙げられます。
本連載では、OpenStackのストレージ環境として注目を集めているOSSの分散ストレージ「Ceph/RADOS」について見ていきます。同じくOSSストレージインフラの選択肢としてCeph/RADOSと並んで検討されることの多いGlusterとの比較にも言及する予定です。
Cephの名前は頭足類を意味するCephalopodsに由来しています。開発者のペットであるタコのニックネームとして使われているそうです(*1)。たくさんの足を自在に動かすところが分散ストレージっぽいイメージでもありますね。一方のRADOSは「Ceph/RADOS」のうち、分散オブジェクトストレージ部分の名前で、Reliable Autonomic Distributed Object Storeの頭文字です。
*1)SUSEの資料(PDF)やIBM DeveloperWorksのドキュメントも参考になります。
Ceph/RADOSは、「動的に拡張し、ノード故障が例外ではなく日常で、ワークロードが変化するような環境でのペタバイトスケールのストレージ」を目指して2004年以前からカリフォルニア大学サンタクルーズ校においてSage Weil氏を中心に開発が始まりました。2008年にはバージョン0.1が公開されています。
ハードディスクドライブをインテリジェントなオブジェクトベースストレージに置き換え、さらにメタデータのワークロードを分散させるアプローチを取っており、分散ファイルシステムのスケーラビリティを大幅に改善しています。
Ceph/RADOSはその後、米DreamHostのプロダクションシステム「DreamObject」として採用され、そのサポート部隊がスピンオフして2012年に米Inktank社を設立しています。
Inktankは2014年に米レッドハットに買収されました。一方のGluster(米Gluster, inc. 旧ZReseach)も2011年に米レッドハットに買収されています。
Ceph/RADOSの最新情報は公式Webサイトで確認できます。CephもRADOSもリソース情報のページからたどれます。
一方で、Glusterの開発が始まった時期は分かりませんが、筆者は2006年にGlusterを評価した経験があるのでそれ以前と思われます。2006年当時は、HPCのワークロードに耐えるファイルサーバーのニーズから、ファイルシステムのスケーラビリティを向上させるアーキテクチャが必要とされる状況で、Lustre ファイルシステムが注目されていました。
Ceph/RADOSの設計において多数のファイルシステム技術が参考にされていますが、Lustreもその中の一つです(Ceph/RADOS設計時の参考ファイルシステム実装にGluster は含まれていないようです)。
Lustreも、ファイルシステム内部にオブジェクトストレージ層を導入し、ファイルシステムのメタデータ管理を複数のオブジェクトサーバー、メタデータサーバーに分散することでスケーラビリティを向上させるアプローチです。
これに対し、Glusterは、複数のファイルサーバー(brick)上のファイル所在をハッシュ関数を使用して決定することで、スケーラビリティの阻害要因であるメタデータサーバー自体を排除するアプローチです。
Glusterはユーザーランドで実行するので、カーネル実行のLuster(米オラクル、当時米Cluster File Systems)よりも導入が容易(特定のカーネルバージョンに依存しないのでプロプライエタリなハードウェアドライバーと併用しやすい)というメリットもありましたが、2006年当時はメタデータサーバーが不在であるがゆえにファイルストライピングをサポートしていない(大規模並列計算用途に向かない)という側面もあったと記憶しています。
Ceph/RADOSは構造としてはLustreに近く、データ所在を中央のサーバーに問い合わせることなくハッシュ関数(CRUSHアルゴリズム)で決定したり、ユーザーランド実行である点ではGlusterにも共通すると思われます。
Ceph/RADOSはさらに、前述したようなLustreのようなオブジェクトディレクトリサーバー方式の持つ問題や、Glusterのようなシンプルなハッシュベースの分散方式の持つ問題に取り組んでいます。
Ceph/RADOSとGlusterは、いずれもそれ単体でOpenStackのストレージを賄うことができるOSSとして、次のような適用用途が挙げられます。
Copyright © ITmedia, Inc. All Rights Reserved.