仮想化2

 仮想環境を実行するためには、仮想環境を構成する仮想コンポーネントが必要。主なコンポーネントは以下の通り。

1.仮想マシン

 サーバやデスクトップPC、タブレット等、OSやアプリケーションソフトウェアを実行するために必要なハードウェアの環境を、仮想的にハイパーバイザ上に再現したマシンのこと。ソフトウェア的に再現されたPC。一般的にはVirtual Machineの頭文字を取ってVMと表される。仮想マシンを構成するコンポーネントをひとまとめにして、ハイパーバイザ上にフォルダやディスクイメージとして保存、活用されます。

 

2.仮想CPU

 実際に稼働しているハードウェアとしての物理CPUのリソースを分割し、ハイパーバイザ上で稼働している仮想マシンのCPUとして構成されたもの。仮想マシンからは仮想CPUが物理CPUとしてみえる。
 
仮想マシン1つにつき1つのCPU、もしくは1つのコアを割り振るのが理想的
 ・重い仮想マシンには多くのコアを割り振り、軽い仮想マシンには少ないコアを割り振る
 ・商用のハイパーバイザの中には、CPUのコア数、仮想CPUの総コア数でライセンスが決まるものもある

 

 最近の仮想CPUには仮想CPUを物理CPUとほぼ同等に動作させる仮想化支援機能がある。CPUの特権レベルは概念的にリング構造となっており、中央から0~3の4段階のリングになっている。

 リング0カーネルモード。CPUの全機能を無制限に利用できる。通常アクセスできるのはハードウェアを制御しているOSのみ。

 リング1~3:ユーザモード。アプリケーションは通常リング3で動作する。

 この仕組みはアプリケーションによって出された不当な命令によって、ハードウェアやシステムを破壊してしまうことを未然に防ぐ保護機能である。

 ハイパーバイザは通常リング3で動作するが、仮想マシン上のOSが必要に応じてリング0へのアクセスを試みると、命令矛盾が発生してしまう。この矛盾を解決するために、仮想化支援機能として新たな動作モードを搭載したCPUが開発されている。

 仮想化支援機能(VT-X,AMD-V等)を利用すると例外なしにリング0にアクセスできる。I/Oもほぼ直接アクセスできるため、物理環境に近い速度で動作する。ただし、デフォルトで仮想化支援機能が無効になっているPCもあるので注意が必要。

 

3.仮想メモリ

 物理ハードウェア上で稼働しているOSが利用する物理メモリがリソース不足になった際に利用されるストレージのメモリ化とは異なり、ハイパーバイザが仮想マシンに割り当てて利用するメモリ。

 Type-Ⅰハイパーバイザ:仮想マシンがほぼすべてのメモリを使用可能
 Type-Ⅱハイパーバイザ:他アプリケーションが使用するメモリ容量を考慮して設計

 

4.仮想HBA、仮想ディスク

 仮想マシンは物理ハードウェア上に構成されていた仮想ディスクをストレージとして利用する。その仮想ディスクと仮想マシンをつなぐ、論理的な接続が仮想HBA(ホストバイアダプタ)である。仮想ディスクは動的構成を取ることができ、設定上1220Gの仮想ディスクを使用しても、実際に使用しているサイズのみ物理ストレージ上では消費する。

 

5.仮想NIC、仮想スイッチ、仮想ルータ

 仮想マシンがネットワークを利用する場合は、物理ネットワーク機器と仮想マシンを間に仮想ネットワークを構成する必要がある。論理的なNIC(ネットワークインターフェースカード)が必要となり、論理的ルータ、論理的スイッチを必要とする。

 仮想スイッチ、仮想ルータは、仮想ネットワークにおいて、それぞれ物理機器と同じ役割を果たす。仮想ネットワークをNATにする場合はvRouterがVLANを作成する場合はvSwitchが必要。