必须按硬盘类型选择对应方法:HDD用shred/dd关闭写缓存覆写,SSD/NVMe必须用ATA Secure Erase或nvme sanitize硬件指令,因FTL机制使软件覆盖无效;擦除前需卸载分区、wipefs清除元数据,并用hexdump抽查验证。
直接擦除整块硬盘的敏感数据,不能只靠 rm 或格式化。真正安全的方式取决于硬盘类型(HDD 还是 SSD/NVMe),并需绕过文件系统层、缓存和硬件映射机制。
执行以下命令快速判断:
lsblk -o NAME,ROTA,MODEL —— 查看 ROTA 值:1 是机械硬盘(HDD),0 是固态盘(SSD/NVMe)hdparm -I /dev/sdX | grep -i "supported|not.*supported" —— 检查 HDD 是否支持 ATA Secure Erasesudo nvme list 或 sudo nvme id-ctrl /dev/nvme0n1 —— 确认 NVMe 设备是否支持 sanitize 或 format 命令sudo umount /dev/sdX* —— 必须卸载所有分区,否则写入会被拦截对传统机械硬盘,覆盖写入有效,但必须关闭磁盘写缓存,并确保无 LVM/RAID/加密层干扰:
sudo hdparm -W0 /dev/sdX
sudo shred -v -n 3 /dev/sdX
dd 加速(适合大容量):sudo dd if=/dev/urandom of=/dev/sdX bs=4M status=progress && sync
sudo dd if=/dev/zero of=/dev/sdX bs=4M count=100
SSD 的 FTL(闪存转换层)、磨损均衡和 TRIM 机制会让软件覆盖完全失效——你写的逻辑地址,物理页可能根本没被触达。
sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
sudo hdparm --user-master u --security-erase Eins /dev/sdX
sudo hdparm --user-master u --security-disable Eins /dev/sdX
nvme-cli:sudo nvme format /dev/nvme0n1 --ses=1(全盘安全擦除)
或更彻底:sudo nvme sanitize start /dev/nvme0n1 --no-deallocate --overwrite
intelmas(Intel)、wdclear(WD)、seagate-tools
即使数据已擦,分区表、LVM 标签、RAID 元数据仍可能被系统读取,暴露旧用途。用 wipefs 彻底清空这些“指纹”:
sudo wipefs -n /dev/sdX
sudo wipefs -a /dev/sdX
sudo wipefs -t ext4,lvm-pv /dev/sdX
不复杂但容易忽略:HDD 和 SSD 必须走不同路径,混用方法等于白做。擦完建议用 sudo hexdump -C /dev/sdX | head -20 快速抽查开头是否已无可读结构。