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

我刚刚收到我的新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!! 
  Eg hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz 

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

ATA安全擦除

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

  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安全擦除文章 。

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

blkdiscard(8)手册页的摘录:

名称

blkdiscard – 丢弃设备上的扇区

概要

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

描述

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

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

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

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

从Ubuntu 15.04和OpenSUSE 13.1开始就是命令(是的,OpenSUSE比Ubuntu提前2年)。

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

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

如果驱动器上有Linux filestem,则可以使用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 

每周一次。

所以你问题的一个答案是启动系统并等待一周!

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

要启用TRIM:

 gksudo gedit /etc/fstab 

将“ext4 errors = remount-ro 0”更改为“ext4 discard,errors = 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