本文目录导读:

关于你提到的“批量SDD”,我理解你可能是指 批量处理SSD(固态硬盘) 相关操作,比如批量擦除、批量分区格式化、批量刷固件、批量检测健康度等。
由于行业内的缩写习惯,“SDD”大概率是“SSD”的笔误,以下针对批量操作SSD的实用脚本和常见场景进行说明:
重要前提
批量操作(尤其是擦除、刷固件)具有极高风险! 需要确保:
- 目标确认:脚本必须能精准匹配目标SSD(通过序列号、型号、接口位置等),避免误操作系统盘或数据盘。
- 权限要求:几乎全部操作都需要 sudo/管理员权限。
- 硬件支持:部分功能(如NVMe安全擦除)依赖主板/UEFI支持。
常见批量操作场景及实用脚本/工具
批量检测SSD健康度与信息(最安全,推荐首选)
场景:回收、盘点、质检大量SSD,需要快速获取型号、容量、健康度、通电时间、写入量。
- Linux/macOS (使用 smartctl)
#!/bin/bash
# 批量获取所有NVMe/SATA SSD的SMART信息
# 需要安装 smartmontools: sudo apt install smartmontools
for disk in /dev/nvme[0-9]n[0-9] /dev/sd[a-z]; do
if [ -b "$disk" ]; then
echo "=== 正在检测: $disk ==="
# 对于NVMe
if [[ $disk == /dev/nvme* ]]; then
sudo smartctl -a $disk | grep -E "Model Number|Serial Number|Percentage Used|Total NVM Capacity|Temperature|Power On Hours|Data Units Written"
# 对于SATA
else
sudo smartctl -A $disk | grep -E "Device Model|Serial|Power_On_Hours|Wear_Leveling|Media_Wearout"
fi
echo ""
fi
done
# 输出结果可以轻松重定向到 csv/txt 文件
- Windows (使用 wmic 或 Get-PhysicalDisk)
# PowerShell 脚本
Get-PhysicalDisk | Where-Object {$_.MediaType -eq 'SSD' -or $_.BusType -eq 'NVMe'} | ForEach-Object {
$disk = $_
$info = Get-Disk -Number $disk.DeviceNumber | Get-StorageReliabilityCounter
[PSCustomObject]@{
Device = $disk.FriendlyName
Serial = $disk.SerialNumber
SizeGB = [math]::Round($disk.Size/1GB,2)
PowerOnHours = $info.PowerOnHours
ReadErrorsTotal = $info.ReadErrorsTotal
WearPercentage = $info.WearPercentage
}
} | Export-Csv -Path SSD_Report.csv -NoTypeInformation
批量安全擦除(清除数据,恢复性能)
场景:二手收来的盘需要彻底清空,或旧盘性能下降需要重置。
- 核心工具:nvme-cli (Linux) 或 hdparm (对于SATA)
⚠️ 极度危险:务必确认盘符正确!
#!/bin/bash
# 批量擦除NVMe SSD(安全擦除)
# 需要安装 nvme-cli: sudo apt install nvme-cli
DISKS=("/dev/nvme0n1" "/dev/nvme1n1" "/dev/nvme2n1") # 手动列出目标盘
for disk in "${DISKS[@]}"; do
echo "准备执行安全擦除: $disk"
# 1. 为了保险,先让盘块保持非挂载状态
sudo umount ${disk}p1 ${disk}p2 2>/dev/null
# 2. 设置安全擦除密码
echo -n "test" | sudo nvme admin-passthru $disk -o 0x01 -w -v
# 3. 执行擦除
sudo nvme format $disk --ses=1
if [ $? -eq 0 ]; then
echo "成功擦除: $disk"
else
echo "擦除失败: $disk"
fi
done
批量分区与格式化(部署新系统)
场景:同时处理几十块盘,快速格式化并设为统一分区表。
- 使用 parted + mkfs 的循环脚本 (Linux)
#!/bin/bash
# 针对NVMe批量创建GPT分区表 + 1个ext4分区
DISK_LIST=$(lsblk -ndo NAME,TRAN | grep -E "nvme|sata" | awk '{print $1}')
for disk in ${DISK_LIST}; do
DEV="/dev/$disk"
# 跳过系统盘(可通过挂载点或根分区UUID判断,此处仅为示例)
if [ "$disk" == "sda" ] || [ "$disk" == "nvme0n1" ]; then
continue
fi
sudo sgdisk -o $DEV # 清空并创建新GPT
sudo sgdisk -n 1:0:-1 $DEV # 创建一个分区占全盘
sudo mkfs.ext4 -F "${DEV}p1" # 格式化分区
echo "已完成: $DEV"
done
批量刷写固件(不推荐脚本批量操作)
场景:更新SSD固件以修复BUG。
- 风险极高:不同品牌、型号的刷写工具不同(如Intel的ISDCT、三星的Magician、海力士的PE Toolkit)。
- 不推荐写通用脚本,建议你使用各厂商提供的官方管理软件的“批量更新”功能(如Supermicro的SSD Manager、LSI的存储管理工具),它们内置了型号验证和电源保护。
是否需要“实用脚本批量SDD”?
如果你的问题实际是指 S.D.D. (如软件定义驱动、软件分发、或其他领域缩写),请告诉我具体场景。
如果指的是SSD,请根据你的操作系统和具体需求选择上述脚本。
友情提示
批量操作SSD时,印刷电路板(PCB)颜色、标签颜色、螺丝孔位等往往相似,极易混淆,建议在物理贴上编号标签,并在脚本中强制读取该盘的物理WWID(世界唯一标识符)或NVMe序列号与列表比对,而不是仅依赖 /dev/sdb, /dev/nvme1n1 这种可能变更的路径。
如果你能提供具体的目标型号(如三星870 EVO、Intel P4510)和操作系统环境,我可以提供更安全、精细的脚本片段。