エンジニアなら知っておきたい仮想マシンのしくみ

第2回 Linux KVMで知る仮想マシンの概要

この記事を読むのに必要な時間:およそ 3 分

QEMUとは

Linux KVMで使われるqemu-kvmは,Linux KVMが開発される前から存在するPCエミュレータのひとつであるQEMUがベースとなっています。QEMUはオープンソースで開発されている仮想マシンソフトウェアであり,x86システムをはじめ,いろいろな種類のシステムの仮想マシンとして利用できます。

QEMUには,x86システムを構成するために必要となる周辺ハードウェアのほか,x86プロセッサ自体がソフトウェア的に実装されておりカーネルレベルのデバッグなどにも利用しやすいことから,OSの開発環境としても利用されることも多いようです。

QEMUとkqemu,KVMの違い

QEMUは原則としてCPUをソフトウェア的に実装した仮想マシンソフトウェアですが,CPUの処理を全てソフトウェア的に再現すると,性能が劇的に低下してしまいます。これは,本来なら実際のCPU上では1つの命令として実行できるはずのものが,ソフトウェアCPUを使うと何十もの命令に置き換えられて実行されることになるためです。

この問題を回避するため,ただのソフトウェアCPUではなく,実CPUに仮想マシン上のプログラムを直接実行させることで,仮想マシンの実行速度を向上させる改善が行われてきました。

kqemuによる高速化

kqemuは,QEMUのソフトウェアCPU機能を高速化するもので,KVMと同様カーネルモジュールとして実装されたものです。QEMUのソフトウェアCPUを使う代わりにkqemuカーネルモジュールを用いることで,実CPUで仮想マシン上のプログラムを直接実行できるようになります。

kqemuはIntel VTやAMD-Vが無くても,ある程度高速に仮想マシンを実行できるものですが,x86プロセッサの命令セットの都合上,ソフトウェアだけで仮想マシンを実現することは非常に難しく,結果kqemuは複雑なプログラムとなっています。

Linux KVMによるハードウェア機能の活用

その後,Intel VTやAMD-Vなどの仮想化支援機能がプロセッサに搭載されるようになりました。これらの仮想化支援機能を利用すると,kqemuがソフトウェア的に行っていた複雑な処理がハードウェアレベルで行えるようになりました。このため,これら仮想化支援機能を活用したKVMカーネルモジュール,および対となるqemu-kvmが開発されました。

図3 QEMUの高速化の歴史

図3 QEMUの高速化の歴史

Linux KVMの登場,そしてその後の度重なる改良の結果,性能・開発コスト面でメリットが少なくなったkqemuの開発は中断されました。このため,最新のQEMUでサポートされるのは,QEMUのソフトウェアCPUによる実行,およびLinux KVMによる実行のどちらかとなっています。

QEMU由来の仮想マシンソフトウェア

QEMUの成果を活用したオープンソースの仮想マシンソフトウェアは,Linux KVM以外にも複数存在します。Xenでも同様に仮想マシンのハードウェアエミュレータとしてqemu-dmと呼ばれるプログラムが含まれており,仮想マシンを完全仮想化で実行するために用いられています。そのほか,Sun Microsystems(現Oracle)が提供する仮想マシンソフトウェアであるVirtualBoxにも,いくつかQEMUに由来するハードウェアエミュレータが含まれています。

Linux女子部主催 第一回勉強会「 Xen/KVM勉強会」with 仮想化友の会 のご案内

2011年2月26日,Linux女子部,および仮想化友の会による共催で「Xen/KVM勉強会」が開催されます。第一部は本連載の著者である長谷川 猛がXenについて解説する予定のほか,第二部ではレッドハット⁠株⁠のソリューションアーキテクトである平 初氏がKVMの最新Tipsを披露する予定です。

大好評につき,会場参加のエントリーはすでに満員御礼となっていますが,当日はUstreamによる勉強会のストリーミング放送も予定されています。興味をお持ちの方は,詳細について下記URLをご覧ください。

Linux女子部主催 第一回勉強会「Xen/KVM 勉強会」with 仮想化友の会
URL:http://sites.google.com/site/linuxjoshi/home/study/001-xen-kvm

次回は

今回はLinux KVMの概要について簡単に解説しました。
しかし,まだ「Linux KVMを未体験でイメージが沸かない」といった方もいらっしゃると思いますので,次回はLinux KVMの導入例を簡単に紹介したいと思います。お楽しみに。

著者プロフィール

長谷川猛(はせがわたけし)

(株)SRAで7年間のシステム構築&提案を経験したのち,Fusion-ioのセールスエンジニアを経て,フリーランスエンジニアとして活動中。『LDAP Super Expert』(技術評論社)に寄稿したほか,『Xen 徹底入門』(翔泳社)および『萌え萌えうにっくす!UNIX ネットワーク管理ガイド』(毎日コミュニケーションズ)の共著者のひとりである。

スノーボード,ごまラーメン,飼い犬のミニチュアシュナウザー「ラピス君」が大好き。