2011/05/29

皐月3.仮想化タイプと住居2

前回の続きです。
前回はタイプ2VMM、ハイブリッドVMMと見てみました。
今回は、タイプ1VMMとよばれる仮想化アーキテクチャをみてみましょう。
いわゆる、Hyper-VやXenなど 現在主流となっているハイパーバイザによる方式は
このタイプ1VMMの形式にあたります。

今度は、寮をイメージしてみてください。
各ハードウェアを管理する管理人さんがいて、寮生の部屋のわりあてます。
もちろん、寮長もその対象。寮長はそこに住んでいる寮生の生活やあらゆる面倒をみている、というイメージです。
ハイブリッドVMMと違い、管理人さんがハードウェアを管理しているので寮生の要望にすぐ答えられるようになっています。
管理人さんにとって扱いやすいハードウェアも流通し(仮想化支援機能 IntelVT, AMD-V)、寮生にとってはまるで自分の家のような快適さが実現されてきています。

さて、タイプ1VMMですが、管理人さんの管理の仕方で二つのタイプに分かれます。

モノリシック型の代表例として、VMWare ESX Server、KVMなどがあげられます。
対して、マイクロカーネル型はHyper-VやXenなどが例として上げることができます。
どちらもそれぞれ利点があるのですが、お絵かきWindowsなので(笑)
マイクロカーネル型であるHyper-Vについて今後色々と描いていきたいと思います。

なお、仮想化についてもっと詳しく知りたい、という人は以下の記事が参考になります。

エンジニアなら知っておきたい仮想化の仕組み

仮想化の歴史や、内部の動きなどが詳しく書かれています。

2011/05/23

皐月2.仮想化タイプと住居

仮想化によるアーキテクチャには主に3つ種類があります。
今回は、住居にたとえてみましょう。

まずはタイプ2VMM
タイプ2VMMは、仮想OSなどでは使われず、JAVAランタイムなどのアプリケーションでよく使われます。
イメージとしては、家主のみハードウェアを使い、住居人は仲介人によって、その人の環境にあった居住が与えられますが、直にハードウェアを扱うことはできません。
なお、JAVA仮想マシンや、.NETFrameworkの共通言語ランタイムなどがここでいう仲介人にあたります。

次にハイブリッドVMM

これは、不動産屋さん経由で指定のハードウェアを住居人にも扱えるようなイメージ。
とはいえ、不動産屋さんは間取りの割りあてとかはしてくれるものの、ハードウェアの管理は基本 大家さん主体。
住居人がもっとハードウェア使いたいッと言ってきたとしても、不動産屋さんは、いちいち大家さんにお伺いをたてないといけないため、住居人にとってはハードウェアを扱うには若干レスポンスが悪い。
また、不動産屋さんは誰でも使えるようにハードウェアで使うコンセントや蛇口などは大家さんと違った汎用性のある一般的なものに変換して各住居人に提供しています。
大家さんがあとから不動産屋さんと契約して(インストールして)住居人を入れることができるため、お手軽だけれども上述したようにレスポンスに難はあるのがポイントです。
ハイブリッドVMMにあてはまるのはVirtualPC2007,VMwareWorkstation,VirtualBoxなどがあげられます。


ちなみにWindows2008Serverで扱える Hyper-Vは、ハイパーバイザベースの仮想化テクノロジであり、タイプ1VMMによるアーキテクチャです。
次回は引き続き住居を例にして、タイプ1VMMと、さらにそこから分類されるモノリシック型とマイクロカーネル型について説明できればよいなと思います。

2011/05/18

皐月1.仮想化はカップラーメン

仮想環境に触れる機会が増えてきたので、自分なりに解釈したことを絵化していきたいと思います。
ちがう場合は指摘していただければありがたいです。


さて、コンピュータにおける仮想化とはそもそもどういうことなのでしょうか。
Wikipediaには以下のように書いてありました。
仮想化(英: Virtualization)とは、コンピュータにおいてリソースの抽象化を指す用語である。「リソースの物理的特性を、そのリソースと相互作用するシステム/アプリケーション/エンドユーザーから隠蔽する技法。単一の物理リソース(サーバ、OS、アプリケーション、補助記憶装置など)を複数の論理リソースに見せかけたり、複数の物理リソース(複数の補助記憶装置群やサーバ群)を単一の論理リソースに見せかけたりできる」という実用的定義がある[1]。また、単一の物理リソースを何らかの特性の異なる単一の論理リソースに見せかけることもできる。

わかるような、わからないような・・
リソースの抽象化とはどういうことでしょう?
抽象化とは何か、またまたWikipediaで見てみます。
抽象化(ちゅうしょうか)とは、思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。抽象化において無視することについては捨象するという。従って、抽象と捨象は盾の両面といえる。

つまり、コンピュータのリソースを対象から注目すべき要素を重点的に抜き出して他は無視する方法を仮想化という。。
うーん、なんとなくわかるけれど利点が見えづらい。

というわけで、少し現実世界にあるもの一例にとってみます。
例としてあげるのは・・ ラーメンです。



僕はラーメンが好きです。
特に北海道に行った時に 有名ラーメン店「すみれ」で食べた味噌ラーメンは濃厚でとっても美味しかったー。
さてさて、このすみれの味噌ラーメンはもちろん北海道の「すみれ」に行かないと食べることは出来ません。また、北海道に行ったとしてもうどん屋や別のラーメン店に入ってしまうと 当然すみれのラーメンなんか出てこないです。
つまり、すみれのラーメンを食べるためには、
北海道の - 札幌にある - すみれに行って - 味噌ラーメンを注文し、 - ラーメンを食べる
という段階を踏む必要があります。

さて、これを仮想化・抽象化しようとすると・・。
「対象から注目すべき要素を重点的に抜き出して他は無視する方法」が抽象化ということなので、ここで注目すべき要素とは何か。そう、「すみれのラーメンを食べること」ですね。
別に北海道の札幌のすみれのお店に行かなくても、すみれのラーメンを食べることができれば良いのです。つまり、どういうことかというと・・。


カップラーメン化です。
仮想化=カップラーメン化

はい、これでわざわざ北海道にいかなくてもすみれのラーメンをすぐ食べることができるようになりました。つまり、「地理的(物理的)制約などは無視して、すみれにあるラーメンを重点的に抜き出した」ということでしょうか。
コンピュータの仮想化もいわゆる、カップラーメン化。
対象となる部分は、OSであったりアプリケーションであったり多岐にわたるけれども、要は重要なリソース部を抜き出して、それ以外の依存度を減らすこと。
JAVAやFLASHはプラグインを入れさえすれば、WindowsやMac、スマートフォンでも同じようにアプリケーションは動くし(アプリケーションの仮想化)、GoogleAppなどのクラウドはハードウェアごとまるまるカップラーメン化して、ネットさえつながれば非力なマシンですら同じようにサービスを受けることができるようになっています。


今現在 仮想化といえば、OSの仮想化を指すことが多いですけれど、
カップラーメンとして考えてみれば おのずとメリット・デメリットがみえてくるのではないでしょうか。