CentOS 7 のKVM導入

Contents

 


はじめに

KVM(Kernel-base Virtual Machine)はカーネルモジュールとして実装されているハイパーバイザー型のサーバ仮想化技術です。
KVMは完全仮想化のみをサポートするため、CPUが仮想化支援機能をサポートしている必要があります。
今回はCentOS 7.2にKVMを導入してみました。

 

CPU仮想化支援機能の確認

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

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

 

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

とりあえず以下のパッケージを入れてみます。コマンドラインの使用を想定してますので、今回はvirt-manager等のGUIパッケージは入れません。

 Name  Summary 備考
qemu-kvm  QEMU is a FAST! processor emulator  KVMエミュレーター
qemu-img  QEMU command line tool for manipulating disk images  ディスクイメージマネージャー
libvirt  Library providing a simple virtualization API  libvirtd デーモンを提供
libvirt-client  Client side library and utilities of the libvirt library  virsh コマンドラインツールが含まれる
virt-install  Utilities for installing virtual machines  コマンドラインからゲストOSのインストールをする
bridge-utils  Utilities for configuring the linux ethernet bridge  外部から仮想マシンへ接続するため、物理NICを仮想ブリッジに接続する
[root@localhost ~]# yum -y install qemu-kvm qemu-img libvirt libvirt-client virt-install bridge-utils

 

libvirtdの自動起動確認

インストール直後は自動起動が有効になっています。

[root@localhost ~]# systemctl is-enabled libvirtd.service
enabled

 

libvirtdの起動

インストール直後のサービスは停止しているので起動させます。

[root@localhost ~]# systemctl status libvirtd.service
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:libvirtd(8)
           http://libvirt.org
[root@localhost ~]# systemctl start libvirtd.service
[root@localhost ~]# systemctl status libvirtd.service
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2016-01-05 19:41:21 JST; 2s ago
     Docs: man:libvirtd(8)
           http://libvirt.org
 Main PID: 3350 (libvirtd)
   CGroup: /system.slice/libvirtd.service
           ├─3350 /usr/sbin/libvirtd
           ├─3444 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
           └─3445 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
...(以下省略)...

 

defaultネットワークの削除

KVM導入時に作成されるブリッジインターフェース(virbr0)はNATで使われるますが、使用しない場合は削除して、再起動時も自動作成されないようにします。

設定されているブリッジの確認

[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br10            8000.6805ca181bbc       no              bond0.10
br11            8000.6805ca181bbc       no              bond0.11
virbr0          8000.525400bbef66       yes             virbr0-nic

defaultの仮想ネットワークの削除

[root@localhost ~]# virsh net-destroy default
Network default destroyed

virbr0が削除されたことを確認する

[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br10            8000.6805ca181bbc       no              bond0.10
br11            8000.6805ca181bbc       no              bond0.11

defaultの仮想ネットワークが再起動時に自動作成されないようにする

[root@localhost ~]# virsh net-autostart default --disable
Network default unmarked as autostarted

[root@localhost ~]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              inactive   no            yes

今まで見よう見まねでパッケージをインストールしてましたが、今回いろいろ調べてだいぶ知識が定着しました。次回は実際に仮想マシンを作ってみたいと思います。

参照
Install KVM (QEMU) on CentOS 7 / RHEL 7

プロセッサが仮想化支援機能を持つか確認するには
第5章 RED HAT ENTERPRISE LINUX 7 での仮想化に関するクイックスタートガイド
KVM環境で仮想マシンを外部ネットワークと接続する
CentOS に KVM 環境を構築する
VIRBR0を削除する