コンテンツにスキップ

仮想化

仮想化は、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                  |
+---------------------------+

出典:

コンテナとの違い

  • VM はゲスト OS まで含むので分離が強いが重い
  • コンテナはホストカーネル共有なので軽いが、分離の前提が違う
  • OS ごと分けたいなら VM、アプリ単位で軽く回したいならコンテナ、という見方がわかりやすい

周辺キーワード

  • KVM
  • Xen
  • Hyper-V
  • VMware ESXi
  • Vagrant
  • VirtualBox

メモ

  • ネットワーク仮想化、ストレージ仮想化まで含めると話が広いので、まずは VM の理解からで十分
  • 学習初期は「物理マシン -> Hypervisor -> VM」の層で捉えると整理しやすい
  • コンテナが普及しても、基盤として VM が消えるわけではない