Tech Sketch Bucket of Technical Chips by TIS Inc.

OpenStackの勉強会をやってみた

Pocket

クラウド業界で注目を集めているOpenStackについて社内で勉強会を行いました。今回は勉強会で取り上げた内容からインスタンスのスナップショット機能についてVMware vSphereとの違いという観点で書いてみたいと思います。


OpenStackとは

OpenStack はIaaSのクラウド基盤を構築するためのOSSで、2010年にRackspaceとNASAが中心となりプロジェクトがスタートし、コミュニティによって開発が進められています。2012年からはOpenStack Foundationという非営利団体にソースコードが移管され、運営体制もオープンになりました。セミナーやカンファレンスでも頻繁に取り上げられていますので、概要をご存知の方は多いのではないでしょうか。

私自身はvSphere等の仮想化のエンジニアだったのですが、Amazon AWSに代表されるクラウド化の流れの中で自分の領域を広げていかねば、、、と思ったのがOpenStackを調べることになったきっかけです。そんなこんなで社内で勉強会を実施することになり自分なりに機能の調査を進めてみたのですが、構成する技術が仮想化・ネットワーク・ストレージと多岐に渡るため、全体を網羅的に解説した資料はなかなか見当たらなかったりします。代表的な機能と簡単な内部動作について勉強会用に"広く浅く"まとめた資料をSlideShareに公開していますので、OpenStackが気になるけどどんな機能があるの?という方はよろしければご覧ください。

さて、OpenStackやCloudStackといったIaaS基盤は、仮想化技術をベースにしてハードウェアリソースをサービスとして提供できるようにしたものですので、vSphereやXenServerを利用したことのある方なら見慣れた用語や機能が出てきます。ただ、用語が同じでも実際の処理は異なっていたりするため、vSphereに慣れ親しんだ方だと違和感を覚える点があります。以下では私が引っかかった「スナップショット」について少し触れてみたいと思います。

インスタンスのスナップショット

一般のクラウド基盤が提供している機能と同様にOpenStackでもインスタンスのスナップショットをとることができます。説明は割愛しますがWeb管理画面からは数ステップの操作でスナップショットの取得が完了します。

では、内部ではいったいどのような処理が行われているのでしょうか。ハイパーバイザーにQEMU/KVMを利用している場合、ソースコードの以下の箇所でスナップショットの取得処理を実行しています。

※以下のコードは2012年9月にリリースされているFolsomを確認したものです。2013年4月に新版のGrizzlyがリリースされてましたので内容は最新でない可能性があります。

  • nova/virt/libvirt/driver.py

おや?create_snapshotして、、、その後にdelete_snapshotする???

もう少し深くコードを追ってみたところ、どうやらスナップショットの取得はフローになるようだということがわかりました。

  1. ハイパバイザーの機能でインスタンスの静止点をとる(858行目)
  2. インスタンスの仮想ディスクをコピー(866行目)
  3. 1で取得した静止点の削除(870行目)
  4. 2で作成したイメージをOpenStackイメージ管理機能に登録(878行目)

vSphereに慣れた人の感覚からすると上記の動作はクローンによるバックアップと言ったほうがしっくりくるのではないでしょうか。ユーザは4で登録されたイメージを使用して新規にインスタンスを作成することができるのですが、これもvSphereで言うところの取得したクローンから仮想マシンの新規作成をする操作に近いですね。

その他にも。。。

インスタンスのスナップショットについて取り上げてみましたが、その他にも

  • vSphereでは仮想マシン単位でディスクイメージが独立しているがOpenStackでは同じインスタンスイメージから作成されたインスタンスはディスクイメージが一部共通利用されている(QEMUのbacking fileという機能を利用)

といったような違いがあったりします。おそらくクラウド基盤としての利用を想定したディスク領域の節約のためだと思いますが、こういった細かな機能を自分で調べながら設計思想に思いを馳せることができるのもOSSならでは(?)ではないでしょうか。

まとめ

OpenStackは2010年スタートした若いプロジェクトです。今最も活発なOSSの一つとして話題に上がることも多いですが、勉強会のために調査をしてみてまだまだ荒削りだなと思う点もいくつかありました。

  • 導入の敷居が高い
    インストールマニュアルは一応あるのですが、気軽に試せるような手順にはなっていません。導入作業がGUI化されていないのも難易度を上げています。
  • HAの機能がない
    エンタープライズ領域での利用を考えた時に必要と思われる機能が未実装だったりします。ただし、最新版のGrizzlyでは今までなかったLoad Balancing as a Serviceの機能がついに実装されるなど足りない機能はどんどん拡充されていますので、機能的な弱点は今後解消されていく予定です。

RackSpaceやHP(ベータ版という位置づけ)などがクラウドサービスを提供していたり、国内ではNTTデータがOpenStack/OpenFlowを利用したSIサービスの提供を開始するなど、商用サービスへの利用は着実に進んできているといった段階ですが、このような課題がクリアされることでプライベートクラウドとしての利用も今後増えていくのではないかと思います。

エンジニア採用中!私たちと一緒に働いてみませんか?