敵のいない勉強部屋

勉強記録用。土日を中心に更新。

nested KVM構築(CentOS6)

今回はKVM on KVM いわゆる nested KVM で環境を準備したので、その手順をまとめる。

参考サイトの手順に従えば、ほとんどつまずくことはなかった。

ようやくCloudStack検証環境構築に一歩近づくことができた。 

参考サイト

 ・CentOS 6 - KVM - インストール : Server World

 ・仮想化された日々:kvmのドライバモジュールロード時のエラー - livedoor Blog(ブログ)

 ・KVMのゲストOSをブリッジ接続に変更する: 気の向くままに・・・

 ・CentOS 6 - KVM - KVM をネストする : Server World

BIOS設定変更

 Intel(R) Virtualization Technology を [Disabled] -> [Enabled] に変更

CPU仮想化対応確認

# grep vmx /proc/cpuinfo

※フラグが表示されること

KVMインストー

・パッケージインストー

# yum install -y qemu-kvm virt-manager libvirt libvirt-python python-virtinst 

・モジュール確認

# lsmod | grep kvm

kvm_intel 55432 0
kvm 346318 1 kvm_intel

・サービス起動

# /etc/init.d/messagebus start

# /etc/init.d/libvirtd start

仮想ブリッジ作成

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

DEVICE=eth0
TYPE=Ethernet
HWADDR=8c:89:a5:23:50:c5
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
BRIDGE=br0

# vi ifcfg-br0
# cat ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.0.102
NETMADK=255.255.0.0

DNS1=172.16.0.1
GATEWAY=172.16.0.1

# brctl addbr br0
# brctl addif br0 eth0
# brctl show

bridge name bridge id STP enabled interfaces
br0 8000.8c89a52350c5 no eth0
virbr0 8000.525400eff9dc yes virbr0-nic

# service network restart

・br0にIPアドレスが振られていることを確認

# ip a

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 8c:89:a5:23:50:c5 brd ff:ff:ff:ff:ff:ff
inet6 fe80::8e89:a5ff:fe23:50c5/64 scope link
valid_lft forever preferred_lft forever

7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 8c:89:a5:23:50:c5 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.102/16 brd 172.16.255.255 scope global br0
inet6 fe80::8e89:a5ff:fe23:50c5/64 scope link
valid_lft forever preferred_lft forever

 guestVM作成

# virt-install --name=kvm_host01 --os-type=Linux --os-variant=rhel6 --ram=4096 --vcpu=2 --graphics none --disk=/home/host_kvm01/image/host_kvm01,size=40 --network bridge=br0 --location=http://ftp.riken.jp/Linux/centos/6.9/os/x86_64/ --extra-args='console=tty0 console=ttyS0,115200n8'

※guestVMのコンソールにてCentOSをインストー

# grep vmx /proc/cpuinfo

※この時点ではvmxフラグが立っていないことを確認

# shutdown -h now

※guestVMをシャットダウンしておく

nested KVM設定 (HostOS側で実施)

カーネルバージョン確認(2.6.32)

# uname -a
Linux thinkcentre02.local 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Xenリポジトリ登録

# yum -y install centos-release-xen

# cp -ip /etc/yum.repos.d/CentOS-Xen.repo /etc/yum.repos.d/CentOS-Xen.repo.default

# vi /etc/yum.repos.d/CentOS-Xen.repo

※編集箇所抜粋

[centos-virt-xen]
name=CentOS-for-Xen
baseurl=https://buildlogs.centos.org/centos/6/virt/x86_64/xen-46
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization

 ・カーネルUpdate

# yum --enablerepo=centos-virt-xen -y update kernel

カーネルオプション追加

# cp -ip /boot/grub/grub.conf /boot/grub/grub.conf.default
# vi /boot/grub/grub.conf
# diff /boot/grub/grub.conf.default /boot/grub/grub.conf

16c16
< kernel /vmlinuz-4.9.34-29.el6.x86_64 ro root=/dev/mapper/vg_thinkcentre02-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_thinkcentre02/lv_root crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_thinkcentre02/lv_swap LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
---
> kernel /vmlinuz-4.9.34-29.el6.x86_64 ro root=/dev/mapper/vg_thinkcentre02-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_thinkcentre02/lv_root crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_thinkcentre02/lv_swap LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet kvm-intel.nested=1

・ホストOS再起動

# reboot 

カーネルバージョン確認(4.9.34)

# uname -a
Linux thinkcentre02.local 4.9.34-29.el6.x86_64 #1 SMP Tue Jun 27 14:10:34 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

・CPU情報確認

# virsh capabilities | egrep "<model>|<vendor>"

<model>Nehalem</model> ※確認ポイント①
<vendor>Intel</vendor> ※確認ポイント②
<model>selinux</model>
<model>dac</model>

・guestVM設定変更 

# virsh list --all

Id   名前                  状態
----------------------------------------------------
 -    kvm_host01       シャットオフ

# virsh edit kvm_host01

※以下の記述を追記

<cpu mode='custom' match='exact'>
  <model fallback='allow'>Nehalem</model>
  <vendor>Intel</vendor>
  <feature policy='require' name='vmx'/>
</cpu>

# virsh start kvm_host01

# virsh console kvm_host01

# grep vmx /proc/cpuinfo

※vmxフラグが立っていることを確認

 

明日はこのKVM上にVM作成のテストをして、

それがうまく行けば、残り3台分のnested KVM環境を構築しよう。

できたらそのままcloudstackのインストール、ホスト登録まで完了させたい。