2010年8月8日日曜日

RHEL KVM (1) 導入


このエントリーをはてなブックマークに追加


 今まで検証用に、Solaris10 + VirtualBoxという仮想環境を利用してきたが、ホストのSolaris10がCIFS/NFSサーバや、PXEブート時のインストールイメージの提供等を兼ねているため、仮想マシンを4~5台動かすと、リソースが枯渇して、予期せぬエラーが出て検証がストップしてしまうケースが多くなってきた。

 なので、Solaris10にはZFSでのファイル共有を主に担当してもらい、今回新たにHP ML115G5を購入したので、そちらにRHELをインストールし、KVMを利用して検証環境を構築することに挑戦してみる。


■KVMホスト環境
 ・RHEL5.5 x86_64(キャンペーンで貰った、1ヶ月間ノンサポートのサブスクリプション付き)
 ・HP ML115 G5
 ・Xeon X3430 2.40GHz (4core)
 ・8GB memory
 ・160GB SATA x1(内蔵ディスクへはOSのみインストールし、KVMイメージはNFS経由のZFS上に格納する)


■ホストRHELのインストールでの設定や注意点
 (1)インストールの初期で「インストール番号」が無いとKVM関連のパッケージが選択できないので注意。
後でインストールする場合は、以下のパッケージをインストールすること。

 kmod-kvm-83-105.el5.x86_64.rpm
 kvm-qemu-img-83-105.el5.x86_64.rpm
 libvirt-0.6.3-20.el5.x86_64.rpm
 virt-manager-0.6.1-8.el5.x86_64.rpm
 celt051-0.5.1.3-0.el5.x86_64.rpm
 bridge-utils-1.1-2.x86_64.rpm
 libvirt-python-0.6.3-20.el5.x86_64.rpm
 python-virtinst-0.400.3-5.el5.noarch.rpm
 kvm-83-105.el5.x86_64.rpm
 etherboot-zroms-kvm-5.4.4-10.el5.x86_64.rpm

 *環境によっては依存関係で先にインストールしておかないと行けないものが多数あるので、この方法はかなり面倒くさい。なので、インストール番号を入力して、インストール時に選択した方がはるかに簡単。

 インストールが正常に終了していれば、KVMモジュールがカーネルに組み込まれて、KVMが使えるようになる。
# lsmod |grep kvm
kvm_intel              86920  4
kvm                   226208  2 ksm,kvm_intel

 (2)インストール完了後、FireWall、SELinux関連は無効にしておいた方がよい。

 (3)Bridgeインターフェースの構築
 KVMデフォルトのの「仮想ネットワーク」というのは、クローズなネットワークを構築し、そこからNATで物理インターフェースへ中継するネットワークになる。ホスト1台のみの環境や、仮想マシンが外部ホスト(仮想マシン以外)からのアクセスを受けない場合はこれでよいが、普通はブリッジで接続し、外部でも内部でも自由に通信させたい要望のが多いと思うので、以下の設定をホストで行う。

 - ホストの物理デバイス eth0(パブリック側)、eth1(プライベート側)として、構成する例

# /etc/init.d/network stop

/etc/sysconfig/network-scripts/ifcfg-eth0
----------------------------------------
DEVICE=eth0
BOOTPROTO=none
HWADDR=1C:C1:DE:80:86:BD
ONBOOT=yes
BRIDGE=br0
----------------------------------------

/etc/sysconfig/network-scripts/ifcfg-eth1
----------------------------------------
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:22:64:89:AF:C4
ONBOOT=yes
BRIDGE=br1
----------------------------------------

/etc/sysconfig/network-scripts/ifcfg-br0
----------------------------------------
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.32
NETMASK=255.255.255.0
ONBOOT=yes
----------------------------------------

/etc/sysconfig/network-scripts/ifcfg-br1
----------------------------------------
DEVICE=br1
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.0.254.32
NETMASK=255.255.255.0
ONBOOT=yes
----------------------------------------

