全自动链接克隆KVM虚拟机
virt-clone这个命令是基于全克隆的,也就是拷贝虚拟磁盘文件和虚拟配置文件来实现的完整克隆,速度慢,占用空间多
kvm软件包中并没有实现全自动链接克隆的命令或工具,只能手动实现,于是我决定写一个脚本来搞定kvm虚拟机的自动链接克隆
想自动,先手动
一、手动克隆:
第一步:创建基于链接克隆的虚拟磁盘文件
第二步:修改xml配置文件
1)修改name虚拟机名称 2)删除uuid,导入之后会自动生成新的uuid 3)修改虚拟磁盘文件存储路径 4)删除mac地址,导入之后会自动生成新的mac地址 5)删除channel部分中带有source路径的行,如<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-node1/org.qemu.guest_agent.0'/> 防止出现以下报错: qemu-kvm: -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-vm1/org.qemu.guest_agent.0,server,nowait: Failed to bind socket: Permission denied 2016-10-20T02:20:11.713371Z qemu-kvm: -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-vm1/org.qemu.guest_agent.0,server,nowait: chardev: opening backend "socket" failed
第三步:导入要被克隆的虚拟机
第四步:测试启动
下面献上比较简陋的自动化脚本,看不下去的可自行完善。
#!/bin/bash old_vm=$1 new_vm=$2 new_xml="/tmp/${new_vm}.xml" virsh dumpxml $old_vm >$new_xml old_disk=`grep qcow2 $new_xml|awk -F "'" '/source file/{print $2}'` tmp_dir=`dirname $old_disk` new_disk=${tmp_dir}/${new_vm}.qcow2 #1.创建基于链接克隆的虚拟磁盘文件 qemu-img create -f qcow2 -b $old_disk $new_disk #2.修改xml配置文件 sed -i '/uuid/d' $new_xml sed -i '/mac address/d' $new_xml sed -i '2s#'$old_vm'#'$new_vm'#' $new_xml sed -i 's#'$old_disk'#'$new_disk'#g' $new_xml sed -i '/\/var\/lib\/libvirt\/qemu\/channel\/target/d' $new_xml #3.导入要被克隆的虚拟机 virsh define $new_xml #4.测试启动 virsh start $new_vm