diff --git a/pym/calculate/lib/utils/partition.py b/pym/calculate/lib/utils/partition.py index 7335994..0b4a858 100644 --- a/pym/calculate/lib/utils/partition.py +++ b/pym/calculate/lib/utils/partition.py @@ -15,10 +15,11 @@ # limitations under the License. import sys from abc import ABCMeta, abstractmethod -from .files import process, getProgPath +from .files import process, getProgPath, getRunCommands from .tools import Sizes, classificate, traverse from .device import humanreadableSize import re +import os _ = lambda x: x from ..cl_lang import setLocalTranslate @@ -537,9 +538,19 @@ class LvmVolumeGroup(SizeableDisk, LvmDisk): for dev in self.devices: process(wipefs_cmd, "-af", dev).success() + def _kill_pvscan_processes(self): + """ + Прибить lvm pvscan процессы, потому что они тормозят выполнением pvcreate + """ + pvscan_pids = (int(pid) for pid, cmd in getRunCommands(withpid=True) + if "pvscan" in cmd) + for pvscan_pid in pvscan_pids: + os.kill(pvscan_pid, 9) + def create_physical_volumes(self): self.wipefs() - p = process(self.lvm_cmd, "pvcreate", "-ff", *self.devices) + self._kill_pvscan_processes() + p = process(self.lvm_cmd, "pvcreate", "-y", "-ff", *self.devices) return p.success() def create_volumes_group(self): @@ -558,7 +569,7 @@ class LvmVolumeGroup(SizeableDisk, LvmDisk): size_param = self._lvmsize(size) self.occupe_size(size) return process(self.lvm_cmd, "lvcreate", size_param, - self.vgname, "-n", lvname).success() + self.vgname, "-y", "-n", lvname).success() def get_partition_name(self, name): return "/dev/%s/%s" % (self.vgname, name)