VirtualMachine: Refresh LVM cache before creating PV
When *lvmetad* is in use, it will cache volume group metadata from previous runs of `mkvm` that used the same block device and prevent new physical volumes from being created on it. Running `pvscan` alone does not refresh the cache unless it is told to do so with the `--cache` argument.master
parent
e28238dc33
commit
ef6b3ba8e8
|
@ -135,9 +135,12 @@ def partition_gpt(blockdev, partitions):
|
||||||
raise DiskError('Failed to partition disk: {}'.format(msg))
|
raise DiskError('Failed to partition disk: {}'.format(msg))
|
||||||
|
|
||||||
|
|
||||||
def pvscan():
|
def pvscan(dev=None):
|
||||||
|
cmd = ['pvscan']
|
||||||
|
if dev:
|
||||||
|
cmd += ('--cache', dev)
|
||||||
try:
|
try:
|
||||||
output = subprocess.check_output(['pvscan'], stderr=subprocess.STDOUT)
|
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
|
||||||
if output:
|
if output:
|
||||||
log.debug('pvscan:\n{}'.format(output.decode().rstrip()))
|
log.debug('pvscan:\n{}'.format(output.decode().rstrip()))
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
|
|
|
@ -372,8 +372,7 @@ class VirtualMachine(object):
|
||||||
storage.partition_gpt(self._disk.blockdev, self.partitions)
|
storage.partition_gpt(self._disk.blockdev, self.partitions)
|
||||||
|
|
||||||
def _partition_lvm(self):
|
def _partition_lvm(self):
|
||||||
blockdev = self._disk.blockdev
|
storage.pvscan(self._disk.blockdev)
|
||||||
storage.pvscan()
|
|
||||||
pvs = []
|
pvs = []
|
||||||
if self.partitions:
|
if self.partitions:
|
||||||
partitions = self._disk.partitions
|
partitions = self._disk.partitions
|
||||||
|
@ -381,7 +380,7 @@ class VirtualMachine(object):
|
||||||
if part.get('type') == 0x8e00:
|
if part.get('type') == 0x8e00:
|
||||||
pvs.append(partitions[idx])
|
pvs.append(partitions[idx])
|
||||||
else:
|
else:
|
||||||
pvs.append(blockdev)
|
pvs.append(self._disk.blockdev)
|
||||||
storage.create_lvm_pv(*pvs)
|
storage.create_lvm_pv(*pvs)
|
||||||
storage.create_lvm_vg(self.vg_name, *pvs)
|
storage.create_lvm_vg(self.vg_name, *pvs)
|
||||||
for vol in self.volumes:
|
for vol in self.volumes:
|
||||||
|
|
Loading…
Reference in New Issue