RedHat Virtualization (RHV) 中的卷链

了解用于解决快照创建/删除问题的卷链很重要。
这篇文章将解释卷链的相关性。

需要检查引擎数据库和主机中的卷链,因为我们需要检查磁盘的真实状态是否与我们在数据库中看到的相同。
此处显示的过程适用于基于 LVM 的块存储(iSCSI 和光纤通道)。
对于 NFS,它要简单得多,只需查找以图像 ID 作为名称的文件。
当我们创建快照时,RHV 会“冻结”基础磁盘并在顶部的写入 (COW) 层上创建一个副本来存储更改。
COW 层实现为 qcow 快照,它存储对包含原始磁盘(或者前一层)的基础镜像的引用。

  1. 从引擎数据库检查:

虚拟机的“第一个”快照是 RHV 中的“活动虚拟机”。
“活动虚拟机”不是实际快照,而只是将“当前状态”显示为快照。
它是主磁盘(parentid 为零)。
例如:

vm_name | snapshot_name | snapshot_status | image_guid | image_group_id | parentid | imagestatus
------------+----------------------+-----------------+--------------------------------------+--------------------------------------+--------------------------------------+------------
TestVM | Active VM | OK | 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 00000000-0000-0000-0000-000000000000 | 1
(1 row)

如果我们创建快照,则将创建真正的第一个快照。
第一个快照是使用前一个磁盘作为基础镜像的 COW 快照。
parentid 为零。
拍摄第一个快照后,“Active VM” parentid 成为第一个快照的 image_guid。

示例:第一个快照名称是 volumechain1.
从下面的 DB 输出中,我们可以看到 image_guid 和 parentid 的关系:

vm_name | snapshot_name | snapshot_status | image_guid | image_group_id | parentid | imagestatus
------------+---------------+-----------------+--------------------------------------+--------------------------------------+--------------------------------------+------------
TestVM | Active VM | OK | 3fdf455e-52e6-48da-81f5-475cad796d21 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 | 1
TestVM | volumechain1 | OK | 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 00000000-0000-0000-0000-000000000000 | 1
(2 rows)

第二个(volumechain2)/第三个(volumechain3)快照的示例。
可以看到第二个快照的parentid是第一个快照volumeid,第三个快照的parentid是第二个快照volume_id。

vm_name | snapshot_name | snapshot_status | image_guid | image_group_id | parentid | imagestatus
------------+---------------+-----------------+--------------------------------------+--------------------------------------+--------------------------------------+------------
TestVM | Active VM | OK | 043dfd54-30d2-4437-9cba-2eded92136b6 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 3fdf455e-52e6-48da-81f5-475cad796d21 | 1
TestVM | volumechain1 | OK | 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 00000000-0000-0000-0000-000000000000 | 1
TestVM | volumechain2 | OK | 3fdf455e-52e6-48da-81f5-475cad796d21 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 | 1
(3 rows)
vm_name | snapshot_name | snapshot_status | image_guid | image_group_id | parentid | imagestatus
------------+---------------+-----------------+--------------------------------------+--------------------------------------+--------------------------------------+------------
TestVM | Active VM | OK | c9a717e4-bc90-4ef5-900d-777bf01b43bf | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 043dfd54-30d2-4437-9cba-2eded92136b6 | 1
TestVM | volumechain1 | OK | 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 00000000-0000-0000-0000-000000000000 | 1
TestVM | volumechain2 | OK | 3fdf455e-52e6-48da-81f5-475cad796d21 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 | 1
TestVM | volumenchain3 | OK | 043dfd54-30d2-4437-9cba-2eded92136b6 | 9f13d2e3-eed5-4af2-936c-358bc4948608 | 3fdf455e-52e6-48da-81f5-475cad796d21 | 1
(4 rows)
  1. 从主机检查:

检查 domblk 信息:

