我正在编写一个脚本,该脚本可以自动检测已添加的新驱动器,以便对其进行格式化并转换为 RAID-5 阵列。我能够检测到驱动器并毫不费力地对其进行格式化,但在创建(以及随后销毁)RAID 设备时遇到了问题。
一旦检测并格式化,我会将检测到的驱动器传递给以下命令,如下所示:
mdadm --create ${RAID_DEVICE} --level=5 --raid-devices=${COUNT} ${DEVICES}
mkfs.ext4 ${RAID_DEVICE}
mdadm --detail --scan >> /etc/mdadm.conf
UUID=$(cat /etc/mdadm.conf | grep ${RAID_DEVICE} | awk '{print $6}')
UUID=$(echo ${UUID:5})
echo "UUID=${UUID} ${MOUNT_LOCATION} ext4 defaults 0 0" >> /etc/fstab
mount -a
现在,出于测试目的,因为我目前还没有用于此项目的 SATA 驱动器,所以我将其设置为专门检测 USB 设备,并使用 3 个 USB 设备。该脚本正确地从 mdadm.conf 识别了设备的 UUID,但从mount -a
脚本运行时,它说 UUID 未被识别为设备。但是,当我将 UUID 替换为时${RAID_DEVICE}
,通常/dev/md0
它可以正确安装该设备。
此外,安装脚本(在多次测试脚本并手动解构和卸载 RAID 设备后)显示 USB 设备已经是 RAID 设备的一部分。我尝试在测试之间通过运行以下命令手动撤消该设备:
umount ${MOUNT_LOCATION}
mdadm ${RAID_DEVICE} --fail ${DEVICES}
mdadm ${RAID_DEVICE} --remove ${DEVICES}
mdadm --stop ${RAID_DEVICE}
mdadm --zero-superblock ${DEVICES}
但是,在重新创建 RAID 设备时,它似乎仍将这些设备视为 md0 RAID 设备的一部分。我是不是漏掉了什么步骤?停止后尝试调用--remove
它/dev/md0
,结果提示没有这样的目录。
那么,为什么 UUID 不能正确用作 RAID 设备的标识符?为什么我之后似乎无法正确从驱动器中删除 RAID 信息?这与它们是 USB 设备有什么关系吗?
我非常感激任何关于正确使用该mdadm
工具的指导。
答案1
您要放入 fstab 中的 UUID 不是阵列的 UUID,而是您在阵列上创建的文件系统的 UUID。您可以使用该blkid
实用程序查找其值。如果您拥有与我相同的 udev 规则,您可能会发现其中有一个条目,/dev/disk/by-id
您可以通过使用阵列的 uuid 来间接访问,例如:
$ sudo blkid /dev/disk/by-id/md-uuid-${UUID}
/dev/disk/by-id/md-uuid-c6a65df0:6df343e6:bd3d6cfc:1349c37c: UUID="901e8907-8f74-4300-8410-654a9410b236" TYPE="xfs"
否则,您可以直接运行blkid ${RAID_DEVICE}
。