KVM虚拟机克隆和快照使用方法

一、 KVM虚拟机克隆方法

1、 克隆KVM虚拟机的语法和注意事项
语法:virt-clone –o 原虚拟机 –n 新虚拟机 –f 新虚拟机存放的路径
注:需要克隆的虚拟机必须是关机状态,不然没办法克隆。
在这里插入图片描述

2、 克隆KVM虚拟机(centos7.0)
1) 关闭centos7.0虚拟机
[root@xuegod110 ~]# virsh shutdown centos7.0
在这里插入图片描述

2) 克隆centos7.0虚拟机
[root@xuegod110 ~]# virt-clone -o centos7.0 -n xuegod110 -f /var/lib/libvirt/images/xuegod110.img
在这里插入图片描述

3) 查看下前后克隆虚拟机文件的大小
克隆前21G,克隆后虚拟机1.5G
在这里插入图片描述

3、 KVM虚拟机组成部分
1) 一台KVM虚拟机由两部分组成:虚拟机配置文件和镜像img
[root@xuegod110 ~]# ll /var/lib/libvirt/images/xuegod110.img #镜像
-rw------- 1 root root 1565196288 Sep 1 20:19 /var/lib/libvirt/images/xuegod110.img
[root@xuegod110 ~]# ll /etc/libvirt/qemu/xuegod110.xml 配置文件
-rw------- 1 root root 4645 Sep 1 20:19 /etc/libvirt/qemu/xuegod110.xml

2) 查看配置文件
[root@xuegod110 ~]# vim /etc/libvirt/qemu/xuegod110.xml

………#虚拟机的基本配置信息
<domain type='kvm'>
  <name>xuegod110</name>
  <uuid>44e3dd87-a3c2-4d33-bbc5-5427bbfd1b3a</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>4</vcpu>
………#虚拟机的镜像文件类型和存放路径
<emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/xuegod110.img'/>
      <target dev='vda' bus='virtio'/>
      <boot order='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
………#虚拟机的网络配置信息
    <interface type='bridge'>
      <mac address='52:54:00:29:2e:f8'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

3) 对比克隆前后两个配置文件的不同
[root@xuegod110 ~]# vimdiff /etc/libvirt/qemu/centos7.0.xml /etc/libvirt/qemu/xuegod110.xml
使用vimdiff命令查看两份文件的不同之后,不一样的会用颜色标记出来
虚拟机的名称和UUID不一样,UUID会自动更改
在这里插入图片描述
虚拟机的源文件不一样
在这里插入图片描述
虚拟机的MAC地址不一样,会自动更改
在这里插入图片描述

4、 启动克隆的虚拟机,测试
[root@xuegod110 ~]# virsh start xuegod110
在这里插入图片描述

查看IP和MAC地址
注:克隆后的虚拟机,如果IP地址设置的固定地址,那么开机后需要修改IP地址,不然会和原虚拟机出现IP地址冲突的情况,如果是自动获取的则不存在这种情况。
[root@xuegod110 ~]# virt-manager
在这里插入图片描述

5、 在centos6下KVM克隆后的操作
登录新克隆的虚拟机删除原来的 mac 和 IP 地址,让新克隆的机器可以上网:
[root@xuegod63 ~]# rm -rf /etc/udev/rules.d/70-persistent-*
[root@xuegod63 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0 #写入以下内容
在这里插入图片描述
注: 记得把 ONBOOT=“no” 改为: ONBOOT=“yes”
注:把原配置文件中的 MAC 和 UUID 地址删除,然后修改一个和原虚拟机不一样的 IP
[root@xuegod63 ~]# reboot #重启生效
方法 1:[root@xuegod63 ~]# reboot #重启生效
或方法 2:
[root@xuegod63 ~]# start_udev # 重新启动udev 服务,自动生成刚删除的
/etc/udev/rules.d/70-persistent-*文件,新生成的 udev 文件,会使用新系统的 MAC 地址。
[root@xuegod63 ~]# service network restart

二、 虚拟机常用的镜像格式对比

目前主要的虚拟机的格式:raw、cow、qcow、qcow2、vmdk

1、 raw格式镜像
老牌的镜像格式,用一个字来说就是裸,也就是赤裸裸,你随便dd一个file就模拟一个raw格式的镜像。由于裸地彻底,性能上来说还是不错的。centos6上的KVM和XEN默认就是这种格式。centos7上的KVM默认是qcow2格式。
裸的好处就是简单,支持转换其它格式的虚拟机镜像对裸露的来说很简单,空间使用来看,使用多少就是多少。
例如:qcow2转vmdk的方法就是:qcow2转raw,然后把raw转vmdk,当然也可以直接qcow2转vmdk。
缺点:不支持snapshot快照

2、 cow、qcow、qcow2格式
1) cow格式
还没有成熟,就被放弃。后来被qcow所取代。
2) qcow格式
刚刚出现的时候就有比较好的特性,但性能和raw格式对比还是有很大的差距,目前已经被qcow2取代。
3) qcow2格式
现在比较流行的一个虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw格式的性能。
qcow2格式支持snapshot快照,可以在镜像上做多个快照,具有一下优点:
更小的存储空间;支持创建img镜像;支持多个snapshot快照,对历史快照进行管理;
支持zlib的磁盘压缩;支持AES加密。

