建议清空SSD的方法是什么?


53

自旧的SSD死后,我才收到新的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!!
          E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz

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


好问题,也许仅仅删除NTFS文件系统就足够了吗?
htorque 2011年

1
因此,这只是一条评论。;)但是,您可以先检查该分区上的某些扇区sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C,然后使用最新的Gparted版本删除NTFS 分区,然后使用相同的命令重新检查-如果数据被擦除,您只会看到零。
htorque 2011年

1
@htorque:我刚刚测试了它,但是它不起作用,我已经使用过hexdump -C /sda1hexdump -C /sda1确定了起始块。不过好主意。
Lekensteyn 2011年

1
@Lekensteyn-我的意思是说这有点面颊,并在下面为您提供了一个正确的答案。Jeff的文章还介绍了性能,这就是尽管失败率他仍然使用它们的原因:-)
Rory Alsop

3
我仍然不明白为什么需要删除它……为什么不能仅用Ext4或其他格式对其进行格式化?
内森·奥斯曼

Answers:


52

ATA安全擦除

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

  1. 确保驱动器安全性未冻结。如果是这样,则可能有助于挂起和恢复计算机。

    $ sudo hdparm -I /dev/sdX | grep frozen
           not     frozen 
    

    (已过滤的)命令输出表示此驱动器“未冻结”,您可以继续。

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

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. 发出ATA安全擦除命令

    sudo hdparm --user-master u --security-erase Eins /dev/sdX
    

注意:

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

请参阅Linux内核Wiki中ATA安全擦除文章,以获取包括故障排除在内的完整说明。


感谢您提供的链接,对于拥有支持它的BIOS的用户来说,它看起来不错,但是我的似乎并不支持它。(冻结)
Lekensteyn's

欢呼!再次阅读文章后,我读到“将系统置于“睡眠”状态(Clevo M865TU笔记本电脑)也可以工作-并将其他驱动器也重置为“未冻结”。并尝试了它,因为我的也是最初来自Clevo(但BTO负责构建)。它有效,我现在看到“未冻结”。...但是步骤3失败,并显示“ ERASE_PREPARE:错误的地址”,因为我按时间替换了sudo而不是在命令前加了!
Lekensteyn 2011年

1
天哪,它工作了,只花了19秒!谢谢一群!希望我能投票给你十次:D
Lekensteyn 2011年

我只想报告,上面接受的答案有一个损坏的链接。如果没有上述链接,那将毫无用处,任何人都想发布该链接的摘要?
Ashimema 2011年

@Ashimema:该链接当前已断开,因为kernel.org被黑,因此无法维护。谷歌缓存是空的,但这个博客抄了一遍:peter.membrey.hk/2011/09/11/...
Lekensteyn

30

util-linux 2.23提供blkdiscard了丢弃数据而无需安全擦除数据的功能。我测试过:可以通过SATA和mmcblk运行,但不能通过USB运行。

摘录自手册页blkdiscard(8)

名称

blkdiscard-丢弃设备上的扇区

概要

blkdiscard [-o offset] [-l length] [-s] [-v] device

描述

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

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

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

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

自Ubuntu 15.04和OpenSUSE 13.1起存在该命令(是的,OpenSUSE比Ubuntu早2年)。


向此过时的帖子添加信息的谢意,欢迎访问Askubuntu。
mondjunge 2013年

Arch Linux已经拥有此软件包,因为util-linux 2.23于2013年4月25日发布
。– Lekensteyn

4
感谢您的欢迎。过时的帖子?只要它出现在Google搜索结果的第一页中,它就会很老,但并不落伍,总是有新人们在这里寻找相同的答案。对我来说,只有当更好的页面将其从第一Google搜索结果页面中推出时,它才过时了。
Tankman六四2013年

3
如果您想知道blkdiscardhdparm命令之间的区别,请在此处回答:“当使用blkdiscard时,SSD(假设是SATA SSD)将收到ATA TRIM命令,而hdparm --security-erase将发出ATA SECURITY ERASE UNIT命令。驱动器的实际作用取决于特定SSD固件的实现细节。”
Lekensteyn 2014年

