我必须将服务器内的 28 个 10TB 驱动器从 4096 字节重新格式化为 512 字节,以便 raid 控制器能够识别它们。
由于容量较大,当使用 GParted Live CD 和
sg_format --format --size=512 /dev/sdX
命令,单个驱动器需要很长时间才能完成该过程。
我的下一个猜测是通过在 bash 循环内运行它来顺序自动化该过程,但是,这样仍然需要大约 3-4 天才能完成。
有没有办法并行执行这个过程?任何帮助将不胜感激。我不介意切换到另一张 Live CD,但我更愿意继续使用 GParted,因为在这台服务器上启动某些东西已经很痛苦了。
我在终端内格式化了第一个驱动器,30 分钟内进度已达到 4%。
我第一次尝试加载 GParted GUI,但我认为它在某个地方崩溃了(可能是因为我使用 HP iLO 4 界面加载 .isos)并冻结了。
我使用并行命令解决了这个问题。 它允许在每个可用的 cpu 核心上运行任务。您可以使用
-j
选项定义内核数量,并使用 nproc
命令查看系统上有多少可用内核。
这是我使用的命令:
for i in {1..28}; do echo "sg_format --format --size=512 /dev/sg$i"; done | parallel -j40
但是,在此配置中,并行不会显示格式化过程的进度,直到作业完成。为了实现这一目标,我认为可以使用
--ungroup
选项。但不确定。
此外,我强烈建议不要终止正在运行的
sg_format
命令,因为之后重新初始化驱动器可能会非常麻烦。
仅供参考,此命令在 10TB SAS 驱动器上大约需要 13-14 小时才能终止。
我刚刚使用此开关在我的所有驱动器上运行了命令。
-e,--早 当给出 --format 时,此选项处于活动状态。该实用程序的默认操作是每 30 秒轮询一次磁盘以确定格式化操作的进度,直至完成。当给出此选项时,该实用程序将在格式化开始后立即“提前”退出。然后,用户可以使用其他实用程序(例如 sg_turs(8) 或 sg_requests(8))监视正在进行的格式化操作的进度。该选项和 --wait 不能同时给出。
我不知道同时执行多个操作可能会对性能造成什么样的影响,但它似乎有效。 我运行
sg_requests /dev/sda
查看格式化完成的百分比,并运行 sg_turs /dev/sda
查看设备是否准备就绪。