トップページに戻る


Linux KVMホストの構築
最終更新日:2015.3.31

仮想化ソリューションの一つである、KVM(Kernel-based Virtual Machine)の構築を行います。
仮想マシンの管理はVirt-managerを使って行います。

前提条件

このページの前提条件は以下の通りです。

NetworkManagerの終了とnetworkの開始

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

KVMのインストール

(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ホスト上からしか仮想マシンにアクセスできません。

以下の手順に従って、ブリッジ接続できるように作業を行います。

ブリッジ接続用の仮想NICの作成

ifcfg-eth0をコピーしてifcfg-br0を作成します。

# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0

仮想NIC"br0"の設定

仮想マシンでブリッジ接続するための仮想NICを設定します。

br0の設定ポイント

例では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 "eth1"の設定変更

次にブリッジ接続の実NIC側の設定を行います。

eth1の設定ポイント

# 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

KVMグループへユーザーを追加

root以外のユーザーがLinux KVMにアクセスする必要がある場合は、ユーザーをKVMグループに追加します。

# gpasswd -a admin kvm

br0を信頼するネットワークに設定

ファイアウォール設定で、br0を信頼できるデバイスに設定します。
これにより、別の端末から仮想ゲストへ、もしくはゲストから別の端末へアクセス出来るようになります。

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

ゲストのインストール

準備が出来たら、ゲストのインストールを行います。