インフラMemoブログ

IT系エンジニア(インフラらしい)の備忘録的ブログ

KVMインストール

CentOS7へKVM環境を構築する

自宅検証用に以下のPCを使って環境を整えていく

samoa.hatenablog.com

参考にしたのはいつもお世話になっている、Server Worldさんのページを元にKVMをインストールしていく

www.server-world.info

環境構築

CPU周り

まずはCPUで仮想化機能が有効になっているかの確認

% sudo lscpu
アーキテクチャ: x86_64
CPU op-mode(s):         32-bit, 64-bit
Byte Order:             Little Endian
CPU(s):                 8
On-line CPU(s) list:    0-7
コアあたりのスレッド数:       2
ソケットあたりのコア数:       4
Socket(s):              1
NUMAノード:               1
ベンダーID:               GenuineIntel
CPUファミリー:              6
モデル:                  158
Model name:             Intel(R) Core(TM) i7-7700T CPU @ 2.90GHz
ステッピング:               9
CPU MHz:                3046.925
BogoMIPS:               5800.00
仮想化:                 VT-x
L1d キャッシュ:            32K
L1i キャッシュ:            32K
L2 キャッシュ:             256K
L3 キャッシュ:             8192K
NUMAノード 0 CPU:         0-7

仮想化でVT-xになっていることを確認

パッケージインストール

KVM環境構築に必要なパッケージをインストール

% yum -y install qemu-kvm libvirt virt-install bridge-utils

読み込みモジュールの確認(kvm)

% lsmod | grep kvm
kvm_intel             170181  0
kvm                   554609  1 kvm_intel
irqbypass              13503  1 kvm

サービス起動/設定

libvirtサービスの起動と自動起動を有効化する

[hoge@localhost] ~
% sudo systemctl enable libvirtd.service
[hoge@localhost] ~
% sudo systemctl start libvirtd.service

libvirtサービスが問題なく起動していることを確認

[hoge@localhost] ~
% sudo systemctl status libvirtd.service
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since 月 2017-09-11 21:52:41 JST; 5s ago
     Docs: man:libvirtd(8)
           http://libvirt.org
 Main PID: 11413 (libvirtd)
   CGroup: /system.slice/libvirtd.service
           ├─11413 /usr/sbin/libvirtd
           ├─11485 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-scr...
           └─11486 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-scr...

 9月 11 21:52:41 localhost.localdomain systemd[1]: Starting Virtualization daemon...
 9月 11 21:52:41 localhost.localdomain systemd[1]: Started Virtualization daemon.
 9月 11 21:52:42 localhost.localdomain dnsmasq[11485]: started, version 2.66 cachesize 150
 9月 11 21:52:42 localhost.localdomain dnsmasq[11485]: compile time options: IPv6 GNU-getopt DBus no-i18...uth
 9月 11 21:52:42 localhost.localdomain dnsmasq-dhcp[11485]: DHCP, IP range 192.168.122.2 -- 192.168.122.2...1h
 9月 11 21:52:42 localhost.localdomain dnsmasq[11485]: reading /etc/resolv.conf
 9月 11 21:52:42 localhost.localdomain dnsmasq[11485]: using nameserver 192.168.11.1#53
 9月 11 21:52:42 localhost.localdomain dnsmasq[11485]: read /etc/hosts - 2 addresses
 9月 11 21:52:42 localhost.localdomain dnsmasq[11485]: read /var/lib/libvirt/dnsmasq/default.addnhosts -...ses
 9月 11 21:52:42 localhost.localdomain dnsmasq-dhcp[11485]: read /var/lib/libvirt/dnsmasq/default.hostsfile
Hint: Some lines were ellipsized, use -l to show in full.

ネットワーク周り

ブリッジの作成

管理用通信を行うためのブリッジを作成する

[hoge@localhost] ~
% sudo brctl addbr br0
[hoge@localhost] ~
% sudo brctl stp br0 on

作成したブリッジを確認する

[hoge@localhost] ~
% brctl show br0                   
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       yes

インターフェースの設定

作成したブリッジの設定ファイルを作成する

[hoge@localhost] ~
% sudo cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.11.9
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no

物理インターフェースをブリッジにアサインする

[hoge@localhost] ~
% sudo cat /etc/sysconfig/network-scripts/ifcfg-enp1s0
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp1s0
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no

ゲストVM用準備

OSイメージアップロード

ローカル(操作PC)に保存してあったイメージをwinscpでアップロード

% sudo ls -l /var/lib/libvirt/iso
合計 857088
-rw-r--r--. 1 root root 632291328  9月 15  2016 CentOS-7-x86_64-Minimal-1511.iso
-rw-r--r--. 1 root root 245366784 12月 11  2016 vyos-1.1.7-amd64.iso

ディスクイメージの作成

用意したisoを使ってqcowイメージを作成する ※この辺から理解が怪しくなっている

[root@localhost libvirt]# qemu-img create -f qcow2 centos7_1.qcow2 20G
Formatting 'centos7_1.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off

ゲストOSインストール

作成したイメージを使い、ゲストOS(CentOS7.2)をインストールする

virt-install \
--name centos7_1 \
--ram 1024 \
--disk /var/lib/libvirt/images/centos7_1.img,size=20 \
--vcpus 2 \
--os-type linux \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location=/var/lib/libvirt/iso/CentOS-7-x86_64-Minimal-1511.iso \
--extra-args 'console=ttyS0,115200n8 serial'

ディスクイメージのテンプレート化

毎回初回インストールのセットアップ作業がめんどいので、テンプレート化しておくと2台目以降が楽になる

[root@kvm-host libvirt]# virt-clone --original centos7_1 --name template --file /var/lib/libvirt/template/template.img
割り当て中 'template.img'                                                                         |  20 GB  00:00:07     
'template'のクローニングに成功しました。

クローンからVM作成するとき

書式: virt-clone -o [クローン対象VMのName] -n [クローンしたVMのName] -f [クローンしたVMのイメージファイルPATH]

[root@kvm-host ~]# virt-clone -o template -n pike-man -f /var/lib/libvirt/images/pike-man.img
割り当て中 'pike-man.img'                                                                                      |  20 GB  00:00:18     

'pike-man'のクローニングに成功しました。

もう少しいろいろやってたのだが、メモが散乱してるのでひとまずこれで公開する
余裕があれば編集する