3、 vmdkgeshi
VMware 的格式,整体性能最好,因为原本 VMware 就是做虚拟化起家。从性能和功能上来说,vmdk应该算最出色的,由于 vmdk 结合了 VMware 的很多能力,目前来看,KVM 和 XEN 使用这种格式的情况不是太多。但就 VMware 的企业级虚拟化 Esxi 来看,它的稳定性和各方面的能力都很好。

三、 KVM虚拟机快照功能使用方法

1、 KVM快照的作用
热备、灾难恢复、回滚到历史中的某个状态

2、 KVM快照的方法
方法1:使用lvm快照,如果分区是lvm,可以利用lvm进行kvm快照备份
方法2:使用qcow2格式的镜像创建快照

3、 创建kvm快照
在 centos6 下,kvm 虚拟机默认使用 raw 格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib 磁盘压缩,AES 加密等。
要使用快照功能,磁盘格式必须为 qcow2。
1) 查看快照的镜像的格式
[root@xuegod110 ~]# qemu-img info /var/lib/libvirt/images/xuegod110.img
image: /var/lib/libvirt/images/xuegod110.img
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 1.5G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
注:开机运行中的虚拟机同样可以进行快照,但是速度没有关机的快照速度快。因为开机创建快照需要经内存中内容写的磁盘中需要时间。

2) 对虚拟机进行快照管理
对xuegod110虚拟机创建快照
[root@xuegod110 ~]# virsh snapshot-create xuegod110
Domain snapshot 1567344930 created

关机创建快照
[root@xuegod110 ~]# virsh shutdown xuegod110
Domain xuegod110 is being shutdown
[root@xuegod110 ~]# virsh list #查看运行中的虚拟机
[root@xuegod110 ~]# virsh snapshot-create xuegod110 #关机状态下是瞬时完成快照
Domain snapshot 1567345035 created

对比两个快照的大小
[root@xuegod110 ~]# qemu-img info /var/lib/libvirt/images/xuegod110.img
image: /var/lib/libvirt/images/xuegod110.img
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 1.8G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 1567344930 303M 2019-09-01 21:35:30 00:28:01.316
2 1567345035 0 2019-09-01 21:37:15 00:00:00.000
3 http 0 2019-09-01 21:41:33 00:00:00.000
Format specific information:
compat: 1.1
lazy refcounts: true
注:这里可以看到有些快照的大小是0,关机状态下创建的快照都是0。创建快照占用的是虚拟机自身的空间。

快照的配置文件存放路径
在这里插入图片描述

4、 创建一个http名字的快照(别名)
[root@xuegod110 ~]# virsh snapshot-create-as xuegod110 http
Domain snapshot http created
[root@xuegod110 ~]# virsh snapshot-list xuegod110 #查看快照列表
Name Creation Time State
1567344930 2019-09-01 21:35:30 +0800 running
1567345035 2019-09-01 21:37:15 +0800 shutoff
http 2019-09-01 21:41:33 +0800 shutoff

5、 查看当前虚拟机运行的快照
[root@xuegod110 ~]# virsh snapshot-current xuegod110
在这里插入图片描述
加管道进行过滤,只显示前两行
[root@xuegod110 ~]# virsh snapshot-current xuegod110 | head -2
在这里插入图片描述

6、 恢复虚拟机快照
注:恢复虚拟机快照,虚拟机必须要关机状态,阿里云恢复快照同样需要关机恢复。
1) 查看虚拟机的状态
[root@xuegod110 ~]# virsh list –all
Id Name State

  • centos7.0                      shut off
    
  • xuegod110                      shut off
    

2) 开机后恢复快照,测试
[root@xuegod110 ~]# virsh start xuegod110
Domain xuegod110 started
[root@xuegod110 ~]# virsh list
Id Name State
3 xuegod110 running #已开机

恢复快照,xuegod110有三个快照,恢复到httpd快照
[root@xuegod110 ~]# virsh snapshot-list xuegod110
Name Creation Time State
1567344930 2019-09-01 21:35:30 +0800 running
1567345035 2019-09-01 21:37:15 +0800 shutoff
http 2019-09-01 21:41:33 +0800 shutoff

[root@xuegod110 ~]# virsh snapshot-revert xuegod110 http
[root@xuegod110 ~]# virsh snapshot-current xuegod110 | head -2 #查看当前的运行的快照
在这里插入图片描述

7、 删除快照和开机创建快照
[root@xuegod110 ~]# virsh snapshot-list xuegod110
Name Creation Time State
1567344930 2019-09-01 21:35:30 +0800 running
1567345035 2019-09-01 21:37:15 +0800 shutoff
http 2019-09-01 21:41:33 +0800 shutoff

删除中间的快照
[root@xuegod110 ~]# virsh snapshot-delete xuegod110 1567345035
Domain snapshot 1567345035 deleted

再次查看快照列表
[root@xuegod110 ~]# virsh snapshot-list xuegod110
Name Creation Time State
1567344930 2019-09-01 21:35:30 +0800 running
http 2019-09-01 21:41:33 +0800 shutoff

