红联Linux门户
Linux帮助

安装KVM以及配置热迁移环境

发布时间:2017-02-24 09:30:12来源:linux网站作者:小白的学习笔记
Ubuntu14.04配置KVM/Libvirt虚拟化环境
1.在每台物理机上安装KVM以及其它依赖包
sudo apt-get install qemu-kvm libvirt-bin bridge-utils
sudo apt-get install qemu-system
sudo apt-get install virt-manager
2.重启libvirt服务
sudo service libvirt-bin restart
3.启动virt-manager并创建虚拟机,shell命令为:
virt-manager
启动后界面如下:
安装KVM以及配置热迁移环境
 
NFS服务安装配置
服务端
1)选择一台配置了虚拟化环境的物理机作为nfs服务端,安装nfs server,
sudo apt-get install nfs-kernel-server nfs-common
2)设置nfs共享目录/var/lib/libvirt/images,这个目录是libvirt默认存放镜像的地方,可以更改。最好将目录/var/lib/libvirt/images设置权限为777,否则客户端可能没有访问权限(如果对安全性要求较高,可进一步考虑)。
sudo chmod 777 /var/lib/libvirt/images
sudo vi/etc/exports
在文件末尾添加行:
/var/lib/libvirt/images guestHostIp(rw, sync)
其中 guestHostIp是客户端地址,也可以用通配符表示一个地址段,如192.168.1.*
3)重启nfs server:
sudo service nfs-kernel-server restart
客户端
1)安装nfs client
sudo apt-get install nfs-common
2)查看nfs server上共享的目录,假设192.168.xx.xx为服务端ip地址
showmount -e 192.168.xx.xx
正常的话应该输出:
/var/lib/libvirt/images guestHostIp(rw, sync)
3)执行挂载
sudo mount -t nfs192.168.xx.xx:/var/lib/libvirt/images /var/lib/libvirt/images
4)修改/etc/fstab文件,设置开机自动挂载,在文件末尾添加一行
sudo vi /etc/fstab
192.168.xx.xx:/var/lib/libvirt/images  /var/lib/libvirt/images nfs defaults 0 0
5)测试
在客户端的/var/lib/libvirt/images目录创建一个文件a,看看在服务端是否发现这个文件a,如果有则配置成功。
客户端:
cd /var/lib/libvirt/images
touch a
服务端:
ls /var/lib/libvirt/images
 
配置使用libvirt进行热迁移:
1)修改文件/etc/libvirt/libvirtd.conf,将相应表项改为如下所示:
listen_tls = 0
listen_tcp = 1
auth_tcp = “none”
2)修改文件Edit/etc/init/libvirt-bin.conf
env libvirtd_opts="-d -l"
3)修改文件/etc/default/libvirt-bin
#options passed to libvirtd, add "-l" to listen on tcp
libvirtd_opts="-d-l"
4)重启libvirt
sudo service libvirt-bin restart
5)执行热迁移,使用virsh命令,或者使用下面的Python脚本。在shell命令中,假设192.168.137.138为目的物理机的IP。
sudo virsh migrate --live vm1 qemu+tcp://192.168.137.138/system 
Python脚本,第一个参数为源物理机,第二个参数为目的物理机,第三个参数为虚拟机名字,注意要修改红色的用户名部分。
import sys
import libvirt
source = sys.argv[1]
dest = sys.argv[2]
vm = sys.argv[3]
conn_sour = libvirt.open('qemu+tcp://username@'+source+'/system')
conn_dest = libvirt.open('qemu+tcp://username@'+dest+'/system')
#search vm
vm_domain = conn_sour.lookupByName(vm)
#the meaning of parameters :(self._o, dconn__o, flags,dname, uri, bandwidth)
#connection of source PM, whether live migration, vmname, uri, bandwidth
print vm_domain.migrate(conn_dest,True,vm,None,0)
 
本文永久更新地址:http://www.linuxdiyf.com/linux/28647.html