云计算&虚拟化-kvm-克隆(clone)虚拟机

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:

1.虚拟化介绍

2.kvm基本使用

3.kvm进阶使用(本小节属于)

4.kvm技术原理

5.vmware介绍&使用

6.小结

通过前面的学习,我们已经掌握了创建虚拟机及安装虚拟机的操作,但是我们总不能每创建一个虚拟机都去手工安装一次系统,而且还要对每台虚拟机做一次初始化操作。我们有什么办法可以把系统安装+初始化都封装到一起,然后后面创建虚拟机都基于这个模板创建,加快效率呢?这个就是本小节要讲解的内容,克隆(clone)虚拟机。

  1. 什么是 KVM 克隆
  • KVM(Kernel - Based Virtual Machine)克隆是指在 KVM 虚拟化环境下,通过复制现有虚拟机(源虚拟机)的配置和磁盘数据来创建新虚拟机的过程。这就好比复制一份已有的计算机系统,包括操作系统、应用程序和数据等,以快速创建多个相似的虚拟机实例。
  1. 克隆的类型
  • 全量克隆(完整克隆):

  • 全量克隆会创建一个源虚拟机的完整副本。它复制源虚拟机的所有磁盘内容、配置信息等,生成一个全新的、独立的虚拟机。新虚拟机和源虚拟机在初始状态下几乎完全相同,包括操作系统、已安装的软件、用户数据等。这种克隆方式就像是完全复制了一台物理计算机,新虚拟机有自己独立的磁盘空间,后续对新虚拟机的操作不会影响源虚拟机,反之亦然。

  • 链接克隆(增量克隆):

  • 链接克隆则是一种更节省磁盘空间的克隆方式。它创建的新虚拟机与源虚拟机共享大部分磁盘数据。新虚拟机在初始时只记录与源虚拟机的差异部分,只有当新虚拟机需要修改数据时,才会在自己的磁盘空间中创建新的数据块。这种方式适合创建大量相似的虚拟机,因为它可以大大减少磁盘空间的占用。

  • 简单来说,全量克隆会复制一个新文件和原来文件一样大,链接克隆则不会,他只会产生一个新的连接文件,底层文件和原来的镜像共享。

3.KVM克隆(clone)命令

arduino 复制代码
virt-clone -o vm1 -n vm2 --file /data/image/vm2
  • -o 是原始虚拟机(需要处于关机状态)

  • -n 是新虚拟机

  • --file 是新虚拟机磁盘文件(需要不存在)

确保uuid不冲突

xml 复制代码
[root@localhost qemu]# cat  rocky31.197* |grep uuid -i  
<uuid>d594982d-4b82-4c93-85b3-f6f94899149b</uuid>
<uuid>8e60047d-b2eb-4393-965d-a4196eeadcff</uuid>

确保mac地址不冲突

ini 复制代码
[root@localhost qemu]# cat  rocky31.197* |grep mac -i
    <type arch='x86_64' machine='pc-q35-rhel9.4.0'>hvm</type>
      <mac address='52:54:00:f3:8f:43'/>
    <type arch='x86_64' machine='pc-q35-rhel9.4.0'>hvm</type>
<mac address='52:54:00:19:9e:bf'/>

这样我们就可以预先创建一个虚拟机,并按照我们的要求进行初始化,然后以后创建虚拟机都基于这个模板来创建,我们的创建的虚拟机就可以使用,不用安装系统,也不用做初始化操作。实际上公有云也就是类似操作方式,只是他还会涉及到一个cloud-init的初始化组件,这个我们后面会单独来讲。

这个克隆的主机和原始主机一样,如果系统里面有些配置是固定的,比如ip地址则克隆出来的ip也和以前的ip地址一样,克隆完成以后需要对这些信息进行修改。公有云所有ip地址都是dhcp,没有使用固定ip,也许有这个考量。

4.手工克隆

严格来说,这个可能不叫克隆,应该叫复制好一点。也就是复制虚拟机的xml文件和镜像文件,然后修改这个xml里面需要修改的内容,包括名字,uuid,镜像文件,mac地址,然后在执行重新定义命令。

bash 复制代码
#复制xml文件
cp /etc/libvirt/qemu/vm1.xml /etc/libvirt/qemu/vm2.xml

#复制镜像文件,具体路径以现场为准
cp /data/image/vm1.qcow2 /data/image/vm2.qcow2

#修改名字,uuid,镜像文件路径,mac,其他根据需要修改
vi /etc/libvirt/qemu/vm2.xml

#重新定义虚拟机
virsh destroy /etc/libvirt/qemu/vm2.xml

#这样配置就完成,可以启动和查看

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
Python私教19 分钟前
除了 Docker,还有哪些类似的容器技术?
运维·docker·容器
titxixYY20 分钟前
SElinux
linux·运维·服务器
聚名网1 小时前
手机无法连接服务器1302什么意思?
运维·服务器·智能手机
香吧香2 小时前
getent使用小结
linux
麻瓜也要学魔法2 小时前
Linux关于vim的笔记
linux·笔记·vim
云边的快乐猫3 小时前
navicat远程连接虚拟机centos系统的mysql
linux·mysql·centos·虚拟机·navicat
望获linux3 小时前
在 ARM 平台上如何实现Linux系统的1秒启动
linux·服务器·开发语言·数据库·操作系统·嵌入式操作系统·arm平台
先天打工圣体的男人3 小时前
Linux中安装InfluxDB
linux·运维·服务器
陌小呆^O^4 小时前
CmakeList.txt之Linux-pthread
linux·运维·服务器