仮想化¶
仮想化は、1 台の物理マシンの上で複数の OS やサーバーを論理的に分けて動かす考え方。
クラウドやオンプレを問わず、基盤技術としてかなり重要。
まず押さえたいこと¶
- 物理リソースを論理的に分割して使う技術
- 1 台の物理サーバー上で複数の仮想マシンを動かせる
- サーバー利用率を上げやすく、分離された環境を作りやすい
- クラウドの IaaS もこの考え方の延長にある
ざっくり何をしているか¶
- CPU、メモリ、ディスク、ネットワークを論理的に分割する
- 1 台の物理サーバー上で複数の仮想マシンを動かす
- 物理環境の利用効率を上げる
- テスト環境や分離環境を作りやすくする
よく出る用語¶
Hypervisor: 仮想マシンを動かすための基盤VM: 仮想マシン。ゲスト OS を含むHost OS: 仮想化基盤を載せる側Guest OS: VM の中で動く OS
どういう場面で使うか¶
- サーバーを OS ごと分離したいとき
- 既存システムを VM 単位で移行・運用したいとき
- 検証環境を複数台まとめて作りたいとき
- クラウド上で汎用的な仮想サーバーを使いたいとき
ハイパーバイザーのざっくり分類¶
- Type 1: 物理マシン上で直接動く。サーバー用途でよく使う
- Type 2: ホスト OS の上でアプリとして動く。検証や学習向けで触ることが多い
ざっくり構造図¶
以下は Microsoft Learn と VMware の説明をもとにした簡易図。
[Type 1 Hypervisor]
+---------------------------+
| VM 1: Guest OS + App |
+---------------------------+
| VM 2: Guest OS + App |
+---------------------------+
| Hypervisor |
+---------------------------+
| Hardware |
+---------------------------+
[Type 2 Hypervisor]
+---------------------------+
| VM 1: Guest OS + App |
+---------------------------+
| VM 2: Guest OS + App |
+---------------------------+
| Hypervisor App |
+---------------------------+
| Host OS |
+---------------------------+
| Hardware |
+---------------------------+
出典:
- Microsoft Learn, Hyper-V Architecture https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/architecture
- VMware, What is a Hypervisor? https://www.vmware.com/topics/hypervisor
コンテナとの違い¶
- VM はゲスト OS まで含むので分離が強いが重い
- コンテナはホストカーネル共有なので軽いが、分離の前提が違う
- OS ごと分けたいなら VM、アプリ単位で軽く回したいならコンテナ、という見方がわかりやすい
周辺キーワード¶
- KVM
- Xen
- Hyper-V
- VMware ESXi
- Vagrant
- VirtualBox
メモ¶
- ネットワーク仮想化、ストレージ仮想化まで含めると話が広いので、まずは VM の理解からで十分
- 学習初期は「物理マシン -> Hypervisor -> VM」の層で捉えると整理しやすい
- コンテナが普及しても、基盤として VM が消えるわけではない