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


21

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

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

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


1
请研究以下内容:ATA安全擦除。我没有这个过程的经验,所以这不是一个答案,只是一个提示。如果您知道这是正确的方法,那么任何人都可以自行编写有关此问题的答案。
卡米尔Maciorowski

18
出于安全目的,还是仅仅因为您需要重新分区?
grawity

主要是为了重新分区
IgDV '18年

14
12号泵动作。而且您知道某人迟早会说出来!
ssimm '18年

1
@ssimm-我的首选是木炭烧烤。
Daniel R Hicks '18年

Answers:


41

在SSD上:您可以使用来修剪整个磁盘或分区blkdiscard。它不是很安全,但是实际上是即时的(磁盘仅将所有单元标记为未使用)。

为了安全起见:使用全盘加密。如果磁盘已加密,请不要擦拭整个磁盘–您只需要擦除包含密钥的区域(例如,每个加密分区的前1–2 MiB)。

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

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


6
对于重新分区,为什么不删除旧分区并创建新分区呢?
el.pescado

5
因为如果在同一位置(起始位置)创建新分区,那么您将在其中找到相同的旧数据!(当然,这通常不是问题,因为mkfs无论如何重新格式化都将对其造成垃圾。但是确实发生了各种奇怪的情况– wipefs因为需要它。)
grawity

4
@IgDV-怎么man wipefs说?(提示:请参见手册页示例部分中的第一个示例)
Timo,

2
“您只需要擦拭包含钥匙的区域”-在SSD上,钥匙也很可能可以恢复。TPM或强密码保护密钥可能是更好的选择。blkdiscard也会很好,因为即使攻击者知道密钥,它也会在磁盘其余部分上造成困惑(假定旧映射也无法恢复)。“然后清理磁盘的前1个MiB,以清除剩余的引导加载程序”-多余的部分仅用作前512B的溢出。如果先擦除512B,则其余1M不会受到伤害。
Maciej Piechotka,

1
@MaciejPiechotka:不幸的是,某些引导程序(特别是grub)也使用MBR 之后的空间。
grawity

14

正如Kamil Maciorowski 提到的那样,删除整个磁盘的最佳方法是减少ATA的写损耗,它是使用ATA的“安全擦除”命令。这将指示硬件执行一次完整擦除,而不是像使用工具那样反复覆盖单元shred。这仅适用于整个磁盘,如果您需要有选择地擦除分区,请参阅grawity的答案blkdiscard

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

  • 大多数固态硬盘会使用大量电信号以全有或全无的方式擦除整个芯片。这确实会导致(正常)写入损耗,但只会达到最小程度(〜单个写入周期)。

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

  • Spin-Rust硬盘将对所有扇区执行基于硬件的零写入操作,这与执行操作等效(且耗时)dd if=/dev/zero

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

编辑:如果您对安全隐患感兴趣:检查此Security.SE的问题


大多数ATA磁盘都支持安全擦除吗?我觉得它的支持很少见。
罗斯兰

1
我还没有找到一个不支持它的(现代SATA)磁盘,但是我承认我的经验仅限于我个人拥有的硬盘驱动器。“安全擦除”和“增强的安全擦除”之间似乎有区别,但后者的支持较少。
Jules Kerssemakers,

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

这是否还意味着在自加密SSD上,TRIM命令是无操作的?(否则,它并不总是加密,对吗?)
Mehrdad

1
@Mehrdad:是的,在加密的SSD上使用TRIM会泄漏有关哪些块可用的信息。是否可以接受取决于您的安全需求。参见例如askubuntu.com/questions/399211/…进行讨论。
sleske

4

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

这将擦除分区表。

dd if=/dev/zero of=/dev/sdx bs=1024 count=50

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

cat /dev/zero > /dev/sdx

4
不要使用cat。使用dd以提高性能。
米歇尔·约翰逊

6
@Micheal您说的是,但是默认情况下dd使用512字节的缓冲区,这将破坏性能……Coreutils(cp并且可能还cat)具有更合理的缓冲区大小。dd无论如何,这并没有使它固有地更快。
grawity

3
@grawity您可以使用更改缓冲区大小dd。上次我试图用cat写入磁盘的图像,这是显著比使用慢dd用适当的缓冲大小。
米歇尔·约翰逊
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.