開発環境における仮想化技術の可能性

User Mode Linux


先日、社内の勉強会で、仮想化技術の1つである「User Mode Linux」について紹介しました。

「User Mode Linux」とは、簡単に言うと仮想OSをエミュレートする仕組みの1つです。この分野では有名なVMwareや、今流行りのXenの仲間みたいなもので、仕組み的にはcoLinuxと似ています。

さて、この勉強会で私がお伝えしたかったのは、以下の2点です。


  • 仮想化技術およびUser Mode Linuxの概要、インストール方法や使い方
  • 開発環境でのUser Mode Linux(仮想化技術)の活用法


1点目の仮想化技術云々については、Web上にたくさんの素晴らしい解説サイトがありますので、そちらにお任せして、ここでは2点目の、仮想化技術を使って開発環境を構築すると何が嬉しいかを書こうと思います。


現状、私のチームの開発環境は、まさにこの仮想化技術の1つを使っており、メンバの各マシンにVMWare Player(仮想マシン)をインストールし、あらかじめ準備しておいたVMWareのLinuxOSイメージ(本番環境と同様の環境)をメンバに配布する事で、新しいメンバが来てもすぐに他メンバと同様の開発環境が作れるようにしています。


この方法では、各人の開発環境構築のイニシャルコストを大幅に減らす事ができ、非常に便利なのですが、仮想OSのイメージを配布後、そのイメージに対して各メンバがカスタマイズ(ツールを自分好みの設定、個人的に使いたいものをインストール等)を加えているため、イメージファイルの中のモジュールのバージョンアップやモジュール追加を実施したい場合は、結局各メンバの使用しているイメージに各メンバがインストール作業を行うことになります。


# あとね、使っているノートPCのスペックが弱くて、VMWarePlayer立ち上げるとPCが悲鳴をあげ始めるの。


これを解決する方法の1つは、サーバサイドで仮想化技術を使うことです。
つまり、各メンバのローカルマシンで構築している開発環境を、開発専用のサーバを立ち上げて、サーバに開発環境を移してしまうのです。


例えば、User Mode Linuxでは、ホストOS(仮想OSをエミュレートする本体のOS)のファイルにアクセスできるhostfsといった機能があるため、仮想OSイメージに入っているツールのバージョンアップや新しいツールのインストール等は、ホストOSに入っているリソースを書き換えることで、共有リソースの書き換え(バージョンアップ、新規インストール)が可能となります。


その他、User Mode Linuxでは、仮想OSのイメージと、イメージに対する変更分を保持する差分ファイルを準備して利用するため、OSイメージは参照のみ、変更分は差分ファイルにアクセスするといったことが出来るため、OSイメージをメンテナンスすることも可能(なはず)です。


# 既に利用しているイメージを書き換えるのは危険な香りもしますが。。。


他にも、仮想化技術を活用できるシーンは、


  • 検証環境として利用
  • 研修等で、多くのサーバ環境が欲しくなった場合に利用


などが挙げられます。User Mode Linuxであれば、OSイメージさえ準備しておけば、コマンド1つで仮想OSを立ち上げることが可能であり、差分ファイルを用いた書き込みを行うため、資源の有効活用が可能となります。


こんなわけで、今のチームの開発環境も、徐々に開発サーバに移していけたら良いんじゃないかと考えています。今は、運用環境も開発環境もLinuxのため、Linux上で、Linuxの仮想OSが動く、User Mode Linuxが、パフォーマンス的にも最適な感じがしますが、今後別のOSに切り替わった際には、別の仮想化技術を選定すればOKなわけで。


これなら、手元の端末がシンクライアントになっても開発は確実に、かつ効率的に行えるはずです。


# あとは、パフォーマンス、運用が安定して行えるか次第ですが。