六:如何克隆一个KVM虚拟机并重置该虚拟机

本文实践记录 Clone KVM虚拟机实战arrow-up-right

引言

如果你想构建一系列使用相同操作系统和配置的虚拟机,"克隆"(CLONE)是节约每个虚拟机安装时间点最好方式。virt-clone是有用的用于克隆虚拟机的工具,支持虚拟机唯一ID和MAC地址(当从现有虚拟机克隆时)。要执行克隆,被克隆的虚拟机需要处于关机状态。你需要在完成克隆虚拟机后使用virt-sysprep来执行新虚拟机的主机配置。

克隆虚拟机

  • 登陆到KVM主机或者管理节点

  • 列出运行的虚拟机

[root@UA-HA ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 18    UAKVM2                         running

[root@UA-HA ~]#
  • 暂停源虚拟机。由于需要确保虚拟机的所有数据和网络I/O已经停止需要执行这个步骤。你也可以关闭虚拟机

[root@UA-HA ~]# virsh suspend UAKVM2
Domain UAKVM2 suspended

[root@UA-HA ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 18    UAKVM2                         paused
[root@UA-HA ~]#
  • 克隆虚拟机

  • 恢复源虚拟机的运行

我们已经成功克隆了源虚拟机到新的虚拟机。但是新的克隆虚拟机依然使用了源虚拟机的配置(如主机名)需要清除。

virt-sysprep:准备虚拟机

译注 virt-sysprep 位于 libguestfs-tools-c 软件包(CentOS/RHEL)或 libguestfs-tools软件包(Debian/Ubuntu)

virt-sysprep用于重置或消除虚拟机的配置以获得全新的OS安装状态。virt-sysprep将删除SSH主机密钥,网络MAC地址,主机名以及用户账号。每个步骤都可以按需激活或关闭。virt-sysprep修改虚拟机或虚拟磁盘镜像而无需启动VM。

译注 virt-sysprep 如果只使用 -d domain_name 来重置克隆的虚拟机,则会将虚拟机重置成完全如同新安装的状态。通常我们会希望能够在初始化的时候设置一个初始root密码以及主机名,方便后续启动虚拟机后维护,具体参数组合见后述。

使用以下命令检查virt-sysprep工具执行的操作

virt-sysprep参数:

virt-sysprep 提供附加的选项来配置VM或模版:

例如使用virt-sysprep来设置root密码和主机名:

启动虚拟机

  • 启动虚拟机

  • 检查虚拟机状态

  • 使用virt-viewer检查虚拟机的控制台

  • 验证主机名是UACLONE,你可以看到virt-sysprep已经做好了设置

验证virt-sysprep

系列教程编译

本系列教程根据 UnixArena Linux KVMarrow-up-right 系列教程编译,共分以下文章:

Last updated