IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第45回 一味違うCephの「オブジェクトストア」とは? (中井悦司) 2014年6月

はじめに

 本コラムで宣伝するのをすっかり忘れていたのですが、アスキー・メディアワークスより筆者の新しい著書が発売されました。「オープンソース・クラウド基盤OpenStack入門~構築・利用方法から内部構造の理解まで」―― タイトル通り、OpenStackの技術解説書です。ページ数はそれほど多くありませんが、その分、「OpenStackの技術的本質」を濃縮した内容となっています。書店で見かけた際は、一度、手にとっていただければ幸いです。

 さて、今回は、前回に続いて、Cephの話題をお届けします。前回は、Cephの基礎となるオブジェクトストア技術「RADOS」の解説を行いました。今回は、自作のアプリケーションからRADOSを利用するためのライブラリ「librados」に加えて、RADOSをベースとした機能となる「Ceph Block Device」について説明します。

保存ファイルへのランダムアクセス可能なRADOS

 libradosは、RADOSに保存したファイルに、C言語のプログラムからアクセスするためのアプリケーションライブラリです。具体的な使い方については、公式ドキュメントに詳細な説明があります(*1)。

 前回、「Cephのクライアントは、RADOSに対してファイル単位でデータを出し入れする」と説明しましたが、実は、これは少し不正確です。先の公式ドキュメントを見ると分かるように、RADOSに対しては、単純にファイルを出し入れするだけではなく、既存ファイルの特定部分を上書きしたり、既存ファイルにデータを追加するなどの操作が可能です。この点は、RADOSが、「Swift」などの最近のオブジェクトストアと決定的に異なる点になります。

 言い換えると、RADOS上のファイルを1つの「データブロック」として、ランダムアクセスすることが可能というわけです。これは、次に説明する「Ceph Block Device」を支える基本機能となります。

RADOS上のファイルを集めてブロックデバイスを作成

 「Ceph Block Device」は、「RBD(RADOS Block Device)」とも呼ばれるもので、Cephのクラスタ上で、仮想的なブロックデバイスを提供する機能です。この機能を利用すると、任意のサイズのブロックデバイスを作成して、Linuxサーバに対して「/dev/rbd0」のようなデバイスとして認識させることができます。

 Cephのクラスタ上では、ブロックデバイスの実体は、図1のようになります。Linuxサーバ上の専用のカーネルモジュール(RBDモジュール)は、ブロックデバイス「/dev/rbd0」を一定サイズのチャンクに分割して、それぞれをRADOSに保存した1つのファイル(オブジェクト)に対応付けます。RBDモジュール自身が、前回に説明した「CRUSHアルゴリズム」によって、チャンクの保存先となるOSDを決定しています。

fig01

図1 ブロックデバイスとファイル(オブジェクト)のマッピング

 図に示すと単純に見えますが、これを実現するには、RADOS上のファイルに効率的にランダムアクセスすることが必要となります。Linuxサーバ上で、ブロックデバイス「/dev/rbd0」の特定部分だけを書き換えた場合、OSDは、対応するファイル(オブジェクト)の一部分だけを書き換える形になります。

 また、「/dev/rbd0」のような通常のブロックデバイスとして認識する必要がない場合は、librbdというアプリケーションライブラリを使用することも可能です。librbdを使用すると、カーネルモジュールを使用せずに、アプリケーションから直接に、図1のブロックデバイスにアクセスすることができます。

 たとえば、Linux KVMのデバイスエミュレーション機能を提供するqemu-kvmは、librbdに対応しています。これにより、Linux KVMの仮想マシンに対して、Cephのブロックデバイスをダイレクトに仮想ディスクとして接続することが可能です。さらに、OpenStackでは、仮想マシンインスタンスにブロックデバイスを提供するコンポーネントである、「Cinder」のバックエンドとして、「Ceph Block Device」を使用することができます。「Ceph Block Device」は、ブロックデバイスのスナップショットを作成する機能も提供しており、Cinderのスナップショット機能と連携することが可能です。

次回予告

 最近、Cephを開発していた米Inktank社をRed Hatが買収したことは、ご存知の方も多いかも知れません。先日、InktankからRed Hatに移籍したエンジニアと社内システム上でチャットする機会があり、「RADOSは、Swiftなどの普通のオブジェクトストアより高機能なんだから、単純に『オブジェクトストア』と呼ぶのは不正確じゃない?」と聞いてみました。

 すると、少し意外な返答がありました。「RADOSはSwiftよりもずっと昔から開発していたんだ。RADOSの提供する機能こそが、本来『オブジェクトストア』と呼ぶにふさわしいものなんだよ」―― 彼に言わせると、ファイルの出し入れしかできないオブジェクトストアは、「本物」とは言えないのかも知れません。

 もちろん、CephとSwiftはそもそもの利用目的が違いますので、実際には、どちらが「本物」というわけではありません。しかしながら、このようなエンジニアの「想い」に触れることで、より深く技術の本質が理解できるのは間違いありません。開発者と利用者が同じ立場で技術を語れる、オープンソースならでは世界と言えるでしょう。

 さて、今週は、いよいよ、Linux女子部の主催による「Docker勉強会」が開催されます。次回は、こちらの勉強会から話題をお届けしたいと思います。

参考資料

(*1) 「LIBRADOSの公式ドキュメント

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes