10年前は考えられませんでしたが、今や仮想化技術について取り沙汰されない日はないといってもいい状態です。そのわりには、仮想化技術やその実装を扱ったコアな書籍はあまり増えないなぁ…と思っていたところに出てきた書籍『KVM徹底入門』(翔泳社)を紹介いたします。

著者のひとりである平氏は、KVMが出始めたころから日本におけるKVM紹介を実施するなど、早期からKVMの実装を追いかけているひとりであるとともに、仮想化技術に関する情報共有を行うコミュニティである「仮想化友の会」の中心人物でもあります。共著者の森若氏、まえだこうへい氏の両氏も、KVMに関するオンライン記事を執筆されている有識者です。 そんな面々が手がけたKVM本、いったいどんなテイストなのでしょうか?

仮想化のスペシャリストたちが手がけた『KVM徹底入門』

FedoraとUbuntuをベースに解説

本書では、KVMの稼動プラットフォームとしてFedora 12とUbuntu 10.04をベースにして解説しています。

個人的には、本書で書かれている範囲でとりあえず試してみたい向きにはFedoraかUbuntuを、安定した稼動環境を作ろうというのであればUbuntuをというのがよいでしょう(Fedoraは賞味期限が短いので、長く使うには不安がある)。特にUbuntuは、10.04 LTS上での環境構築方法を示しているので、本書のリリースから少し時間が経過しても「入手できない」「使えない」ということはないでしょう。

とりあえず使えるようになるために

2章および3章は、とりあえずKVM環境のインストールからKVMを使って仮想マシンを作れるようになる、というポイントを中心に書かれています。

本書の価値をまず1点挙げるならば、確実に仮想マシンを作成できるようになるというところでしょう。KVMについては、手順やコマンドについて無愛想に見える点が散見されます。たとえば仮想マシンの作成→起動は

  • qemu-imgというコマンドでファイルシステムイメージを作成し
  • kvmコマンドで起動する(この際に、CD-ROMをはじめとする各種利用デバイスの指定もコマンドラインで行う)

という手順を踏みますが、なかなかこのインタフェースが「無愛想」というのが筆者の抱いた第一印象でした。設定ファイルを1つ書いておけば、起動時にラクできるというものではなく、毎回毎回コマンドラインでパラメータを設定するという、ある意味苦行とも言えるものです(もちろん、それをシェルスクリプトなどで書いておけばいいんですが)。本書では、どのようなコマンドをどう使っていくという、仮想マシン作成完了に至るまでの道筋をきちんと書き表して、どういう結果になる、というところまで示されています。 まずここまでを読み下し、手を動かすことで、最低限KVMを用いた仮想マシンの作成→起動はできるようになりました。

次は仮想マシンの管理をどうするか?というところに入ります。

使えるようになったら、次は管理!

KVMを使った仮想マシンの作成ができるようになったら、それをどのように管理するのか?ということも知らなくてはなりません。管理といってもレベルがいくつかありますが、

  • 電源on/off
  • サスペンド/サスペンド解除
  • ネットワーク接続

というところまでは、4章を読めばおおよそ把握は可能です。

電源on/offは、普通にコンピュータでは電源ボタンを押したりという操作になりますが、KVMの場合はまた少し違います。制御プログラムを使ったり、KVM上で動作しているOSをシャットダウンしたりという方法になりますが、KVMがしくみとして提供しているのは、KVMが提供する「仮想マシン上で動作するOSから制御できる」電源管理機能および、KVMの制御プログラムを用いる方法となります。

実用的に使えるためにはここまでかな? - ストレージ管理とマイグレーション

仮想マシンをお手軽に作って止めて、ということをできるようになると、次は実用的にどう扱うのか?という話が出てくることと思います。ここで

  • もう少し複雑な制御(ストレージ管理やマイグレーション)

というファクターが出てきます。また、ネットワーク管理という、近代OSを使う際には必ずついてくる作業も必要になります。

このあたりの話に触れているのが5章および6章ですが、ここまで読み進めることができれば、仮想マシンのマイグレーションやストレージ構成といった、複雑な機能を用いることができるようになります。

