概括:
Testdisk 找到了丢失的 ext4 分区并能够列出包含的文件,但尝试将分区结构写入磁盘却没有任何反应。
更新:运行后e2fsck -f /dev/sdc1
,磁盘已挂载,似乎运行正常。但是,它也报告了一些错误(请参阅下文第 15 节)。
发生了什么:
我将尝试列出与该问题相关的所有事情:
- 我得到了一个新的外部 5TB 硬盘,预先格式化为 FAT32(名为 Intenso)。
- 我删除了该分区并使用 gparted 创建了一个新的 ext4 分区(名为 Intenso5TB)。
- 由于该分区属于根目录,我将所有者和组更改为我的用户。
- 我将几百 GB 的数据移动到该分区,然后安全地将其删除。
- 下次我插入硬盘时,它被安装为只读。我的用户仍然是所有者。
- 我在 Ubuntu 的“磁盘”实用程序的挂载选项中添加了“rw”,并卸载了该驱动器。
- 然后,磁盘实用程序将分区 /dev/sdc1 显示为“类型未知”并且无法挂载。
- 我选择“编辑分区”,并选择“类型 linux (0x83)”(未预先选择类型)。没有任何变化(类型仍为未知)。
我运行
sudo testdisk /dev/sdc
并进行了快速分析,发现:* Linux 0 4 5 76000 41 9 1220942336 [Intenso5TB]
按下
p
显示我移动到分区的文件,所以我告诉 Testdisk 将分区结构写入磁盘。- 再次重新启动以刷新分区表后,行为再次如 7 中所述。
我重做了 9.;这次我尝试使用
partprobe /dev/sdc
以避免再次重新启动,但收到消息:
Error: Partition(s) 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 on /dev/sdc have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
sudo fdisk -lu
返回Disk /dev/sdc: 4,6 TiB, 5000981078016 bytes, 1220942646 sectors Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 33550336 bytes Disklabel type: dos Disk identifier: 0x4400838c Device Boot Start End Sectors Size Id Type /dev/sdc1 * 256 1220942591 1220942336 4,6T 83 Linux
我运行了
sudo parted /dev/sdc
,但rescue 256 1220942591
什么也没发生(没有延迟,没有输出,只是 parted 里面有一个新的命令提示符),与rescue 0 1220942591
、rescue 1 1220942591
或 也是一样rescue 1 -1
。我使用 Testdisk 进行了深入搜索,结果报告了几行相同的内容:
Linux 0 4 5 76000 41 9 1220942336 [Intenso5TB]
也:
check_FAT: can't read FAT boot sector Invalid FAT boot sector 0 D FAT16 LBA 252822 192 45 254047 161 57 19677685 FAT16 LBA 252822 192 45 254047 161 57 19677685
运行时并关闭:
TestDisk 7.0, Data Recovery Utility, April 2015 Christophe GRENIER <[email protected]> http://www.cgsecurity.org Disk /dev/sdc - 5000 GB / 4657 GiB - CHS 76000 255 63 The harddisk (5000 GB / 4657 GiB) seems too small! (< 16 TB / 15 TiB) Check the harddisk size: HD jumpers settings, BIOS detection... The following partition can't be recovered: Partition Start End Size in sectors > FAT16 LBA 252822 192 45 254047 161 57 19677685 [ Continue ] 80 GB / 75 GiB
运行 后
e2fsck -f /dev/sdc1
,磁盘出现在启动器中。我使用 取消e2fsck
,以Ctrl+C
避免进一步更改,直到我了解更多信息。然后,单击即可成功安装驱动器。我似乎能够读取和写入。输出来自e2fsck
:e2fsck -f /dev/sdc1 e2fsck 1.42.13 (17-May-2015) ext2fs_open2: Bad magic number in super-block e2fsck: Superblock invalid, trying backup blocks... Superblock needs_recovery flag is clear, but journal has data. Recovery flag not set in backup superblock, so running journal anyway. Intenso5TB: recovering journal Pass 1: Checking inodes, blocks, and sizes Inode 59883521 is in use, but has dtime set. Fix<y>? yes Inode 59883521 has imagic flag set. Clear<y>? yes Inode 59883521 has compression flag set on filesystem compression support. Clear<y>? yes Inode 59883521 has INDEX_FL flag set but is not a directory. Clear HTree index<y>? yes Inode 59883521, i_blocks is 16777216, should be 0. Fix<y>? yes Deleted inode 59885573 has zero dtime. Fix<y>? yes Deleted inode 59885574 has zero dtime. Fix<y>? yes ^CIntenso5TB: e2fsck cancelled. Intenso5TB: ***** FILE SYSTEM WAS MODIFIED *****
我的问题:
我是否犯了任何明显的错误以至于首先导致了这个问题?
还有希望恢复丢失的分区吗?新问题:报告的错误是否e2fsck
值得担心?它们是否暗示驱动器有物理损坏?是什么原因导致 11 中的错误消息
partprobe
?
(数据是从另一个我没碰过的磁盘移来的,所以,虽然现在看不到,但应该可以从那里挽救。)
答案1
运行e2fsck -f /dev/sdc1
修复了坏的超级块,设备被识别,没有问题。然后我让它e2fsck
修复发现的所有问题。在后续运行中e2fsck
没有报告任何其他错误。
经过 9 小时的延长离线测试,测试smartctl
结果未报告任何错误(为了防止自动停机导致测试中止,我应用了这个解决方法)。