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

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

1. 克隆

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

# qcow2是centos7默认的虚拟机镜像格式
[root@server images]# ll -h
总用量 11G
-rw-------. 1 root root  11G 12月  8 20:44 centos7.0.qcow2
-rw-r--r--. 1 qemu qemu 973M 12月  8 13:41 CentOS-7-x86_64-Minimal-2009.iso

# 创建克隆
[root@server images]# virt-clone -o centos7.0 -n centos7_clone -f /var/lib/libvirt/images/centos7_clone.img
正在分配 'centos7_clone.img'                    |  10 GB  00:04     

成功克隆 'centos7_clone'# 可以看到,克隆的虚拟机分配了10G,但实际仅占1.6G。
[root@server images]# ll -h
总用量 13G
-rw-------. 1 root root  11G 12月  8 20:44 centos7.0.qcow2
-rw-------. 1 root root 1.6G 12月  8 20:53 centos7_clone.img
-rw-r--r--. 1 qemu qemu 973M 12月  8 13:41 CentOS-7-x86_64-Minimal-2009.iso
[root@server images]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root  8.0G  4.4G  3.7G   55% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sdb                  50G   13G   38G   26% /var/lib/libvirt/images
/dev/sda1               1014M  180M  835M   18% /boot
tmpfs                    378M  4.0K  378M    1% /run/user/42
tmpfs                    378M   32K  378M    1% /run/user/0

在这里插入图片描述

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

# 每一台虚拟机都会有一个xml文件,该文件为虚拟机配置文件。
[root@server ~]# cd /etc/libvirt/qemu/
[root@server qemu]# ll
总用量 16
-rw-------. 1 root root 4584 12月  8 20:22 centos7.0.xml
-rw-------. 1 root root 4594 12月  8 20:53 centos7_clone.xml
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磁盘格式:

# 查看kvm磁盘格式
[root@server images]# qemu-img info centos7_clone.img 
image: centos7_clone.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.6G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
[root@server images]# qemu-img info centos7.0.qcow2 
image: centos7.0.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 10G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true

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

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

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

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

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

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

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

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

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

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

3. virsh命令扩展介绍

①查看virsh版本
virsh version

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

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

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

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

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

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

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

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

[root@server ~]# virsh start centos7.0 
域 centos7.0 已开始

[root@server ~]# virsh suspend centos7.0 
域 centos7.0 被挂起

[root@server ~]# virsh resume centos7.0 
域 centos7.0 被重新恢复

[root@server ~]# virsh autostart --disable centos7.0 
域 centos7.0取消标记为自动开始

[root@server ~]# virsh  autostart centos7.0 
域 centos7.0标记为自动开始

[root@server ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 2     centos7.0                      running

[root@server ~]# virsh destroy centos7.0 
域 centos7.0 被删除

[root@server ~]# virsh list
 Id    名称                         状态
----------------------------------------------------

[root@server ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     centos7.0                      关闭

4. 镜像格式转换

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

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

②镜像转换

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

③查看镜像格式

# 可以看到镜像格式转换后,是不会覆盖原来的镜像格式的。
[root@server ~]# qemu-img info /var/lib/libvirt/images/centos7.0.raw 
image: /var/lib/libvirt/images/centos7.0.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.5G
[root@server ~]# ll /var/lib/libvirt/images/centos7.0.*
-rw-------. 1 root root 11588600320 12月 10 21:06 /var/lib/libvirt/images/centos7.0.qcow2
-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 虚拟机名

[root@server ~]# virsh edit centos7.0 
编辑了域 centos7.0 XML 配置。

     36       <driver name='qemu' type='raw'/>
     37       <source file='/var/lib/libvirt/images/centos7.0.raw'/>

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

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

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/110881297
今日推荐