論理ボリューム拡張は、追加のストレージを提供し、仮想マシンの継続的な操作を容易にするために使用されます。この記事では、シン プロビジョニング割り当てによる 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
4. qemu が一時停止し、vdsm が拡張要求を発行し、ストレージ メールボックスを介して SPM にメッセージを書き込み、LV を拡張し、受信メールの SPM 応答を 2 秒ごとに監視し続けます。関連するログは、次のように 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':, 'internal': False, 'volumeID': '1e4f0bee-1c3b-4f4d-9d4a-bafed6cd773f', 'imageID': 'd1b292cb-2518-4c89-9730-6b56bae10c90'}, newSize=44023414784, callbackFunc= >) 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)
5. 十分な物理ストレージ スペースが利用できる場合、SPM は LV を拡張し、成功メッセージで応答します。 SPM がメタデータを更新します。
6. 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 は追加のストレージを必要な論理ボリュームに自動的に分配します。追加リソースの自動割り当てにより、関連する仮想マシンは自動的に操作を中断せずに続行したり、停止した場合に操作を再開したりできます。