Linux / BSD“快速”擦除 USB 驱动器?

Linux / BSD“快速”擦除 USB 驱动器?

我正在用 清理驱动器dd。这是一个 USB 设备,大小为 120GB,这花了很长时间:

dd if=/dev/zero of=/dev/da0 bs=1M status=progress

我尝试过调整块大小(更小和更大的值bs=4Mbs=8M等等),但似乎没有什么太大的变化。写入速度7000 kB/s非常慢。

我并不关心“安全地”擦除数据,我只想擦除数据,以便我可以从头开始重新建立分区结构和文件系统。是否有其他方法(使用标准实用程序)可以快速(一两分钟内)擦除此类情况?我正在使用的设备是 FreeBSD,但我认为 dd 命令(和 gpart 等)在它和 Linux 之间的工作方式类似。

答案1

最快的方法是删除驱动器上的所有分区。这也会“删除”文件系统。以及zero第一个兆字节(引导记录等)。

dd if=/dev/zero of=/dev/da0 bs=1M count=1

并且您有“全新”的磁盘。

答案2

删除所有磁盘标签和文件系统签名的 Linux 命令是:

wipefs -a /dev/sd###

大多数现代闪存盘和闪存 USB 棒都支持修剪/丢弃/ SCSI 取消映射. 对于 USB,您需要启用它

# cat /sys/block/sd###/device/scsi_disk/*/provisioning_mode
full
# echo unmap > /sys/block/sd###/device/scsi_disk/*/provisioning_mode
# cat /sys/block/sd###/device/scsi_disk/*/provisioning_mode
unmap
#

如果启用了 trim,你可以使用以下命令销毁所有数据:

blkdiscard /dev/sd###

替换为类似或 的sd###内容。你可以使用以下命令列出所有块设备:sdxnvme9n9lsblk

答案3

有不同种类的 USB 存储设备。

如果你的设备支持,

blkdiscard /dev/da0

在 Linux 上,或

trim /dev/da0

在 FreeBSD 上

将告诉驱动器删除所有数据。这将非常快,因为它基本上只是告诉磨损均衡表“嘿,忘记任何曾经用于数据的块,并将它们视为准备好被清空并再次使用”。

即使它那么快,它也会有“清空”的良好副作用,即它使旧数据无法恢复(除非打开硬件,绕过内部的存储控制器,读取原始数据并对需要以何种顺序重新组装哪个块进行大量猜测)。

答案4

我并不关心“安全地”擦除数据,我只是希望擦除数据,以便我可以从头开始重新建立分区结构和文件系统

只需在分区上运行 mkfs。

相关内容