KVMでサーバ仮想化 インストール編その2 
![]()
前回GUIから超お手軽のKVMインストールからVMへLinuxのインストールまでをやってみました。
でも、実際運用するにあたってはGUIが必須ではないでしょうし、余分なリソースを使ってしまいます。
何をするにしてもやっぱりCUIが便利でしょうしカスタマイズも手軽でしょう。
ってことで、今回はKVMを使うにあっての概要とVMの作成方法を手順にしたいと思います。
KVMによって仮想化を行い、VMを管理する方法やツールは多種多様です。
いろいろと調べてみましたが実に多くのツールがありました(はっきり言って混乱するぐらいありましたw) 。
自分なりに調べてみた結果、下記の様に管理ツールは分類され代表的なものがあります。
・CUI管理(KVMがインストールされたマシン上にコマンドラインで接続して管理)
qemu-kvm←KVMをパッケージからインストールした時点で使える。
virsh
kvmadm
OpenNebula
Ganeti
・GUI/Desktop管理(KVMがインストールされたマシン上のデスクトップでGUI管理)
Virtual Machine Manager
GKVM
AQemu
・GUI/Web管理(KVMがインストールされたマシン上にブラウザから接続してGUI管理)
Red Hat Enterprise Virtualization
Proxmox VE
Enomaly
Karesansui
openQRM
Abiquo
Archipel
ConVirt
oVirt
上記のようにVMを操作するものはかなりありますね。
GUIで管理する代表的なというか前回紹介した管理ツールはVirtual Machine Managerになります。
今回はCUI管理ツールの中でもqemu-kvmを使ってVMをインストール、NW接続までを以下からご紹介します。
(ホストOSにはCentOS5.5、VMにもCentOS5.5をインストールしています。)
全体的な流れとしては以下のような感じです。
①KVMカーネルの確認
②VMのイメージファイル作成
③VMへOSのインストール
④VMのNW設定
では、詳細な手順をご紹介していきます。
①KVMカーネルの確認
まずKVMカーネルが組み込まれているか確認します。
# lsmod | grep kvm kvm_intel 86920 1 kvm 226336 2 ksm,kvm_intel |
上記の様な結果なら準備はOKです。
もしgrepの結果が何もなかればyumを使ってインストールします。
# yum groupinstall kvm |
※CPUがIntel VTもしくはAMD-Vに対応したものでないとKVMは使用不可です。ご注意を。
②VMのイメージファイル作成
VM用のイメージファイルを作成します。これがないと何も始まりません。
以下では10GBのディスクをアサインしたVMを作成しています。
# qemu-img create -f raw /var/kvm/images/vm-dev01.img 10G |
※イメージファイルの置き場所を/var/kvm/images、OSのイメージは/var/kvm/os以下にしています。
上記の様にqemu-imgコマンドを実行してイメージファイルを作成します。
イメージファイルを作成する形式は「qcow2」と「raw」があります。
前者はVMで必要な量確保して使用量に合わせてファイルサイズが変わります。
後者はイメージファイルを作成した時点で10GBの容量を確保します。
このあたりはさくらさんのブログで検証がされています。結論からするとrawがいいとかなんとか。
KVMを使う(ディスク性能編)
③VMへOSのインストール
イメージファイルが作成できたら次はいよいよVMにOSをインストールします。
ちょっとコマンドが長いんですが。。。
# /usr/libexec/qemu-kvm -hda /var/kvm/images/vm-dev01.img ¥ -m 1024 ¥ -vnc :0 -k ja ¥ -daemonize ¥ -cdrom /var/kvm/os/CentOS-5.5-x86_64-bin-DVD-1of2.iso ¥ -boot d |
/usr/libexec/qemu-kvmコマンドを使ってVMにインストールを行ないます。
簡単にオプションの説明を。
-m:メモリの割当量[MByte]
-vnc :0 -k ja:vnc接続への番号とキーボードを日本語としています。
-daemonize:デーモン化
-cdrom:CDドライブに入れるイメージ(メディア)を指定します。
-boot d:cdromドライブからブートする設定です。
エラーがなくコマンドが実行できたら次はRealVNCを利用してOSのインストール作業を続けます。
(VMへのコンソールへはVNCを使って接続するんです。他の方法もありますが。。。)

