删除逻辑卷而不确认

删除逻辑卷而不确认

我正在编写一个自动脚本来删除逻辑卷,但我不能 100% 确定如何执行此操作。看起来应该使用-f标志 to lvremove,但文档似乎太草率,让我对此感到不舒服:

-f|--强制...

推翻各种检查、确认和保护。请务必谨慎使用。

那些“各种检查、确认和保护”是什么?对我来说,除了确认删除卷之外,我似乎还回避了其他事情。

答案1

我认为您最大的风险是删除仍在使用的卷。即 ifdmsetup info显示非零Open count

# dmsetup info SSD-root | grep Open
Open count:        1

但这种情况下lvremove会直接拒绝操作。

# lvremove SSD/root
  Logical volume SSD/root contains a filesystem in use.

即使--force它仍然拒绝删除它(不要在家尝试这个)。

# lvremove --force --yes --verbose SSD/root
    Device dm-33 (253:33) appears to be mounted on /.
  Logical volume SSD/root contains a filesystem in use.

如果没有安装,这甚至可以工作,否则只是在使用时。

# lvcreate -n test -L100M SSD
# losetup --find --show /dev/SSD/test
# time lvremove SSD/test
  Logical volume SSD/test is in use.
real    0m4.816s
user    0m0.008s
sys 0m0.005s

实际上,这非常慢(此 lvremove 调用需要 5 秒!),因为它到处寻找挂载点,但没有找到,并且不断重新检查打开计数。所以这就像“嗯,这没有安装,所以为什么仍然打开”。

因此,对于常规卷,我认为在这里使用相当安全--force;它不会强制执行实际上危险的情况。联机帮助页甚至在示例部分建议使用武力。但是,我还没有测试快照、缓存和其他特殊卷的情况会发生什么。

答案2

的手册页lvremove还提供了--yes,其中指出

不要以交互方式提示确认,但始终假设答案是肯定的。

这应该允许您避免使用--force(及其所有未指定的检查和平衡),同时仍然能够以编程方式删除卷。

(我知道我没有解决--force删除的保护问题。我提供了一种替代方案,我相信它可以满足您的基本要求。如果您确实想了解,则不必觉得您必须接受这个答案--force。)

相关内容