仮想化
Virtualization
基本的には以下の2通りの方法がある。
エミュレーション方式
存在しないものをまるで存在しているかのように擬似的に真似る方法。
リソース分割方式
1つのものを複数に見えるように管理する方法。
共有とは異なる。プロセス同士は同じリソースを扱っていることを認知できない。
CPU(ハードウェア)の仮想化
方式として2通りがある。
単純に(主に)ソフトウェア的にCPUを真似る。
機械語を変換してホスト側のCPUで動く機械語にする。
実際にはパフォーマンスを上げるために、この2つが混在する形になっていることが多い。
リソースの仮想化
ハイパーバイザによるハードウェアリソースの仮想化
1つのハードウェアを、ハイパーバイザが介することで、複数のハードウェアのように見せる。
異なるOSを動かすことができる。
仮想ハードウェアとして、ソフトウェアエミュレーションとリソース分離の2通りの方法がある。
ホストOSによるOSリソースの仮想化
1つのOSを、リソースを分離することで複数のOSが動作しているように見せる。
Linux LXC
FreeBSD Jail
同じOSでなければならない。
レイヤーの違い
ハイパーバイザ型
ハイパーバイザが仮想化機能を持つ
ハイパーバイザの上にOSが乗る
OS型
OSが仮想化機能を持つ。
ホストOSの上にゲストOSが乗る
ユーザーランド型
ユーザーランドのアプリケーションが仮想化機能を持つ。
OS上で動く仮想化アプリケーションの上でゲストOSが乗る。
仮想化技術に関わる歴史
chroot
ルートディレクトリの場所をずらすだけ。
ファイルシステムの分離だけができる。
2000年 FreeBSD jail
ファイルシステム、プロセス、ネットワークを分離することができるOS仮想化
Linux-Vserver
cgroups
2006年 Process containers として登場
LXC
Docker
Kubernetes
Docker Swarm
参考