CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
先週は、沖縄で開催されたイベント「Okinawa Open Days 2013」に参加してきました。OpenStackの定例イベント「OpenStack Day」と、SDNの定例イベント「SDN Japan」を番外編(?)として、沖縄でまとめて開催しようという、ちょっとユニークなイベントでした。私は、OpenStackの入門セッションの講師と併せて、イベント最終日に開かれたパネルディスカッションに参加させていただきました。
パネルディスカッションでは、当初「OpenStackから見たSDNの課題/SDNから見たOpenStackの課題」という問いかけから始まる予定だったのですが、直前の打ち合わせで面白い事実が発覚しました。OpenStackに関わっているメンバーは、「OpenStackの足りない所をSDNで補完して欲しい」、一方、SDNに関わっているメンバーは、「SDNの足りない所をOpenStackが補完して欲しい」という発想で意見を交わすのですが、なぜだか議論が噛み合いません・・・。
そこで「ハッ」と気づいたのが、そもそも「OpenStackが実現したいこと」と「SDNが実現したいこと」が違っていたという事実です。目指すものが同じであれば、互いの足りない所を補完しつつ先に進むこともできますが、目指すところが違うようでは、議論が噛み合わないのも当然です。
少し補足すると、OpenStackの背景には、「IaaS(Infrastructure as a Service)基盤をオープンソースで作りたい!」という明確な動機があります。OpenStackから見たSDNの役割はシンプルで、「IaaS基盤に必要な仮想ネットワーク機能を提供する」というだけです。
一方、SDNに関わる方の話を聞くと、SDNと既存のアプリケーションを連携した、さまざなユースケースを描いているようです。この際、「SDNと既存アプリケーションをどうやって連携するのか」という部分がポイントになりますが、「クラウドにアプリケーションを配置することで『いい感じ』に連携して欲しい」という期待があるようです。OpenStackの視点で言うと、IaaS基盤を活用したユースケースの中で、SDNのネットワーク機能をどう利用するか、という事になります。
OpenStackのコミュニティでは、これまでは「IaaS基盤を作る」という目標に向かって進んできたわけですが、世の中の期待はその先へと進んでいるようです。「OpenStackでクラウドが作れるのは当然。そのクラウドを使って、今までと違う何ができるのか? クラウドで動かすアプリケーションはどうあるべきなのか?」―― そんな期待に応えるべき時代がやってきたようです。
余談が長くなりました。今回の本題は、GlusterFSのクライアントライブラリ「libgfapi」です。実は、libgfapiが登場した背景には、冒頭のOpenStackと似た部分があります。
もともとGlusterFSは、汎用的な分散ファイルシステム、簡単にいうと「何でも入る巨大なバケツシステム」として開発されました。GlusterFSを利用するサーバからは、LinuxのFUSEマウント機能を利用して、通常のファイルシステムと同様にマウントしてアクセスすることができます。しかしながら、普通のファイルシステムと同じ使い方だけをしていては、本当の意味でGlusterFSを活かしているとは言えません。「GlusterFSと組み合わせることで価値の高まるアプリケーションは何なのか? GlusterFSの特性を活かした使い方とは、どのようなものなのか?」―― そんな疑問に答える必要があります。やがては、GlusterFSの利用を前提としたアプリケーションが登場することもあるでしょう。
ここで登場するのが、libgfapiです。GlusterFSが前提のアプリケーションであれば、わざわざFUSEマウントを介してアクセスする必要はありません。アプリケーションがGlusterFSのNativeプロトコルで、直接にボリュームにアクセスしても構いません。FUSEマウントの処理をバイパスすることで、より高速なアクセスが可能になります。
もちろん、個々のアプリケーションの開発者がGlusterFSのNativeプロトコルを理解して、そのためのコードを書くのは大変です。共有ライブラリとしてのlibgfapiを利用すると、read()/write()などの従来のシステムコールに類似の関数で、GlusterFS上のファイルにアクセスすることができます。具体的な使い方は、筆者のBlog記事(*1)を参考にしてください。glfs_read()/glfs_write()など、libgfapi版の擬似システムコールでファイルにアクセスしていることが分かります。
また、ちょっとした実験として、LevelDBのソースコードを改変して、libgfapiを組み込んでみました(*2)。LevelDBは、Googleが公開している組み込み型のKey-Value Storeです。ローカルファイルシステムの複数ファイルにデータを分散配置する構造を持っていますが、この改変により、GlusterFSのボリュームにデータを配置することができるようになります。詳細な性能データなどは取得していませんが、複数ファイルへのデータ配置がGlusterFSのファイル分散方式とうまく噛みあうと、面白い結果が得られるかもしれません。
libgfapiは、C言語の他にもPythonやRubyなどの言語から利用することができます。
2013年の連載は、今回が最後となります。次回は、1月中旬に再開の予定です。先日、Red Hat Enterprise Linux 7(RHEL7)のベータ版が公開されましたので、まずは、こちらの話題をお届けしたいと思います。
*1)「libgfapiの使い方」
*2)「Using LevelDB over GlusterFS with libgfapi」
++ 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