在 Linux 中,确定块设备是否正在被使用

在 Linux 中,确定块设备是否正在被使用

我正在执行自动化操作,它将重新格式化新磁盘并安装它。我希望我的自动化检查并确保磁盘未被使用,这样我就不会破坏已经运行的程序(就像今天发生在我身上的那样!)。

例如,当我进行自动化时,我的所有机器都有 /dev/sda 并且我将自动添加 /dev/sdb,但随后我尝试使用已经使用 /dev/sdb 的机器来做某事。

需要说明的是,我的意思不是磁盘是否有空间。我指的是磁盘是否已安装。

我想要某种命令或函数,可以将块设备传递给它,并且它将根据磁盘是否正在使用返回 true 或 false。

磁盘可以作为整个设备安装(例如“mount /dev/sda /mnt/foo”),也可以对其进行分区(例如“mount /dev/sda1 /mnt/foo”),并可以在 LVM 中使用。这可能是尚未发明的其他使用磁盘的方法。

我已尝试过 lsof 和 fuser,但都没有用。

请注意,磁盘必须已安装才能使我的测试失败。如果它已格式化,或属于卷组但未安装,我不在乎。没关系。

有没有比检查分区表并检查它是否是卷组的一部分,然后检查是否已挂载任何分区或 lvs 更好的方法?

谢谢!

相关内容