検索
連載

仮想化技術、本当に“当たり前”と言えますか?システム管理入門(9)(1/3 ページ)

“仮想化によるサーバ集約”は多くの企業にとってもはや当たり前のものとなった。だが、実際に仮想化技術を活用する立場にあるわれわれは、その“当たり前”を疑ってかからねばならない。特に今、企業にとって不可欠な存在となりつつあるクラウドコンピューティングのコア技術となるものだけに、疑問点は確実に解消しておきたい。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 皆さん、こんにちは。今回は、近年急速に浸透した仮想化についてお話をしましょう。メディアなどではもう「当たり前のもの」になったかのように言われていますが、実際に運用する立場にあるわれわれとしては、もう一度基礎から振り返っておくのも大切だと思います。順を追って分かりやすくお話ししていきますので、知識を整理するつもりで読んでいただけると嬉しいです。

仮想化とは?

 では、まず「仮想化とは何か」から振り返ってみましょう。ただ、ご存じのように、仮想化といってもストレージの仮想化、ネットワークの仮想化など、複数の種類があります。今回は、そうした中でも最も一般的なコンピュータの仮想化――すなわち、「仮想化ソフトを用いた仮想マシンの作成」に関するお話に焦点を絞ります。

 これは、ひと言で言ってしまえば「ハードウェアを何らかの形でソフトウェアを用いてエミュレーションし、1台の物理コンピュータシステムを、あたかも複数台のコンピュータシステムであるかのように見せかける技術」です。ひと言じゃないですね。

 この仮想化ソフトとは、「ソフトウェア的にコンピュータのハードウェア一式をエミュレートしてしまうソフトウェア」のことです。ただし正確に言えば「エミュレータ」ではありません。仮想化ソフトとエミュレータとの違いは、あとでお話しします。

 一方、「ソフトウェア的に実現した仮想的なコンピュータシステム」のことを「仮想マシン」と言います。1台の仮想マシンは、あたかも1台の物理的なコンピュータシステムであるかのように振る舞います。当然、その仮想マシン上にOSをインストールすることもできますし、アプリケーションを動作させることもできます。

 以下の図1は、1台の物理マシンに仮想化ソフトをインストールし、その上に3台の仮想マシンを構築した例です。

図1 仮想化ソフトウェアの基本概念。「ソフトウェア的に実現した仮想的なコンピュータシステム」のことを「仮想マシン」と言い、1台の仮想マシンは、あたかも1台の物理的なコンピュータシステムであるかのように振る舞う
図1 仮想化ソフトウェアの基本概念。「ソフトウェア的に実現した仮想的なコンピュータシステム」のことを「仮想マシン」と言い、1台の仮想マシンは、あたかも1台の物理的なコンピュータシステムであるかのように振る舞う

 仮想マシンAにインストールされているOS_αは、仮想化ソフトによって提供された環境を、あたかも物理的な1台のコンピュータシステムだと思い込んでおり、その環境の上で、仮想マシンAに対してさまざまなI/O命令を実行します。

 本物のCPUやメモリは物理マシンが持っていますから、仮想マシンAは、そのI/O命令を仮想化ソフトを通して物理マシンに送ります。物理マシンは適切なI/O処理を行って、その結果を仮想化ソフトに返します。仮想化ソフトはその結果をこれまた適切に処理して、目的の仮想マシンに転送するわけです。

 仮想マシンにインストールするOSのことをゲストOSと言います。それぞれの仮想マシンは互いに完全に独立していますので、仮想マシンAにインストールするゲストOS(OS_α)と、仮想マシンBにインストールするゲストOS(OS_β)が異なっていてもかまいません。また、各仮想マシンの仮想的なハードウェア構成が違っていてもかまいません。仮想マシンAに割り当てるメモリ容量が1ギガバイトで、仮想マシンBに割り当てるメモリ容量が2ギガバイトであってもかまいません。

 また、理論的には、1つの仮想化ソフト上にいくつ仮想マシンを用意することもできますが、実際には物理マシンのリソースに限りがあるので、あまりにもたくさんの仮想マシンを構築すると、パフォーマンスに影響が出ます。

仮想化ソフトとエミュレータの違いとは?

 さて、先ほど「仮想化ソフトはエミュレータではない」と書きましたが、これについて少しお話ししておきましょう。

 エミュレータという言葉は、一般的にはソフトウェア的に別のハードウェアを実現する技術やソフトウェアの意味で使われます。例えば、Windowsマシン上にファミコンのハードウェアをエミュレートしてファミコンソフトを動かしたり、スマートフォンのハードウェアをエミュレートしてスマートフォンのソフトを動かしたりすることです。

 エミュレータは、物理マシンとは異なるハードウェア環境をソフトウェア的に実現できるというメリットがある反面、エミュレータ上で動作しているソフトウェア(例えばスマートフォン用に作られたソフトウェア)の命令を物理マシンで動作しているOS(例えば Windows)の命令に変換する必要が出てきます。そのため、エミュレータソフトでは変換のためのオーバーヘッドが避けられません。

 しかし、仮想化ソフトはエミュレータではありません。仮想OS上でのI/O命令を、ほぼそのまま物理マシンのハードウェアに伝えます。仮想化ソフトがやっているのは、複数の仮想マシンから、同時に同じハードウェアにリクエストが出た時の優先順位付けや、排他制御、メモリの再配置などです。そのため、エミュレータが行っているような意味での変換のためのオーバーヘッドがありません。

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る