我目前正在研究使用 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 内核上执行此操作。
使用fdisk
或sfdisk
来自util-linux
包:
fdisk -l /path/to/disk
或者:
sfdisk -l /path/to/disk
列出当前分区表。
Linux 检测可用的分区,因此查找/dev/disk
目录可能足以满足您的需要。