Linux实战教学笔记54:开源虚拟化KVM(二)管理虚拟存储 (5)

[x] qcow2不支持缩小镜像的操作

#实操 [root@localhost vm]# qemu-img info LNMP-disk1.qcow2 image: LNMP-disk1.qcow2 file format: qcow2 virtual size: 20G (21474836480 bytes) #磁盘原始尺寸 disk size: 2.5G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@localhost vm]# qemu-img resize LNMP-disk1.qcow2 +10G #增加10G尺寸 Image resized. [root@localhost vm]# qemu-img info LNMP-disk1.qcow2 image: LNMP-disk1.qcow2 file format: qcow2 virtual size: 30G (32212254720 bytes) #扩大了10G disk size: 2.5G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false 5.3 快照管理 5.3.1 快照/检查点概述

[x] 磁盘快照

对磁盘数据进行快照

主要用于虚拟机备份等场合

[x] 内存快照

对虚拟机的内存/设备信息进行保存

该机制同时用于休眠恢复,迁移等场景

主要使用virsh save(qemu migrate to file)实现,只能对运行的虚拟机进行

[x] 检查点快照

同时保存虚拟机的磁盘快照和内存快照

用于将虚拟机恢复到某个时间点

可以保证数据的一致性

QQ截图20180504231628.png-14kB

5.3.2 磁盘快照分类

[x] 按快照信息保存分为:

内置快照:快照数据和base磁盘数据放在一个qcow2文件中

外置快照:快照数据单独的qcow2文件存放

[x] 按虚拟机状态可以分为:

关机态快照:数据可以保持一致性

运行态快照:数据无法保持一致性,类似与系统crash后的磁盘数据。使用是可能需要fsck等操作。

[x] 按磁盘数量可以分为:

单盘:单盘快照不涉及原子性

多盘:涉及原子性。主要分两个方面:1,是所有盘快照点相同 2,所有盘要么都快照成功,要么都快照失败。主要依赖于qemu的transaction实现

5.3.3 管理磁盘快照

语法格式:

[root@localhost ~]# qemu-img --help | grep snapshot snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename Parameters to snapshot subcommand: \'snapshot\' is the name of the snapshot to create, apply or delete \'-a\' applies a snapshot (revert disk to saved state) #快照回滚 \'-c\' creates a snapshot #创建快照 \'-d\' deletes a snapshot #删除快照 \'-l\' lists all snapshots in the given image #显示快照列表

快照管理之磁盘快照实操:

#创建磁盘快照 [root@localhost vm]# qemu-img snapshot -l /vm/Base_CentOS6.5.qcow2 [root@localhost vm]# qemu-img snapshot -c s1 /vm/Base_CentOS6.5.qcow2 #创建磁盘快照 [root@localhost vm]# qemu-img snapshot -l /vm/Base_CentOS6.5.qcow2 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 s1 0 2018-05-06 13:33:16 00:00:00.000 #关闭虚拟机回滚磁盘快照 #在虚拟机里删除一个文件然后进行磁盘回滚 [root@localhost vm]# qemu-img snapshot -a s1 /vm/Base_CentOS6.5.qcow2

需要注意的是,进行磁盘快照回滚时需要关闭虚拟机,回滚后,我们发现数据已经恢复
qemu-img方式的磁盘快照只能支持原生态的qcow2格式,不支持从raw格式转换而来的qcow2不然会出现问题。

5.4 存储池 5.4.1 存储池的基础概念

[x] Libvirt可以以存储池的形式对存储进行统一管理,简化操作

[x] 对于虚拟机操作来说,存储池和卷并不是必须的

[x] 支持以下存储池

dir:Filesystem Directory

disk:Physical Disk Device

fs:Pre-Formatted Block Device

gluster:Gluster FileSystem

iscsi:iSCSI Target

logical:LVM Volume Group

mpath:Multipath Device Enumerator

netfs:Network Export Directory

rbd:RADOS Block Device/Ceph

scsi:SCSI Host Adapter

sheepdog:Sheepdog Filesystem

QQ截图20180506142709.png-31.2kB

[root@localhost vm]# cd /etc/libvirt/storage/ [root@localhost storage]# ll 总用量 12 drwxr-xr-x. 2 root root 54 4月 4 20:39 autostart -rw-------. 1 root root 538 3月 30 12:12 default.xml #对应存储池的xml文件 -rw-------. 1 root root 511 4月 4 10:16 iso.xml #对应存储池的xml文件 -rw-------. 1 root root 508 4月 4 20:39 VM.xml #对应存储池的xml文件 [root@localhost storage]# cat iso.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh pool-edit iso #警告这是一个自动文件若需要编辑请用virsh pool-edit iso or other application using the libvirt API. --> <pool type=\'dir\'> #池类型 <name>iso</name> #池名称 <uuid>b985a9b1-730b-43c7-96b1-00c494276117</uuid> #唯一uuid号 <capacity unit=\'bytes\'>0</capacity> <allocation unit=\'bytes\'>0</allocation> <available unit=\'bytes\'>0</available> <source> </source> <target> <path>/iso</path> #源是在/iso这个目录里 </target> </pool> #我们发现在/etc/libvirt/storage/路径下还有一个目录autostart [root@localhost storage]# ll autostart/ 总用量 0 lrwxrwxrwx. 1 root root 32 3月 30 12:12 default.xml -> /etc/libvirt/storage/default.xml lrwxrwxrwx. 1 root root 28 4月 4 10:16 iso.xml -> /etc/libvirt/storage/iso.xml lrwxrwxrwx. 1 root root 27 4月 4 20:39 VM.xml -> /etc/libvirt/storage/VM.xml #如果我们用virsh pool-edit iso来打开iso.xml文件的话,会是如下内容 [root@localhost storage]# virsh pool-edit iso <pool type=\'dir\'> <name>iso</name> <uuid>b985a9b1-730b-43c7-96b1-00c494276117</uuid> <capacity unit=\'bytes\'>18238930944</capacity> #内容出现了变化 <allocation unit=\'bytes\'>9555505152</allocation> #内容出现了变化 <available unit=\'bytes\'>8683425792</available> #内容出现了变化 <source> </source> <target> <path>/iso</path> <permissions> <mode>0755</mode> <owner>0</owner> <group>0</group> <label>unconfined_u:object_r:default_t:s0</label> </permissions> </target> </pool>

virsh中的存储池相关命令

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjxzx.html