Linux云计算虚拟化-KVM虚拟机克隆和快照

不念不忘少年蓝@ 2022-12-27 07:38 247阅读 0赞

文章目录

  • Linux云计算虚拟化-KVM虚拟机克隆和快照
      1. 克隆
      1. 快照
      • 2.1 虚拟机快照介绍
      • 2.2 创建kvm快照
      1. virsh命令扩展介绍
      1. 镜像格式转换

Linux云计算虚拟化-KVM虚拟机克隆和快照

1. 克隆

虚拟机处于关机状态才可以克隆。
克隆语法virt-clone -o 原虚拟机 -n 新虚拟机 -f 新虚拟机存放路径

  1. # qcow2是centos7默认的虚拟机镜像格式
  2. [root@server images]# ll -h
  3. 总用量 11G
  4. -rw-------. 1 root root 11G 12 8 20:44 centos7.0.qcow2
  5. -rw-r--r--. 1 qemu qemu 973M 12 8 13:41 CentOS-7-x86_64-Minimal-2009.iso
  6. # 创建克隆
  7. [root@server images]# virt-clone -o centos7.0 -n centos7_clone -f /var/lib/libvirt/images/centos7_clone.img
  8. 正在分配 'centos7_clone.img' | 10 GB 00:04
  9. 成功克隆 'centos7_clone'
  10. # 可以看到,克隆的虚拟机分配了10G,但实际仅占1.6G。
  11. [root@server images]# ll -h
  12. 总用量 13G
  13. -rw-------. 1 root root 11G 12 8 20:44 centos7.0.qcow2
  14. -rw-------. 1 root root 1.6G 12 8 20:53 centos7_clone.img
  15. -rw-r--r--. 1 qemu qemu 973M 12 8 13:41 CentOS-7-x86_64-Minimal-2009.iso
  16. [root@server images]# df -h
  17. 文件系统 容量 已用 可用 已用% 挂载点
  18. /dev/mapper/centos-root 8.0G 4.4G 3.7G 55% /
  19. devtmpfs 1.9G 0 1.9G 0% /dev
  20. tmpfs 1.9G 0 1.9G 0% /dev/shm
  21. tmpfs 1.9G 13M 1.9G 1% /run
  22. tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
  23. /dev/sdb 50G 13G 38G 26% /var/lib/libvirt/images
  24. /dev/sda1 1014M 180M 835M 18% /boot
  25. tmpfs 378M 4.0K 378M 1% /run/user/42
  26. tmpfs 378M 32K 378M 1% /run/user/0

在这里插入图片描述

kvm虚拟机虚拟机配置文件镜像img组成。

  1. # 每一台虚拟机都会有一个xml文件,该文件为虚拟机配置文件。
  2. [root@server ~]# cd /etc/libvirt/qemu/
  3. [root@server qemu]# ll
  4. 总用量 16
  5. -rw-------. 1 root root 4584 12 8 20:22 centos7.0.xml
  6. -rw-------. 1 root root 4594 12 8 20:53 centos7_clone.xml
  7. drwx------. 3 root root 42 11 17 00:30 networks

对比下原虚拟机配置文件和克隆后的虚拟机配置文件,看有什么是不一样的:
①虚拟机名称
②虚拟机uuid
③使用的源镜像文件
④mac地址

在这里插入图片描述
在这里插入图片描述
克隆后的虚拟机的UUID会与源虚拟机相同,需要删除重启后生成新的UUID

2. 快照

2.1 虚拟机快照介绍

虚拟机快照格式介绍:






























快照格式 备注
cow 未成熟就被放弃
qcow 取代cow
qcow2 取代qcow,目前centos7默认镜像格式,支持snapshot快照
raw 老牌镜像格式,centos6上的kvm和xen的默认格式,不支持snapshot快照
vmdk vmware的镜像格式

kvm快照方法:
①使用lvm快照
②使用qcow2格式的镜像创建快照

2.2 创建kvm快照

