bash - 测试磁盘是否未分区


5

我目前正在开发一个DIY网络存储,它使用mhddfs聚合可用磁盘空间。

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

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

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

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


我认为答案将涉及脚本 DD 偷看 划分 。也许熟悉分区表数据的人想要用脚本化的答案来衡量?
zero2cx

如果整个磁盘已加密, 你可能无法分辨
Kamil Maciorowski

Answers:


3

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

/sbin/parted -l

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

/sbin/parted -lm

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

然后,使用类似的东西:

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

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


3

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

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

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


0

看看 gpart 命令(猜测PC型硬盘分区,需要root)。另一个问题是:当插入新磁盘时,您的脚本是如何启动的?


0

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

使用 fdisk 要么 sfdisk 来自 util-linux 包:

fdisk -l /path/to/disk

要么:

sfdisk -l /path/to/disk

列出当前分区表。

Linux检测到可用的分区,所以查看 /dev/disk 目录可能足以满足您的需求。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.