CentOS 6 のKVM導入

Contents

はじめに

RHEL7系がリリースされて2年が経過しますが、RHEL6系もまだまだ現役です。CentOS 6のKVMを触ることも何かと多いので、「CentOS 7 のKVM導入」に続いて、CentOS 6のKVM導入手順もまとめました。

環境

CentOS6.8

CPU仮想化支援機能の確認

KVMは完全仮想化のみをサポートするため、CPUが仮想化支援機能をサポートしている必要があります。

[root@localhost ~]# egrep '(vmx|svm)' /proc/cpuinfo

/proc/cpuinfoのflags行にIntelはvmx、AMDはsvmと表示されていればサポートされています。仮想化支援機能が実装されていてもBIOSで無効化されている場合もあるので、フラグが立っていない場合はBIOSの設定も確認します。

パッケージのインストール

パッケージグループを指定してインストールします。

[root@localhost ~]# yum groupinstall "Virtualization Client" "Virtualization Platform" "Virtualization Tools"

今回インストールしたパッケージグループですが、他のサイトを参考にしたりするとパッケージグループのVirtualizationを入れないで、インストールを紹介しているところがあり、気になったのでパッケージグループの中身を確認してみました。


仮想化に必要そうなパッケージの確認(括弧内はグループID)

以下のコマンドで確認ができます。(-v オプションでグループIDが表示可能)

yum grouplist

例)

[root@localhost ~]# yum -v grouplist | grep Virtualization
   Virtualization (virtualization)
   Virtualization Client (virtualization-client)
   Virtualization Platform (virtualization-platform)
   Virtualization Tools (virtualization-tools)

グループIDでパッケージ内容を確認

以下のコマンドで確認ができます。

yum groupinfo [グループID]
項目 内容
Mandatory Packages 必須
Default Package デフォルトで選択される(インストーラの選択画面やkickstartで除外することも可能)
Optional Packages デフォルトで選択されない(インストーラの選択画面やkickstartで個別指定しない限りインストールはされない)

Virtualization

[root@localhost ~]# yum groupinfo virtualization
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: www.ftp.ne.jp

Group: Virtualization
 Description: Provides an environment for hosting virtualized guests.
 Mandatory Packages:
   qemu-kvm
 Optional Packages:
   qemu-kvm-tools
   vios-proxy

Virtualization Client

[root@localhost ~]# yum groupinfo virtualization-client
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: www.ftp.ne.jp

Group: Virtualization Client
 Description: Clients for installing and managing virtualization instances.
 Mandatory Packages:
   python-virtinst
   virt-manager
   virt-viewer
 Default Packages:
   virt-top

Virtualization Platform

[root@localhost ~]# yum groupinfo virtualization-platform
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: www.ftp.ne.jp

Group: Virtualization Platform
 Description: Provides an interface for accessing and controlling virtualized guests and containers.
 Mandatory Packages:
   libvirt
   libvirt-client
   virt-who
 Optional Packages:
   fence-virtd-libvirt
   fence-virtd-multicast
   fence-virtd-serial
   libvirt-cim
   libvirt-java
   libvirt-qmf
   libvirt-snmp
   perl-Sys-Virt

virtualization-tools

[root@localhost ~]# yum groupinfo virtualization-tools
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: www.ftp.ne.jp

Group: Virtualization Tools
 Description: Tools for offline virtual image management.
 Default Packages:
   libguestfs
 Optional Packages:
   libguestfs-bash-completion
   libguestfs-gfs2
   libguestfs-java
   libguestfs-mount
   libguestfs-rescue
   libguestfs-rsync
   libguestfs-tools
   libguestfs-xfs
   virt-v2v

Virtualizationに含まれているqemu-kvmは確認したところ他の3つのパッケージグループをインストールする際に依存関係でインストールされるので、インストールの際にVirtualizationを含めなくてもよいみたいです。

bridge-utilsのインストール

物理インターフェースから仮想マシンの仮想インターフェースにブリッジ接続するため、入っていなければパッケージを入れておきます。

[root@localhost ~]# yum install bridge-utils

 

サービスの起動と自動起動の確認

サービス起動

[root@localhost ~]# /etc/init.d/libvirtd start
Starting libvirtd daemon:                                  [  OK  ]

サービス自動起動

[root@localhost ~]# chkconfig --list libvirtd
libvirtd        0:off   1:off   2:off   3:on    4:on    5:on    6:off

 

デフォルトブリッジの確認

デフォルトで作成されるブリッジ(仮想インターフェース)はvirbr0はNATで動作します。外部ホストから仮想マシンにアクセスさせたい場合などは別途ブリッジインターフェースを作成する必要があります。

[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.52540067c1ed       yes             virbr0-nic

 

ブリッジの作成

インターフェースを確認

[root@localhost ~]# ip -f inet addr | grep inet
    inet 127.0.0.1/8 scope host lo
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
    inet 172.16.1.10/24 brd 172.16.1.255 scope global eth1
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

eth1の172.16.1.0/24のセグメントを仮想マシンに割り当てるため、eth1から仮想インターフェースにブリッジさせます。今回はブリッジ名をbr1にします。ホストOS側にIPアドレスを持たせたい場合は物理インターフェース(eth1)ではなく、仮想インタフェース(ブリッジ)側に割り当てます。
ifcfg-eth1を以下のように追加・修正します。(HWADDRとUUIDはなくてもよいかと思います。)

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
HWADDR=**:**:**:**:**:**
TYPE=Ethernet
UUID=********-****-****-****-************
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br1
#IPADDR=172.16.1.10
#NETMASK=255.255.255.0

仮想インターフェースbr1を作成。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-br1

DEVICE=br1
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.16.1.10
NETMASK=255.255.255.0

ネットワーク再起。

[root@localhost ~]# service network restart

172.16.1.10/24のIPがbr1のインターフェースに割り当てられていることを確認。

[root@localhost ~]# ip -f inet addr | grep inet
    inet 127.0.0.1/8 scope host lo
    inet 192.168.1.10/24 brd 192.168.0.255 scope global eth0
    inet 172.16.1.10/24 brd 172.31.1.255 scope global br1
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

KVMの環境構築は以上です。

おまけ(仮想マシンの作成)

今回はKVMの環境構築がメインなのでパラメータや操作方法は省略しますが、以下のようにvirt-installで仮想マシンが作成できれば成功です。

[root@localhost ~]# virt-install \
--name centos6 \
--hvm \
--os-variant=rhel6 \
--ram 1024 \
--vcpu=1 \
--graphics none \
--disk=/var/lib/libvirt/images/centos6,format=qcow2,size=10,bus=virtio \
--network bridge=br1,model=virtio \
--location=/var/lib/libvirt/iso/Linux/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso \
--extra-args 'console=tty0 console=ttyS0,115200n8'

参考

CentOS6 で KVM 環境構築
yum|パッケージグループ情報の確認