Change in vdsm[master]: vm: increase the volume extension on storage migration
fsimonce at redhat.com
fsimonce at redhat.com
Mon Nov 12 18:02:00 UTC 2012
Federico Simoncelli has uploaded a new change for review.
Change subject: vm: increase the volume extension on storage migration
......................................................................
vm: increase the volume extension on storage migration
During live migration VDSM needs to subsequently extend two volumes
instead of one; doubling the size of the chunk to extend the watermark
limit is doubled and VDSM has more time to accomplish the operations.
Change-Id: Ib61375613712feb7118a80c50b73e678d257f251
Signed-off-by: Federico Simoncelli <fsimonce at redhat.com>
---
M vdsm/libvirtvm.py
M vdsm/vm.py
2 files changed, 15 insertions(+), 8 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/00/9200/1
diff --git a/vdsm/libvirtvm.py b/vdsm/libvirtvm.py
index ca31a43..5f525bf 100644
--- a/vdsm/libvirtvm.py
+++ b/vdsm/libvirtvm.py
@@ -108,7 +108,7 @@
capacity, alloc, physical = \
self._vm._dom.blockInfo(vmDrive.path, 0)
- if physical - alloc >= self._vm._MIN_DISK_REMAIN:
+ if physical - alloc >= vmDrive.watermarkLimit:
continue
self._log.info('%s/%s apparent: %s capacity: %s, alloc: %s, '
@@ -1024,6 +1024,9 @@
class Drive(LibvirtVmDevice):
+ VOLWM_CHUNK_MB = config.getint('irs', 'volume_utilization_chunk_mb')
+ VOLWM_FREE_PCT = 100 - config.getint('irs', 'volume_utilization_percent')
+ VOLWM_CHUNK_LSM_MULT = 2 # Chunk multiplier during live storage migration
def __init__(self, conf, log, **kwargs):
if not kwargs.get('serial'):
@@ -1041,6 +1044,16 @@
self._blockDev = None
self._customize()
+
+ @property
+ def volExtensionChunk(self):
+ if hasattr(self, "diskReplicate"):
+ return self.VOLWM_CHUNK_MB * self.VOLWM_CHUNK_LSM_MULT
+ return self.VOLWM_CHUNK_MB
+
+ @property
+ def watermarkLimit(self):
+ return self.VOLWM_FREE_PCT * self.volExtensionChunk * (2 ** 20 / 100)
@property
def blockDev(self):
@@ -1195,12 +1208,6 @@
self._qemuguestSocketFile = (constants.P_LIBVIRT_VMCHANNELS +
self.conf['vmName'].encode('utf-8') +
'.' + _QEMU_GA_DEVICE_NAME)
- # TODO find a better idea how to calculate this constant only after
- # config is initialized
- self._MIN_DISK_REMAIN = \
- ((100 - config.getint('irs', 'volume_utilization_percent')) *
- config.getint('irs', 'volume_utilization_chunk_mb') *
- 2 ** 20 / 100)
self._lastXMLDesc = '<domain><uuid>%s</uuid></domain>' % self.id
self._devXmlHash = '0'
self._released = False
diff --git a/vdsm/vm.py b/vdsm/vm.py
index 7a421bf..8661911 100644
--- a/vdsm/vm.py
+++ b/vdsm/vm.py
@@ -800,7 +800,7 @@
if newSize is None:
# newSize is always in megabytes
- newSize = (config.getint('irs', 'volume_utilization_chunk_mb') +
+ newSize = (vmDrive.volExtensionChunk +
((vmDrive.apparentsize + constants.MEGAB - 1) /
constants.MEGAB))
--
To view, visit http://gerrit.ovirt.org/9200
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib61375613712feb7118a80c50b73e678d257f251
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <fsimonce at redhat.com>
More information about the vdsm-patches
mailing list