先日のエントリーにも書いたようにいまさらながらVMWareブーム到来である。さてWindowsのメインマシンでインストールしたDebian Linuxがディスクイメージをコピーするだけで、自宅サーバーのwww.saitoudaitoku.comでなにごともなかったように起動して動くのを見てふと「これでいいじゃん」と思ったわけである。
なにが「これでいいじゃん」かと言うと「システムって全部仮想マシンの上に構築すればいいじゃん」という仮説である。ポイントはいったん構成した仮想マシンのサーバーは何の変更もなくどのサーバーでも動くということだ。「install once run anyware」といったところだろうか。
まずOSとミドルウェアのインストール作業について考えてみよう。仮想マシンの場合だと、OSのインストールはインストール済みの仮想マシンのディスクイメージをコピーするだけだ。もっというとソフトウェアベンダーなりが従来のミドルウェアのインストールイメージの代わりに、ミドルウェアをインストール済みの仮想マシンのディスクイメージを配布してもいいだろう。ミドルウェアのインストールという作業が本質的に何なのか考えてみると、「OSが動いているサーバーにミドルウェアの各種ファイルをコピーしてミドルウェアが使えるようにする」ことである。従来だとこのインストール作業というのはなんというか一期一会であり各サーバーに対して一回ずつ必要だ。が、しかし仮想マシンだとこのインストール作業が再利用できる。つまりディスクイメージをコピーするだけでOSとミドルウェアのインストールが数分で完了する。またインストール作業を外注してインストール済みのイメージだけをもらうことも出来るかもしれない。
さらにシステム構築もはるかに簡単になる。例えば、アプリケーション・サーバーやデータベース・サーバーなど計5台のLinuxサーバーからなるシステムを構築する場合を考えよう。普通なら当然、本番環境のサーバーを5台用意して1台ずつOSをインストールして最新のパッチをあててミドルウェアをインストールしてというステップを地道に踏んでいく。が、仮想マシンを使うとそのへんの余っているサーバー1台の上で5台分の仮想サーバーを構築して(といっても上で述べたようにコピーするだけ)、ネットワークや各種パラメーター設定を行い、動作確認を行うところまで実機なしで出来る。動作確認が済んだらおもむろに構成済みのディスクイメージを本番環境にコピーして起動するだけである。つまり環境構築の期間が短縮できる上、実機がなくても環境構築が可能になる。
さらに運用時にもメリットはいろいろとある。まずサーバーの変更が自由自在だ。「ちょっとこのサーバーだと性能厳しいからもうちょっと速いのにしたい」とか「このサーバー壊れたから別のマシンを再構築しないと」とか言う場合も仮想マシンのディスク・イメージをコピーして起動するだけだ。さらにディスクイメージをSAN上の共有ディスクにおいておけばコピーすら必要ない。また仮想マシンはホストOSからすると1プロセスなので、動いている仮想サーバーをプロセスマイグレーションにより停止することなく別のサーバーに動かすことも出来るかもしれない。またサーバーの二重化にも簡単になるだろう。
さてずいぶんバラ色の世界に思えるが、この世界に行くためにはいろいろと課題もある。
- パフォーマンスは?(この便利さに比べたら10-30%程度の劣化は問題ないかも)
- CPUが違うと動かない、エミュレーターで動かしても遅い(x86がデファクトスタンダード?)
- マルチプロセッサーのハンドリングは?(2つ以上のCPUがあったら使えるのか?)
もちろんこういった仮想化技術はメインフレームやハイエンドサーバーでは実現されているが、Intelも仮想化技術に力を入れているしそろそろローエンドの世界にも一気に広まりそうである。こうやって書いてると近い将来システムはすべてXenなどの上に仮想サーバーとして構築されるようになる気が猛烈にしてきました。そしてきっと私がシニアになったときに若者に「昔はサーバーには1つのOSしか動かなかったもんさ」などと言って「古っ!」とか思われる日が来るのでしょうなー。
私は会社の環境、VMWare で構築して使ってます。ThinkPad 買い換える時とかに楽です、確かに。
少し前はリバートを1ヶ所しか設定できなかったのですが、最近は複数設定できるようになり、格段と使い勝手が向上しましたね。Demo Use, Test Use, 等・・・
お恥ずかしい話リバートって知らないのですが、ネットワーク周りのなにかでしょうか?私もテスト環境構築にさっそく使っています。
こんばんは!初書き込みです φ(・ω・`)ドキドキ
私もVMWare愛用してます。。。
便利ですよね〜 でも
ハイスペックマシンが必要なのと
DISK食い虫なのが難点
リバートって多分Snapshot pointの事ですね。複数の時点に巻き戻せる(リバート出来る)ということじゃないでしょうか。
VMWareの上で生活するというのは全然現実的ですね。CPUパフォーマンスはたいした問題にならないです。VMWare上でVisual Studioを使っていた事がありますが、全画面で使っているとVM上なのかホスト上なのかほとんど区別が付かなかったです。
個人で使う上で問題になるのは、
- Patchをホストとクライアントの両方に当てる必要がある
- 仮想ネットワークが遅い
という二点くらいですかね。(あと3Dゲーム系は全滅ですがPCでゲームしない人には関係ないですし)
なるほどです。>SIMさん
個人的なユースではインストール直後のディスクイメージがあればいいかなと思いますが、何ポイントかに戻せるほうがいいですね。
ところで、前から思ってたのですがジャーナル・ファイルシステムってデータベースのトランザクション・ログのようなものなので、全部ログをとっておけば自由自在に戻せそうなんですがあまりニーズがないんですかね。「あ、ファイル変更して戻せなくなった。巻き戻し、巻き戻し」とか…。
仮想ネットワークが遅いのはがんばれば直りそうですね。
ジャーナルを全部とっておくってのは知らないですが、ある時点のイメージを保存できるファイルシステムというのは聞いた事があります。Plan9のdumpfsが初めかなあ。
http://plan9.aichi-u.ac.jp/dumpfs/
他にも研究段階レベルであれば色々ありそうです。
dumpfsいいですね。ベンチマークしてるときに、うっかりパラメーターを設定したのかしてないのか分からなくなることがよくあるのですが、これだと即座にログのタイムスタンプから引いて確認できますね。