清除 SSD 的所有分区以在 Linux 中重新分区的最快方法?

IgD*_*gDV 23 linux ssd hard-drive command-line partitioning

我想擦除 SSD 的所有分区和数据,以便我可以对其重新分区(这不是出于安全目的)。

我已经看过了,sudo dd if=/dev/zero of=/dev/sdb bs=1M但是如果这只是用零填充每个分区,我不确定这是我想要做什么。

我计划经常运行这个命令,我不想耗尽我的 SSD 的写入。任何人都可以就解决这个问题给我建议吗?

use*_*686 43

在 SSD 上:您可以使用blkdiscard. 它不是很安全,但实际上是即时的(磁盘只是将所有单元标记为未使用)。

为了安全:使用全盘加密。如果磁盘已加密,则不必费心擦除整个磁盘——您只需擦除包含密钥的区域(例如,每个加密分区的前 1-2 MiB)。

对于重新分区:同样,不要费心擦除所有数据。您只需要使用 销毁文件系统wipefs,然后清理磁盘的前 1 MiB 以清除剩余的引导加载程序。使用 格式化分区后mkfs,操作系统将简单地假定它是完全空的。

(实际上,在 Linux 上,mkfs.ext4 会在格式化之前自动修剪整个分区。)

  • 对于重新分区,为什么不删除旧分区并创建新分区? (6认同)
  • 因为如果您在同一位置(起始位置)创建新分区,您只会在其中找到相同的旧数据!(当然,这_通常_不是问题,因为用`mkfs`重新格式化无论如何都会把它扔掉。但是各种奇怪的情况_确实会发生——`wipefs`存在是因为它是需要的。) (5认同)
  • @IgDV - `manwipefs` 怎么说?(提示:查看手册页示例部分中的第一个示例) (4认同)
  • 我需要使用什么命令将其应用于 `/dev/sdb` 只是 `wipefs /dev/sdb`? (2认同)
  • “您只需要擦除包含密钥的区域” - 在 SSD 上,密钥也可能是可恢复的。TPM 或强密码保护密钥可能是更好的选择。`blkdiscard` 也很好,因为即使攻击者知道密钥(假设旧映射也无法恢复),它也会从磁盘的其余部分创建一个谜题。“然后清理磁盘的前 1 MiB 以清除剩余的引导加载程序”-额外的部分仅用作第一个 512B 的溢出。如果您先擦除 512B,则其余 1M 不会损坏。 (2认同)

Jul*_*ers 14

正如 Kamil Maciorowski 所提到的,删除整个磁盘的写入损耗最小的最佳方法是使用 ATA 的“安全擦除”命令。这将指示硬件执行一次完全擦除,而不是像使用shred. 这只能对整个磁盘进行,如果您需要有选择地擦除分区,请参阅grawity 的答案( blkdiscard)

命令的确切实现取决于硬件。

  • 大多数 SSD将使用大量电信号以全有或全无的方式擦除整个芯片。这确实会导致(正常)写入磨损,但仅限于最小程度(~单个写入周期)。

  • 自加密 SSD 通常只会擦除控制器芯片内的加密密钥(真正瞬间)。自加密驱动器始终加密,即使开箱即用(使用出厂默认密钥)。因此,即使没有设置用户密钥,擦除密钥也只会在闪存芯片上留下无法解密的混乱。

  • Spinning-Rust 硬盘将对所有扇区进行基于硬件的零写入,这与执行dd if=/dev/zero.

该过程在此处记录得很好:https : //www.thomas-krenn.com/en/wiki/SSD_Secure_Erase (在重新安装操作系统时,我个人在自己的 SSD 上反复使用了此过程)

编辑:如果您对安全影响感兴趣:请查看此 Security.SE 的问题

  • @Ruslan 我从未见过(或听说过)不支持它的 SATA-2 规格磁盘。几乎所有在过去 10 年左右制造的 SATA 磁盘都应该有它。 (3认同)

小智 5

请记住,您已经要求提供有关如何快速擦除磁盘的解决方案 将 /dev/sdx 替换为您的磁盘,最有可能的是 /dev/sda

这将擦除分区表。

dd if=/dev/zero of=/dev/sdx bs=1024 count=50
Run Code Online (Sandbox Code Playgroud)

这将擦除整个磁盘,这需要一段时间。

cat /dev/zero > /dev/sdx
Run Code Online (Sandbox Code Playgroud)

  • @Micheal 你这么说,但默认情况下 `dd` 使用 512 字节的缓冲区,这将 _ruin_ 性能...... Coreutils(`cp` 可能还有 `cat`)具有更合理的缓冲区大小。无论如何,`dd` 并没有让它以某种方式固有地更快。 (6认同)
  • 不要使用`cat`。使用 `dd` 来提高性能。 (4认同)
  • @grawity 您可以使用 `dd` 更改缓冲区大小。上次我尝试使用 `cat` 将图像写入磁盘时,它比使用具有适当缓冲区大小的 `dd` 慢得多。 (3认同)