• このエントリーをはてなブックマークに追加

【仮想化】KVMとqemuとlibvirtの違い・関係

  • このエントリーをはてなブックマークに追加

virtual
zaco muraです。

最近OpenStackのことを説明する資料を作っていたのですが、その中でKVMとかqemuとかlibvirtの関係ってちゃんと理解できてないなと気付きました。今回いい機会なので調べて整理してみました。

元々の認識

qemuもkvmもlibvirtも仮想化のために使われているソフトウェアという認識でした。なんとなくの違いとしては、

・KVM : ハイパーバイザー。仮想的なハードウェアを提供するもの
・qemu : なんかよくわからんけどKVMと連携するもの
・libvirt : 仮想マシンを管理するコマンド

こんな認識でした。

スポンサーリンク
Sponsords Link

改めて調べてみた

いろいろとgoogle先生に聞いてみたところ、ちょっとわかってきた気がしました。自分の理解を書いてみます。

KVMとは

kvm
Kernel-based Virtual Machineの略で、その名の通りlinuxカーネルが提供する仮想化機能。
KVM単体では動作しないが、qemuと組み合わせることで高速に完全仮想化を実現できるため、現在では多く使われている。
KVMを使うことでlinux自体をハイパーバイザとすることができる(linuxカーネルに組み込まれているため?)

qemuとは

qemu
古くから使われている仮想化ソフトウェア。qemu単体でも仮想環境は構築できるが、ホストOS型(vmware playerみたいなやつ)のため動作が遅く、単体ではあまり使われていない。
KVMと組み合わせる場合、主にメモリと仮想I/Oデバイス(キーボードとかディスプレイ)を仮想マシンに提供する役割を持つ。(KVMはCPUを提供)

libvirtとは

libvirt
仮想マシンを管理するライブラリ群。KVMだけでなく、xenなども対応している。KVMで仮想マシンを管理する場合に使うvirt-managerや仮想マシンにコンソール接続するvirshなどがlibvirtを使っているとのこと。

まとめ

つまり、整理すると

・仮想化を高速に使うために、KVMとqemuを組み合わせて使っている。
・役割としては、KVMが仮想CPUを、qemuがメモリと仮想I/Oデバイスを提供する。
・それらの仮想マシンを管理するためにlibvirtを使っている。

ということのようです。

以上、仮想化関連のソフトウェアについて調べてまとめてみました。qemuとKVMの関係はなんとなくわかった気がしましたがあんまり自信ないな。。間違っている箇所などあれば指摘頂けると幸いです。

参考

http://gihyo.jp/dev/serial/01/vm_work/0002
http://hp.vector.co.jp/authors/VA022911/tec/suse/kvm_virtmanager.htm
http://www.atmarkit.co.jp/ait/articles/0903/12/news120.html
http://www.atmarkit.co.jp/ait/articles/1011/04/news121.html

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link