【かそうましん】

仮想マシン(VM) とは?

最終更新:
💡 仮想のハードウェアで、OSを動かす

仮想的なCPU・メモリ・ディスクなどを使ってOSを動かすコンピューター環境。ハイパーバイザー、コンテナとの違い、共有資源やクラウドの例を解説します。

📌 このページのポイント
仮想マシン:OSごとの実行環境一つの物理ホストの構成例VM AアプリゲストOS A仮想CPU・メモリ仮想ディスクVM BアプリゲストOS B仮想CPU・メモリ仮想ディスクハイパーバイザー:資源を管理物理CPU・メモリ・ストレージVMごとにOS。物理資源は共有し得るホストの障害は複数VMへ影響し得る
枠は構成を表します。別々のゲストOSと、共有する物理資源を見比べる図です。ホストOSなどを省略しており、特定の製品の実装そのものではありません。
ひよこ ひよこ
仮想マシンは、PCの画面を増やすこと?
ペンギン先生 ペンギン先生
画面ではなく、コンピューターとして使える実行環境を作るんだ。仮想CPUやメモリ、ディスクなどをOSに見せて、その上でアプリを動かす。複数のVMに、それぞれゲストOSを用意できるよ。
ひよこ ひよこ
物理的な部品はどこにある?
ペンギン先生 ペンギン先生
実際のCPUやメモリなどはホスト側にあるよ。ハイパーバイザーがアクセスを管理する。仮想ディスクもファイルやストレージの領域などで実現でき、VM一台ごとに物理ディスクが必要なわけではない。
ひよこ ひよこ
VMを分ければ、互いに絶対影響しない?
ペンギン先生 ペンギン先生
分離を提供するけれど、CPUやストレージの競合、ホストの障害は共有し得るよ。設定やソフトウェアの脆弱性への対処も必要だ。物理サーバーを共有することと、完全に別の故障領域に置くことは違うんだ。
ひよこ ひよこ
コンテナも同じ仕組み?
ペンギン先生 ペンギン先生
通常のコンテナは、実行環境のOSカーネルを共有してプロセスなどを分離するよ。VMはゲストOSのカーネルを持つ。コンテナをVMの中で動かす構成もあり、どちらか一方だけを選ぶとは限らない。
ひよこ ひよこ
クラウドのサーバーは全部VM?
ペンギン先生 ペンギン先生
多くの計算サービスでVMを使えるけれど、サービス名だけで決めつけないようにしよう。EC2には仮想化されたインスタンスと、ハイパーバイザーを介さないベアメタルの選択肢もある。起動時間や性能もOS・構成・負荷によるよ。
もっと詳しく知りたい人へ

ホストと違うOSなら何でも動く?

ハイパーバイザー、CPUのアーキテクチャ、デバイス、OSのサポート条件を確認します。WindowsやLinuxなどをゲストにできる製品でも、すべての版や構成が対応するわけではありません。

VMを二つ作れば可用性も二倍?

同じホストやストレージに置けば、一つの障害で両方止まる場合があります。冗長化の目的に合わせて、ホストや保存先などの故障領域、バックアップ、復旧手順を設計します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「仮想マシン」って出てきたら「仮想的なハードウェアを使ってOSを動かす環境」と思えばだいたいOK!
📖 おまけ:英語の意味
「Virtual Machine」 = 仮想の機械
💬 ここでは、ゲストOSを動かすシステム仮想マシンを扱います。JavaのJVMのようにプログラムの実行環境を指す「仮想マシン」とは、役割を分けて考えます。

参考資料

← 用語集にもどる