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を削除する