Aid*_*rce 2 linux hard-drive data-recovery partition-recovery
我得到了一个硬盘来修复/提取数据。这个硬盘曾经是一台安装了windows和linux的电脑的硬盘(使用grub在两者之间切换)。不再可能从硬盘驱动器启动。连接linux时,发现4个分区(/dev/sdb[1256]),但只能/dev/sdb1读取。/dev/sdb1是 grub 分区,而/dev/sdb5被识别为交换分区blkid(它可能是另一个程序,我会检查一下)。挂载分区 2 和 6 会出错,var/log/syslog说明超级块坏了。
尽管如此,最令人恼火的结果是fdisk -l,它打印了分区表 AFAIK。
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
Run Code Online (Sandbox Code Playgroud)
(1 个扇区等于 512 字节,我删除了一些输出。如果需要,我会添加它)
如果我理解正确,则分区表有问题。不知何故,分区 2 与分区 5 和 6 位于同一位置,这可能解释了安装错误。(我会问这个硬盘上真正使用的是哪个操作系统)。
现在,此硬盘驱动器上有重要文件。如何从硬盘驱动器获取这些文件或(更好地)更改硬盘驱动器,以便 linux 可以挂载所有分区。我的第一个想法是做一个备份,dd然后继续fsck运行/dev/sdb(你可能会发现我不是这方面的专家),尽管我有我的疑虑。
更新:正如grawity所指出的,分区表完好无损,有3个分区,其中一个是交换分区。/dev/sdb1可以挂载并且是grub分区(从分区上的文件来看)。/dev/sdb5很可能是交换分区(因为它被标记为这样并且它的大小是正确的)。我会尽力做一个fsck上/dev/sdb6尝试一些恢复工具。
此外,给我硬盘驱动器的人现在正在考虑他是否给了我正确的驱动器。无论如何,我会寻找这些文件。
如果我理解正确,则分区表有问题。不知何故,分区 2 与分区 5 和 6 位于同一位置,这可能解释了安装错误。
这是正常的。MS-DOS 时代的 MBR 分区表只能容纳 4 个分区,因此习惯上将最后一个分区设为“扩展”分区,其中嵌套了额外的“逻辑”分区。
(Linux 总是从 5+ 开始对逻辑分区进行编号,虽然其中的名称fdisk -l实际上是组成的,但它们也遵循相同的编号。)
(关于这个话题,不要忘记还有其他分区表,比如 GPT。fdisk 2.23 理解 GPT,但旧版本不理解。)
另请注意,分区类型并不总是对应于内部的实际数据。所有者可能决定将 sdb5 用于数据,将 sdb6 用于交换,但忘记更新 MBR 分区类型(无论如何 Linux 会忽略),这并非不可能。
如何从硬盘驱动器获取这些文件或(更好)更改硬盘驱动器以便 linux 可以挂载所有分区
尝试photorec。
我的第一个想法是用 dd 进行备份,然后让 fsck 在 /dev/sdb 上运行
进行备份是个好主意。尝试在非 FS 的东西上运行 fsck不会做任何有用的事情。/dev/sdb1或者/dev/sdb6将是更好的目标,因为它们包含文件系统。