我有一个 64GB 的 USB 闪存盘,ext4分区(和 gpt 分区表)和损坏的超级块。我没有任何数据需要保存,我只想清除它以便再次使用。
我尝试的第一件事就是创建一个没有分区的新分区表,但什么都没用。我尝试了不同的设备和程序、KDE 分区管理器和 Windows 格式化选项。这些程序只是卡住了,甚至只是试图读取 USB 密钥,如果我尝试关闭该程序,整个操作系统就会崩溃。
所以我尝试的第一件事是以下命令:
sudo dd if=/dev/zero of=/dev/sdX1 status=progress (with x as my partition)
status=progress
显示一些输出,如下所示:
1630437888 bytes (1,6 GB, 1,5 GiB) copied, 32,095 s, 50,8 MB/s
然后程序就会阻塞,停止它的唯一方法是重新启动或拔出 USB 密钥。再次执行该命令会产生相同的结果。
编辑:我昨天尝试了这种方法 5 到 6 次,现在我再次尝试并且完成了,但是损坏的 ext4 分区仍然损坏并且无法读取。
以下是 sudo 的输出sudo fdisk -l
(我删除了其他磁盘的输出):
Disk /dev/sdc: 59,6 GiB, 64019759104 bytes, 125038592 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 356FC086-EAFC-4CC2-95A5-C3D82600BE15
Device Start End Sectors Size Type
/dev/sdc1 2048 125037204 125035157 59,6G Linux filesystem
现在我使用不同的关键词在谷歌上搜索如何修复损坏的超级块,比如如何格式化分区和其他东西,但是没有什么有效。以下是我所有的尝试(我可能忘记了一些):
大多数指南和答案都说只需复制一个好的超级块的备份并将其替换到坏的超级块上。你可以使用以下命令获取备份列表:
sudo mke2fs -n /dev/sdc1
输出结果如下(这是我从意大利语翻译过来的):
Creation of file system with 1507955 4k blocks and 377504 inode
File system label=0cb1b2b6-cc59-4a5b-9450-4a1f4a68768d
Backup of the superblock saved in blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
然后我尝试用该命令恢复备份超级块sudo e2fsck -b block_number /dev/sdc1
,该命令的输出为每一个区块号码:
e2fsck 1.42.13 (17-May-2015)
Super-blocco needs_recovery flag is clear, but journal has data.
Flag di recupero non impostato nel super-blocco di backup, eseguo journal comunque.
MintFormi: ripristino del journal
Super-blocco needs_recovery flag is clear, but journal has data.
Flag di recupero non impostato nel super-blocco di backup, eseguo
journal comunque.
Super-blocco needs_recovery flag is clear, but journal has data.
Flag di recupero non impostato nel super-blocco di backup, eseguo journal comunque.
e2fsck: impossibile impostarei i flag del superblocco a MintFormi
MintFormi: ***** THE FILE SYSTEM HAS BEEN MODIFIED *****
MintFormi: ********** WARNING: file system still contains errors ************
我也尝试了fsck.ext4 -p -b block_number -B 4096 /dev/sdX1
,输出相同。也尝试了sudo testdisk
,但它建议使用上面的命令来修复损坏的超级块。我不知道我还能尝试什么。正如我已经说过的,我没有任何数据可以保存在上面,我只是想在上面安装一个实时 USB 系统。我真正需要的只是一个命令来重置 USB 密钥中的每一位,然后工作就完成了,对吧?
编辑:再次尝试上述命令后,fsck 和 e2fsck 均给出以下输出:
fsck.ext4: Attempt to read block from filesystem resulted in short read in opening /dev/sdc1
Is it possible this is a partition of 0 dimension?
编辑:我尝试在同一个 USB 端口上连接另一个硬盘。现在这个硬盘也显示有一个损坏的超级块。幸好 testdisk 存在,否则我就没命了。