この記事を読むのに必要な時間:およそ 2 分
KVMとは
KVMはLinuxカーネルに組み込まれている仮想化機能(ハイパーバイザ)です。1台のサーバ上で複数のOSを同時に動作させるために必要な制御を行う「仮想マシンモニタ(VMM:Virtual Machine Monitor)」の仕組みを提供します。
KVM機能はLinuxカーネル2.6.20でカーネルソースに取り込まれ,Linuxカーネルの一部として開発されています。
40年以上前に登場したメインフレーム(現System z)の仮想化技術と比べた場合はもちろん,VMware社の仮想化ソフトウェアと比べてもKVMはまだまだ若い仮想化技術ですが,注目を集めるのには理由があります。
KVMは2006年にQumranet社のアビ・キビティ氏が個人で開発を始めました。Intel-VTやAMD-Vなどのx86プロセッサの仮想化支援機能の活用やLinuxカーネルにアドオンで仮想化機能を実装するといった特徴から,Linuxカーネルの開発コミュニティやプロセッサ・メーカのエンジニアからも注目を集めていました。その結果,2006年の年末には,LinuxカーネルのソースコードにKVMが取り込まれ,カーネル開発コミュニティのメンバやプロセッサ・メーカのエンジニアもKVMの開発に積極的に参加するようになりました。
このように,Linuxカーネルに統合され,ハードウェアの仮想化機能とも密接に連携するKVMは,Linux標準の仮想化技術と言えます。
KVMの特徴
KVMには以下の特徴があります。
- Linuxカーネルにカーネル・モジュールとして仮想化機能を追加します。
- Linuxカーネル上にKVM関連のモジュールをロードすることにより仮想化機能を提供しているため,Linuxカーネルの優れたプロセス管理,I/O管理の機能がそのまま有効活用できます。
また,デバイスドライバはLinuxカーネルに含まれているものをそのまま使用するため,KVM対応の特別なデバイスドライバは必要なく,デバイスの選択肢も広くなります。
- CPUの仮想化支援機構を利用した完全仮想化を実現します。
-
KVMによる仮想化機能は米Intel社Intel VTや米AMD社AMD-Vなどの仮想化支援機構を利用して,既存のOSを無修正でゲストOSとして実行する完全仮想化を提供します。ゲストOSの修正は必要ないため,LinuxだけでなくWindows,BSD,IA Solarisの稼動も可能であり,ゲストOSの選択肢が広がります(ただし,Linuxディストリビューションにより,稼動サポートをするゲストOSを制限している場合があります)。
- 複数のプラットフォーム向けのコードを提供しています。
- x86以外にも他のプラットフォーム向けコードも開発され,OSSとして公開されています。異なるプラットフォームでも,同一の操作によりKVM環境を管理することができます(ただし,Linuディストリビューションにより,稼動プラットフォームを制限している場合があります。Red Hat Enterprise LinuxやSUSE Linux Enterprise Server等の商用ディストリビューションでは,x86版のみがサポートとなっています)。
-
KVMのアーキテクチャ
図1がKVMのアーキテクチャです。
KVMの仮想化機能はカーネル・モジュールとしてLinuxカーネルに組み込むため,まずLinuxを今まで通りに物理サーバにインストールします。
ホストLinuxは,KVMモジュールが組み込まれていることを除けば,普通のLinuxと同じですので,従来のLinux用のアプリケーションをそのまま実行することも可能です。
ホストLinuxの上で,仮想マシンを起動すると,ホストLinuxの1つのプロセスとして仮想マシンが起動します。
仮想マシンはホストLinux上の1つのプロセスの中に閉じ込められていますので,ホストLinuxカーネルの許可がない限り,他のプロセス,すなわち,他の仮想マシンの実行状況やメモリ空間を見ることはできません。Linuxカーネルが持つセキュリティ機能がそのまま仮想マシンの独立性の確保に活用されています。
また,ホストLinuxからはすべての仮想マシンのメモリ空間を見ることができますので,複数の仮想マシンのメモリに同一のデータが書き込まれていることを発見すると,同じデータを複数記録するのは物理メモリの無駄遣いだと言うことで,物理メモリ上のデータを1つにまとめて,同じ物理メモリ領域を複数の仮想マシンに同時に見せることで,物理メモリの有効利用を図ります。
図1 KVMアーキテクチャ
![図1 KVMアーキテクチャ 図1 KVMアーキテクチャ]()
IBMの開発への参加状況
IBMでは,Linuxカーネルをはじめ多くのオープンソースコミュニティで開発をリードしている Linux Technology Centerのエンジニアを中心にKVM開発に貢献しています。KVM開発では,メインフレームの仮想化機能以降,40年以上の仮想化ハイパーバイザ開発の経験を活用し,KVMをエンタープライズ・システムへ適用を実現するための拡張性・信頼性・操作性の向上を進めています。
図2はKVMの開発コードへの貢献状況をまとめたものです。KVMの開発にはLinuxディストリビュータやプロセッサ・メーカが参加していますが,開発コードの半数がRedHat社,Intel社およびIBMで書かれており,IBMがKVM開発に積極的に貢献していることがご理解いただけます。
図2 KVM開発への貢献状況
![図2 KVM開発への貢献状況 図2 KVM開発への貢献状況]()
IBMのKVM情報サイト
IBMでは,KVMの活用を進める取り組みの1つとして,実機検証を主体とした検証を進めており,検証情報を専用情報サイトを通じて公開しております。KVM内部構造に関する情報や,KVMシステム導入ガイド,構成ガイドやKVM操作に関する情報など,さまざまな技術情報を提供しておりますので,KVM活用の第一歩として,KVMに関する情報収集,システム構築時のヒントとしてご活用ください。
http://www.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-0024AC5E
または「KVM IBM」で検索ください。
IBM,IBMロゴ,ibm.com,System zは,世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は,それぞれIBMまたは各社の商標である場合があります。現時点でのIBMの商標リストについては, www.ibm.com/legal/copytrade.shtml をご覧ください。
他の会社名,製品名およびサービス名等はそれぞれ各社の商標です。
この記事に掲載されている情報は,2011年4月15日現在のものです。事前の予告なしに変更する場合があります。