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|パッケージグループ情報の確認