仮想化とは何か
仮想化(virtualization)とは、1台の物理的なサーバー(ハードウェア)の上に、ソフトウェアの力で複数の独立した実行環境を作り出す技術です。仮想化によって作られる、独立したOSが動作する実行環境の1つ1つを仮想マシン(VM:Virtual Machine)と呼びます。
物理サーバーを1台導入するたびにOSを1つしか動かせない、という従来の使い方に比べ、仮想化を使うことで、1台の物理サーバー上で複数のOS・アプリケーションを同時に、互いに独立した状態で動作させられます。これにより、サーバーのハードウェア資源をより効率的に活用でき、サーバーの台数・設置スペース・電力消費を抑えられるといった利点があります。
ハイパーバイザー
物理サーバーのCPU・メモリ・ストレージといったハードウェア資源を、複数の仮想マシンに割り当てて管理するソフトウェアをハイパーバイザー(hypervisor)と呼びます。ハイパーバイザーには、大きく分けて2つのタイプがあります。
Type 1(ベアメタル型)
物理サーバーのハードウェアに近い層で動作するハイパーバイザーです。一般にType 2に比べてオーバーヘッドが小さくなる傾向があり、データセンターや企業の本番環境で広く使われる方式です。Linux KVMはLinuxカーネルの仮想化機能として動作しますが、一般にType 1に分類されます。
- 代表例:VMware ESXi、Microsoft Hyper-V、Linux KVM 等
Type 2(ホスト型)
WindowsやmacOSなど、既存のホストOSの上に、通常のアプリケーションと同様にインストールして動かすハイパーバイザーです。ホストOSを経由するため、Type 1に比べるとオーバーヘッドが大きくなりますが、既存のPC環境に手軽に導入できる手軽さがあり、開発・検証環境や学習用途でよく使われます。
- 代表例:VMware Workstation、Oracle VirtualBox 等
仮想スイッチ(vSwitch)
複数の仮想マシンが1台の物理サーバー上に同居する環境では、仮想マシンどうし、および仮想マシンと外部の物理ネットワークとの通信を中継する仕組みが必要です。この役割を果たすのが、ハイパーバイザーの中にソフトウェアとして実装される仮想スイッチ(vSwitch:Virtual Switch)です。
仮想スイッチは、物理的なL2スイッチと同様に、仮想マシンの仮想NIC(vNIC)を接続するポートを持ち、VLANの割り当てなど、物理スイッチに近い機能を提供する場合もあります。仮想サーバー環境と物理ネットワーク環境をつなぐ際は、仮想スイッチがホストの物理NICをアップリンクとして利用し、その物理NICのポートを実際の物理スイッチのポートへ接続します。
仮想マシンとコンテナの違い(概要)
仮想化に関連する技術として、近年はコンテナ(container)もよく使われますが、両者の仕組みは異なります。
- 仮想マシン:ハイパーバイザーの上に、ゲストOSを含む環境全体を仮想化します。仮想マシン1つごとに、独立したOSカーネルを持ちます。
- コンテナ:ホストOSのカーネルを複数のコンテナで共有しながら、アプリケーションの実行環境(ライブラリ・設定等)だけを分離する技術です。ゲストOS全体を持たない分、仮想マシンより起動が速く、リソース消費も軽量になる傾向がありますコンテナ技術の代表例にDockerがありますが、コンテナ自体の詳細な仕組み・オーケストレーション(Kubernetes等)は、CCNA 200-301の出題範囲では概要レベルの理解にとどめられており、深い実装知識までは求められていません。[1]。
補足
- コンテナ技術の代表例にDockerがありますが、コンテナ自体の詳細な仕組み・オーケストレーション(Kubernetes等)は、CCNA 200-301の出題範囲では概要レベルの理解にとどめられており、深い実装知識までは求められていません。 ↩