仮想化¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. 仮想化とは¶
1
個の物理サーバー上で、仮想的なシステム (ハードウェア、ソフトウェア) を稼働させる技術のこと。
02. ハードウェア仮想化¶
ハードウェア仮想化とは¶
物理サーバー上で、物理サーバーのハードウェアとソフトウェアの要素を完全に仮想化する。
ホスト型仮想化¶
▼ ホスト型仮想化とは¶
物理サーバーのホスト上で、ハードウェアとソフトウェアの要素が完全に仮想化されたサーバー (マシン) を作成する。
▼ Provider例¶
- Oracle VM VirtualBox
- VMware Workstation
ハイパーバイザー型仮想化¶
▼ ハイパーバイザー型仮想化とは¶
物理サーバーのBIOSから起動したハイパーバイザー上で、ハードウェアとソフトウェアの要素が完全に仮想化されたサーバー (マシン) を作成する。
この時、ホストは使用しない。
▼ Provider例¶
- VMware vSphere Hypervisor
- Xen
- KVM
02-02. OS仮想化¶
OS仮想化とは¶
物理サーバー上で、ソフトウェアであるOSを部分的に仮想化しつつ、各仮想環境でハードウェアは共有する。
コンテナ型仮想化¶
▼ コンテナ型仮想化とは¶
物理サーバーのホスト上で、OSのユーザー空間を分割し、独立した各ユーザー空間上でコンテナを作成する。
▼ Provider例¶
- Docker
- Containerd
- Podman
- LXC
- OpenVZ
03. 各仮想化の性能の比較¶
セットアップの速さの違い¶
ホスト型とハイパーバイザ型では、ハードウェア要素 (例:CPU、メモリ、ストレージ) とソフトウェア (例:ゲストOS) を仮想化する必要がある。
一方で、コンテナ型では、OSのユーザー空間を分割するだけのため、仮想化のセットアップが速い。
処理速度の違い¶
▼ オーバーヘッドの小ささ¶
ゲストOS上のアプリケーションを操作する場合、ホスト型とハイパーバイザ型では、ハードウェアやハイパーバイザーを経由する必要がある。
この分だけ、時間 (オーバーヘッド) を要する。
一方で、コンテナ型では、各コンテナがホストとカーネルを共有するため、オーバーヘッドが小さい。
▼ オーバーヘッドの比較¶
sysbenchというベンチマークツールを使用して、CPU・メモリ・I/O処理に着目し、物理サーバー・コンテナ型仮想化 (Docker) ・ホスト型仮想化 (VirtualBox) の性能を比較すると、コンテナ型であるDockerは最もオーバーヘッドが小さい。