我的驱动器有 18TB,里面装满了我不想要的垃圾,而且有数百万个文件,使用rm -rf
.
我不想用零或随机数据覆盖整个驱动器,因为这会缩短驱动器的使用寿命,需要很长时间,而且是不必要的。
所以我尝试重新格式化,但仅运行以下命令没有成功:
root: ~ # sudo mkfs -t ext4 /dev/sdd1
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdd1 is apparently in use by the system; will not make a filesystem here!
驱动器未安装:
root:~ # umount /dev/sdd1
umount: /dev/sdd1: not mounted
一些输出
root:~ # lsblk
sdd
└─sdd1 ext4 [UUID REMOVED FOR THIS POST]
这是该驱动器的 fdisk 输出:
root:~ # fdisk -l
Disk /dev/sdd: 18000.2 GB, 18000207937536 bytes, 35156656128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt
Disk identifier: [UUID here]
df -h
没有在列表中显示它,因为它现在已经按照我的要求卸载了。
fuser -vm /dev/sdd
并fuser -vm /dev/sdd1
出现空白,没有输出。
lsof | grep /dev/sdd1
出现空白,没有输出。
让我知道您可能需要帮助的其他输出。
如何通过重新格式化分区来销毁所有数据而不覆盖整个驱动器?我基本上想做一个快速格式化,或者只是删除并重新添加分区,以最好的为准。
答案1
- HDD 通常不会(像 SSD 一样)受到写入数据量的影响。
- 将零写入您的全部的创建新分区时。为什么?它将阻止您发现旧文件。它将帮助您恢复新删除的文件,因为您的分区不会有旧的垃圾。
-
/dev/sdd1 显然正在被系统使用;不会在这里创建文件系统!
是为了防止您破坏数据而纠正的错误。如果您阅读man mke2fs
(同一实用程序创建 ext2/3/4 分区)您会发现:
-F 强制 mke2fs 创建文件系统,即使指定的设备不是块特殊设备上的分区,或者其他参数没有意义。为了强制 mke2fs 创建文件系统,即使文件系统似乎正在使用或已挂载(确实很危险的事情),必须指定该选项两次。
ext4
可能不太适合这么大的分区。我建议使用 XFS,但这是我个人的偏好,因此您可以带着偏见而忽略它。
答案2
您可以很容易地擦除分区的超级块,以欺骗mkfs
认为不存在文件系统:
$ sudo dd if=/dev/zero of=/dev/sdd1 bs=1k count=2
如果您随后重新运行sudo mkfs
命令,它应该会愉快地格式化您的分区,为您提供一个全新的空文件系统。
您还可以-F -F
在不擦除超级块的情况下使用“...强制 [mkfs] 创建文件系统,即使文件系统似乎正在使用或已安装(真正危险的事情)...”(摘自man mkfs.ext4
)。
像这样:
mkfs.ext4 -F -F /dev/sdd1
答案3
与 SSD 相比,这种情况在硬盘上不太常见,但如果您有一个自加密磁盘,您可以通过使其忘记内部加密密钥并生成新密钥来以加密方式擦除它。即使您不使用该功能,大多数磁盘默认都会进行透明加密,因此以后无需转换过程即可对其进行保护。
hdparm --yes-i-know-what-i-am-doing --sanitize-crypto-scramble /dev/sdd
在这种情况下会起作用,并且是快速和有效的最佳组合。
但它不能仅在一个分区上工作,因此您必须重新分区。
要了解您的磁盘是否支持任何清理功能,您可以使用 hdparm 查询命令集:
hdparm -I /dev/sdd