全自动链接克隆KVM虚拟机

2018-02-06 分类:虚拟化 阅读(4385) 评论(0)

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

评论已关闭

登录

忘记密码 ?

切换登录

注册