GUI なしで稼働させている CentOS 7 に KVM をインストールする方法
この記事は、僕の CentOS 7 に KVM をこうやってインストールしたという記録です。
CentOS の状態
レッツノート上で稼働させている CentOS 7 です。スペックをコマンドでざざっと紹介しておきます。
$ uname -a Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/centos-release CentOS Linux release 7.2.1511 (Core) $ cat /proc/cpuinfo | grep 'model name' model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz $ free -m total used free shared buff/cache available Mem: 1865 402 175 78 1287 1172 Swap: 3839 46 3793 $ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 50G 1.4G 49G 3% / devtmpfs 923M 0 923M 0% /dev tmpfs 933M 0 933M 0% /dev/shm tmpfs 933M 97M 837M 11% /run tmpfs 933M 0 933M 0% /sys/fs/cgroup /dev/mapper/centos-home 179G 15G 164G 9% /home /dev/sda1 497M 124M 374M 25% /boot tmpfs 187M 0 187M 0% /run/user/1000 $ dmesg | grep ' SSD ' [ 2.314779] ata1.00: ATA-9: Samsung SSD 840 EVO 250GB, EXT0BB6Q, max UDMA/133 [ 2.316219] scsi 0:0:0:0: Direct-Access ATA Samsung SSD 840 BB6Q PQ: 0 ANSI: 5 $
CPU が Core i5 でまあ良いとしてもあらためて見るとメモリーが 2GB しかない。どこかのタイミングで追加したほうがいいかもしれませんが、今日のところはこのまま行ってみます。HDD はサムソンの SSD で 250 GB モノですね。
CPU が仮想化機能をサポートしているかどうかを確認
$ grep svm /proc/cpuinfo $ grep vmx /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid $
/proc/cpuinfo を svm, vmx で grep して、何も出力されない場合 KVM を使うことができません。
インストールするパッケージの確認
下記 4 つをインストールします。
- qemu-kvm
- qemu-img
- libvirt
- virt-install
それぞれどんなパッケージなのかを簡単に確認します。といっても yum info コマンドを叩くだけです。
$ yum info qemu-kvm 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.yz.yamagata-u.ac.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 利用可能なパッケージ 名前 : qemu-kvm アーキテクチャー : x86_64 エポック : 10 バージョン : 1.5.3 リリース : 126.el7_3.5 容量 : 1.9 M リポジトリー : updates/7/x86_64 要約 : QEMU is a FAST! processor emulator URL : http://www.qemu.org/ ライセンス : GPLv2+ and LGPLv2+ and BSD 説明 : qemu-kvm is an open source virtualizer that provides hardware emulation for : the KVM hypervisor. qemu-kvm acts as a virtual machine monitor together with : the KVM kernel modules, and emulates the hardware for a full system such as : a PC and its assocated peripherals. : : As qemu-kvm requires no host kernel patches to run, it is safe and easy to use. $ yum info qemu-img 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.yz.yamagata-u.ac.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 利用可能なパッケージ 名前 : qemu-img アーキテクチャー : x86_64 エポック : 10 バージョン : 1.5.3 リリース : 126.el7_3.5 容量 : 671 k リポジトリー : updates/7/x86_64 要約 : QEMU command line tool for manipulating disk images URL : http://www.qemu.org/ ライセンス : GPLv2+ and LGPLv2+ and BSD 説明 : This package provides a command line tool for manipulating disk images. $ yum info libvirt 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.yz.yamagata-u.ac.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 利用可能なパッケージ 名前 : libvirt アーキテクチャー : x86_64 バージョン : 2.0.0 リリース : 10.el7_3.5 容量 : 140 k リポジトリー : updates/7/x86_64 要約 : Library providing a simple virtualization API URL : http://libvirt.org/ ライセンス : LGPLv2+ 説明 : Libvirt is a C toolkit to interact with the virtualization capabilities : of recent versions of Linux (and other OSes). The main package includes : the libvirtd server exporting the virtualization support. $ yum info virt-install 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.yz.yamagata-u.ac.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 利用可能なパッケージ 名前 : virt-install アーキテクチャー : noarch バージョン : 1.4.0 リリース : 2.el7 容量 : 88 k リポジトリー : base/7/x86_64 要約 : Utilities for installing virtual machines URL : http://virt-manager.org/ ライセンス : GPLv2+ 説明 : Package includes several command line utilities, including virt-install : (build and install new VMs) and virt-clone (clone an existing virtual : machine). $
それではインストールしていきます。
KVM 関連パッケージのインストール
これも yum 一発です。
$ sudo yum install qemu-kvm.x86_64 qemu-img.x86_64 libvirt.x86_64 virt-install.noarch
[sudo] password for oreore:
読み込んだプラグイン:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00:00
epel/x86_64/metalink | 6.0 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/4): epel/x86_64/updateinfo | 782 kB 00:00:00
(2/4): extras/7/x86_64/primary_db | 139 kB 00:00:00
(3/4): epel/x86_64/primary_db | 4.7 MB 00:00:10
(4/4): updates/7/x86_64/primary_db | 4.7 MB 00:00:10
Determining fastest mirrors
* base: www.ftp.ne.jp
* epel: ftp.riken.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libvirt.x86_64 0:2.0.0-10.el7_3.5 を インストール
--> 依存性の処理をしています: libvirt-daemon-driver-storage = 2.0.0-10.el7_3.5 のパッケージ: libvirt-2.0.0-10.el7_3.5.x86_64
--> 依存性の処理をしています: libvirt-daemon-driver-secret = 2.0.0-10.el7_3.5 のパッケージ: libvirt-2.0.0-10.el7_3.5.x86_64
--> 依存性の処理をしています: libvirt-daemon-driver-qemu = 2.0.0-10.el7_3.5 のパッケージ: libvirt-2.0.0-10.el7_3.5.x86_64
(中略)
依存性を更新しました:
cyrus-sasl-lib.x86_64 0:2.1.26-20.el7_2 gnutls.x86_64 0:3.3.24-1.el7 libnl3.x86_64 0:3.2.28-3.el7_3
libxml2.x86_64 0:2.9.1-6.el7_2.3 libxml2-devel.x86_64 0:2.9.1-6.el7_2.3 pciutils-libs.x86_64 0:3.5.1-1.el7
完了しました!
$
KVM のセットアップ
次が KVM のセットアップです。まず libvirtd (仮想化機能のデーモン) を起動させます。
$ systemctl status libvirtd ● 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 $ sudo systemctl start libvirtd [sudo] password for oreore: $ systemctl status libvirtd ● libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled) Active: active (running) since 日 2017-04-16 19:22:40 JST; 1min 59s ago Docs: man:libvirtd(8) http://libvirt.org Main PID: 9245 (libvirtd) CGroup: /system.slice/libvirtd.service ├─9245 /usr/sbin/libvirtd ├─9330 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvi... └─9331 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvi... $
これでデーモンが起動できましたし、systemctl に libvirtd を登録したので OS を再起動しても KVM が ON になる環境ができました。
KVM ではゲスト OS のイメージファイルはどこに置かれる?
引続き、ゲスト OS を何かインストールしよう!と思っていましたが、インストールは良いものの、それってどこにインストールされるのだ?という疑問がでてきた。
その答えはどうやら
/var/lib/libvirt/images
らしい。
特に深く考えずに CentOS 7 をインストールしてしまったために /home に一番多くの容量があてがわれている状態になっている。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 50G 1.4G 49G 3% /
devtmpfs 923M 0 923M 0% /dev
tmpfs 933M 0 933M 0% /dev/shm
tmpfs 933M 97M 837M 11% /run
tmpfs 933M 0 933M 0% /sys/fs/cgroup
/dev/mapper/centos-home 179G 15G 164G 9% /home
/dev/sda1 497M 124M 374M 25% /boot
tmpfs 187M 0 187M 0% /run/user/1000
$
このままではあとあと不都合が起こりそうなので、先にパーティションサイズを変更しようと思う。具体的には、
- /home を縮小して / を拡大する
というものです。
次の記事で書きます。