# virsh -r domblklist TestVM
Target Source
--------------------------------------------------------------------------------------------------------------------------------------------------------------
hdc 
sda /rhev/data-center/mnt/blockSD/c95e9f3e-79cb-47ab-9825-8093ee12e42b/images/9f13d2e3-eed5-4af2-936c-358bc4948608/c9a717e4-bc90-4ef5-900d-777bf01b43bf

检查 LV 标签:LVM 后端将数据存储在逻辑卷 (LV) 中。
RHV 使用使用该 LV 的磁盘 ID 标记所有 LV。
从下面的命令 LV 标签中,我们可以看到卷链。

# lvs -o +tags|grep 9f13d2e3-eed5-4af2-936c-358bc4948608
043dfd54-30d2-4437-9cba-2eded92136b6 c95e9f3e-79cb-47ab-9825-8093ee12e42b -wi-ao---- 1.00g IU_9f13d2e3-eed5-4af2-936c-358bc4948608,MD_8,PU_3fdf455e-52e6-48da-81f5-475cad796d21 >>>> third snapshot
3fdf455e-52e6-48da-81f5-475cad796d21 c95e9f3e-79cb-47ab-9825-8093ee12e42b -wi-ao---- 1.00g IU_9f13d2e3-eed5-4af2-936c-358bc4948608,MD_6,PU_4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 >>>>> second snapshot
4ccf601e-ec11-4c10-be8c-3b1a6e53aa51 c95e9f3e-79cb-47ab-9825-8093ee12e42b -wi-ao---- 48.00g IU_9f13d2e3-eed5-4af2-936c-358bc4948608,MD_3,PU_00000000-0000-0000-0000-000000000000 >>>>> first snapshot
c9a717e4-bc90-4ef5-900d-777bf01b43bf c95e9f3e-79cb-47ab-9825-8093ee12e42b -wi-ao---- 1.00g IU_9f13d2e3-eed5-4af2-936c-358bc4948608,MD_11,PU_043dfd54-30d2-4437-9cba-2eded92136b6 >>>>> Active VM

检查 qemu 镜像。
例如:

# qemu-img info /dev/c95e9f3e-79cb-47ab-9825-8093ee12e42b/4ccf601e-ec11-4c10-be8c-3b1a6e53aa51
image: /dev/c95e9f3e-79cb-47ab-9825-8093ee12e42b/4ccf601e-ec11-4c10-be8c-3b1a6e53aa51
file format: raw
virtual size: 48G (51539607552 bytes) >>>>>>>>>>>
disk size: 0

转储卷链。
例如:

# vdsm-tool dump-volume-chains c95e9f3e-79cb-47ab-9825-8093ee12e42b |grep -A14 9f13d2e3-eed5-4af2-936c-358bc4948608
image: 9f13d2e3-eed5-4af2-936c-358bc4948608
- 4ccf601e-ec11-4c10-be8c-3b1a6e53aa51             >>>>this is the first snapshot volume_id
status: OK, voltype: INTERNAL, format: RAW, legality: LEGAL, type: PREALLOCATED, capacity: 51539607552, truesize: 51539607552
- 3fdf455e-52e6-48da-81f5-475cad796d21             >>>>this is the second snapshot volume_id
status: OK, voltype: INTERNAL, format: COW, legality: LEGAL, type: SPARSE, capacity: 51539607552, truesize: 1073741824
- 043dfd54-30d2-4437-9cba-2eded92136b6             >>>>this is the third snapshot volume_id
status: OK, voltype: INTERNAL, format: COW, legality: LEGAL, type: SPARSE, capacity: 51539607552, truesize: 1073741824
- c9a717e4-bc90-4ef5-900d-777bf01b43bf             >>>>this is Active VM Leaf volume_id
status: OK, voltype: LEAF, format: COW, legality: LEGAL, type: SPARSE, capacity: 51539607552, truesize: 1073741824
日期:2020-09-17 00:12:55 来源:oir作者:oir