bash - 测试磁盘是否未分区

Joh*_*Doe 6 storage nas bash partitioning dd

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

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

如果服务器关闭,插入新磁盘并再次打开服务器,则会出现相同的情况。

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

问题还包括不应有错误检测。例如,如果插入了一个加密磁盘,它不应该被自动重新分区和格式化——这一点是问题的主要兴趣点。

小智 5

这是我用于备份的一种方式。

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

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


小智 3

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

/sbin/parted -l
Run Code Online (Sandbox Code Playgroud)

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

/sbin/parted -lm
Run Code Online (Sandbox Code Playgroud)

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

然后,使用类似的东西:

/sbin/parted <device> --script mkpart primary 1 -- -1
Run Code Online (Sandbox Code Playgroud)

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