本家様 http://libvirt.org/

仮想マシン制御インターフェイスといっていいのか、QEMU、VMwareGSX/ESXiらの仮想化エンジンにアクセスして各種の制御が可能。

インストール

まずは、制御インターフェイスのバックグランドプロセス(デーモン)を稼働させるユーザを追加します。

[root@c ~]# groupadd -r qemu
[root@c ~]# useradd -M -d /opt/qemu -l -s /sbin/nologin -r -g qemu -c QEMU qemu

次に、コンパイルに必要なライブラリ、追加ソフトウエアをインストールして、libvirtを作ります。
留意 CentOS7などの起動スクリプトが systemd を使用するなら configure の際に --with-init-script=systemd を追加する

[root@c ~]# yum install libxml2-devel device-mapper-devel libpciaccess-devel python-devel libnl-devel libxml2-python \
readline-devel ebtables dnsmasq dmidecode pm-utils libxslt xhtml1-dtds yajl-devel libssh2-devel libgcrypt-devel 
/* [内訳]
   readline-devel virshのコマンド補完向け
   ebtables       bridge向け
   dnsmasq        forwardとdhcp向け
   dmidecode      BIOS情報の提供?
   pm-utils       電源管理。仮想マシンの電源管理?
      +hal,dbus       haldaemon[hal],messagebus[dbus]デーモン追加
   libxslt        warning: failed to load external entity "404.html.tmp"と表示されるので
 */
[root@c ~]# cd /opt/src/
[root@c src]# curl -O http://libvirt.org/sources/libvirt-3.0.0.tar.xz
 
[root@c src]# xz -cd libvirt-3.0.0.tar.xz | tar xf - && cd libvirt-3.0.0
 
[root@c libvirt-3.0.0]# export PATH=/sbin:/bin:/usr/sbin:/usr/bin
[root@c libvirt-3.0.0]# ./configure --localstatedir=/var --sysconfdir=/etc  \
                     --prefix=/opt/libvirt-3.0.0 --with-qemu-user=qemu --with-qemu-group=qemu \
                     --without-selinux --with-init-script=systemd
 
[root@c libvirt-3.0.0]# make && make check
[root@c libvirt-3.0.0]# make install
 /*
   インストール場所 /etc/libvirt/*
                    /etc/logrotate.d/{libvirtd.{qemu,lxc,uml},libvirtd}/
                    /etc/sysconfig/{libvirtd,libvirt-guests}/
                    /etc/rc.d/init.d/{virtlockd,libvirtd,libvirt-guests}/
                    /var/log/libvirt/{lxc,qemu,uml}/
                    /var/cache/libvirt/qemu/
                    /var/run/libvirt/{lockd,lxc,network,qemu,uml}/
                    /var/lib/libvirt/{boot,dnsmasq,filesystems,images,lockd,lxc,network,qemu,uml}/
                    /opt/libvirt-3.0.0/{bin,include,lib,libexec,sbin,share}/
  */
[root@c libvirt-3.0.0]#
[root@c libvirt-3.0.0]# (cd /opt && rm -f libvirt && ln -sv libvirt-3.0.0 libvirt)
`libvirt' -> `libvirt-3.0.0'
 
[root@c libvirt-3.0.0]# (cd /usr/bin; ln -sv /opt/libvirt/bin/* .)
`./virsh' -> `/opt/libvirt/bin/virsh'
`./virt-admin' -> `/opt/libvirt/bin/virt-admin'
`./virt-host-validate' -> `/opt/libvirt/bin/virt-host-validate'
`./virt-login-shell' -> `/opt/libvirt/bin/virt-login-shell'
`./virt-pki-validate' -> `/opt/libvirt/bin/virt-pki-validate'
`./virt-xml-validate' -> `/opt/libvirt/bin/virt-xml-validat
 
[root@c libvirt-3.0.0]# (cd /usr/sbin; ln -sv /opt/libvirt/sbin/* .)
`./libvirtd' -> `/opt/libvirt/sbin/libvirtd'
`./virtlockd' -> `/opt/libvirt/sbin/virtlockd'
`./virtlogd' -> `/opt/libvirt/sbin/virtlogd'
 