# /etc/init.d/network start
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.02a23a653fb8       no              eth0
br1             8000.00226489afc4       no              eth1

これで仮想マシン作成時に、共有ネットワークデバイスとして、br0やbr1を選択することで、ブリッジ接続できる。

 (4)共有ストレージの設定

 virt-mager を起動して、ホストの設定 → Storage から共有デバイスを設定できる。ここに設定された外部マウントポイント(NFSやiSCSI)はlibvirtd起動時に自動的にマウントされる。ライブマイグレーションを行う場合、必須の設定(今回はホストが一台なので必須では無い
virsh # pool-list
名前               状態     自動起動
-----------------------------------------
default              動作中  yes
kvmnfs01             動作中  yes

virsh # pool-info default
名前:         default
UUID:           005ad969-0480-66ea-1286-27368012327d
状態:         実行中
容量:         134.83 GB
割り当て:   3.17 GB
利用可能:   131.65 GB

virsh # pool-info kvmnfs01
名前:         kvmnfs01
UUID:           2c96cbbd-865b-02dd-95c9-e7dba46ef586
状態:         実行中
容量:         3.83 TB
割り当て:   8.09 GB
利用可能:   3.82 TB
■仮想マシンの作成
 ここまでの準備を終えたら、後は仮想マシンを作成する。virt-managerのGUIから作るのが一番楽。KVMではXenのようなParavirtulization(準仮想化)環境は構築できず、完全仮想化のみサポートされる。

 仮想マシンの作成は直観的なので、迷う事は無い。仮想マシン作成のウィザードではネットワークは一つしか選択できないが、後で追加できる。

 便利なのは、Linux系ならインストールメディアをフルコピーした領域をローカルなり、NFS上に用意しておくことで、そこからブートイメージとインストールファイルを直接読み込んでくれる。いちいちCDを交換とかしなくてもよいのでうれしい。今こんな感じでZFS上にイメージを配置している。
root@sol10-u24 20:03:05> zfs list spool/pxeimages
NAME              USED  AVAIL  REFER  MOUNTPOINT
spool/pxeimages  13.3G  3.81T  13.3G  /spool/pxeimages

root@sol10-u24 20:02:48>zfs get sharenfs spool/pxeimages
NAME             PROPERTY  VALUE     SOURCE
spool/pxeimages  sharenfs  ro,root   local

root@sol10-u24 20:03:05>ll /spool/pxeimages/
合計 41
drwxr-xr-x   8 root     root           8  8月  8日  12:23 ./
drwxr-xr-x  12 root     root          12  8月  8日  14:11 ../
drwxr-xr-x   7 root     root          32  7月 21日  23:16 centos55/
dr-xr-xr-x   8 root     sys           66  8月 19日 2009年 rhel54/
dr-xr-xr-x   8 root     sys           88  3月 22日  21:28 rhel55/
dr-xr-xr-x   8 root     sys           88  3月 22日  22:14 rhel55x64/
drwxr-xr-x   2 root     root           3  8月  8日  03:38 software/
drwxr-xr-x   7 root     root           8  8月  8日  12:12 tftproot/
仮想マシンの作成時の「インストールイメージの読み込み先」に、
 nfs://sol10-u24:/spool/pxeimages/rhel55
とか指定すればよい。

仮想マシンを作成するとこんな感じになる。
# virsh list
 Id 名前               状態
----------------------------------
  6 rhcs-master          実行中
  7 rhcs-node1           実行中
  8 rhcs-node2           実行中
  9 rhcs-node3           実行中

# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.02a23a653fb8       no              vnet6
                                                        vnet4
                                                        vnet2
                                                        vnet0
                                                        eth0
br1             8000.00226489afc4       no              vnet7
                                                        vnet5
                                                        vnet3
                                                        vnet1
                                                        eth1

便利な運用方法についてはこれからいろいろ試してみる予定。

KVM徹底入門

KVM徹底入門

価格:3,444円(税込、送料別)