2
实际上,你希望使用blkdiscard。首先,它旨在告知驱动器可能会将其特定部分扔掉,而不是擦除整个内容。驱动器实际上可能会或可能不会擦除数据。安全擦除命令必须擦除所有数据,包括驱动器部分中当前不可访问的任何数据。编辑:只是重新阅读了问题,并意识到它不需要擦除,但是仍然值得注意。
psusi 2015年

5

如果您不需要安全擦拭,为什么不使用“使用整个磁盘”和等同于“快速格式”的选项来安装kubuntu(目前不记得确切的术语)

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


2
参见anandtech.com/show/2865/2。删除块与擦除块并将其标记为空不同。
Lekensteyn 2011年

@Lekensteyn删除对于块设备没有任何意义。安装程序将调用mkfs.ext4并丢弃整个设备。在两种情况下,您都信任SSD固件,因此这与“安全擦除”一样安全。
东武

1
@Tobu对,那在某些时候已经改变了。mkfs.ext4(8)说:丢弃-尝试在mkfs时间丢弃块(最初丢弃块在固态设备和稀疏/精简配置的存储上很有用)。当设备通告丢弃也将数据清零时(丢弃之后和写入之前的任何后续读取都将返回零),然后将所有尚未归零的索引节点表标记为归零。这大大加快了文件系统的初始化速度。这是默认设置。
Lekensteyn

@Tobu在我的用例中,“安全擦除”并不一定要真正擦除其闪存芯片中的数据,它只应确保使用某些块不会对性能产生负面影响。
Lekensteyn 2013年

1

如果驱动器上装有Linux文件系统,则可以使用fstrim。默认情况下,最新的Ubuntu fstrim在以下供应商的驱动器上运行:

    if [ -z "$NO_MODEL_CHECK" ]; then
        if ! contains "$HDPARM" "Intel" && \
           ! contains "$HDPARM" "INTEL" && \
           ! contains "$HDPARM" "Samsung" && \
           ! contains "$HDPARM" "SAMSUNG" && \
           ! contains "$HDPARM" "OCZ" && \
           ! contains "$HDPARM" "SanDisk" && \
           ! contains "$HDPARM" "Patriot"; then
            #echo "device $DEV is not a drive that is known-safe for trimming"
            continue

一个星期一次。

因此,对您的问题的一个答案是启动系统并等待一周!


1
此blkdiscard帖子中提到了fstrim,您也可以使用sudo fstrim /(其中/是支持该discard选项的文件系统的挂载点)手动调用它。
Lekensteyn 2014年

-4

只需删除分区,就不必清除整个磁盘,当需要其他存储时,旧数据将被覆盖。

启用TRIM:

gksudo gedit /etc/fstab

将“ ext4 errors = remount-ro 0”更改为“ ext4丢弃,错误= remount-ro 0”。(添加丢弃)

保存并重新启动,现在应启用TRIM。

检查是否启用了TRIM:

sudo -i
dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
hdparm --fibmap tempfile

使用第一个begin_LBA地址。

hdparm --read-sector [begin_LBA] /dev/sda

现在,它应该返回数字和字符。删除文件并同步。

rm tempfile
sync

现在,再次运行以下命令。如果返回零,则启用TRIM。

hdparm --read-sector [begin_LBA] /dev/sda

2
您不想用零填充SSD,因为它将写入每个擦除块,导致更多的磨损,并使每个擦除块都充满。同样,许多驱动器不会立即将调整后的扇区归零。
psusi 2011年

当然,它需要多次写入,但不会损坏磁盘。我已经使用Corsair F120了10-11个月,并且经常用零填充它。(在每次基准测试之前都进行此操作)因此,在30-35倍的性能之后,它仍然是相同的。(〜285MB读取,275MB /写入)SMART说:磁盘运行状况良好
Alex

9
Alex,每次写入SSD都会对其造成轻微损坏。写入每个擦除块会使它们全部被标记为使用中,这将阻止驱动器的GC正常运行,从而降低性能。您可以将其视为unTRIM的整体驱动器。
psusi 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.