ITの教科書検索
入門読了 約9分

仮想化とは ― ハイパーバイザーと仮想マシンの仕組み

仮想化は、1台の物理サーバで複数の仮想マシンを動かす技術で、クラウドで借りるサーバもこの上で動きます。Type1とType2は、ハイパーバイザーを機器に直接載せるかどうかで分かれます。

目次
  1. 仮想化とは
  2. ハイパーバイザーの役割
  3. Type1とType2の違い
  4. 動かしたまま移すライブマイグレーション
  5. コンテナとの違い
  6. 練習問題

仮想化とは、1台の物理的なコンピュータを複数台のように使う仕組み

クラウドでサーバを1台借りるとき、手に入るのはたいてい物理的なサーバではなく仮想マシンです。仮想化とは、1台の物理的なサーバの上で、独立したコンピュータのように動く環境を複数作る仕組みです。この環境を仮想マシンと呼び、物理的には1台のサーバしか無くても、利用者からは別々のコンピュータに見えます。

クラウド事業者は、1台の物理サーバを仮想化し、利用者ごとに切り分けた仮想マシンを貸し出しています。IaaSは、この仕組みの上に成り立っています。米国の標準化機関NISTは、1つ以上のOSとそのアプリケーションを、仮想化されたハードウェアの上で動かす方式をフル仮想化と呼んでいます。

仮想化を支えるソフトウェアが、次の節で説明するハイパーバイザーです。クラウドコンピューティングの特徴の1つである、複数の利用者で資源を分け合う仕組みも、この技術が支えています。借りる仮想マシンの構成をファイルに書いてツールに作らせる方法は、IaCの記事で説明しています。

仮想マシンの使い方の1つに、VDIがあります。VDIはVirtual Desktop Infrastructureの略で、日本語ではデスクトップ仮想化と呼びます。仮想マシンの中にデスクトップ環境を作り、利用者は手元の端末からネットワーク越しに使います。

手元の端末に処理とデータを置かないシンクライアントの考え方は、クライアントサーバシステムの記事で触れています。画面だけを端末に送る仕組みは、シンクライアントとVDIのページで詳しく説明しています。

ハイパーバイザーとは、物理ハードウェアと仮想マシンの間で資源を管理するソフトウェア

ハイパーバイザーとは、物理的なハードウェアと、その上で動くゲストOSとの間に入り、命令の流れを管理するソフトウェアです。ゲストOSとは、仮想マシンの中で動くOSのことです。NISTは、ハイパーバイザーを「ゲストOSを管理し、ゲストOSと物理ハードウェアの間の命令の流れを制御する仮想化の構成要素」と定義しています。

1台の物理サーバには、CPUやメモリなどの決まった量のハードウェアしかありません。ハイパーバイザーは、この限られたハードウェアを複数の仮想マシンに分けて使わせます。NISTは、複数のゲストOSが同じ物理資源を共有する仕組みを「論理パーティショニング」と呼んでいます。

VM 12 vCPU4 GiB割り振るVM 22 vCPU4 GiB割り振るVM 32 vCPU4 GiB割り振るハイパーバイザー命令の流れを管理物理資源を使う物理サーバ(6コア・12 GiB)CPU・メモリの実体VM 12 vCPU4 GiB割り振るVM 22 vCPU4 GiB割り振るVM 32 vCPU4 GiB割り振るハイパーバイザー命令の流れを管理物理資源を使う物理サーバ(6コア・12 GiB)CPU・メモリの実体
1台の物理サーバが持つCPU・メモリを、ハイパーバイザーが3台の仮想マシンに割り振る例です。図では均等に分けていますが、割り振る量は均等とは限りません。

次の図では、物理サーバに乗せる仮想マシンの台数を切り替えて、1台あたりのCPU・メモリの量がどう変わるかを確かめられます。図では例として均等に分けています。台数を増やすほど、1台あたりの取り分は小さくなります。

物理サーバの例:CPU 6コア・メモリ 12 GiB。1コアを1 vCPUとして割り振ります。

