清空 SSD 的推荐方法是什么?

Lek*_*eyn 61 ssd trim

我刚收到我的新 SSD,因为旧的死了。此 Intel 320 SSD 支持 TRIM。出于测试目的,我的经销商在其上安装了 Windows,但我想摆脱它并在其上安装 Kubuntu。

它不必是“安全擦除”,我只需要以最健康的方式清空磁盘。我相信这dd if=/dev/zero of=/dev/sda只是用零填充块,从而进行另一次写入(如果我错了,请纠正我)。

我已经看到了如何启用 TRIM的答案,但它看起来适合清除空块,而不是擦除磁盘。

hdparm似乎是执行此操作的程序,但我不确定它是清除磁盘还是清除空块。从其手册页:

  --trim-sector-ranges
          For  Solid State Drives (SSDs).  EXCEPTIONALLY DANGEROUS. DO NOT
          USE THIS OPTION!!  Tells the drive firmware to discard  unneeded
          data  sectors,  destroying  any  data that may have been present
          within them.  This makes those sectors available  for  immediate
          use  by  the firmware's garbage collection mechanism, to improve
          scheduling for wear-leveling of the flash  media.   This  option
          expects  one  or  more  sector range pairs immediately after the
          option: an LBA starting address, a colon, and  a  sector  count,
          with no intervening spaces.  EXCEPTIONALLY DANGEROUS. DO NOT USE
          THIS OPTION!!
Run Code Online (Sandbox Code Playgroud)
          E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz
Run Code Online (Sandbox Code Playgroud)

如何使用 TRIM 使所有块显示为空?

psu*_*usi 61

ATA 安全擦除

您应该使用驱动器的安全擦除功能。

  1. 确保驱动器安全性没有被冻结。如果是,它可能有助于暂停和恢复计算机。

    $ sudo hdparm -I /dev/sdX | grep frozen
           not     frozen 
    
    Run Code Online (Sandbox Code Playgroud)

    (过滤后的)命令输出意味着该驱动器“未冻结”,您可以继续。

  2. 设置用户密码(此密码也被清除,确切的选择无关紧要)。

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
    Run Code Online (Sandbox Code Playgroud)
  3. 发出 ATA 安全擦除命令

    sudo hdparm --user-master u --security-erase Eins /dev/sdX
    
    Run Code Online (Sandbox Code Playgroud)

笔记:

  • /dev/sdX 是 SSD 作为要擦除的块设备。
  • Eins 是本例中选择的密码。

有关包括故障排除在内的完整说明,请参阅Linux 内核 wiki 中ATA 安全擦除文章


Tan*_*n六四 38

util-linux 2.23 提供了blkdiscard在不安全擦除数据的情况下丢弃数据。我测试过:适用于 SATA 和 mmcblk,但不适用于 USB。

摘自手册页blkdiscard(8)

姓名

blkdiscard - 丢弃设备上的扇区

概要

blkdiscard [-o offset] [-l length] [-s] [-v] device
Run Code Online (Sandbox Code Playgroud)

描述

blkdiscard 用于丢弃设备扇区。这对于固态驱动程序 (SSD) 和精简配置的存储非常有用。与 fstrim(8) 不同,该命令直接在块设备上使用。

默认情况下,blkdiscard 将丢弃设备上的所有块。选项可用于根据范围或大小修改此行为,如下所述。

device 参数是块设备的路径名。

警告:设备上丢弃区域中的所有数据都将丢失!

该命令从 Ubuntu 15.04 和 OpenSUSE 13.1 开始就存在(是的,OpenSUSE 比 Ubuntu 早 2 年)。

  • 谢谢你的欢迎。过时的帖子?旧的,但不是过时的,只要它出现在谷歌搜索结果的第一页,总会有新人在这里寻找相同的答案。对我来说,只有当更好的页面将它从第一个谷歌结果页面推出时,它才会过时。 (6认同)
  • 如果你想知道 `blkdiscard` 和 `hdparm` 命令之间的区别,可以在 [这里](http://www.spinics.net/lists/util-linux-ng/msg10351.html) 得到回答:“当你使用 blkdiscard,SSD(假设是 SATA SSD)将收到 ATA TRIM 命令,而 hdparm --security-erase 将发出 ATA SECURITY ERASE UNIT 命令。然后驱动器实际执行的操作取决于该特定 SSD 的实现细节固件。” (5认同)
  • 你实际上*不想*想使用`blkdiscard`。首先,它旨在通知驱动器它的特定部分*可能*被丢弃,而不是擦除整个内容。驱动器实际上可能会或可能不会擦除数据。安全擦除命令*必须*擦除所有数据,包括当前无法访问的驱动器部分中的任何数据。编辑:只需重新阅读问题并意识到它不需要擦除,但仍然值得注意。 (4认同)
  • ... [这篇文章](https://forums.anandtech.com/threads/samsung-840-850-pro-more-fatal-trim-firmware-bugs.2435924/#post-37487990)表明,尽管 RZAT规范,_“**TRIM [作为一个整体]只是建议性的**,[...]并且设备可以自由地默默地忽略请求的全部或部分”_。Linux 确实“将已知在 TRIM 后可靠返回零的驱动器列入白名单”_。[内核代码中的源代码](https://github.com/torvalds/linux/blob/e64f638483a21105c7ce330d543fa1f1c35b5bc7/drivers/ata/libata-core.c#L4109-L4286)。 (2认同)

Ror*_*sop 5

如果您不需要安全擦除,为什么不使用“使用整个磁盘”和“快速格式化”等价物的选项安装 kubuntu(现在不记得确切的术语)

这样你就可以放弃文件分配表,驱动器被有效地清空以进行覆盖。您实际上不需要清空它。

  • 参见 http://www.anandtech.com/show/2865/2。删除块与擦除它并将其标记为空不同。 (2认同)