命令记不住

登陆

KVM 快照命令

KVM快照命令

1.快照命令基础使用

1.查看磁盘格式raw格式需要转换成qcow2

[root@kvm-node1 ~]# qemu-img info /data/centos7u4-node1.raw 
image: /data/centos7u4-node1.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.2G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

2.必须关闭虚拟机进行磁盘转换

[root@kvm-node1 ~]# virsh shutdown centos7u4-node1
[root@kvm-node1 ~]# qemu-img convert -f raw /data/centos7u4-node1.raw -O qcow2 /data/centos7u4-node1.qcow2
//convert 将磁盘文件转换为指定格式的文件
//-f 指定需要转换文件的文件格式
//-O 指定要转换的目标格式
//转换完成后,将新生产一个目标映像文件,原文件保存

3.修改KVM虚拟机配置文件配置文件

[root@kvm-node1 ~]# virsh edit centos7u4-node1
      <driver name='qemu' type='qcow2'/>
      <source file='/data/centos7u4-node1.qcow2'/>

4.对虚拟机当前进行快照拍摄

[root@kvm-node1 ~]# virsh snapshot-create centos7u4-node1    
Domain snapshot 1523494907 created

5.查看虚拟机快照

[root@kvm-node1 ~]# virsh snapshot-list  centos7u4-node1
 Name                 Creation Time             State
------------------------------------------------------------
 1523494907           2018-04-11 21:01:47 -0400 running
 
 //检查当前虚拟机最新快照版本
[root@kvm-node1 ~]# virsh snapshot-current centos7u4-node1|less

//快照xml文件存放路径
[root@kvm-node1 ~]# ls /var/lib/libvirt/qemu/snapshot/centos7u4-node1/
1523494907.xml  1523495036.xml

6.恢复快照

[root@kvm-node1 ~]# virsh snapshot-revert centos7u4-node1 1523494907

//确认恢复版本正确
[root@kvm-node1 ~]# virsh snapshot-current centos7u4-node1|grep "1523494907"
  <name>1523494907</name>
  <creationTime>1523494907</creationTime>

7.删除快照

[root@kvm-node1 ~]# qemu-img info /data/centos7u4-node1.qcow2 
image: /data/centos7u4-node1.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.8G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1523494907             282M 2018-04-11 21:01:48   00:16:25.489
2         1523495036             282M 2018-04-11 21:03:56   00:18:29.210
Format specific information:
    compat: 1.1
    lazy refcounts: false

//删除最近一个快照
[root@kvm-node1 ~]# virsh snapshot-delete centos7u4-node1 1523495036
Domain snapshot 1523495036 deleted

2.生产环境中使用虚拟机快照

生产环境中虚拟机的快照使用非常广泛,比如需要对虚拟机更新应用或者是升级,但不确定操作是否对虚拟机造成很大的影响的时候可以创建快照,记录虚拟机操作前的状态,如果更新或升级出现问题,可以快速回退到操作前的状态,特别注意:快照不是备份工具。

kvm的快照管理
创建快照 [root@kvm]# virsh snapshot-create centos7
查看快照 [root@kvm]# virsh snapshot-list centos7

还原快照 [root@kvm]# virsh snapshot-revert centos7 --snapshotname 1516574134
删除快照 [root@kvm]# virsh snapshot-delete centos7 --snapshotname 1516636570

raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中

1.挂起虚拟机,开始做快照

[root@kvm01 opt]# virsh list --all
Id    Name                           State
----------------------------------------------------
1     centos7.4                      running

[root@kvm01 opt]# virsh suspend centos7.4 
Domain centos7.4 suspended

[root@kvm01 opt]# virsh list --all
Id    Name                           State
----------------------------------------------------
1     centos7.4                      paused

[root@kvm01 opt]# virsh snapshot-create centos7.4
Domain snapshot 1551105669 created

[root@kvm01 opt]# virsh snapshot-list centos7.4
Name                 Creation Time             State
------------------------------------------------------------
1551105669           2019-02-25 22:41:09 +0800 paused

//name  1551105669  为UNIX timestamp时间戳 可以转换为北京时间

2.KVM快照具体操作步骤
第1步,使用命令“virsh start win7-02”为虚拟机创建第1个快照。

root@kvm-server:/home/admin# virsh snapshot-create win7-02
Domain snapshot 1542544562 created

第2步,使用命令“virsh snapshot-list win7-02”查看虚拟机win7-02快照情况,注意Name是快照唯一的编号。

root@kvm-server:/home/admin# virsh snapshot-list win7-02  
Name                 Creation Time             State
1542544562           2018-11-18 12:36:02 +0000 running

第3步,使用命令“virsh snapshot-current win7-02”查看快照文件信息。

root@kvm-server:/home/admin# virsh snapshot-current win7-02
<domainsnapshot>
<name>1542544562</name>
<state>running</state>
<creationTime>1542544562</creationTime>
<memory snapshot='internal'/>
<disks>
 <disk name='hda' snapshot='internal'/>
 <disk name='hdb' snapshot='no'/>
</disks>
<domain type='kvm'>
 <name>win7-02</name>
 <uuid>27e0e8ed-2c9c-4c3f-8b18-9a88790d8737</uuid>
 <memory unit='KiB'>4194304</memory>
 <currentMemory unit='KiB'>4194304</currentMemory>
 <vcpu placement='static'>4</vcpu>
 <resource>
   <partition>/machine</partition>
 </resource>
……(省略)
</cookie>
</domainsnapshot>

第4步,测试快照功能是否正常,使用vnc viewer工具连接到虚拟机win7-02虚拟机操作复制桌面文件夹,做一些改变。

第5步,使用命令“virsh snapshot-revert win7-02 1542544562”恢复虚拟机快照,注意编号的唯一性,执行恢复快照操作虚拟机会重新启动。

root@kvm-server:/home/admin# virsh snapshot-revert win7-02 1542544562

第6步,使用vnc viewer工具连接到虚拟机win7-02,虚拟机已经恢复到操作之前的状态。

第7步,一台虚拟机可以创建多个快照,使用命令“virsh snapshot- create win7-02”再次创建快照。

root@kvm-server:/home/admin# virsh snapshot-create win7-02   
Domain snapshot 1542544831 created

第8步,使用命令“virsh snapshot-list win7-02”查看虚拟机win7-02快照情况,目前虚拟机有2个快照,注意Name是快照唯一的编号。

root@kvm-server:/home/admin# virsh snapshot-list win7-02  
Name                 Creation Time             State
1542544562           2018-11-18 12:36:02 +0000 running
1542544831           2018-11-18 12:40:31 +0000 running

第9步,使用命令“virsh snapshot-delete win7-02 1542544562”删除快照。

root@kvm-server:/home/admin# virsh snapshot-delete win7-02 1542544562
Domain snapshot 1542544562 deleted

第10步,使用命令“virsh snapshot-list win7-02”查看虚拟机win7-02删除快照后情况,虚拟机只存在编号为1542544831的快照。

root@kvm-server:/home/admin# virsh snapshot-list win7-02       
Name                 Creation Time             State
1542544831           2018-11-18 12:40:31 +0000 running

使用virsh命令对虚拟机进行快照操作相对简单,可以在开机状态下进行,需要注意的是,恢复快照虚拟机会重新启动,快照不是备份工具,虚拟机过多的快照可能导致运行缓慢甚至是无法启动。

推荐阅读