RHV - LV 扩展的过程

逻辑卷扩展用于提供另外的存储并促进虚拟机的持续操作。
本文将讲述 Qcow2 类型逻辑卷扩展与精简配置分配的过程。

下面是LV扩展的过程:

  1. 当虚拟磁盘镜像以 Qcow2 格式存储在存储上时,Qemu 提供 VM 中的块和磁盘上的块之间的逻辑映射。

  2. 如果有任何VM写活动,Qemu写访问逻辑卷,然后qcow2镜像增长。

  3. Qemu 不断向 vdsm 报告使用情况。
    并且 vdsm 有一个默认阈值(volume_utilization_percent & volume_utilization_chunk_mb)来比较本地存储分配和实际存储使用情况。
    当空闲空间 < (100% volume_utilization_percent%) * volume_utilization_chunk_mb 时,表示已超过阈值限制。

294 # Together with volume_utilization_chunk_mb, set the minimal free
295 # space before a thin provisioned block volume is extended. Use lower
296 # values to extend earlier.
297 # volume_utilization_percent = 50
298
299 # Size of extension chunk in megabytes, and together with
300 # volume_utilization_percent, set the free space limit. Use higher
301 # values to extend in bigger chunks.
302 # volume_utilization_chunk_mb = 1024
  1. qemu变为pause状态,vdsm发出extend请求,通过storage邮箱向SPM写消息扩展LV,每2s持续监听收到邮件中的SPM响应。
    相关日志可以在vdsm.log中找到,如下:
2020-09-11 10:11:20,551-0700 INFO (periodic/187) [virt.vm] (vmId='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') Requesting extension for volume 1e4f0bee-1c3b-4f4d-9d4a-bafed6cd773f on domain a1ce94f1-8001-48f6-ade2-cc1ac11660cb (apparent: 42949672960, capacity: 2197949513728, allocated: 42637918208, physical: 42949672960 threshold_state: exceeded) (vm:1277)
2020-09-11 10:11:20,551-0700 INFO (periodic/187) [vdsm.api] START sendExtendMsg(spUUID='2dc32f8e-5b7a-4183-974f-aa96c8eb5bc2', volDict={'newSize': 44023414784, 'domainID': 'a1ce94f1-8001-48f6-ade2-cc1ac11660cb', 'name': 'xxx', 'poolID': '2dc32f8e-5b7a-4183-974f-aa96c8eb5bc2', 'clock': <Clock(total=0.01*, extend-volume=0.01*)>, 'internal': False, 'volumeID': '1e4f0bee-1c3b-4f4d-9d4a-bafed6cd773f', 'imageID': 'd1b292cb-2518-4c89-9730-6b56bae10c90'}, newSize=44023414784, callbackFunc=<bound method Vm.__afterVolumeExtension of >) from=internal, task_id=4f42cdc3-a2a7-4b91-93d4-4eab80e57a7f (api:48)
2020-09-11 10:11:20,564-0700 INFO (mailbox-hsm) [storage.MailBox.HsmMailMonitor] HSM_MailMonitor sending mail to SPM - ['/usr/bin/dd', 'of=/rhev/data-center/2dc32f8e-5b7a-4183-974f-aa96c8eb5bc2/mastersd/dom_md/inbox', 'iflag=fullblock', 'oflag=direct', 'conv=notrunc', 'bs=4096', 'count=1', 'seek=2'] (mailbox:380)
2020-09-11 10:11:20,551-0700 INFO (periodic/187) [vdsm.api] FINISH sendExtendMsg return=None from=internal, task_id=4f42cdc3-a2a7-4b91-93d4-4eab80e57a7f (api:54)
  1. 如果有足够的可用物理存储空间,SPM 扩展 LV 并回复成功消息。
    SPM 更新元数据。

  2. 当 vdsm 收到对其 lv 扩展请求的成功回复时,它会刷新其 lv 映射以识别新分配的卷。
    然后 vdsm 将继续执行 VM。
    相关日志可以在vdsm.log中找到,如下:

2020-09-11 10:11:22,615-0700 INFO (mailbox-hsm/0) [vdsm.api] START refreshVolume(sdUUID='a1ce94f1-8001-48f6-ade2-cc1ac11660cb', spUUID='2dc32f8e-5b7a-4183-974f-aa96c8eb5bc2', imgUUID='d1b292cb-2518-4c89-9730-6b56bae10c90', volUUID='1e4f0bee-1c3b-4f4d-9d4a-bafed6cd773f') from=internal, task_id=405c92c8-3b4b-4ba1-b0ba-c24b72444529 (api:48)
2020-09-11 10:11:22,780-0700 INFO (mailbox-hsm/0) [storage.LVM] Refreshing LVs (vg=a1ce94f1-8001-48f6-ade2-cc1ac11660cb, lvs=('1e4f0bee-1c3b-4f4d-9d4a-bafed6cd773f',)) (lvm:1466)

7、如果没有可用的物理存储空间,则扩展失败,vdsm报enospc错误如下:

2020-09-11 10:11:21,527-0700 INFO (libvirt/events) [virt.vm] (vmId='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') abnormal vm stop device ua-d1b292cb-2518-4c89-9730-6b56bae10c90 error enospc (vm:5064)
2020-09-11 10:11:21,571-0700 WARN (libvirt/events) [virt.vm] (vmId='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') device xxx out of space (vm:3986)
2020-09-11 10:12:16,882-0700 INFO (libvirt/events) [virt.vm] (vmId='0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') underlying process disconnected (vm:1066)
2020-09-11 10:12:16,882-0700 INFO (libvirt/events) [virt.vm] (vmId='0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') Release VM resources (vm:5168)
2020-09-11 10:12:16,882-0700 INFO (libvirt/events) [virt.vm] (vmId='0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') Stopping connection (guestagent:455)

在这种情况下,我们必须手动添加存储容量来扩展它。
当新的 LUN 添加到卷组时,SPM 会自动将另外的存储分配给需要它的逻辑卷。
另外资源的自动分配允许相关虚拟机自动不间断地继续操作或者在停止时恢复操作。

日期:2020-09-17 00:12:54 来源:oir作者:oir