仮想化ソリューションの一つである、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を信頼できるデバイスに設定します。
これにより、別の端末から仮想ゲストへ、もしくはゲストから別の端末へアクセス出来るようになります。
どのサービスを通過させるかしないかは、仮想ゲスト側のファイアウォールで設定します。