CentOS6.3でKVMをインストールしたときのメモ。
最初にマシンのCPUが仮想化に対応化しているかはBIOS設定画面から確認しておく。
対応していればKVMが利用可能。

OSからインストールする場合はCentOSのインストールパッケージ選択の画面でVirtual Hostを選択しておく。
既にCentOSがインストールされている環境ならyumからグループインストールでパッケージをまとめてインストールする。
yum groupinstall Virtualization "Virtualization Client" \
  "Virtualization Platform" "Virtualization Tools"
chkconfigをonにして自動起動するようにしておく。
chkconfig libvirtd on
再起動する。
shutdown -r now
仮想マシンは複数台起動するだろうからホストOSにブリッジインターフェースを設定し、仮想マシンからはそのブリッジに接続するようにする。
# vi /etc/sysconfig/network-scripts/ifcfg-br0 

DEVICE="br0"
BOOTPROTO=none
IPADDR=192.168.11.50
NETMASK="255.255.255.0"
BROADCAST="192.168.11.255"
NETWORK="192.168.11.0"
GATEWAY="192.168.11.1"
NM_CONTROLLED="no"
ONBOOT=yes
TYPE="Bridge"
PREFIX=24
DNS1=192.168.11.1
eth0でブリッジにbr0を指定する。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE="eth0"
BOOTPROTO=none
NETMASK="255.255.255.0"
GATEWAY="192.168.11.1"
NM_CONTROLLED="no"
ONBOOT=yes
BRIDGE=br0
TYPE="Ethernet"
UUID="e8feaf6a-ee0e-47da-a7ac-c32afb838ae9"
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
HWADDR=44:37:E6:4D:3E:65
DNS1=192.168.11.1
LAST_CONNECT=1350377272
インターフェースを再起動。
service network restart
ブリッジインターフェースが追加されているか確認する。
[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.4437e64d3e65       no              eth0
                                                        vnet0
                                                        vnet1
virbr0          8000.52540014165c       yes             virbr0-nic
トラフィックがブリッジまで届くようiptablesを無効化
# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
設定したカーネルパラメータを再ロード
# sysctl -p /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
libvirtdをリロード
# /etc/init.d/libvirtd reload
仮想マシンを作成する。 コンソールからvirt-managerコマンドを打ち仮想マシンマネージャを起動する。
# virt-manager
 


イメージ005






















ホスト名を右クリックし→新規で新しくホストを作成する。

イメージ004
















仮想マシン名を適当に入力し、用意したメディアで仮想マシンにお好みのOSをインストールする。
今回はゲストOSにもCentOSをインストールした。

イメージ006
















使用するメモリとCPUコア数を決める。
イメージ007
















割り当てるディスク領域を指定する。
イメージ008
















インターフェースにさっき作成したbr0を指定し完了ボタンを押すと仮想マシンが起動しOSのインストールが始まる。
イメージ010






















あとはゲストOSのインストールを通常通りに進めていく。

仮想マシンのクローンは仮想マシンマネージャーからマシンを右クリックして実行中なら一時停止かシャットダウンしてからクローンを選択。

イメージ011























詳細ボタンを押して新しいMACアドレスを後で設定項目に使うのでコピーしておく。
設定したらクローンボタンでコピー。

新しく作ったクローンはそのままインターフェースを起動させようとすると
#service network restart

device eth0 does not seem to be present, delaying initialization


とメッセージが出て起動しないのでudevの設定をする必要がある

# vi /etc/udev/rules.d/70-persistent-net.rules
↓この古い情報は削除する
# PCI device 0x8086:0x100e (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:fb:41:ae", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
↓新しい設定のNAMEをeth0に変える
# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:83:e8:c1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


eth0に新しく設定したいIPアドレスを記述
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
//HWADDRは上記新しい設定のATTR{address}=="52:54:00:83:e8:c1"のMACアドレスと同じ。
EVICE="eth0"
BOOTPROTO="none"
IPADDR="192.168.11.14"
NETMASK="255.255.255.0"
GATEWAY="192.168.11.1"
HWADDR="52:54:00:83:E8:C1"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="52ecae3b-ec32-424a-b9f6-8db7172fb5b7"

再起動してネットワークの稼動状態を確認する
#shutdown -r now
クローン自体はGUIを使えば至極簡単なので予めMySQL, Apache等環境をそろえてからクローンしてあげると開発用だったり実験用の環境が一瞬で用意出来て便利そう。

ゲストOSはCUIのみでいいだろうけどホストOSはCPU使用率とかメモリ使用率とか可視化できるしやっぱ管理用にGUI入れとくとよさそう。

管理はVNCでリモートで出来るようにする。
yum -y install tigervnc-server
iptablesを使っている場合はvncサーバが使用する5900-5999のポートを開放する。 /etc/sysconfig/iptablesを直接編集するかGUIから変更する。 今回は/etc/sysconfig/iptablesを直接編集する。
# vi /etc/sysconfig/iptables

 Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5999 -j ACCEPT ←この行を追加
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
iptablesの設定の意味はおいといて上記設定で5900番から5999番までを開放という意味になる。 編集したらiptablesを再起動して設定を適用する。
service iptables restart
TigerVNCを起動する。
vncserver -geometry 800x600 //解像度800x600で起動。
起動すると初回に後でクライアントから接続するときに必要なパスワードを聞かれるので入力する。
New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1
上記出力メッセージの数字の部分がクライアントから接続するときのディスプレイ番号なので覚えておく。

あとはWindwosなりからVNCクライアントソフトを使って「対象IPアドレス:ディスプレイ番号」の形で接続し、パスワードを聞かれるので入力すれば接続が完了する。
↓はWindows用クライアントのUltraVNC
イメージ014