仮想化ソリューションの一つである、KVM(Kernel-based Virtual Machine)の構築を行います。
仮想マシンの管理はVirt-managerを使って行います。
このページの前提条件は以下の通りです。
CentOS 6.xをデスクトップ環境込みでインストールした場合は、ネットワークの管理はNetwork Managerが起動しています。
以下の手順を使ってLinux KVMの環境を構築する場合はまずNetwork Managerを終了して、networkサービスを実行してください。
CentOS 5.x、CentOS 6.xをCUIのみでインストールした場合は通常はnetworkサービスが使われますが、念のためNetworkManagerが実行中ではないか確認してください。
起動していなければ本項は読み飛ばしてください。
	# service NetworkManager stop
	# chkconfig NetworkManager off
	# service network start
	# chkconfig network on
(1)KVMのコンポーネントなどの導入を行います。
# yum -y install kvm kmod-kvm kvm-qemu-img libvirt python-virtinst bridge-utils
(2)libvirtdの起動と、自動起動設定を行います。
	# service libvirtd start
	# chkconfig libvirtd on
以上でKVM環境は導入できるのですが、このままではKVMホスト上からしか仮想マシンにアクセスできません。
以下の手順に従って、ブリッジ接続できるように作業を行います。
ifcfg-eth0をコピーしてifcfg-br0を作成します。
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0
仮想マシンでブリッジ接続するための仮想NICを設定します。
例ではMACアドレスをxx:xx:xx:xx:xx:xxと表記しています。
このままコピペしても動作しませんので、注意してください。
# vi ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=none IPADDR=192.168.1.140 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 GATEWAY=192.168.1.1 ONBOOT=yes #USERCTL=no #IPV6INIT=no #PEERDNS=yes #HWADDR=xx:xx:xx:xx:xx:xx
次にブリッジ接続の実NIC側の設定を行います。
# vi ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet HWADDR=xx:xx:xx:xx:xx:xx ONBOOT=yes BRIDGE=br0 #BOOTPROTO=none #USERCTL=no #IPV6INIT=no #PEERDNS=yes #NETMASK=255.255.255.0 #NETWORK=192.168.1.0 #IPADDR=192.168.1.140 #BROADCAST=192.168.1.255 #GATEWAY=192.168.1.1
ネットワークサービスを再起動します。
# service network restart
作成した仮想NIC(br0)がIPを取得できているか確認します。
# ifconfig
br0       Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:192.168.1.140  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::204:23ff:feac:10bc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:720 (720.0 b)
eth1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
eth2      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:192.168.1.141  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::218:71ff:fee9:4758/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
:
virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
(virbr0はNAT接続用、br0がブリッジでeth1とつながっている)
:
作成した仮想NIC(br0)がブリッジインターフェイスとして機能しているか確認します。br0にeth1があることを確認します。
# brctl show bridge name bridge id STP enabled interfaces br0 8000.000423ac10bc no vnet0 eth1 virbr0 8000.000000000000 yes
ブリッジ接続インターフェイスが作成できたら、一旦ホストを再起動します。
これによりKVMモジュールが読み込まれた状態でCentOSを起動できます。
モジュールが組み込まれたか確認します。結果がでれば、必要なモジュールは組み込まれています。
# lsmod | grep kvm kvm_intel 85256 0 kvm 225824 2 ksm,kvm_intel
root以外のユーザーがLinux KVMにアクセスする必要がある場合は、ユーザーをKVMグループに追加します。
# gpasswd -a admin kvm
ファイアウォール設定で、br0を信頼できるデバイスに設定します。
これにより、別の端末から仮想ゲストへ、もしくはゲストから別の端末へアクセス出来るようになります。

どのサービスを通過させるかしないかは、仮想ゲスト側のファイアウォールで設定します。