说明:已分别在Ubuntu12.04和Ubuntu14.04测试通过
1.相关包的安装
1)官网获取源码(http://www.libvirt.org/sources),当前我们使用的版本是1.2.5
wget http://libvirt.org/sources/libvirt-1.2.5.tar.gz
2)在libvirt配置和编译前先安装部分相关包(说明:在安装之前可能需要更新源(sudo apt-get update),否则可能会无法正常安装软件包)
sudo apt-get install qemu-kvm libvirt-bin bridge-utils
sudo apt-get install ubuntu-vm-builder
sudo apt-get install virt-manager(可选) virtinst
其中,qemu-kvm提供了KVM必需的用户空间管理工具,libvirt-bin就是提供libvirt API和virsh管理工具,bridge-utils提供了管理网桥的brctl工具,Ubuntu-vm-builder提供了一个Ubuntu优化过的构建客户机的强大的命令行工具,virt-manager提供了图形界面下管理KVM的工具,virtinst提供了命令行下安装客户机的工具。
sudo apt-get install libvirt-dev libxml2 libxml2-dev gnutls-bin libneon27-gnutls libcurl4-gnutls-dev libnl-dev python-dev libyajl-dev libdevmapper-dev libpciaccess-dev uuid-dev
3)将已获取的源码解压,tar -zxvf libvirt-1.2.5.tar.gz
进入源码目录:cd libvirt-1.2.5
配置: ./configure (在配置过程中,可能会由于缺少编译时需要依赖的软件包而导致配置失败,这时只需要按照提示安装对应的软件包,然后重新运行”./configure”命令配置即可。)
编译:make -j 4
安装:make install (在配置和编译时都不需要root权限,但是在安装libvirt时一般都需要root用户权限。)
检查已安装的libvirt(以下四个命令如果能够正常显示相关目录及版本信息,则说明安装成功):
which libvirtd
libvirtd --version
which virsh
virsh -version
可能问题Q1:libvirtd:error while loading shared libraries: libivrt-lxc.so.0: cannot shared object file:No such file or directory
A1:修改系统动态链接库配置文件,方法:
进入目录/etc/ld.so.conf.d
新建命令:touch libvirt.conf
赋权限:sudo chmod 666 /etc/ld.so.conf.d/libvirt.conf
添加一个文件libvirt.conf,内容是:
# libvirt default configuration
/usr/local/lib
更新动态链接库缓存: sudo ldconfig
2.环境配置
libvirtd.conf是libvirt的守护进程libvirtd的配置文件,被修改后需要让libvirtd重新加载配置文件(或重启libvirtd)才会生效。下面几个配置项表示关闭TLS安全认证的连接(默认值是打开的)、打开TCP连接(默认是关闭TCP连接的),设置TCP监听的端口,TCP连接不使用认证授权方式,设置UNIX Domain socket的保存目录等。
sudo vi /usr/local/etc/libvirt/libvirtd.conf修改(配置)如下选项:
listen_tls = 0
listen_tcp = 1
tcp_port = “16509”
unix_sock_dir = “/var/run/libvirt”
auth_tcp = “none”
3.启动libvirtd
sudo /usr/local/sbin/libvirtd -d –l (说明:d代表daemon,l代表listen)
查看启动结果:
4.实际操作
sudo virsh list, 出现如下结果则说明安装配置成功,后续操作不需执行,否则继续查看相关报错解决方法:
可能问题Q2:Failed to connect socket to ‘/var/local/var/run/libivrt/libivrt-sock‘: No such directory
A2:sudo ln -s /var/run/libvirt/libvirt-sock /usr/local/var/run/libvirt/libvirt-sock
Q3: autotest@autotest0019:/etc/ # sudo /usr/local/sbin/libvirtd -d -l
sudo: unable to resolve host autotest0019
2014-07-29 11:22:53.319+0000: 31129: info : libvirt version: 1.2.5
2014-07-29 11:22:53.319+0000: 31129: warning : virGetHostname:654 : getaddrinfo failed for ‘autotest0019‘: Temporary failure in name resolution
/usr/local/sbin/libvirtd: error: Unable to obtain pidfile. Check /var/log/messages or run without --daemon for more info.
A3:sudo vi /etc/hosts
增加一行:IP 主机名
其他可能问题:
Q4:root@autotest0019:/etc/ld.so.conf.d# /usr/local/sbin/libvirtd -d -l
/usr/local/sbin/libvirtd: error: Unable to obtain pidfile. Check /var/log/messages or run without --daemon for more info.
root@autotest0019:/etc/ld.so.conf.d# /usr/local/sbin/libvirtd -l
2014-07-29 11:27:37.644+0000: 31256: info : libvirt version: 1.2.5
2014-07-29 11:27:37.644+0000: 31256: error : virPidFileAcquirePath:414 : Failed to acquire pid file ‘/usr/local/var/run/libvirtd.pid‘: Resource temporarily unavailable
A4:编辑一下/usr/local/var/run/libvirtd.pid,不修改,然后直接退出即可(貌似不太合理哦)。