KVM像其他的虚拟机产品有相同的克隆方式,一种是连接方式的克隆,另一种是完全克隆的方式。但是,一般情况下我们使用连接克隆,使用这种克隆方式的时候会节省硬盘的空间,而且还能够快速的进行虚拟机的克隆,而采用完全克隆的方式很明显会增加硬盘的使用空间。
下面对虚拟机的连接克隆的方式进行总结,通过相同的模式,来进行虚拟机的克隆,然后通过脚本的方式来进行这一系列的操作的自动化进行。借此巩固知识,提升自己。
虚拟机克隆方式为连接克隆时:
一、在模板虚拟机内部操作的步骤
1)将模板虚拟机的MAC删掉
#cat /etc/sysconfig/network-scripts/ifcfg-eth0
2)删除网卡的UDEV
#sed -i '1,$d' /etc/udev/rules.d/70-persistent-net.rules
二、在物理机上操作的步骤
0)克隆前确定模板的磁盘文件是否为qcow2格式,如果不是需要转换
[root@kvm qemu]#qemu-img info /var/lib/libvirt/images/shiwei1.img
image: /var/lib/libvirt/images/shiwei1.img
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 1.3G
cluster_size: 65536
如果显示上边的信息,表示磁盘格式为qcow2
[root@kvm qemu]#qemu-img convert -f raw -O qcow2 test.raw test.qcow2
[root@kvm qemu]#qemu-img info test.qcow2 #查看格式命令
1)克隆模板的磁盘文件
[root@kvm qemu]#qemu-img create -f qcow2 -b test.qcow2 test2.qcow2
2)克隆模板的配置文件
[root@kvm qemu]#virsh dumpxml test > /etc/libvirt/qemu/test2.xml
3)删掉网卡的MAC
[root@kvm qemu]#vim /etc/libvirt/qemu/test2.xml
<mac address='52:54:00:d2:55:41'/>
4)清除模板虚拟机的UUID
<uuid>9c60d018-5216-ccdd-1d87-0d2915b4a4da</uuid>
5)修改磁盘名称
<source file='/var/lib/libvirt/images/shiwei1.img'/>
6)虚拟机name
<name>shiwei</name>
7)重新定义一个虚拟机
[root@kvm qemu]#virsh define /etc/libvirt/qemu/test2.xml
下面介绍一下这个过程中的注意的问题,我们知道了如何进行操作,也要明白其中的道理,为什么要这样进行操作,以及这样操作我们可以实现什么样的效果。
在虚拟机中的操作:将模板虚拟机内部的MAC地址删除,我们知道在同一个网络中我们必须保证不存在相同的两个MAC地址,如果存在相同的mac地址的话,我们就不能保证两个主机间的通信,而克隆,我们知道它的含义就是和原来的相同,不经过修改的话就是一样的,所以我们要删除MAC地址。
删除网卡的UDEV:UDEV是什么东西呢?它是在我们系统中记录系统硬件变化的一个文件夹,我们知道当我们安装好一个有网卡的系统时,我们的网卡的信息就记录在相应的这个70-persistent-net.rules文件下,而此时的这个网卡的编号为eth0,但是如果我们的网卡坏掉了,我们将自己的网卡更换了一块,这时我们在进入系统时,看到的网卡就已经不再是eth0了,而是eth1,原因就是我们的网卡的mac地址不同,而这个文件是通过MAC地址来进行区别的。如果是磁盘,与这种情况类似,只不过编号不同,而是sda,sdb等,它是通过总线来进行区分的。(以上问题引申出来的一个东西,sed,强大工具的学习,积累和巩固)
在实体机上的操作:我们建立的虚拟机其实主要有两个文件,一个是磁盘文件,另外一个是配置文件,其中磁盘文件一般默认位置在/var/lib/libvirt/images/文件夹下,我们可以复制这里面的磁盘文件,以此来克隆虚拟机。但是需要注意的是,我们如果不知道我们磁盘文件的格式的话,最好是查看一下磁盘文件的格式,然后在进行磁盘文件的复制。另外的配置文件,每一个虚拟机都有唯一个配置文件,这个配置文件定义了虚拟机的磁盘的位置,虚拟机中的网络配置,硬件配置等信息。我们对文件进行相应的修改作为虚拟机模板。
通过对配置文件中四个地方的修改来完成克隆虚拟主机的配置文件生成,但是这里我们发现我们再次修改了mac地址,但是在上面的虚拟机中我们已经修改了相应的配置文件了,为什么这里我们还需要进行修改呢?原因是:我们都知道,在我们的硬件的中是存在着MAC地址的,而通过操作系统我们可以修改MAC地址,但是如果我们重新启动系统,我们的MAC地址有回到了原来,原因是,这个mac地址是写到了硬件中的,不能被修改的。这里其实是相同的道理,我们在内部修改mac,在实体机上也要进行修改。
创建的虚拟机的几种访问的方式:
直接进行访问,使用图形化界面;
使用xshell等远程连接的方式;
通过console的方式,这种方式我们需要在相应的虚拟机中的/etc/grub.conf中进行配置这样的一行参数,console=ttyS0,注意是大写的S和数字0