スポンサーリンク

【応用情報技術者試験】仮想化

前提

  • 物理サーバー:ホストOSがインストールされている物理的なサーバー
  • ホストOS:物理サーバーにインストールされているOS(一般的なPCでいうWindows OS や Mac OS等)
  • ハイパーバイザー:仮想サーバー(VM)を作成/実行するソフトウェア
  • 仮想サーバー(VM):物理サーバーの余剰リソースを使用して作成されるサーバーおよび仮想環境
  • ゲストOS:仮想サーバー上にインストールされているOS

仮想化

仮想化はソフトウェアの開発で使用される手法であり、一つの物理サーバーの上で「仮想的に」サーバーを構築するという技術を指します。

Windows PC上でのWebアプリケーション開発を例に挙げると、Webアプリとして「Webサーバー」「アプリケーションサーバー」「DBサーバー」が必要になりますが、これらのサーバーを物理的に用意するのではなく一つの物理サーバー(Windows)上で仮想的に(WebサーバーやDBサーバーを)構築するようなイメージです。

専用のサーバーを用意する必要がないため、サーバーの費用や電力、物理的なスペースなどのコストを削減できることがメリットになります。

仮想化技術の種類

仮想化技術には主に

  • ハイパーバイザー型(タイプ1ハイパーバイザー)
  • ホスト型(タイプ2ハイパーバイザー)
  • コンテナ型

の3種類が存在し、次項でそれぞれの違いを見ていきます。

ハイパーバイザー型

ハイパーバイザー型は、ハイパーバイザーが物理サーバー上で直接動作し、その上に仮想サーバーを構築します。

  • ホストOSを必要とせず、本来役割を担っているホストOSの代わりにハイパーバイザーがハードウェアを直接制御するため、仮想マシンのパフォーマンスが上がる
  • 複数の仮想マシンを効率よく稼働させるための仕組みがある
  • 例:Microsoft Hyper-V, VMWare ESX-i, Linux KVM
type1-hyper-v.png

ホスト型

ホスト型 は、ホストOSのソフトウェアとしてハイパーバイザー(等の仮想化ソフトウェア)が実行され、その上に仮想サーバーを構築します。

  • ホストOSの上にソフトウェアとしてインストールして使用するため、設定がシンプル
  • ハードウェアへのアクセスはホストOSを経由して行われるため、余計なオーバーヘッドがかかる
    • ホストOSは仮想マシンに対してハードウェアリソースの割り当て管理をしているため、仮想マシンが増えるとホストOSの負荷が懸念される
  • 仮想マシンごとに、ホストOSとは異なるゲストOSをインストールできる
  • 一般的なデスクトップOS上で動作するため、個々の環境でテストや開発がしやすい
  • 例:Oracle VM VirtualBox, VMware Palyer, VMWare Fusion
type2-hyper-v.png

コンテナ型

コンテナ型の場合はゲストOSを必要とせず「仮想マシン/仮想サーバー」を構築しないため、ホスト型・ハイパーバイザー型とは全く異なる概念となります。

OSの機能はホストOSに依存しているため、そのホストOS(Linuxカーネル等)が利用するアプリケーションを実行するための環境をコンテナごとに管理し、コンテナは「コンテナエンジン」というソフトウェアで動作します。

そのためコンテナはあくまでもアプリケーションを実行する役割となり、サーバーの中核機能(OSの機能)はホストOSへ任せることになります。

container.png
  • ゲストOSが不要であるコンテナではホストOSのカーネルを共有して動作するが、各コンテナには必要なライブラリやバイナリ等(bin/lib)のユーザー空間が含まれ、これがアプリケーションの実行に必要な最低限のOSコンポーネントを提供する。そのためOSのコア機能(カーネル)はホストOSに依存し、独立したユーザー空間だけがコンテナごとに用意される(Docker Engineを実行する場合、WindowsではWSL2、MacではLinuxKitがホストOSにあたる)
  • ホストOSのみで動作するため、リソースの消費量が少なく動作速度も速い
  • ホスト型やハイパーバイザー型のように、ホストOSと異なるOSを持つ仮想マシンを稼働させることができない
  • 例:Docker, Kubernetes, LXC(Linux Containers)

OSの有無
ハイパーバイザー型:ゲストOSのみ
ホスト型:ホストOSとゲストOS両方
コンテナ型:ホストOSのみ

コメント

タイトルとURLをコピーしました