Merge "Correct the calculating of disk size when using lvm disk backend."
This commit is contained in:
@@ -2034,6 +2034,11 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if CONF.libvirt_images_type == 'lvm':
|
||||||
|
vg_total = libvirt_utils.volume_group_total_space(
|
||||||
|
CONF.libvirt_images_volume_group)
|
||||||
|
return vg_total / (1024 ** 3)
|
||||||
|
else:
|
||||||
stats = libvirt_utils.get_fs_info(CONF.instances_path)
|
stats = libvirt_utils.get_fs_info(CONF.instances_path)
|
||||||
return stats['total'] / (1024 ** 3)
|
return stats['total'] / (1024 ** 3)
|
||||||
|
|
||||||
@@ -2103,6 +2108,11 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if CONF.libvirt_images_type == 'lvm':
|
||||||
|
vg_used = libvirt_utils.volume_group_used_space(
|
||||||
|
CONF.libvirt_images_volume_group)
|
||||||
|
return vg_used / (1024 ** 3)
|
||||||
|
else:
|
||||||
stats = libvirt_utils.get_fs_info(CONF.instances_path)
|
stats = libvirt_utils.get_fs_info(CONF.instances_path)
|
||||||
return stats['used'] / (1024 ** 3)
|
return stats['used'] / (1024 ** 3)
|
||||||
|
|
||||||
|
|||||||
@@ -144,6 +144,36 @@ def volume_group_free_space(vg):
|
|||||||
return int(out.strip())
|
return int(out.strip())
|
||||||
|
|
||||||
|
|
||||||
|
def volume_group_total_space(vg):
|
||||||
|
"""Return total space on volume group in bytes.
|
||||||
|
|
||||||
|
:param vg: volume group name
|
||||||
|
"""
|
||||||
|
|
||||||
|
out, err = execute('vgs', '--noheadings', '--nosuffix',
|
||||||
|
'--units', 'b', '-o', 'vg_size', vg,
|
||||||
|
run_as_root=True)
|
||||||
|
return int(out.strip())
|
||||||
|
|
||||||
|
|
||||||
|
def volume_group_used_space(vg):
|
||||||
|
"""Return available space on volume group in bytes.
|
||||||
|
|
||||||
|
:param vg: volume group name
|
||||||
|
"""
|
||||||
|
|
||||||
|
out, err = execute('vgs', '--noheadings', '--nosuffix',
|
||||||
|
'--separator', '|',
|
||||||
|
'--units', 'b', '-o', 'vg_size,vg_free', vg,
|
||||||
|
run_as_root=True)
|
||||||
|
|
||||||
|
info = out.split('|')
|
||||||
|
if len(info) != 2:
|
||||||
|
raise RuntimeError(_("vg %s must be LVM volume group") % vg)
|
||||||
|
|
||||||
|
return int(info[0]) - int(info[1])
|
||||||
|
|
||||||
|
|
||||||
def list_logical_volumes(vg):
|
def list_logical_volumes(vg):
|
||||||
"""List logical volumes paths for given volume group.
|
"""List logical volumes paths for given volume group.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user