丢失 ext4 分区:testdisk 列出文件,但无法修复分区表

丢失 ext4 分区:testdisk 列出文件,但无法修复分区表

概括:

Testdisk 找到了丢失的 ext4 分区并能够列出包含的文件,但尝试将分区结构写入磁盘却没有任何反应。

更新:运行后e2fsck -f /dev/sdc1,磁盘已挂载,似乎运行正常。但是,它也报告了一些错误(请参阅下文第 15 节)。

发生了什么:

我将尝试列出与该问题相关的所有事情:

  1. 我得到了一个新的外部 5TB 硬盘,预先格式化为 FAT32(名为 Intenso)。
  2. 我删除了该分区并使用 gparted 创建了一个新的 ext4 分区(名为 Intenso5TB)。
  3. 由于该分区属于根目录,我将所有者和组更改为我的用户。
  4. 我将几百 GB 的数据移动到该分区,然后安全地将其删除。
  5. 下次我插入硬盘时,它被安装为只读。我的用户仍然是所有者。
  6. 我在 Ubuntu 的“磁盘”实用程序的挂载选项中添加了“rw”,并卸载了该驱动器。
  7. 然后,磁盘实用程序将分区 /dev/sdc1 显示为“类型未知”并且无法挂载。
  8. 我选择“编辑分区”,并选择“类型 linux (0x83)”(未预先选择类型)。没有任何变化(类型仍为未知)。
  9. 我运行sudo testdisk /dev/sdc并进行了快速分析,发现:

    * Linux                    0   4  5 76000  41  9 1220942336 [Intenso5TB]
    

    按下p显示我移动到分区的文件,所以我告诉 Testdisk 将分区结构写入磁盘。

  10. 再次重新启动以刷新分区表后,行为再次如 7 中所述。
  11. 我重做了 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.
    
  12. 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
    
  13. 我运行了sudo parted /dev/sdc,但rescue 256 1220942591什么也没发生(没有延迟,没有输出,只是 parted 里面有一个新的命令提示符),与rescue 0 1220942591rescue 1 1220942591或 也是一样rescue 1 -1

  14. 我使用 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
    
  15. 运行 后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 *****
    

我的问题:

  1. 我是否犯了任何明显的错误以至于首先导致了这个问题?

  2. 还有希望恢复丢失的分区吗? 新问题:报告的错误是否e2fsck值得担心?它们是否暗示驱动器有物理损坏?

  3. 是什么原因导致 11 中的错误消息partprobe

(数据是从另一个我没碰过的磁盘移来的,所以,虽然现在看不到,但应该可以从那里挽救。)

答案1

运行e2fsck -f /dev/sdc1修复了坏的超级块,设备被识别,没有问题。然后我让它e2fsck修复发现的所有问题。在后续运行中e2fsck没有报告任何其他错误。

经过 9 小时的延长离线测试,测试smartctl结果未报告任何错误(为了防止自动停机导致测试中止,我应用了这个解决方法)。

相关内容