CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
本コラムで宣伝するのをすっかり忘れていたのですが、アスキー・メディアワークスより筆者の新しい著書が発売されました。「オープンソース・クラウド基盤OpenStack入門~構築・利用方法から内部構造の理解まで」―― タイトル通り、OpenStackの技術解説書です。ページ数はそれほど多くありませんが、その分、「OpenStackの技術的本質」を濃縮した内容となっています。書店で見かけた際は、一度、手にとっていただければ幸いです。
さて、今回は、前回に続いて、Cephの話題をお届けします。前回は、Cephの基礎となるオブジェクトストア技術「RADOS」の解説を行いました。今回は、自作のアプリケーションからRADOSを利用するためのライブラリ「librados」に加えて、RADOSをベースとした機能となる「Ceph Block Device」について説明します。
libradosは、RADOSに保存したファイルに、C言語のプログラムからアクセスするためのアプリケーションライブラリです。具体的な使い方については、公式ドキュメントに詳細な説明があります(*1)。
前回、「Cephのクライアントは、RADOSに対してファイル単位でデータを出し入れする」と説明しましたが、実は、これは少し不正確です。先の公式ドキュメントを見ると分かるように、RADOSに対しては、単純にファイルを出し入れするだけではなく、既存ファイルの特定部分を上書きしたり、既存ファイルにデータを追加するなどの操作が可能です。この点は、RADOSが、「Swift」などの最近のオブジェクトストアと決定的に異なる点になります。
言い換えると、RADOS上のファイルを1つの「データブロック」として、ランダムアクセスすることが可能というわけです。これは、次に説明する「Ceph Block Device」を支える基本機能となります。
「Ceph Block Device」は、「RBD(RADOS Block Device)」とも呼ばれるもので、Cephのクラスタ上で、仮想的なブロックデバイスを提供する機能です。この機能を利用すると、任意のサイズのブロックデバイスを作成して、Linuxサーバに対して「/dev/rbd0」のようなデバイスとして認識させることができます。
Cephのクラスタ上では、ブロックデバイスの実体は、図1のようになります。Linuxサーバ上の専用のカーネルモジュール(RBDモジュール)は、ブロックデバイス「/dev/rbd0」を一定サイズのチャンクに分割して、それぞれをRADOSに保存した1つのファイル(オブジェクト)に対応付けます。RBDモジュール自身が、前回に説明した「CRUSHアルゴリズム」によって、チャンクの保存先となるOSDを決定しています。
図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/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes