Xen、OpenVZ、VMWareなど仮想化環境の印象(3年後) その1

だいぶ間が開きました。
仮想サーバを本格的に触りだしてから早3年が経ちました。
って事で、今現状の印象とか、使い方等をつらつらと書いてみたいと思います。


まずは前回に引き続き各仮想化エンジンの印象とか。1エントリで載せようかと思ったのですが、思った以上に長くなってしまったので今回はOSSなXenについて記載して、その他のプロダクトは次回以降に載せます。OSSなXenしか書いてないのに長文ですみません。

- OSS Xen

以降の印象はかなりネガティブな記載が多いかもしれませんが、実は一番使っています。サーバを仮想化する事だけに関しては全く文句ないくらい安定しています。ただし、他の商用ベンダーの出しているプロダクトに比べると、著しく運用効率が悪いだけで純粋に仮想化エンジン自体に対してネガティブな訳ではありません。また、Xenから派生しているプロジェクトに関してはキャッチアップができなおらず、結果として的外れな指摘をしているかもしれません。その際はコメントやトラックバックを頂けると幸いです。

ざっくりとした印象で言うと3年前はブレイクの気配があったのですがCitrixに買収された結果、OSS陣営から見放され骨抜きになった感が否めない感じです。Redhat EL5では製品の寿命まではサポートされるので、ある意味運命共同体であるCentOS5が使われている限りなくなる事はないでしょう。Redhat EL6/CentOS6が出るあたりが山場でしょうね。その頃には仮想化エンジン間での移行の体制も業界的にできているでしょうし、その際にOSSなXenを選ぶメリットをどれだけ提供できるのか、先は明るくないように思えます。KVMもOSSなXenだったら後ろ姿が見えてきた事でしょうし。

機能的にはここ1年くらいですっかり見劣りしてしまいました。というよりも、サーバの仮想化エンジンとしての実装は成熟してしまい、純粋な仮想化エンジンとしてはkvm等差別化が難しくなってしまったのに加え、管理機能が充実しているXenServerやVMWareが無償で提供されるようになってしまったため、事実上というよりも実務上存在意義を失ってしまったような状態だと思います。
ソースコードが全て公開されているとかOSS的な側面ではメリットはありますが(Citrix XenServerもCDイメージでソースコードは配布していますが、中身みてないので詳細はわかってないですすみません)、ビルドが面倒、設定が面倒、運用が面倒と非常に手間のかかるプロダクトになってしまいました。大抵の場合、Redhat,CentOS,debian,ubuntuなどにインストールして使うとは思うのですが、自分でビルドするのは大変だと思うので、rpm系であればディストリビューション付属か、http://www.gitco.de/linux/あたりを使用するのがいいと思います。デスクトップやノートPCでお試しするだけなら、Vmware ServerやVirtualboxをお勧めします。

と、ネガティブな話ばかり出してしまいましたが、決して不満なだけではないです。性能面では問題ないですどころか、素晴らしいですの賛辞を贈りたいくらいです。一般に言われる仮想化する事でのオーバーヘッドに関しては完全仮想化するプロダクトに比べオーバーヘッドは少ないですし、dom0で使用されるlinuxとの親和性もありlinuxを扱うのが苦にならない人にとっては扱いやすいプロダクトだと思います。仮想サーバへの移行でよく言われるオーバヘッドについては、ハードウェアの性能の向上スピードが早いようで、あまり気にしなくてもいいんじゃないかと思います(ただしディスクIOを除く)。
1つの仮想サーバの過負荷が他の仮想サーバへ悪影響をもたらすのが心配みたいな、仮想化を導入するにあたって躊躇するシステム担当者がよくする言い訳(あえて言い訳と言います)も問題なくこなしていて、一つの仮想サーバが過負荷で大変な事になっていても、隣のサーバへの影響は排除してくれますし、ハードウェアを抽象化しハードウェアに依存しない実行環境をプロダクションレベルで提供してくれている実績は多いに評価しています。RedhatはKVMで置き換えようと努力はしていますが、安定性に関してはXenに分があるように思えます。

