def reduce(self, newSize): """Reduce a logical volume 'newSize' - new size in blocks """ self.log.info("Request to reduce LV %s of image %s in VG %s with " "size = %s", self.volUUID, self.imgUUID, self.sdUUID, newSize) sizemb = (newSize + SECTORS_TO_MB - 1) / SECTORS_TO_MB lvm.reduceLV(self.sdUUID, self.volUUID, sizemb)
def reduce(self, newSize, allowActive=False): """ Reduce the size of the logical volume. Arguments: newSize (int) - new size in blocks allowActive (boolean) - indicates whether the LV is active """ self.log.info("Request to reduce LV %s of image %s in VG %s with " "size = %s allowActive = %s", self.volUUID, self.imgUUID, self.sdUUID, newSize, allowActive) sizemb = utils.round(newSize, BLOCKS_TO_MB) // BLOCKS_TO_MB lvm.reduceLV(self.sdUUID, self.volUUID, sizemb, force=allowActive)
def test_lv_extend_reduce(tmp_storage): dev_size = 20 * 1024**3 dev = tmp_storage.create_device(dev_size) vg_name = str(uuid.uuid4()) lv_name = str(uuid.uuid4()) lvm.set_read_only(False) lvm.createVG(vg_name, [dev], "initial-tag", 128) lvm.createLV(vg_name, lv_name, 1024) lvm.extendLV(vg_name, lv_name, 2048) lv = lvm.getLV(vg_name, lv_name) assert int(lv.size) == 2 * 1024**3 # Reducing active LV requires force. lvm.reduceLV(vg_name, lv_name, 1024, force=True) lv = lvm.getLV(vg_name, lv_name) assert int(lv.size) == 1 * 1024**3
def test_lv_extend_reduce(tmp_storage): dev_size = 20 * GiB dev = tmp_storage.create_device(dev_size) vg_name = str(uuid.uuid4()) lv_name = str(uuid.uuid4()) lvm.set_read_only(False) lvm.createVG(vg_name, [dev], "initial-tag", 128) lvm.createLV(vg_name, lv_name, 1024) lvm.extendLV(vg_name, lv_name, 2048) lv = lvm.getLV(vg_name, lv_name) assert int(lv.size) == 2 * GiB # Extending LV to same does nothing. lvm.extendLV(vg_name, lv_name, 2048) lvm.invalidateVG(vg_name) lv = lvm.getLV(vg_name, lv_name) assert int(lv.size) == 2 * GiB # Extending LV to smaller size does nothing. lvm.extendLV(vg_name, lv_name, 1024) lvm.invalidateVG(vg_name) lv = lvm.getLV(vg_name, lv_name) assert int(lv.size) == 2 * GiB # Reducing active LV requires force. lvm.reduceLV(vg_name, lv_name, 1024, force=True) lv = lvm.getLV(vg_name, lv_name) assert int(lv.size) == 1 * GiB