kvm实战四:virt-clone克隆虚拟机

关于virt-clone,可以看man手册,很详细,很简单

克隆虚拟机时,虚拟机需要关机!virt-clone通过virsh list --all的虚拟机来克隆。此方法较为简单,是xml克隆虚拟机的补充!

一、查看当前存在的虚拟机

root@qqq:~# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     ubuntu18.04                    shut off

二、virt-clone克隆

--original指定源虚拟机的名字

--name指定新的虚拟机的名字

--file指定新的虚拟机磁盘存放的位置

root@qqq:~# virt-clone --original  ubuntu18.04     --name  ubuntu18.04_2 --file /data/kvm/ubuntu18.04_2.qcow2 

三、查看克隆的虚拟机

root@qqq:~# ls /data/kvm/ -lh
total 5.4G
-rw------- 1 root root 2.6G Dec  2 11:10 ubuntu18.04_2.qcow2
-rw-r--r-- 1 root root 2.8G Dec  2 05:50 ubuntu18.04.qcow2
root@qqq:~# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     ubuntu18.04                    shut off
 -     ubuntu18.04_2                  shut off

四、启动虚拟机通过vnc连

由于条件有限,我把内存改为512MB了,通过virsh edit <虚拟机名字>

root@qqq:~# virsh start ubuntu18.04 
Domain ubuntu18.04 started

root@qqq:~# virsh start ubuntu18.04_2
Domain ubuntu18.04_2 started
root@qqq:~# ss -ltn | grep :59
LISTEN   0         1                   0.0.0.0:5900             0.0.0.0:*       
LISTEN   0         1                   0.0.0.0:5901             0.0.0.0:*     

五、通过脚本获取虚拟机的IP

缺点:掩码24位还行,16位的话主机数量过多,会创建大量进程消耗CPU

root@qqq:~# cat 1.sh 
#!/bin/bash
#BY MRCO,2015-06-10
subnet=172.18.1

for ip in $subnet.{1..253};do
{
    ping -c1 -w1 $ip >/dev/null 2>&1
}&
done

running_vms=`virsh list |grep running`
echo -ne "共有`echo "$running_vms"|wc -l`个虚拟机在运行.\n"

for i in `echo "$running_vms" | awk '{ print $2 }'`;do
    mac=`virsh dumpxml $i |grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`
    ip=`ip nei |grep "$mac" |awk '{printf $1}'`
    printf "%-30s %-30s\n" $i $ip
done

六、删除虚拟机的vnc连接

vnc?关它干嘛,虚拟机连不上网了还要这样连呢!记得退出vnc时一定要CTRL+D。