8、 恢复快照后开机再次创建快照
1) 开启虚拟机
[root@xuegod110 ~]# virsh start xuegod110
Domain xuegod110 started

2) 创建快照
[root@xuegod110 ~]# virsh snapshot-create-as xuegod110 http-kaiji
Domain snapshot http-kaiji created

3) 对比两次创建的快照大小
[root@xuegod110 ~]# qemu-img info /var/lib/libvirt/images/xuegod110.img
image: /var/lib/libvirt/images/xuegod110.img
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 2.2G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 1567344930 303M 2019-09-01 21:35:30 00:28:01.316
3 http 0 2019-09-01 21:41:33 00:00:00.000
4 http-kaiji 280M 2019-09-01 21:59:06 00:00:47.021
Format specific information:
compat: 1.1
lazy refcounts: true
注:开机创建的虚拟机快照有大小,是因为有内存中的数据回写到磁盘中

四、 virsh常用命令

1、 查看开机虚拟机列表
[root@xuegod110 ~]# virsh list #查看开机的虚拟机
[root@xuegod110 ~]# virsh list –all #查看所有的虚拟机

2、 查看virsh版本号
[root@xuegod110 ~]# virsh version
Compiled against library: libvirt 4.5.0
Using library: libvirt 4.5.0
Using API: QEMU 4.5.0
Running hypervisor: QEMU 1.5.3

3、 启动虚拟机
[root@xuegod110 ~]# virsh start centos7.0

4、 关闭虚拟机
[root@xuegod110 ~]# virsh shutdown xuegod110

5、 挂起、恢复虚拟机
[root@xuegod110 ~]# virsh suspend xuegod110 #挂起
[root@xuegod110 ~]# virsh resume xuegod110 #恢复

6、 设置自动开机
[root@xuegod110 ~]# virsh autostart centos7.0
Domain centos7.0 marked as autostarted

7、 关闭自动开机
[root@xuegod110 ~]# virsh autostart --disable centos7.0
Domain centos7.0 unmarked as autostarted

8、 导出虚拟机配置文件
[root@xuegod110 ~]# mkdir /var/lib/libvirt/xml/
[root@xuegod110 ~]# virsh dumpxml xuegod110 > /var/lib/libvirt/xml/xuegod110.xml
[root@xuegod110 ~]# virsh dumpxml centos7.0 > /var/lib/libvirt/xml/centos7.0.xml

9、 取消虚拟机定义
取消虚拟机定义,表示从图形化界面的列表删除虚拟机,如下:
1) 没取消前
在这里插入图片描述

2) 取消虚拟机定义
[root@xuegod110 ~]# virsh undefine centos7.0
Domain centos7.0 has been undefined
在这里插入图片描述

3) 增加虚拟机定义:
注:取消虚拟机定义文件之前切记需要先备份虚拟机的配置文件,因为取消了虚拟机配置文件后,会直接删除取消定义的虚拟机的配置文件,如果要再次开启这个虚拟机需要现增加虚拟机定义文件,然后才能开机。不然就会报错,如下:
centos7.0的配置文件已经被删除:
在这里插入图片描述

启动centos7.0
在这里插入图片描述
tab键补全虚拟机名称就不能补全,手动输入后启动就报错。
4) 增加虚拟机定义
[root@xuegod110 ~]# virsh define /var/lib/libvirt/xml/centos7.0.xml #提前备份过
Domain centos7.0 defined from /var/lib/libvirt/xml/centos7.0.xml
查看默认路径下的配置文件:
在这里插入图片描述
5) 再次开机
[root@xuegod110 ~]# virsh start centos7.0 #可以直接tab补全,正常开机
Domain centos7.0 started
在这里插入图片描述
注:这里如果没有备份xml配置文件,可以拷贝一份别的虚拟机配置文件,修改内容后使用。

10、 强制关闭虚拟机
[root@xuegod110 ~]# virsh destroy xuegod110 #无法正常关机时使用

五、 虚拟机镜像格式转换

语法:qemu-img –f 源镜像格式 –O 目标镜像格式 源镜像文件位置 转换后镜像存放位置.

1、 qcow2格式转换raw格式
关闭xuegod110虚拟机
[root@xuegod110 ~]# virsh shutdown xuegod110

转换raw格式
[root@xuegod110 ~]# qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/xuegod110.img /var/lib/libvirt/images/xuegod110.raw

查看转换后的文件
在这里插入图片描述

2、 其它格式转换
例 1:将 vmdk 转换为 qcow2
qemu-img convert -f vmdk -O qcow2 source-name.vmdk target-name.qcow2
例 2:将 qcow2 转换为 vmdk
qemu-img convert -f qcow2 -O vmdk source-name.qcow2 target-name.vmdk

3、 修改虚拟机配置文件,使用raw格式镜像文件来启动虚拟机
方法1:修改虚拟机配置文件
[root@xuegod110 ~]# virsh edit xuegod110
改:

为:

方法2:直接vim修改配置,需要重启libvirtd服务
[root@xuegod110 ~]# systemctl restart libvirtd

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值