一、完整克隆
-
关机或挂起
$ virsh destroy centos7
使用 virt-clone 克隆虚拟机之前,必须先挂起或者关闭 kvm 虚拟机。
-
执行克隆
$ virt-clone -o centos7 -n web01 -f /opt/centos7.qcow2 -o :指定源虚拟机名称 -n :指定新克隆的虚拟机名称 -f :指定新克隆虚拟机磁盘的位置
克隆虚拟机时 -f 指定的文件不要事先创建;
如果有多个磁盘文件就多个 -f 选项,如:
$ virt-clone -o centos7 -n web01 -f /opt/centos7.qcow2 -f /opt/centos7-add1.qcow2
-
克隆虚拟机 ip 地址问题
克隆完成后需要修改IP、HOSTNAME、Centos6 需要删除 /etc/udev/rule.d/70–net 文件并重启。
二、链接克隆
-
基于源磁盘文件,创建链接磁盘文件
$ qemu-img create -f qcow2 -b <old_disk> <new_disk>
-
生成虚拟机的配置文件
$ virsh dumpxml centos7 >web02.xml $ sed -i '/uuid/d' web02.xml # 删除uuid,导入之后会自动生成新的uuid $ sed -i '/mac address/d' web02.xml # 删除mac地址,导入之后会自动生成新的mac地址 $ sed -i '2s#'centos7'#'web02'#' web02.xml # 修改name虚拟机名称 $ sed -i 's#'/opt/centos7.qcow2'#'/opt/web02.qcow2'#g' web02.xml # 修改虚拟磁盘文件存储路径 $ sed -i '/\/var\/lib\/libvirt\/qemu\/channel\/target/d' web02.xml # 删除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
-
注册克隆的虚拟机
$ virsh define web02.xml
-
测试启动
$ virsh start web02