在日常使用中,如果我们需要报废、转让或重新利用一块硬盘,彻底清除数据 是非常重要的一步。单纯的删除文件或重新分区并不会真正抹掉数据,仍可能被恢复工具找回。本文记录在 Linux 下对一块 机械硬盘(/dev/sda) 和一块 NVMe SSD(/dev/nvme0n1) 进行彻底清理的过程。
为什么要彻底清除?
- 隐私保护:避免个人文件、照片、证件信息被恢复。
- 安全合规:某些公司或行业对数据销毁有合规要求。
- 磁盘重利用:把磁盘恢复成“干净”的裸盘,方便重新分区。
一、清理机械硬盘(/dev/sda)
对于机械硬盘,最常见的方式就是用 dd 或 shred 将整个盘覆盖。
方法 1:用 dd 写满 0
sudo dd if=/dev/zero of=/dev/sda bs=1M status=progress
if=/dev/zero表示输入源为无限的零字节流。of=/dev/sda指定目标盘。bs=1M设置块大小,提高写入效率。status=progress实时显示写入进度。
最终磁盘会被完全写满 0,所有数据被覆盖。
方法 2:用 shred 多次覆盖(更彻底)
sudo shred -n 3 -z -v /dev/sda
-n 3表示随机数据覆盖 3 遍。-z表示最后一遍用 0 覆盖。-v打印执行信息。
这种方式比单次写 0 更难恢复,但耗时也更长。
二、清理 NVMe SSD(/dev/nvme0n1)
SSD 与机械硬盘不同,出于磨损均衡和 Flash 管理的原因,单纯的写零未必能保证彻底覆盖。NVMe 盘推荐使用固件自带的 安全擦除指令。
使用 NVMe Secure Erase
安装 nvme-cli 工具:
sudo pacman -S nvme-cli # Arch Linux
执行安全擦除:
sudo nvme format /dev/nvme0n1 -s1
-s1表示 Secure Erase 模式。- 命令会提示 10 秒倒计时,防止误操作。
- 执行后输出
Success formatting namespace:ffffffff表示清除完成。
此方法速度极快(通常几秒钟),效果等同于恢复出厂,所有数据不可恢复。
三、执行结果
清理完成后,可以用以下命令确认:
lsblk
sudo fdisk -l
输出中应显示磁盘为空盘状态,无任何分区表。此时你可以:
- 保持裸盘状态,留待后用。
- 重新创建分区表(GPT/MBR),格式化为 ext4、btrfs 等文件系统。
四、注意事项
- 谨慎操作:确认磁盘名称,避免误清系统盘。
- HDD 与 SSD 的差异:
- HDD 用
dd或shred就足够。 - SSD 建议使用
nvme format或hdparm secure-erase。
- HDD 用
- 物理销毁:如果要达到最高级别的数据不可恢复(例如涉密数据),必须物理破坏盘片或芯片。
五、总结
/dev/sda(HDD):dd或shred完全覆盖。/dev/nvme0n1(NVMe SSD):nvme format -s1一键安全擦除。- 完成后两块盘都回到“出厂空盘”状态,数据无法恢复。
通过这套方法,无论是旧硬盘转卖还是 SSD 退役,都能最大限度地保障数据安全。