補足
学んだ知識のほとんどは,Qiitaではなくこちらにバーッとまとめております.
01. 仮想化
仮想化とは
一つの物理サーバー上で仮想的なハードウェアを稼働させる技術のこと.仮想環境の構築方法にはいくつか種類がある.
ホスト型仮想化
・ホスト型仮想化とは
物理サーバーのホスト上で,仮想サーバー(仮想マシン)を構築する.
・Provider例
VMware Workstation,Oracle VM VirtualBox,など
ハイパーバイザー型仮想化
・ハイパーバイザー型仮想化とは
物理サーバーのBIOSから起動したハイパーバイザー上で,仮想サーバー(仮想マシン)を構築する(※ホストは用いない).
・Provider例
VMware vSphere Hypervisor,Xen,KVM,など
コンテナ型仮想化
・コンテナ型仮想化とは
物理サーバーのホスト上で,仮想サーバーではなく,仮想サーバーとしての機能を持つコンテナを構築する.カーネルのリソースを分割できるNamespace(PID namespace,Network namespace,UID namespace)とControl Groupsを用いて,単一のOS上に独立したコンテナを構築する.
→ DockerToolboxがちょい違う
・Provider例
Docker,LXC,OpenVZ,など
01-02. 各仮想化のパフォーマンスの比較
起動速度の違い
ホスト型とハイパーバイザ型では,ハードウェア(CPU,メモリ,ハードディスク)とゲストOSを仮想化することが必要である.一方で,コンテナ型では,ハードウェアとゲストOSの仮想化は行わず,namespaceを用いてコンテナを構成するため,その分起動が速い.
処理速度の違い
・Overheadの小ささ
ゲストOS上のアプリを操作する場合,ホスト型とハイパーバイザ型では,ハードウェアやハイパーバイザーを経由する必要がある.この分だけ,時間(Overhead)を要する.一方で,コンテナ型では,各コンテナがホストとカーネルを共有するため,Overheadが小さい.
・Overheadの比較
sysbenchというベンチマークツールを用いて,CPU・メモリ・ファイルI/Oに着目し,物理サーバー・コンテナ型仮想化(Docker)・ホスト型仮想化(VirtualBox)のパフォーマンスを比較すると,コンテナ型であるDockerは最もOverheadが小さい.