また、仮想マシンの作成や運用について、3 - 6章までを割いて書かれていますが、ここまで読み進んで気がついたことがあるかと思います。操作について、可能な限り「GUIによるオペレーション」と「CUIによるオペレーション」の両方を併記してあります。仕事で管理するときはもちろん、個人で使う場合にも、いざというときのためにコマンドラインを用いて管理する方法は覚えておいて損はないでしょう。余談ですが、筆者が実際の運用で使っている仮想マシン環境は、基本的にはコマンドラインで管理しています。

自前で管理ツールを創りたい! - libvirtの説明は7章で

既存のツールを用いた基本的な管理は、6章までで充分説明されていますが、それ以外にも「自分で必要とする管理操作だけを行うようなものがほしい」という要求もあるかと思います。そういう場合には、libvirtが用意するAPIを使って作るという手がありますが、本書は6章で、仮想マシン(モニタ)の管理APIを提供するライブラリであるlibvirtおよび、libvirtのリファレンス実装であるvirshの解説を行っています。

6章までにもvirshの説明はされていますが、この章はまるごとlibvirt + virshという感じで構成されており、何か作りたい人の手掛かりになるような内容が(簡単ではありますが)含まれています。

かゆいところに手が届くqemuの説明やセルフビルドの方法、そしてvirshリファレンス

virshのコマンドリファレンス付き

6章くらいまで読み進めれば、おおよそKVMの使い方がわかるようになりますが、さらにあれこれ試したり、細かいところを見てみたいとなると、KVMのフロントエンドとして使われるQEMUの説明が必要になってきます。ところがこれが意外とみあたりません。Webを探すとあれこれ出てきますが、まとまった形で読めるものは?と言われると、これまた意外なほどになかったりします。virshのリファレンスも同様で、気軽に読めるものはやっぱり少なかったりします。

そういう意味で本書は、ある程度使えるようになった人でも手元において役に立つ内容に仕上がっています。

成り立ちの経緯や歴史は1章で、KVMのリソース管理のしくみは5章で

本書では、KVMの成り立ちについて1章を、KVMで実現されているCPUやメモリ、ストレージのリソース管理をはじめとするしくみについて5章で説明しています。使うだけではなく「どういう成り立ちなのか」「中身はどういうしくみなのか」というあたりをきちんと知りたいのであれば、このあたりの章は役に立つでしょう。

要望 - できればRHELに関する記述がほしかった

Debian GNU/Linuxについてはしょうがないとして、実運用でよく使われているRHELに関する記述がないのは少し気になります。

RHELは、サブスクリプションを購入しないと使えないものなので、RHEL上でのKVM利用は、サブスクリプション購入によって提供される情報をもとに使う、という性質のものなのかもしれません。しかし、RHELとの互換があるCentOSなどでKVMを使う場合のことを考えると、RHELで使うための情報を提供しておくことは、一定の意味があると考えます。ここはやはり、RHELでの話についても触れてほしかったところです。

まとめ - 使えるようになるところから、次の一歩を踏み出す助けになる良書

少しばかり苦言も呈しましたが、基本的には本書が1冊あれば、とりあえず使えるKVM環境を作り、管理できるようにはなる、というのが全体的な感想です。

KVMを動作させることができるコンピュータ環境も、だいぶ安く入手できるようになってます。もしKVMに興味が出てきたのであれば、そういったコンピュータと本書、そしてすこしばかりの時間を費やして、ちょっとばかりできることを増やしてみる、というのもよいかと思います。

Happy-V!

KVM徹底入門

まえだこうへい / 鶴野龍一郎 / 森若和雄 / 平初 著
翔泳社 発行
2010年7月7日 発売
B5変形版/336ページ
価格 3,444円(税込)
ISBN 978-4-7981-2140-6
出版社から: KVMは、Kernel Virtual Machineの略で、新しい形態の仮想化基盤を提供するオープンソース・ソフトウェアです。KVMを利用することで、1つのコンピュータで複数のOSを動作させられます。本書では、KVMの導入とその利用方法について解説するほか、KVMと深いかかわりを持つエミュレータQEMUについても解説します。オープンソースを利用した新しい仮想化基盤を知るために必見の1冊です。