奇怪的分区表

奇怪的分区表

我被给予一块硬盘来修复/提取数据。这块硬盘曾经是一台安装了 Windows 和 Linux 的计算机的硬盘(使用 grub 在两者之间切换)。现在无法从硬盘启动。连接到 Linux 时,发现 4 个分区(/dev/sdb[1256]),但只能/dev/sdb1读取。/dev/sdb1是 grub 分区,而/dev/sdb5被识别为交换分区blkid(可能是另一个程序,我会检查一下)。安装分区 2 和 6 会出现错误,var/log/syslog说明存在坏的超级块。
不过,最令人恼火的结果还是出现fdisk -l,据我所知,它会打印分区表。

Device    Start    End        Type
/dev/sdb1     2048  19531775  83 linux
/dev/sdb2 19533822 625141759   5 extended
/dev/sdb5 19533824  36304895  82 linux swap 
/dev/sdb6 36306944 625141759  83 linux

(1 个扇区等于 512 字节,我删除了一些输出。如果需要,我会添加它)

如果我理解正确的话,分区表肯定有问题。分区 2 不知为何与分区 5 和 6 位于同一位置,这或许可以解释安装错误。(我会问一下这块硬盘上到底用的是哪个操作系统)。

现在,这个硬盘上有重要的文件。我该如何从硬盘中获取这些文件,或者(更好的方法是)修改硬盘,以便 Linux 可以挂载所有分区。我的第一个想法是使用进行备份,dd然后让其运行fsck/dev/sdb您可能看到我在这方面并不专业),尽管我对此有所怀疑。

更新:正如 grawity 指出的那样,分区表完好无损,并且有 3 个分区,其中一个是交换分区。/dev/sdb1可以挂载并且是 grub 分区(根据分区上的文件判断)。/dev/sdb5最有可能是交换分区(因为它被标记为交换分区并且其大小正确)。我将尝试进行操作fsck/dev/sdb6尝试一些恢复工具。
此外,给我硬盘的人现在正在考虑他是否给了我正确的硬盘。无论如何我都会寻找文件。

答案1

如果我理解正确的话,分区表有问题。分区 2 不知何故与分区 5 和 6 位于同一位置,这可能解释了安装错误。

这是正常的。MS-DOS 时代的 MBR 分区表只能容纳 4 个分区,因此通常将最后一个分区设为“扩展”分区,其中嵌套了额外的“逻辑”分区。

(Linux 总是以 5+ 开始对逻辑分区进行编号,虽然名称fdisk -l实际上是虚构的,但它们也遵循相同的编号。)

(讨论这个话题时,不要忘记还有其他分区表,例如 GPT。fdisk 2.23 可以理解 GPT,但旧版本不能。)

还要注意,分区类型并不总是与里面的实际数据相对应。所有者可能决定使用 sdb5 存储数据,使用 sdb6 存储交换数据,但忘记更新 MBR 分区类型(Linux 无论如何都会忽略它),这种情况并非不可能。

我如何从硬盘中获取这些文件或(更好的)更改硬盘以便 Linux 可以挂载所有分区

尝试照相记录

我的第一个想法是使用 dd 进行备份,然后让 fsck 在 /dev/sdb 上运行

备份是个好主意。尝试对某些东西运行 fsck不是 FS不会做任何有用的事情。/dev/sdb1或者/dev/sdb6会是更好的目标,因为它们包含文件系统。

答案2

您显示的分区表属于 纯的Linux 系统:上面没有 Windows 的踪迹。因此,鉴于您所述:

这个硬盘曾经是一台安装了windows和linux的电脑的硬盘……

也许给你这个的人说得对……

此外,给我硬盘的人现在正在考虑他是否给了我正确的硬盘。

用户文件位于 中/home/,该分区很可能是 分区/dev/sdb6。无需使用像 这么复杂的工具photorec,而且,您可能可以通过其他方式将分区恢复到其完整、工作状态。您能否准确说明在尝试挂载 分区 时收到的错误消息是什么/dev/sdb6?如果只是超级块损坏的问题,则可以轻松解决:

  1. 检查文件系统(您可能需要使用 ext2 或 ext3 重新执行此操作,从上面无法清楚了解正在使用哪种文件系统),

     sudo fsck.ext4 -v /dev/sdb6
    
  2. 如果超级块确实损坏了,那么您将获得类似的输出

    fsck /dev/sdb6
    fsck 1.41.4 (27-Jan-2009)
    e2fsck 1.41.4 (27-Jan-2009)
    fsck.ext4: Group descriptors look bad... trying backup blocks...
    fsck.ext4: Bad magic number in super-block while trying to open /dev/sdb6
    
    The superblock could not be read or does not describe a correct ext4
    filesystem.  If the device is valid and it really contains an ext4
    filesystem (and not swap or ufs or something else), then the superblock
    is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 /device
    
  3. 让我们找到备份超级块在哪里,

    sudo mke2fs -n /dev/sdb6
    

    在长输出的末尾,你会发现类似这样的内容:

    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
    
  4. 现在,最后,通过用一个(任意一个)备份超级块替换有缺陷的超级块来修复它:

    sudo e2fsck -b block_number /dev/sb6
    

重启,一切就绪。如果不行,请尝试不同的超级块。就像我说的,如果这就是您无法挂载分区的原因/dev/sdb6,所有这些都比使用容易得多photorec,而且您将把磁盘及其分区恢复到原始状态。

相关内容