使用与 sg_format 300 多个并行驱动器

使用与 sg_format 300 多个并行驱动器

前段时间了解了软件并行:https://forums.servethehome.com/index.php?threads/mdadm-create-raid-0-quick-format.41161/#post-389210

现在我的目标与以前几乎相同,但我想尝试以不同的方式去做。

对于设置我有:

配备单端口 SAS2 HBA 的戴尔 SFF 台式机

总共 14 个 NetApp SAS3 磁盘架

每个磁盘架安装了 24 个 960GB 12G SAS SSD

驱动器运行 520 扇区大小

目标是在所有驱动器上运行 sg_format --format -e /dev/sgXX,最好使用并行。

它可以一项一项地完成,但我想使用并行来完成它,以了解它的功能,并可能为所有类似的未来项目更快地完成这项工作。

我使用 Ubuntu 23.10,添加了 Universe 存储库,并行使用了 apt update 和 apt install。 Parallel 以及 sg3-utils 和 smartmontools 现已安装。

我的 HBA 可以处理 128 个设备,其中设备 1(或 0)是 HBA 本身,因此我总共有 5 个磁盘架在链中运行,这意味着我连接了 120 个驱动器。它们从 /dev/sg2 开始,到 /dev/sg126 结束。

我使用的命令是:parallel sg_format --format -e ::: /dev/sg[2-126]

运行它时,终端会冻结几秒钟,我想这是可以预料的。

然而,实际上只有 /dev/sg2 和 /dev/sg6 正在运行,请参见下图。 仅 sg2 和 sg6 运行格式的图像

所有驱动器都完全相同,但只有其中 2 个想要实际启动格式化。我没有收到任何错误或任何无法启动的原因。

我尝试“手动”启动驱动器,因此只需使用 sg_format 命令,所有驱动器都可以正常启动。

如果我运行命令

并行 sg_format --format -e ::: /dev/sg[2-10]

它在 /dev/sg2 上运行 sg_format,然后在 /dev/sg0 上运行,仅这两个。

当然,我在输入多个设备时遇到了问题。

有人知道吗?

答案1

那是因为你正在使用/dev/sg[2-126].不幸的是,范围不能处理多位数字。他们是特点范围,并且126不是字符。因此,虽然您可以拥有[0-9],但您不能拥有,[0-10]因为这意味着“从 0 到 1 的字符,然后是 0”。所以你的[2-126]实际上意味着“2和1之间的数字”,这是没有意义的,因为2在1之后,然后是具体数字26。这就是为什么您只匹配sg2sg6

因此,您的第一个命令parallel sg_format --format -e ::: /dev/sg[2-126]是在sg2和上运行的sg6。您的第二个命令在andparallel sg_format --format -e ::: /dev/sg[2-10]上运行,因为被解释为单个字符,因为和之间没有其他字符,然后被视为其本身。/dev/sg2/dev/sg0[2-1]2210

你想要的是使用大括号扩展反而:

parallel sg_format --format -e ::: /dev/sg{2..126}

或者,要一次运行尽可能多的作业,请使用:

parallel -j0 sg_format --format -e ::: /dev/sg{2..126}

相关内容