私がメインで使っているのはiMacなのですが、VNCクライアントのChicken of th VNCからだと
画面がうまく表示されなかったり、接続が切れてしまったりと上手くいきませんでした。
なので別のWindowsマシンのRealVNCから接続してOSのインストールを続行しました。
普段どおりCentOSのインストールができたら再起動です。
再起動しても、CDドライブからの起動オプションを付けたままなのでVMは起動してきません。
一旦プロセスを強制的に落として下記のコマンドでVMを起動します。
# /usr/libexec/qemu-kvm -hda /var/kvm/images/vm-dev01.img ¥ -m 1024 ¥ -vnc :0 -k ja ¥ -daemonize ¥ -boot c |
今後はこのコマンドでVMが起動します。
④VMのNW設定
さて最後に肝心のNW設定を行ないます。
参考にさせて頂いたのはさくらインターネットさんのブログ。接続イメージもこちらをご参考ください。
KVMを使う(ネットワーク設定編)
では、VMでNW設定をするにはいろいろと方法もあるわけですが、外部(ホスト以外)と接続する場合は
ブリッジ接続が必要となります。
ちょっと面倒ですが最初だけで、あとは特に気にもなくなるでしょうw
まずはホストOSにブリッジ接続するためのツールと設定を行ないます。
# yum install bridge-utils |
既存のeth0デバイス設定を下記のように変更。
# vi ifcfg-eth0 -------------------- DEVICE=eth0 BOOTPROTO=static ONBOOT=yes BRIDGE=br0 -------------------- |
次にブリッジデバイスbr0を作成。
# vi ifcfg-br0 -------------------- DEVICE=br0 ONBOOT=yes TYPE=Bridge IPADDR=192.168.120.70 NETMASK=255.255.254.0 GATEWAY=192.168.120.254 -------------------- # /etc/init.d/network restart |
ネットワークの再起動が上手く行けばbr0というデバイスが出来ていると思います。
次はVM起動時にネットワークインターフェースをqemuに呼ばれるためのスクリプトを配置します。
# vi /etc/qemu-ifup -------------------- #!/bin/sh /sbin/ifconfig $1 up /usr/sbin/brctl addif br0 $1 -------------------- # chmod 755 /etc/qemu-ifup |
最後にもう一つ、VMに追加するネットワークインターフェースのMACアドレスを生成します。
簡単に生成できるスクリプトを以下に。
# vi macgen.py -------------------- #! /usr/bin/python # macgen.py script generates a MAC address for Xen guests # import random mac = [ 0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), random.randint(0x00, 0xff), random.randint(0x00, 0xff) ] print ':'.join(map(lambda x: "%02x" % x, mac)) -------------------- chmod 755 macgen.py |
実行してMACアドレスを生成してください。
ではネットワークインターフェースをアサインしてVMを起動させます。
# /usr/libexec/qemu-kvm -hda /var/kvm/images/vm-dev01.img ¥ -m 1024 ¥ -vnc :0 -k ja ¥ -daemonize ¥ -boot c ¥ -net nic,model=e1000,macaddr=00:16:3e:53:c6:cf -net tap,ifname=tap0 |
先程の起動オプションに-net以降を追加しています。
オプションの詳細はここにあります。
http://linux.die.net/man/1/qemu-kvm
最低限のKVMによるVM作成は以上です。
HW構成やNW構成、運用方法に合わせた仮想化環境を構築できそうです。
今後はKVMの機能を更に深く検証していきたいと思っています。
KVMはいろいろと面白そうですね。