①查看kvm磁盘格式:

  1. # 查看kvm磁盘格式
  2. [root@server images]# qemu-img info centos7_clone.img
  3. image: centos7_clone.img
  4. file format: qcow2
  5. virtual size: 10G (10737418240 bytes)
  6. disk size: 1.6G
  7. cluster_size: 65536
  8. Format specific information:
  9. compat: 1.1
  10. lazy refcounts: true
  11. [root@server images]# qemu-img info centos7.0.qcow2
  12. image: centos7.0.qcow2
  13. file format: qcow2
  14. virtual size: 10G (10737418240 bytes)
  15. disk size: 10G
  16. cluster_size: 65536
  17. Format specific information:
  18. compat: 1.1
  19. lazy refcounts: true

②创建kvm快照:
虚拟机处于开机状态关机状态都可以创建快照,关机创建快照相对快些。
快照名支持中文
格式
virsh snapshot-create 虚拟机名
virsh snapshot-create-as 虚拟机名 快照名

③查看某个虚拟机有哪些快照:
virsh snapshot-list 虚拟机名

  1. [root@server images]# virsh snapshot-create centos7.0
  2. 已生成域快照 1607601603
  3. [root@server images]# virsh snapshot-create-as centos7.0 httpd
  4. 已生成域快照 httpd
  5. [root@server images]# virsh snapshot-list centos7.0
  6. 名称 生成时间 状态
  7. ------------------------------------------------------------
  8. 1607601603 2020-12-10 20:00:03 +0800 running
  9. httpd 2020-12-10 20:00:38 +0800 running

④查看当前最新的快照版本:
virsh snapshot-current 虚拟机名
在这里插入图片描述

⑤查看快照配置文件:
ll /var/lib/libvirt/qemu/snapshot/虚拟机名/

  1. [root@server ~]# ll /var/lib/libvirt/qemu/snapshot/centos7.0/
  2. 总用量 16
  3. -rw-------. 1 root root 5838 12 10 20:00 1607601603.xml
  4. -rw-------. 1 root root 5884 12 10 20:00 httpd.xml

⑥查看快照占用大小:
qemu-img info 虚拟机名
在这里插入图片描述

⑦查看虚拟机的状态:
virsh domstate 虚拟机名

  1. [root@server images]# virsh domstate centos7.0
  2. running

⑧恢复虚拟机快照:
virsh snapshot-revert 虚拟机名 快照名
⑨删除快照:
virsh snapshot-delete 虚拟机名 快照名

3. virsh命令扩展介绍

①查看virsh版本
virsh version

  1. [root@server images]# virsh version
  2. 根据库编译:libvirt 4.5.0
  3. 使用库:libvirt 4.5.0
  4. 使用的 API: QEMU 4.5.0
  5. 运行管理程序: QEMU 1.5.3

②导出虚拟机的配置文件【在创建一台kvm虚拟机后,最后都导出其配置文件,这样若取消了虚拟机的定义,也可以添加回来。】
virsh dumpxml 虚拟机名 > xml配置文件名

  1. [root@server images]# virsh dumpxml centos7.0 > /root/a.xml
  2. [root@server images]# ll /root/a.xml
  3. -rw-r--r--. 1 root root 6004 12 10 20:38 /root/a.xml

③取消虚拟机的定义。 会删除/etc/libvirt/qemu/目录下对应虚拟机的配置文件,并在图形界面管理器中移除该虚拟机。【如果在未备份虚拟机配置文件的情况下,取消了虚拟机的定义,这时将无法找回该虚拟机。】
virsh undefine 虚拟机名

  1. [root@server ~]# virsh undefine centos7_clone
  2. centos7_clone 已经被取消定义

