こんにちは。SB C&Sの幸田です。
「仮想化」はサーバーだけでなく、デスクトップ(PC)やアプリケーションにも使われますし、
近年ではストレージやネットワークさえも、いよいよ当たり前のように「仮想化」されています。
近いうちにこのブログで、そういった様々な「仮想化」のやりかたについて、
それぞれ「どんなことができるのか」、そして「何が嬉しいのか」などを
なるべく分かりやすくご説明することにトライしてみようと思っております。
ですが、まずはその前に。
これほど様々な場面で取り入れられる「仮想化」とはそもそもどんな手法/概念なのか?
といったところのご説明を書いてみました。目を通して頂けますと幸いです。
「仮想化」とは、「見せかける」技術
さっそく「仮想化」を一言にまとめてしまえば、「見せかける」技術です。
コンピュータのパーツやその構成、アプリケーション、ネットワークなどを、
ソフトウェアの力によってより柔軟に利用可能な姿へ変えることが出来ます。
たとえば、「本当は無いものを、あるように見せかける」。
「1つしかないものを、複数に見せかける」ことも、
「複数あるものを、1つに見せかける」ことも仮想化と呼ばれます。
さらに「複数あるものをいったん1つにまとめ」て、
「好きな量や数に切り分けたように見せかける」ことも出来ます。
詳しい方からは、もっと正確な言い方がある!大事なものが抜けている!とご指摘が出てきそうな気もしますが、
今回は厳密性や網羅性よりも、大まかなイメージを持っていただくことを優先したく、これでご容赦下さい。
とはいえ、これだけだと具体的に何ができるのか分からないと思いますので、例を挙げてみましょう。
例えば、サーバーの「仮想化」
サーバーの仮想化は、「1つしかないサーバーを、複数に見せかけ」ています。
どのように「見せかけ」ているか。
ここに1台のサーバーがあるとします。
サーバーを実際に使おうと思ったら、PCと同じようにOS(基本ソフトウェア)が必要です。
PCを使うときを思い出して下さい。電源を入れるとOSがまず動き出し、
そのうえでWebブラウザや表計算ソフトなどが動き出します。
サーバーも同じです。OSが起動したうえで、サービス(Webサイトだったり勤怠管理だったり)が動き始めます。
従来は、PCでもサーバーでも、原則として「OSは1台にひとつだけ」でした。
なぜならOSは、PCやサーバーに搭載されているCPUやメモリを独り占めして動くからです。
サーバー仮想化は、この「OSは1台にひとつだけ」という常識を覆しました。
「仮想化」で1台のサーバーを複数に「見せかける」
たとえサーバーが1台だけしか無い場合でも、仮想化することによって
CPUやメモリを積んだサーバーが「たくさんあるように見せかけ」て、
その「見せかけのサーバー」へOSを入れることができるのです。
PCやサーバーを使う際、まず基本ソフトウェアとしてOSが動かなければなりませんが、
サーバーの仮想化では、OSのかわりに「ハイパーバイザー」という基本ソフトウェアが動きます。
このハイパーバイザーこそが、サーバー仮想化の立役者です。「見せかけのサーバー」を作り出す役割を担います。
そしてハイパーバイザーが作り出す「見せかけのサーバー」のことを「仮想マシン」と呼びます。
OSはサーバーを1台まるごと独り占めしているものと認識して動きますが、
実際には、OSが独り占めしているのは「サーバーに見せかけ」た仮想マシン、というわけです。
ネットワークのポートなども、仮想マシンそれぞれに対して本当にあるように「見せかけ」られています。
もちろん「見せかける」だけじゃなく、ちゃんと使えます
つまりOSは騙されて起動するわけですが、何も出来ないわけではありません。
CPUやメモリは見せかけだけではなく、OSからしっかり使うことができます。
ただし、CPUやメモリは小分けになり、
仮想マシンが多いと1台あたりが使える分量は少なくなります。
また、ハイパーバイザー越しに使うので、そのぶん直接使う場合よりもほんの少し動きは遅くなります。
複数あるCPUやメモリなどのリソースを「いったん1つにまとめ」て、
「好きな量に切り分け」たうえ仮想マシンに割り当てて使うことができる点も大きな特徴です。
意外と長い歴史と広がりがある「仮想化」
「仮想化」ですが、じつは1960年代くらいから、コンピューターの世界で使われていました。
1つのCPUを複数あるように「見せかけ」て、いくつものプログラムが並行して使えるようにしたり、
前述の仮想マシンに似てはいるけれどずっと単純な構造のものを作って、その上でプログラムを動かしたり。
もっと言うと、コンピューターの世界以外でも「仮想化」という概念は昔から存在します。
共通しているのは、「複雑な中身を隠して、シンプルに見せる」という点。
例えば、複雑な機構を持つ乗り物の操作インターフェースを人間が操作しやすい形に変えることなども、概念的には仮想化の一種とされたりします。
サーバーの仮想化も、ハイパーバイザーがどんなプログラムになっているかといった
複雑で細かなつくり(実装)まで知らなくても、仮想マシンをシンプルな操作で簡単に作成できるようになっているわけです。
この記事では「広義の仮想化」にこれ以上詳しく触れませんが、ご興味ありましたら調べてみて下さい。
以上、「そもそも仮想化とは?」をテーマに、なるべく平易に書いてみたつもりです。
大まかなイメージだけでも掴んで頂けたら大変嬉しいです。
別の記事で、改めていろいろな「仮想化」についてご紹介したいと思います。
よろしければそちらもご一読くださいませ。
それでは失礼いたします。
関連記事はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 技術統括部 第1技術部 2課
幸田 章 - Akira Koda -
VDI を含む仮想化、クラウド、NVIDIA GPU によるコンピューティング(グラフィックス, AI/HPC)等のプリセールス・エンジニア業務に従事。
VMware vExpert 2015-2022