この記事では応用情報で出題される仮想化技術についてIT初心者にも分かりやすく解説します。
仮想化技術
- 仮想化とは物理マシンを分割したり集約することでリソースを効率的に使う仮想マシンを作成すること
- ホストOS型・ハイパーバイザー型・コンテナ型仮想化では1台の物理マシンの中に複数の仮想マシンを作る
ホストOS型・ハイパーバイザー型・コンテナ型仮想化
- ホストOSは物理マシンに入っているOSで、ゲストOSは仮想マシンを動かすOS
- ホストOS型仮想化は、ホストOSが入った物理マシンにゲストOSを複数インストールし仮想マシンを作る
- ハイパーバイザー型仮想化は、ホストOSが入っていない専用の物理マシンにゲストOSを複数インストールし仮想マシンを作る
- コンテナ型仮想化は、アプリの開発・実行に必要なプログラムやライブラリをコンテナと呼ばれる箱にまとめ、それをホストOSで実行する。コンテナ同士は独立して動く。
応用情報では仮想化技術に関する問題が出題されます。是非最後までご覧ください。
仮想化マシンとは
仮想化とは物理的に存在するマシンを分割したり、集約することで仮想的な環境を作る技術です。例えば、1つの物理マシンの中に複数の仮想マシンを作ったり、複数の物理マシンを1台の仮想マシンを作ったりします。この記事では、1つの物理マシンの中に複数の仮想マシンを作るパターンの仮想化について解説します。
物理マシン1台しか無ければ、当然パソコンを使えるユーザも1人しかいません。
しかし、その中に仮想マシンを作ることで、複数のユーザで物理マシンのリソース(CPUやメモリ容量など)を効率よく共有することが出来ます。また、管理する物理マシンが1台で済むというメリットもあります。
仮想マシンを語る上で理解しておきたいOS
OSはOperating Systemの略で、コンピュータで出来る基本的な動作を実現するためのソフトウェアです。コンピュータとして最低限出来ないといけないことを出来るようにするのがOSというイメージですね。OSにはWindowsやMac、Linuxなどがあります。
OSについて詳しく知りたい方はこちらの記事を見てください。
仮想化技術の種類
仮想化技術には主に、ホストOS型仮想化、ハイパーバイザー型仮想化、コンテナ型仮想化の3つあります。
ホストOS型仮想化
ホストOS型仮想化は既にOSがインストールされている物理マシンに違うOSの仮想マシンを作りたいときに使う技術です。例えば、既に使ってるWindowsのパソコンでMac専用のアプリを開発したい、みたいな時に使える技術ですね。
ホストOS型仮想化は下図のイメージで仮想マシンを作ります。
ちなみに、物理マシンのOSはホストOS、仮想マシンのOSはゲストOSと呼びます。
ホストOS型仮想化は、ホストOSとゲストOSの2つが起動します。
そのため、OSが使うリソースが無駄に多くなり、また、仮想マシンを起動するときにホストOSとゲストOSの両方を起動させる必要があり、時間が掛かるというデメリットがあります。そこで出てくるのがハイパーバイザー型仮想化です。
ハイパーバイザー型仮想化
ハイパーバイザー型仮想化では、ホストOSがインストールされていない専用の物理マシンを用意して、そこに仮想マシンを作っていきます。仮想マシンを動かすのに必要なOSはゲストOSだけなので、リソースを有効に使えて、起動も高速で出来るメリットがあります。
ただ、既存の物理マシンには使えず、専用の物理マシンを用意する必要があるため、手軽さには欠けます。
コンテナ型仮想化
コンテナ型仮想化では、アプリケーションの開発や起動に必要なプログラムやライブラリをコンテナと呼ばれる箱にひとまとめにする技術です。コンテナ型仮想化はホストOSを各コンテナで共有し、ゲストOSは作りません。稼働するOSが1つになるのでハイパーバイザー型仮想化よりリソースを効率よく使える反面、ホストOSと異なるOSで動くアプリは動作しないというデメリットがあります。
実はコンテナ型仮想化はホストOS型仮想化やハイパーバイザー型仮想化とは成り立ちが違います。
1台の物理サーバで複数のアプリケーションを開発する時、そのアプリのプログラムやライブラリを格納する場所が同じだと、誤って触りたくない・触って欲しくないファイルを触られてしまうことがあります。これを防ぐために、アプリ毎に環境を隔離したい!というのがコンテナ型仮想化の一番最初の設計思想になります。アプリ毎に環境を隔離するために、ユーザ毎に補助記憶装置にアクセス出来る領域を制限しました。
最初は補助記憶装置のアクセス出来る領域を隔離するだけでしたが、次第にタスク管理・メモリ管理・ネットワーク管理・ユーザの実行権限など様々なことがコンテナ毎に分割・管理出来るようになり、また、複数人が同時に並行して操作出来るようになりました。
こんな経緯があり、「1つのホストOSを共有して仮想マシンを作る仮想化技術」と言えるまで発展したのがコンテナ型仮想化です。
コンテナ型仮想化を実現するために使われるコンテナ型仮想化ソフトウェアの代表例にDockerがあります。Dockerはオープンソースソフトウェア(OSS)です。
応用情報技術者試験での出題例
令和5年度春期問20
応用情報技術者
午前試験 令和5年度春期問20
コンテナ型仮想化の環境であって,アプリケーションソフトウェアの構築,実行,管理を行うためのプラットフォームを提供するOSSはどれか。
ア Docker イ KVM ウ QEMU エ Xen
正解は”ア”
コンテナ型仮想化を実現するOSSはDockerです。
令和4年度秋期問12
応用情報技術者
午前試験 令和4年度秋期問12
コンテナ型仮想化の説明として,適切なものはどれか。
ア 物理サーバと物理サーバの仮想環境とがOSを共有するので,物理サーバか物理サーバの仮想環境のどちらかにOSをもてばよい。
イ 物理サーバにホストOSをもたず,物理サーバにインストールした仮想化ソフトウェアによって,個別のゲストOSをもった仮想サーバを動作させる。
ウ 物理サーバのホストOSと仮想化ソフトウェアによって,プログラムの実行環境を仮想化するので,仮想サーバに個別のゲストOSをもたない。
エ 物理サーバのホストOSにインストールした仮想化ソフトウェアによって,個別のゲストOSをもった仮想サーバを動作させる。
正解は”ウ”
コンテナ型仮想化は物理サーバのホストOSと仮想化ソフトウェアによって仮想サーバを作るので、ゲストOSが必要ありません。よって、答えはウです。
令和3年度秋期問14
応用情報技術者
午前試験 令和3年度秋期問14
コンテナ型仮想化の説明として,適切なものはどれか。
ア アプリケーションの起動に必要なプログラムやライブラリなどをまとめ,ホストOSで動作させるので,独立性を保ちながら複数のアプリケーションを稼働できる。
イ サーバで仮想化ソフトウェアを動かし,その上で複数のゲストOSを稼働させるので,サーバのOSとは異なるOSも稼働できる。
ウ サーバで実行されたアプリケーションの画面情報をクライアントに送信し,クライアントからは端末の操作情報がサーバに送信されるので,クライアントにアプリケーションをインストールしなくても利用できる。
エ ホストOSで仮想化ソフトウェアを動かし,その上で複数のゲストOSを稼働させるので,物理サーバへアクセスするにはホストOSを経由する必要がある。
正解は”ア”
コンテナ型仮想化はアプリの起動に必要なプログラムやライブラリを1つにまとめ、ホストOSでそれぞれ独立性を保ちながら動かします。よって答えはアです。