実際、Xenは非常に安定して動作してくれます。Xenのハイパーバイザー自体がトラブルになるような事例には直面した事がなく、トラブルになるとすればXen自体よりも運用におけるオペミスの方が多いのではないかと思います。というか、経験上Xenのトラブルは大半がオペミスです。学術目的で開始したからこそなのかもしれませんが、単体のサーバを仮想化して運用するだけでしたら、Xenは間違いなく良い選択肢だと思います。それが、複数台でストレージを共有してクラウドっぽく運用しようとしたとたん、全てはDIYになってしまうところが学術目的からスタートしたXenならではなのだと
思います。ここがOSSのXenの最大の弱点だと思います。

例として適切かどうかわかりませんが、linuxで既に割り振られているIPを割り振ってインターフェースを起動しようとすると、IPアドレスが重複していてインターフェースが起動できないのがエラーメッセージと共に表示されるのですが、OSSなXenは「それやっちゃうとトラブルを引き起こすかもしれませんのでやめておきます」みたいな未然にトラブルを防ぐ部分に関してはフォロー不足だと思いますし、安心してプロダクション環境に使用できない遠因となっていると思います(それ故XenServerのようなプロダクトが出てくるのだとは思いますが)。

また、仮想化で話題になる「仮想サーバを停止する事なく別の物理サーバへ移せる機能」については、OSSのXenにおいては期待しない方がいいでしょう。忙しいサーバだとマイグレーションが失敗するのは珍しくありません(仕組み上当然ではありますが)。同じ事をやるにしても、この辺りはVmwareが一日の長があるようで、知人に聞いても物理サーバの性能限界近くまで使う仮想サーバだと、ビジネスではVmwareが最終的に選択されるとの事らしいです。機会があればVmwareの製品もいじり倒してみたいです。
Xenのマイグレーションの実装は、メモリイメージの転送を30回行って、30回以内に転送中に更新されたイメージを転送しきれないとマイグレーションが失敗して、マイグレーション先で再起動するような動作だったと思います(3.3あたりでは)。

また、実際に使用するにあたっては単純なネットワーク構成だとトラブルなく導入できるとは思いますがNICのボンディングやタグVLANあたりを使用するようになると、非常に苦労することになると思います。CitrixがよくないのかXenのコミュニティが良くないのかはわかりませんが、NICのボンディング周りはニーズは非常にあるのにXenのソースコードにはバックポートされないんですよね(参考)。XenServerではGUIでポチッとするだけで作業が完了するのに。

その他複数のXenで共有ストレージを使用するとなると、設定は全てlinuxベースの設定が必要となります。普段からlinuxを触っている人はいいかもしれませんが、門外漢の人にはハードルが大会かもしれません。NFSクライアントとか、iscsiイニシエータの設定とか、クラスタLVMの設定とかは慣れていない人にとっては学ぶところからスタートなので、それなりに大変かも知れません。

というわけで、Xenを利用するのであれば、ある程度linuxのセットアップできる管理者がいるのが前提で1台完結型の開発環境として手軽に使用する分にはおすすめだと思います。基本的にはバージョン2.6のlinuxが稼働するx86環境では動くので、Citrix/Vmwareなどベンダーの出している製品に比べればハードウェアの選択肢が多いと思います。とは言え、fedora/Redhat陣営はkvmに舵を切っているので、開発環境だけとして使用するのであれば、kvmの方がいいかもしれません。

予想以上に長くなってしまったので、今回はOSSのXenのみとして、次回は別の仮想化エンジンに触れたいと思います。Xenつながりで、次回はCitrix XenServerをターゲットにします。Vmware Server, OSS kvm、vSphereとかはあまり触ってないので…な部分もありますが。

  1. No comments yet.