④添加虚拟机的定义。 会在/etc/libvirt/qemu/目录下添加虚拟机配置文件,并在图形界面管理器中添加该虚拟机。
virsh define 配置文件绝对路径

  1. [root@server ~]# virsh define centos7.0.xml
  2. 定义域 centos7.0(从 centos7.0.xml

⑤强制关闭虚拟机
virsh destroy 虚拟机名
⑥挂机虚拟机
virsh suspend 虚拟机名
⑦恢复虚拟机
virsh resume 虚拟机名
⑧控制台管理虚拟机
virsh console 虚拟机名
⑨取消虚拟机开机自启
virsh autostart --disable 虚拟机名

  1. [root@server ~]# virsh start centos7.0
  2. centos7.0 已开始
  3. [root@server ~]# virsh suspend centos7.0
  4. centos7.0 被挂起
  5. [root@server ~]# virsh resume centos7.0
  6. centos7.0 被重新恢复
  7. [root@server ~]# virsh autostart --disable centos7.0
  8. centos7.0取消标记为自动开始
  9. [root@server ~]# virsh autostart centos7.0
  10. centos7.0标记为自动开始
  11. [root@server ~]# virsh list
  12. Id 名称 状态
  13. ----------------------------------------------------
  14. 2 centos7.0 running
  15. [root@server ~]# virsh destroy centos7.0
  16. centos7.0 被删除
  17. [root@server ~]# virsh list
  18. Id 名称 状态
  19. ----------------------------------------------------
  20. [root@server ~]# virsh list --all
  21. Id 名称 状态
  22. ----------------------------------------------------
  23. - centos7.0 关闭

4. 镜像格式转换

格式qemu-img convert -f 原镜像格式 -O 转换后镜像格式 原镜像路径 转换后镜像路径
①关闭虚拟机
virsh shutdown 虚拟机名

  1. [root@server ~]# virsh shutdown centos7.0

②镜像转换

  1. [root@server ~]# qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/centos7.0.raw

③查看镜像格式

  1. # 可以看到镜像格式转换后,是不会覆盖原来的镜像格式的。
  2. [root@server ~]# qemu-img info /var/lib/libvirt/images/centos7.0.raw
  3. image: /var/lib/libvirt/images/centos7.0.raw
  4. file format: raw
  5. virtual size: 10G (10737418240 bytes)
  6. disk size: 1.5G
  7. [root@server ~]# ll /var/lib/libvirt/images/centos7.0.*
  8. -rw-------. 1 root root 11588600320 12 10 21:06 /var/lib/libvirt/images/centos7.0.qcow2
  9. -rw-r--r--. 1 root root 10737418240 12 10 21:10 /var/lib/libvirt/images/centos7.0.raw

其他镜像格式转换:
①将 vmdk 转换为 qcow2
qemu-img convert -f vmdk -O qcow2 /var/lib/libvirt/images/centos7.0.vmdk /var/lib/libvirt/images/centos7.0.qcow2

②将 qcow2 转换为 vmdk
qemu-img convert -f qcow2 -O vmdk /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/centos7.0.vmdk
③将 qcow2 转换为 raw
qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/centos7.0.raw
④将 raw 转换为 qcow2
qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/centos7.0.raw /var/lib/libvirt/images/centos7.0.qcow2

修改虚拟机配置文件,使用raw格式镜像文件来启动虚拟机:
法一virsh edit 虚拟机名

  1. [root@server ~]# virsh edit centos7.0
  2. 编辑了域 centos7.0 XML 配置。
  3. 36 <driver name='qemu' type='raw'/>
  4. 37 <source file='/var/lib/libvirt/images/centos7.0.raw'/>

法二vim 虚拟机配置文件,重启libvirtd服务

  1. [root@server ~]# vim /etc/libvirt/qemu/centos7.0.xml
  2. 43 <driver name='qemu' type='raw'/>
  3. 44 <source file='/var/lib/libvirt/images/centos7.0.raw'/>
  4. [root@server ~]# systemctl restart libvirtd

发表评论

表情:
评论列表 (有 0 条评论,247人围观)

还没有评论,来说两句吧...

相关阅读

    相关 虚拟快照

    一、虚拟机快照 如果你在使用虚拟机系统的时候(比如linux),你想回到原先的某一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,vmw