に行ってきました。
展示の内容は大したものはあまりありませんでしたが、フォーラムの内容がとても有意義でした。私が今日のテーマとして受講したのがサーバーの仮想化でした。
仮想化万歳が続いて、睡眠学習することになると思っていたら、仮想化のメリットと現実を知ることができて、良い意味で期待を裏切ってくれました。
○仮想化にまつわる用語
・マイグレーション(migration) システムを新しいプラットフォームに移行すること。仮想化では、メンテナンスや障害時において、仮想サーバーを別の物理サーバーに移動することを指す。
・スケールアウト(scale out) サーバーの台数を増やして、パフォーマンスを向上すること。サーバーの性能向上をすることはスケールアップという。
・プロビジョニング(provisioning) 必要な時に必要な分だけシステムにリソースを割り当てること。オーバープロビジョニングは、システムが高負荷時でも最適にサービスができるように余剰にリソースが割り当てられている状態のこと。
○一般的に言われているサーバーの仮想化のメリット
1.集約できるので、サーバーリソースをより効率的に利用でき、ランニングコストを抑えられます。
2.マイグレーションにより、物理ハードが故障しても別サーバーに無停止で移動できます。それによって稼働率を飛躍的に向上できます。
3.システムを構築するたびにサーバーを購入しなくて済むようになるので、安価にシステム構築ができます。
4.P2Vという機能を使って既存システムを仮想化することで、Windows NT4.0で動いているレガシーシステムも利用できるようになります。
しかし、メリットが成功に結び付くには現実は避けて通れない。
○メリットに対する現実
1.ランニングコストを抑えられるのは、主に電気代だが、データセンターにてサーバーを置いている場合には、電気代は定額であることが多く、仮想化するためにブレードサーバーなどを購入する費用だけがかかることになる。また、集約を進めていくと通信用のネットワーク以外にも死活監視するためのネットワークや仮想マシン上の差分をバックアップするためのネットワークなどどんどんLANケーブルが増えてしまって、LANケーブルでラックが倒れそうになることも現実として起こっているらしい。また、LANケーブルが張り巡らされて放熱も悪くなって、結果的に電気代がかかってしまうこともあり得る。
さらに、監視する方法が抽象化されるので、保守要員のスキルなども向上させる必要があり、ランニングコストは変わらないかむしろ高くなる可能性がある。
2.集約はできるが、集約した結果ハイパーバイザの停止は、仮想化システムすべての停止を意味する。また、仮想化サーバーに対して接続されるディスクドライブは、物理的に1つ(ディスクが1つということではない)だったりするので、物理ディスクのメンテナンスを行うときには、そのディスクにつながる仮想化マシンを一度停止しなければならない。(停止しなくてもできるはずだが、基幹システムなどにおいては、計画停止しているのが一般的だそうだ)
「仮想化は今後当たり前になるが、あえて仮想化しないという選択肢をとれるようにする必要がある。」(日本仮想化技術研究所 宮原さん)
また、仮想化はまだまだ始まったばかりの技術。仮想化特有の問題が起こることがあり、長期的に利用した時に何が起こるか分からない。また、パフォーマンスを見れば、仮想マシンとして動かすと物理サーバー上で稼働するよりも、パフォーマンスは10%以上低くなる。最も顕著なのが、I/Oアクセスだそうだ。ユニアデックス 高橋さんのお話によると、DMAコントローラーはCPUとハードディスクの速度差によってCPUが占有されることを防ぐために導入されたにもかかわらず、ソフトウエアでエミュレーションした結果、DMAコントローラーの処理がCPUで行われることとなり、ボトルネックになってしまっているとの指摘だった。今後は、Intel VTなどのように仮想マシンからエミュレーションされたDMAコントローラーを介さなくてもアクセスできるように改善されているので、もう少しすれば仮想化のデメリットも少なくなるのではないかという内容だった。
3.仮想化が最も有効に働くのは、スケールアウトする時だ。ただ、重要なことは、仮想マシンがデータとなっており、それを保持するためには、ハードディスクをあらかじめ大規模にしておかなければならないということだ。仮想マシン1台のオーバープロビジョニングが、数十台集まると、それこそ膨大なストレージの無駄が生まれてしまう。それを防ぐために、日立製作所であったりユニアデックスはストレージ仮想化という技術でもって解決しようとしている。
4.P2Vは仮想化の中でも最もリスクの高い内容であると日立製作所 高衣良さんやユニアデックス 高橋さんはお話しされていた。原因は、Hyper-Vを例にとれば、仮想マシンにするためにWindows PEを起動させて既存サーバーをバックアップする必要があるが、サーバー自体にWindows PEを動かすためのドライバが必要であったりするからだ。また、もし仮想化に成功したとしても、まれにサポートが終息しているOSの不具合によってブルースクリーンが起こってしまったりすることがあり、長らくレガシーシステムに頼らざるを得ないミッションクリティカルなシステムを仮想化することはそもそも危険なことであるということをベンダーは認識しなければならない。
「なぜ仮想化なのか?をよく考える必要がある。仮想化はゴールではない。」(日本仮想化技術研究所 宮原さん)
ところで、仮想化のもたらす劇的な変化訪れようとしていることを、先日Windows 2008 R2を発表しているマイクロソフトが教えてくれた。
社内の物理サーバーに乗っている仮想マシンを一時的に利用したいが、どの物理サーバーもリソースが不足しているとき、IIJのクラウドに申し込んでサーバーを確保し、ライブマイグレーションを使って仮想サーバーを移動させて稼働させるというものだ。実際にデモンストレーションを行っていたが、数分でライブマイグレーションが完了していた。
この前提にあるのは、IIJのサーバーとVPNで接続されており、同一ネットワーク上にある前提がもちろん必要だろうと思われるが、プロビジョニングにより、自動的にサーバーの稼動する物理サーバーが変わるようになれば、今動いているこのシステムは社内にあるのか、データセンターにあるのか、はたまた海外にあるのかそんなことすら意識しなくて済むようになる。自動化がすすめば、ビジネス規模に応じて契約を進めていけばいいので、コストを最適化できる。
ユーザーから見れば夢のような技術だが、保守ベンダだから見れば、こんな面倒な話はない。物理サーバーの位置が変わるとネットワーク遅延が発生する(海外に移動してしまうと数msの遅延が数百msの遅延になってしまう。たいした違いではないかもしれないが100倍遅くなることは事実なのだ)ことで、アプリが動かないとかそんなトラブルに悩まされるようになりそうだ。
仮想化、仮想化、仮想化。。。Webサーバーが耐障害性と性能向上を目的に台数が増えた結果、ネットワーク機器を仮想化して冗長化しなければならなくなり、さらに耐障害性の向上とスケールアウトを進めた結果、物理サーバーすら仮想化の対象となった。あまりに物事が抽象的になった結果、本質が見えにくくなってしまっている。仮想化という時代をまのあたりにしていくエンジニアは、私を含めてその内容自体を理解することが難しくなりつつあるが、仮想化が当たり前で育つエンジニアは、それが理解できるのだろう。しかし、今後仮想化特有の不可解な現象に行き着いたときに本質がわかっていなければ、解決が難しいだろう。これは、きっとDBアクセスにおけるO/Rマッピングのようなものに近いのかもしれない??
今後は、アプリケーションエンジニアも仮想化技術とネットワーク技術を身につけていかなければ、立ちいかなくなると個人的には考える。(そんなのはネットワークエンジニアの仕事だろうという声が聞こえそうだが。。。)