【ケーブイエム】

KVM とは?

最終更新:
💡 Linuxの上に、OSごとの仮想マシンを作る

Linuxカーネルの仮想化機能。CPUの仮想化支援を利用し、複数のゲストOSを持つ仮想マシンを動かす。QEMUなどのユーザー側のプログラムと組み合わせ、CPU・メモリ・デバイスを扱う環境を構成する。

📌 このページのポイント
KVM — OSごとに仮想マシン仮想マシン A仮想マシン BゲストOSゲストOS自身のカーネル自身のカーネルQEMUなど:仮想デバイスを用意Linuxカーネル + KVMCPUなどのハードウェア
QEMUとKVMを組み合わせた構成例。線は構成のつながりを示し、処理の順番ではない。
ひよこ ひよこ
KVMって、何をするもの?
ペンギン先生 ペンギン先生
Linuxカーネルの仮想化機能だよ。1台の物理マシンで、複数の仮想マシンを動かせる。各VMにはゲストOSがあり、LinuxやWindowsなどが使えるんだ。物理マシンのCPUやメモリなどの資源を、仮想マシンへ割り当てて利用するよ。
ひよこ ひよこ
Linuxなら、どんなパソコンでも使える?
ペンギン先生 ペンギン先生
CPUや設定などの対応が必要だよ。たとえばx86ではIntel VTやAMD-Vなどの仮想化支援機能を使う。Linuxカーネル側の対応や機能が有効かも確認するんだ。単にLinuxが起動することと、KVMで仮想化できることは同じではないよ。
ひよこ ひよこ
QEMUと、どういう関係なの?
ペンギン先生 ペンギン先生
KVMはカーネル側の仮想化を担い、QEMUはVMのCPU、メモリ、デバイスを含む環境を扱うプログラムだよ。QEMUからKVMを利用すると、ハードウェアの仮想化支援を使ってゲストを実行できる。QEMUはKVMなしでCPUをエミュレートする方法もあり、KVMを使うプログラムもQEMUだけとは限らないんだ。
ひよこ ひよこ
コンテナと、同じものなの?
ペンギン先生 ペンギン先生
VMはゲストOSごとにカーネルを持つけれど、コンテナは実行先のカーネルを共有するよ。別のOS環境を動かしたいか、アプリを分けて配布・実行したいかなどで考える。VMの中でコンテナを動かす構成もあるので、どちらか一方しか選べないわけではないんだ。
ひよこ ひよこ
KVMを使うと、必ず速く安全になる?
ペンギン先生 ペンギン先生
それだけでは決まらないよ。速度はCPU、割り当てた資源、仮想デバイス、処理の内容などによる。VMによる分離は役立つけれど、設定や更新、管理権限の扱いも大切なんだ。ほかの仮想化製品より常に高速、完全に安全、と決めつけずに用途と構成を確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「KVM」って出てきたら「Linuxカーネルを使って仮想マシンを動かす仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Kernel-based Virtual Machine」 = カーネルベースの仮想マシン
💬 kernelはOSの中心にある仕組み。KVMはLinuxカーネルの機能を使い、仮想マシンを動かすんだよ。

参考資料

← 用語集にもどる