如何通过sg utils并行格式化服务器中的多块硬盘?
批量并行格式化硬盘的解决方案
核心思路:用bash并行执行格式化命令
在GParted Live的终端环境下,无需额外工具,直接通过xargs控制并发数,同时处理多块硬盘,大幅压缩总耗时。
步骤1:确认目标硬盘列表
先筛选出需要格式化的硬盘,必须排除系统盘(通常为/dev/sda),防止误操作损坏系统:
# 列出所有非系统盘的块设备,输出到临时文件 lsblk -d | grep -v sda | awk '{print "/dev/"$1}' > /tmp/disks_to_format.txt
可通过cat /tmp/disks_to_format.txt核对列表,确保无系统盘混入。
步骤2:并行执行格式化命令
用xargs的-P参数指定并发数(根据服务器IO性能调整,建议4-8之间,示例设为6),同时启动多个sg_format进程:
# 并行执行,每个硬盘的格式化日志单独存储,方便后续查看进度 xargs -P 6 -I {} sh -c 'sg_format --format --size=512 {} > /tmp/format_{##*/}.log 2>&1' < /tmp/disks_to_format.txt
查看进度与状态
- 查看所有格式化进程:
ps aux | grep sg_format - 查看单块硬盘的格式化进度:
tail -f /tmp/format_sdb.log(替换sdb为对应硬盘名) - 查看后台任务状态:
jobs
注意事项
- 并发数不宜过高:过多进程会导致服务器IO饱和,反而降低单盘格式化速度,甚至引发硬件负载过高问题
- 避免中途重启服务器:格式化过程中若服务器重启,对应硬盘需重新执行格式化
- 全程用终端操作:无需加载GParted GUI,避开HP iLO 4加载GUI崩溃的问题
内容的提问来源于stack exchange,提问作者ignis
相关产品推荐
相关产品推荐

