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。