[root@c libvirt-3.0.0]# (cd /usr/libexec; ln -sv /opt/libvirt/libexec/* .)
`./libvirt-guests.sh' -> `/opt/libvirt/libexec/libvirt-guests.sh'
`./libvirt_iohelper' -> `/opt/libvirt/libexec/libvirt_iohelper'
`./libvirt_leaseshelper' -> `/opt/libvirt/libexec/libvirt_leaseshelper'
`./libvirt_lxc' -> `/opt/libvirt/libexec/libvirt_lxc'
`./libvirt_parthelper' -> `/opt/libvirt/libexec/libvirt_parthelper'

残念ながら自動起動スクリプト(libvirtd.service)はインストールしてくれないみたい。
なので手動でコピーします。コピー場所は「/etc/systemd/system」とする。

[root@c libvirt-3.0.0]# cp ./daemon/libvirtd.service        /etc/systemd/system/
[root@c libvirt-3.0.0]# cp ./tools/libvirt-guests.service   /etc/systemd/system/
[root@c libvirt-3.0.0]# cp ./src/virtlockd.service          /etc/systemd/system/
[root@c libvirt-3.0.0]# cp ./src/virtlogd.service           /etc/systemd/system/
 
[root@c libvirt-3.0.0]# cp ./src/virtlockd.socket           /etc/systemd/system/
[root@c libvirt-3.0.0]# cp ./src/virtlogd.socket            /etc/systemd/system/

一部修正します

[root@c ~]# diff -u /opt/src/libvirt-3.0.0/daemon/libvirtd.service /etc/systemd/system/libvirtd.service
--- /opt/src/libvirt-3.0.0/daemon/libvirtd.service      2017-01-31 02:45:02.718679796 +0900
+++ /etc/systemd/system/libvirtd.service        2017-01-31 19:48:43.903668894 +0900
@@ -19,7 +19,7 @@
 [Service]
 Type=notify
 EnvironmentFile=-/etc/sysconfig/libvirtd
-ExecStart=/opt/libvirt-3.0.0/sbin/libvirtd $LIBVIRTD_ARGS
+ExecStart=/opt/libvirt/sbin/libvirtd $LIBVIRTD_ARGS
 ExecReload=/bin/kill -HUP $MAINPID
 KillMode=process
 Restart=on-failure
[root@c ~]#

[root@c ~]# diff -u  /opt/src/libvirt-3.0.0/tools/libvirt-guests.service /etc/systemd/system/libvirt-guests.service
--- /opt/src/libvirt-3.0.0/tools/libvirt-guests.service 2017-01-31 02:45:28.172338869 +0900
+++ /etc/systemd/system/libvirt-guests.service  2017-01-31 19:50:51.952937627 +0900
@@ -13,8 +13,8 @@
 EnvironmentFile=-/etc/sysconfig/libvirt-guests
 # Hack just call traditional service until we factor
 # out the code
-ExecStart=/opt/libvirt-3.0.0/libexec/libvirt-guests.sh start
-ExecStop=/opt/libvirt-3.0.0/libexec/libvirt-guests.sh stop
+ExecStart=/opt/libvirt/libexec/libvirt-guests.sh start
+ExecStop=/opt/libvirt/libexec/libvirt-guests.sh stop
 Type=oneshot
 RemainAfterExit=yes
 StandardOutput=journal+console
[root@c ~]#

その後にlibvirtを稼動させます。

[root@c ~]# systemctl daemon-reload
[root@c ~]# systemctl enable libvirtd.service virtlockd.socket virtlogd.socket
[root@c ~]# systemctl start libvirtd.service

これでlibvirtは完成しましたが、QEMUらへの接続、ハード構成の定義はXMLファイルで定義されています。

virt-managerのインストール

次にvirt-managerをインストールします。 本家https://virt-manager.org/
libvirtを管理して、仮想マシン向けのリソース管理や仮想マシンの作成を行います。
っで、インストールの前にlibvirt-pythonが必要なのでこれをインストールします。

