首页 > 代码库 > KVM系列之虚拟克隆技术

KVM系列之虚拟克隆技术

背景

一般情况下,虚拟机承载主机上不止跑一台虚拟机,那么问题来了,如何快速批量部署?难道每台都从头根据系统提示一步一步进行安装?我真会疯掉的,那有没有什么好点的办法解决?办法肯定是有的,可以通过克隆技术制作相同的虚拟机,实现虚拟机快速部署。下面我就简单介绍两种实现方式。


实现方式:

    通过“virt-clone”命令,实现虚拟机克隆。

    通过复制磁盘、配置文件,实现虚拟机克隆。


虚拟机承载主机系统:

    CentOS 7.2.1511 X86_64


命令实现

前提条件

虚拟机的磁盘格式类型为qcow2。

被克隆主机需要关机。


克隆虚拟机

[root@controller ~]#  virt-clone --original windows_2k3  --name windows_2k3_01 --file /data/pool/windows_2k3_01

说明:

--original:指定克隆系统源

--name:指定新虚拟机名称

--file:指定新虚拟机存放位置


修改虚拟配置文件

[root@controller ~]# virsh edit windows_2k3_01

<graphics type=‘vnc‘ port=‘-1‘ autoport=‘yes‘>

改为

<graphics type=‘vnc‘ port=‘5911‘ autoport=‘no‘>

或者

[root@controller ~]# vim  /etc/libvirt/qemu/windows_2k3_01.xml

[root@controller ~]# virsh define  /etc/libvirt/qemu/windows_2k3_01.xml


添加VNC窗口

[root@controller ~]# cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:11.service


启动虚拟机

[root@controller ~]# virsh start windows_2k3_01


连接VNC

技术分享

技术分享

注意:如果克隆的是linux系统,启动系统后需要处理虚拟网络。


Copy 实现

Copy 磁盘镜像、配置文件

[root@controller ~]# cp /data/pool/windows_2k3 /data/pool/windows_2k3_02

[root@controller ~]# cp /etc/libvirt/qemu/windows_2k3.xml /etc/libvirt/qemu/windows_2k3_02.xml


修改配置文件

[root@controller ~]# vim /etc/libvirt/qemu/windows_2k3_02.xml 

 改为:<name>windows_2k3_02</name>

 删除:<uuid>3230baaa-88e9-4289-8c96-d6621c35cd97</uuid>

 改为:<source file=‘/data/pool/windows_2k3_02‘/>

 删除:<mac address=‘52:54:00:87:c2:2a‘/>

 改为:<graphics type=‘vnc‘ port=‘5912‘ autoport=‘no‘>

[root@controller ~]# virsh define /etc/libvirt/qemu/windows_2k3_02.xml 


添加VNC窗口

[root@controller ~]# cp /lib/systemd/system/vncserver@:11.service /lib/systemd/system/vncserver@:12.service


启动虚拟机

[root@controller ~]# virsh start windows_2k3_02


查看虚拟机列表

[root@controller ~]# virsh  list --all

 Id    名称                         状态

----------------------------------------------------

 12    windows_2k3_01                 running

 13    windows_2k3_02                 running

 -     windows_2k3                    关闭


连接VNC

技术分享


技术分享

信息对比

技术分享

网络对比

技术分享


扩展内容

        对配置文件不熟悉,修改起来比较困难,能否自动生成配置文件?可以的,只需要复制磁盘镜像,通过执行“virt-install”命令,就可实现自动生成配置文件,前提需要知道被克隆虚拟主机创建时的硬件配置参数(最重要的是磁盘信息)。

比如之前创建windows_2k3的命令如下

virt-install -n windows_2k3 -r 1024 -vcpus=1  -c /data/iso/windows_server_2003.iso --disk path=/data/pool/windows_2k3,format=qcow2,size=30,bus=ide  --hvm --os-type=windows  --vnc --vncport 5910 --network network=default --force --autostart

改为

virt-install -n windows_2k3_03 -r 1024 -vcpus=1  -c /data/iso/windows_server_2003.iso --disk path=/data/pool/windows_2k3_03,format=qcow2,size=30,bus=ide  --hvm --os-type=windows  --vnc --vncport 5913 --network network=default --force --autostart

注意:只需要修改三个地方:-n 、--disk path、--vncport。


FQA

Q:克隆虚拟机能使用远程桌面连接?

A:可以,需要在被克隆主机配置固定IP、创建用户密码、开启远程功能,系统克隆后就可使用远程桌面进行连接,连接需要修改IP地址,否则下一虚拟机的克隆会存在IP冲突。


Q:网络有重名

A:我的电脑--属性--计算机名--更改--输入新计算机名称--重启系统即可。


Q:克隆linux系统,启动如何处理网络问题?

A:需要处理70-persistent-net.rules和ifcfg-eth0文件

[root@KVM_Clinet ~]# rm -rf  /etc/udev/rules.d/70-persistent-net.rules

[root@KVM_Clinet ~]# vi  /etc/sysconfig/network-scripts/ifcfg-eth0

删除MAC跟UUID,还可以手动配置静态IP(不是比改项),然后重启系统。


本文出自 “Scorpions丶毒” 博客,请务必保留此出处http://scorpions.blog.51cto.com/7138036/1920293

KVM系列之虚拟克隆技术