[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] 检查点快照
同时保存虚拟机的磁盘快照和内存快照
用于将虚拟机恢复到某个时间点
可以保证数据的一致性
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不然会出现问题。
[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
[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中的存储池相关命令