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
………#虚拟机的基本配置信息
xuegod110
44e3dd87-a3c2-4d33-bbc5-5427bbfd1b3a
2097152
2097152
4
………#虚拟机的镜像文件类型和存放路径
/usr/libexec/qemu-kvm
………#虚拟机的网络配置信息
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 来看,它的稳定性和各方面的能力都很好。
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
注:开机创建的虚拟机快照有大小,是因为有内存中的数据回写到磁盘中
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