Ubuntu14.04配置KVM/Libvirt虚拟化环境



  1. 在每台物理机上安装KVM以及其它依赖包
1. sudo apt-get install qemu-kvm libvirt-bin bridge-utils
sudo apt-get install qemu-system
sudo apt-get install virt-manager
  1. 重启libvirt服务
    sudo service libvirt-bin restart
  2. 启动virt-manager并创建虚拟机,shell命令为:
    virt-manager


        启动后界面如下:





                                     

kvm虚拟机迁移 kvm虚拟机迁移至uis_客户端



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
1. 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)