bash-测试磁盘是否未分区

bash-测试磁盘是否未分区

我目前正在研究使用 mhddfs 聚合可用磁盘空间的 DIY 网络存储。

现在我想要的是,例如给定一个热插拔托架,当我插入一个全新的未分区磁盘时,我希望使用 bash 脚本自动对磁盘进行分区并挂载新的 mhddfs 分区。

如果服务器关闭、插入新磁盘并再次打开服务器,也会发生同样的情况。

所以问题是:如何使用 bash 脚本检测未分区的磁盘?

问题还包括不应有错误检测。例如,如果插入加密磁盘,则不应自动重新分区和格式化 - 这一点是该问题的主要关注点。

答案1

执行检查和分区的一个选项是parted命令。要获取系统中所有磁盘块设备的分区信息(以“人性化”的格式):

/sbin/parted -l

或者,以“机器可读”格式使用:

/sbin/parted -lm

您将需要解析输出以确定磁盘是否具有有效的分区表。

然后,使用类似如下的方法:

/sbin/parted <device> --script mkpart primary 1 -- -1

使用整个磁盘创建一个分区。 mkpart 子命令的语法来自内存,我没有可用磁盘的系统来验证它是否正确

答案2

这是我用于备份的方法。

if [ $(/sbin/sfdisk -d ${DEV} 2>&1) == "" ]; then echo "Device not partitioned"; fi

其中 ${DEV} 是您正在询问的设备(最好从 udev 脚本运行。)

答案3

我假设您正在 Linux 内核上执行此操作。

使用fdisksfdisk来自util-linux包:

fdisk -l /path/to/disk

或者:

sfdisk -l /path/to/disk

列出当前分区表。

Linux 检测可用的分区,因此查找/dev/disk目录可能足以满足您的需要。

答案4

我非常喜欢发表在堆栈溢出这表明:

parted --script

喜欢:

parted --script /dev/sdb print

相关内容