VM 1
6 vCPU
12 GiB

1台だけなので、6コア分・12 GiBをすべてこのVMに割り振れます。

Type1(ベアメタル型)とType2(ホスト型)の違いは、ホストOSを挟むかどうか

ホストOSとは、物理的なコンピュータで直接動くOSのことです。ハイパーバイザーには、物理ハードウェアとの間にホストOSを挟むかどうかで、2つの方式があります。NISTは、この2方式をベアメタル仮想化とホスト仮想化と呼んでいます。AWSの公式ページでは、ベアメタル仮想化をType1、ホスト仮想化をType2とも呼んでいます。

Type1は、物理ハードウェアの上にハイパーバイザーが直接乗る方式です。ホストOSが無いため、ハイパーバイザー自身が簡易なOSのように働きます。

Type2は、Windows・Linux・MacOSなどの一般的なホストOSの上に、ハイパーバイザーがアプリケーションのように乗る方式です。ホストOSという層が1つ多い代わりに、仮想マシンの外でもWebブラウザなどのアプリケーションを動かせます。

Type1(ベアメタル型)VM(ゲストOS)ハイパーバイザー物理ハードウェアType2(ホスト型)VM(ゲストOS)ハイパーバイザーアプリと同じようにホストOS上で動くホストOSType1には無い層物理ハードウェアType1(ベアメタル型)VM(ゲストOS)ハイパーバイザー物理ハードウェアType2(ホスト型)VM(ゲストOS)ハイパーバイザーアプリと同じようにホストOS上で動くホストOSType1には無い層物理ハードウェア
Type1は物理ハードウェアの上にハイパーバイザーが直接乗ります。Type2はホストOSの上にハイパーバイザーが乗り、ホストOSという層が1つ多くなります。

NISTは、サーバの仮想化にはType1が使われることが多いと説明しています。1台のパソコンで複数のOSを動かす使い方には、Type2が使われることが多いとしています。AWSの公式ページによると、Linuxカーネル(OSの中心部分)に組み込んで動くKVMは、Type1とType2の両方の特徴を持つハイブリッド型です。

AWSのEC2は、Nitro Hypervisorという仕組みの上でインスタンスを動かしています。インスタンスとはEC2で借りるサーバのことで、仮想マシンの一種です。

仮想マシンは、動かしたまま別の物理サーバに移せる

ライブマイグレーションとは、ゲストOSとアプリを動かしたまま、仮想マシンを別の物理サーバに移す機能です。NISTの説明では、この機能はすべてのハイパーバイザーに備わっています。

移動元のサーバにあるゲストOSの状態は、移動先のサーバに複製する必要があります。複製するのは、メモリの内容・プロセッサの状態・ストレージ(2台のサーバが共有していない場合)・ネットワークの状態です。

ライブマイグレーションには、3つの利点があります。

  • 障害が起きそうなサーバから、仮想マシンを退避させられる
  • 負荷を他のサーバに分散できる
  • 仮想マシンを止めずに、元のサーバの保守・アップグレード・パッチ適用ができる

コンテナは、仮想マシンとは仮想化する層が違う

仮想化と似た仕組みに、コンテナがあります。コンテナは、アプリケーションを動かすのに必要なファイルと設定をひとまとめにしたものです。

AWSの公式ページによると、ハイパーバイザーとコンテナはどちらも仮想化の技術ですが、仮想化する層が違います。ハイパーバイザーは、プロセッサやメモリなどのハードウェアを仮想化します。コンテナは、ホストOSの中に作られた独立した環境で動きます。イメージやオーケストレーションを含む詳しい仕組みは、コンテナの記事にまとめました。

参考にした資料

練習問題(全4問)

Q1仮想化の説明として最も適切なものはどれ?
Q2ハイパーバイザーの役割として正しいものはどれ?
Q3Type1(ベアメタル型)とType2(ホスト型)の違いとして正しいものはどれ?
Q4ライブマイグレーションの説明として正しいものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

クラウドの記事を続けて読む

クラウド 全36本中11本目