ATA S.E.cure Earse,该命令旨删除从 SSD 中的所有用户数据;
针对没有集成加密的 SSD,该命令将使驱动器恢复到其原始状态。这最初会将其性能恢复到可能的最高水平和最佳(最低数量)可能的 WA,但是一旦 SSD 再次开始 GC,那么性能和 WA 将开始恢复到以前的水平;
许多工具使用 ATA S.E. 命令来重置驱动器并提供用户界面。诸如 HDDerase 等等。部分 GParted 和 Ubuntu live CD 提供一个可引导的 Linux 磁盘实用程序系统,其包括 ATA S.E. 命令;
针对动态加密所有写入的驱动器,可以以另一种方式实施 ATA S.E.。每次完成安全擦除时,它们都会简单地归零,并生成一个新的随机加密密钥。这样就无法再读取旧数据,因为它无法解密。一些具有集成加密功能的驱动器之后也会物理清除所有块,而其他驱动器可能需要将 TRIM 命令发送到驱动器以将驱动器恢复到其原始的开箱状态(否则它们的性能可能会不能最大化);
ATA S.E. 数据擦除失败:某些驱动器可能部分(或完全)无法使用 ATA S.E. 来擦除数据,并且数据仍可从此类驱动器恢复。这可能是设备控制器的问题(Beware – When SECURE ERASE doesn’t erase at all)
实施安全擦除
Solid state drive/Memory cell clearing – ArchWiki
ATA S.E.cure Erase (SE) and hdparm
接下来,我们将针对 SSD 进行磁盘擦除操作。
第一步、检查 ATA S.E. 启动
某些 BIOS 通过发出 SECURITY FREEZE 命令,以在启动操作系统前“冻结”驱动器,来阻止 ATA S.E. 命令:
# hdparm -I /dev/sdb | grep frozen frozen ---------------- // frozon 表示 ATA SE 被禁用
解锁 frozen 的方法如下:
1)或,将系统休眠,再唤醒,而后 frozen 将自动被解除;(通过该方法,我们得以解决 frozen 问题)
2)或,磁盘热插拔。如果内核崩溃,则主板开启 AHCI 允许插拔,而不会导致内核崩溃;
3)或,使用 USB 转 SATA 来实现实现热插拔;
# hdparm -I /dev/sdb | grep frozen not frozen
第二步、配置安全密码
# hdparm -I /dev/sdb | grep -E 'Security:' -A 8 Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count supported: enhanced erase 4min for SECURITY ERASE UNIT. 8min for ENHANCED SECURITY ERASE UNIT. # hdparm --user-master u --security-set-pass p /dev/sdb security_password: "p" /dev/sdb: Issuing SECURITY_SET_PASS command, password="p", user=user, mode=high # hdparm -I /dev/sdb | grep -E 'Security:' -A 8 Security: Master password revision code = 65534 supported enabled ------------------------------------------ // 已启用 not locked not frozen not expired: security count supported: enhanced erase Security level high
Q:为什么要配置 ATA S.E. 密码?(Purpose of password in SSD Secure Erase)
A:保证 SE 能够成功执行,并且保证磁盘在 SE 期间不被访问(除非知道密码)。当设置密码后,仅能进行两个操作:(1)继续执行当前擦除动作;(2)通过设置新密码,以进行新一轮的 SE 操作;
第三步、进行磁盘擦除
// Secure erase,将使用零填充设备 hdparm --user-master u --security-erase p /dev/sdb // 针对 supported: enhanced erase 设备 // 将使用厂商特定的模式来填充设备 hdparm --user-master u --security-erase-enhanced p /dev/sdb
第四步、禁用安全设置(可选)
当磁盘擦除结束后,Security 将自动进入 not enable 状态。
如果没有进入 not enable 状态,通常设备也没有完全被擦除,并且将处于 lock 状态。需要手动处理:
# hdparm -I /dev/sdx ... Security: Master password revision code = 65534 supported enabled locked not frozen not expired: security count supported: enhanced erase Security level high 98min for SECURITY ERASE UNIT. 98min for ENHANCED SECURITY ERASE UNIT. ... # hdparm --user-master u --security-unlock p /dev/sdx # hdparm --user-master u --security-disable p /dev/sdx
第五步、检查数据擦除结果
# dd if=/dev/sdb bs=8192 status=progress | hexdump 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 2000036970496 bytes (2.0 TB, 1.8 TiB) copied, 3880 s, 515 MB/s 244189323+0 records in 244189323+0 records out 2000398934016 bytes (2.0 TB, 1.8 TiB) copied, 3882.36 s, 515 MB/s 1d1c1116000 // hexdump 会将重复的行显示为 *,所以如果未清空,则会显示不同的行;
参考文献
Wikipedia/Write amplification/Secure erase