[root@c ~]# cd /opt/src/
[root@c src]# curl -O ftp://libvirt.org/libvirt/python/libvirt-python-3.0.0.tar.gz
[root@c src]# gzip -cd libvirt-python-3.0.0.tar.gz | tar xf - && cd libvirt-python-3.0.0
[root@c libvirt-python-3.0.0]#
[root@c libvirt-python-3.0.0]# export PATH=/sbin:/bin:/usr/sbin:/usr/bin
[root@c libvirt-python-3.0.0]# export PKG_CONFIG_PATH=/opt/libvirt/lib/pkgconfig
[root@c libvirt-python-3.0.0]# python setup.py build
[root@c libvirt-python-3.0.0]# python setup.py install --prefix=/opt/local

*コンパイルオプションは、python setup.py --help-commandで確認可能

次に、virt-manager本体をインストールします

[root@e ~]# cd /opt/src/
[root@c src]# curl -O https://fedorahosted.org/released/virt-manager/virt-manager-1.4.0.tar.gz
[root@e src]# gzip -cd virt-manager-1.4.0.tar.gz | tar xf - && cd virt-manager-1.4.0
 
[root@c virt-manager-1.4.0]# export PATH=/sbin:/bin:/usr/sbin:/usr/bin
[root@c virt-manager-1.4.0]# python setup.py configure --prefix=/opt/local
[root@c virt-manager-1.4.0]# python setup.py build
[root@c virt-manager-1.4.0]# python setup.py install

*コンパイルオプションは、python setup.py --help-commandで確認可能

他、libvirt-python、virt-managerのコンパイルに関係なく起動時にOS提供のパッケージで下記が必要になります。

[root@c ~]# yum install python-ipaddr python-requests vte3 libvirt-glib

virt-managerを起動

インストールした virt-manager を起動してみる。
*最低限、ディスクトップ環境でOSができてることが必要です。参考CentOS/memo#tc521664

[root@c ~]# export PATH=/opt/local/bin:$PATH
 
[root@c ~]# export PYTHONPATH=/opt/local/lib64/python2.7/site-packages
[root@c ~]# export LD_LIBRARY_PATH=/opt/libvirt/lib
[root@c ~]# virt-manager

起動画面
2016y08m31d_222957858.png

virt-viewer

[root@c ~]# cd /opt/src/
[root@c src]# yum install gtk-vnc2-devel gtk3-devel
[root@c src]# curl -O https://fedorahosted.org/released/virt-viewer/virt-viewer-5.0.tar.gz
[root@c src]# gzip -cd virt-viewer-5.0.tar.gz | tar xf - && cd virt-viewer-5.0
[root@c virt-viewer-5.0]#
[root@c virt-viewer-5.0]# export PKG_CONFIG_PATH=/opt/libvirt/lib
[root@c virt-viewer-5.0]# ./configure --prefix=/opt/local 
[root@c virt-viewer-5.0]# make && make install

ネットワーク

libvirtデーモンを起動すると自動的にNATを利用したプライベートネットワークが用意されてしまう。
それを防ぐために

[root@c ~]# virsh net-destroy  default
[root@c ~]# virsh net-autostart default --disable

コマンドで確認

ちょいと動作テスト

[root@c ~]# virsh
 
virsh # version
コンパイル時に使用したライブラリ: libvirt 3.0.0
使用中のライブラリ: libvirt 3.0.0
使用中の API: QEMU 3.0.0
実行中のハイパーバイザー: QEMU 2.8.0
 
virsh #
virsh # cpu-models x86_64
486
pentium
pentium2
(略)
 
virsh # nodeinfo
CPU モデル:       x86_64
CPU:                 4
CPU 周波数:       480 MHz
CPU ソケット数: 1
ソケットあたりのコア数: 4
コアあたりのスレッド数: 1
NUMA セル数:      1
メモリー容量:  8094196 KiB
 
virsh #

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-01-31 (火) 21:49:33 (114d)