2010/03/08今回は仮想化ソフトウェアのひとつ、KVMのインストール手順をご紹介します。仮想化ソフトウェアといえば、世の中ではXenやVMwareが有名で、これらを利用したサービスも数多くあります。さくらインターネット社内でもXenServerを使った実験プロジェクトがいくつかあるのですが、KVMの方は少なく、ノウハウの共有が進んでいません。それならば、ということで研究所では現在KVMの動作の確認とパフォーマンス試験に取り組んでいます。PCを分けることを想定しています。1台のマシンしか都合できないという方は、それぞれの環境に合わせて工夫していただければと思います。KVMの構成KVMを用いた仮想化は、実際にはqemuというエミュレータと高速な仮想化環境をサポートするカーネルモジュールKVMの2つから成っています。KVMは最新のLinuxカーネルに組み込まれているので特に準備は必要ありません。VMのコントロールはもっぱらqemuの機能を利用することになります。ホストOSを準備するまず最初にホストOSを用意します。専用のホストをゼロから用意できるのでしたら、お勧めなのはFedora12の64bit版です。社内で聞き取り調査をしたところ、Ubuntuが素直でいい感じですよという意見があったのですが、私(鷲北)がUbuntuの癖をまったく理解していないため、Fedoraをチョイスしています。このほかサーバマシンについては;VTに対応したサーバを用意しましょうコア数は多いほどよいですが、性能を求めなければ1コアでも動きますメモリはVM同士で取り合いになるので多めに用意しましょうHDDはそれほど大きくなくても大丈夫です。使う分だけ用意しましょうなどのポイントを押さえておくべきと思います。ホストOSのインストールが終わったら、最初にKVMモジュールをロードします。前述したとおり、LinuxはすでにKVMモジュールが組み込まれているので、ロードするだけでOKです。kvm_intelもしもAMDのCPUをお使いなら、「kvm_amd」をロードしてください。kvm_intelで判断できます。KVM(qemu)をインストールするKVM(qemu)のインストールはパッケージを使ってもいいのですが、最新版をmakeした方がオプションをきちんとコントロールできるのでお勧めです。私が試した限りでは、yum等を使って引っ張ってくると微妙に古いバージョンだったり、コンパイル時オプションがoffだったりします。いうわけでコンパイルする手順をご紹介します。KVMのソースコードは本家サイトからリンクをたどっていくと入手できます。qemu-kvm-0.12.2.tar.gzのような名前のうち、一番新しいものを選べばOKです。kvm-kmod-2.6.33.tar.bz2のようなカーネルモジュールのパックもありますが、Fedora12付属のモジュールで十分動きますので不要と思います。KVMのコンパイルにはいくつかパッケージが必要です。assigningを有効にするために必要)これらはyumでインストールすればよいでしょう。本家ガイドによるとSDL-devel(グラフィック端末に必要)やgnutls-devel(VNCでTLSを利用するために必要)が示されていますが、とりあえずなくても動きます。当方で遭遇した問題なのですが、pciutils-develが3.1.6にアップデートされたとき、3.1.4では問題がなかったpciutls-develパッケージが、pciutils-libsを明示的に指定してやらないとリンクが壊れてライブラリが読めなくなります。念のためこのガイドには両方を指定しています。環境が整ったら、ソースコードを展開してconfigureを実行します。オプションは色々ありますが、動かすだけなら特別なオプションはいりません。configureは環境をチェックしてオプションの有無を表示するので、必要なオプションが有効化されているかを確認します。installして完了です。ゲストOSを準備する続いてゲストOSを起動するための準備をします。ゲストOSのファイルシステムのために、ホストOS上にimgファイルを作ります。このファイルがゲストOSのHDDとしてアタッチされますからっぽのHDDをフォーマットしてインストールするために、ゲストOSのインストールイメージが必要です。インストールしたいゲストOSのインストール用ISOイメージを入手しますファイルの準備ゲストOSのためのファイルは、qemu-imgというツールを使います。ゲストOSをvm00と命名し、そのイメージファイルとして「vm00.img」という名前のファイルを作成する場合、以下のようになります。10Gqcow2とはKVMで推奨されているファイルフォーマットの名前です。試すためにはこの指定で十分ですが、10GBを超える大きなファイル(たとえば100GB)を指定するとパフォーマンスに多大な影響が出ます。詳細は別の機会に説明したいと思いますが、とりあえず試すなら10GBもあれば十分です。ゲストOSのインストールISOイメージなんでもお好きなものをご用意いただければよいのですが、今回はFreeBSDにします。ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.0/をご覧いただき、8.0-RELEASE-i386-dvd1.iso.gzをダウンロードして、gunzipしてisoファイルに展開しておきます。VNCビューアを用意するゲストOSを起動した直後には、ゲストOSへのアクセス手段を特別に用意しなければいけません。KVMはSDLとVNCの2つの手段を用意しています。PCがあることを前提にして、Windowsから簡単にアクセスできるVNCをご紹介しておきます。VNCクライアントには色々あるので、お好みのものを使ってください。onlyのzipをダウンロードして使っています。ゲストOSをインストールするいよいよゲストOSの起動です。これから何度も起動することになると思うので、スクリプトにしておくのがお勧めです。dqemu-system-x86_64がVMを生成してゲストOSを実行するエミュレータです。今回、ゲストOSでのネットワーク設定には触れていません。別の機会にご紹介します。オプションの意味は以下の通りです。1024ゲストOSのメモリサイズを指定します。telnet::4444,server,nowaitqemuモニタへのアクセス手段を指定します。上記のようにするとホストOSのポート4444番にtelnetすることでモニタに接続できます。複数のゲストOSを立ち上げる場合、ポート番号を変更して区別できます。:0VNCの接続番号を指定します。複数のゲストOSを立ち上げる場合、この数字を指定して特定のゲストOSに繋ぎます-daemonizeプロセスをデーモン化します。dCD-ROMからブートしますコマンドを実行するとすぐにプロンプトに返ってくると思いますが、ゲストOSは起動しています。VNCviewerを使ってアクセスしてみましょう。ホストOSのIPアドレスを指定すると、起動しているゲストOSへ接続できます。Viewerの内側は完全にゲストOSの環境なので、キー操作で自由にコントロールできます。インストーラの指示に従ってOSインストールを行います。インストールが終わったらインストールが終るとリブートの指示になりますが、KVMはCD-ROMブートに固定されてしまっているので、リブートしてもうまく起動できません。インストーラからゲストOSを終了できないときは、ホストOS上で動くqemuモニタから強制終了することができます。ホストOSのコマンドラインから、telnetを使ってモニタに接続します。起動時に-monitorオプションで指定したポート番号にアクセスするとモニタが起動します。host.ゲストOSがシャットダウンすると、VNCの接続も自動的に切れます。イメージファイルにはゲストOSのインストールが終わったので、CD-ROMを外してゲストOSを起動します。先ほどのスクリプトを変更して、-cdrom以降の部分を削除します。Viewerでアクセスすると、今度は起動したFreeBSDのloginプロンプトが見えるはずです。おわりにいかがでしたでしょうか。最後にゲストOS自体が切れて完全に終了します。するとhaltしてしまうので、qemuモニタから切らなければならなくなります。今後はゲストOSへのネットワークの導入、qemuモニタの使い方、LiveMigrationの方法、ベンチマーク比較などをご紹介する予定です。16:38参考になりました。ありがとうございました。02:52qemu-imgコマンドの引数にcreateが足りないですね。2ヶ月も放置してしまいました。謹んで訂正させていただきます。supportが有効になっていない理由については、サーバ管理者にお問合せください。si-captcha.phpプラグインによると、PHPにimagepng機能が見当たりません!PHPにimagepng機能が有効になっていない理由については、サーバ管理者にお問合せください。»12345678910111213141516171819202122232425262728293031。