所有硬盘在 gparted 中均视为未分配空间 - 分区重叠 - 部分无法访问

所有硬盘在 gparted 中均视为未分配空间 - 分区重叠 - 部分无法访问

这个奇怪但有趣的问题相当紧急,所以在我得到答案之前,我会转发这篇文章这里这里

我有一个扩展分区,其中包含三个 Linux 系统,每个系统都在自己的分区中。每个系统都在 gparted 中显示以下内容:

在此处输入图片描述

分区重叠:

在此处输入图片描述

Gnome-disks 看到这个:

在此处输入图片描述

最初,我认为这不可能准确,因为我确信 Mint 分区实际上占用了此处显示的扩展分区中的可用空间,而 Win7 占用了此处显示的右侧空白空间。但我得到的答案和评论却表明并非如此。

我还可以确认,我认为的 Win 7 分区的可用空间实际上比以前(超过 100GB)小(66GB)。就好像 42GB Mint 分区从扩展分区(现在有 42 GB 可用空间)移动到 Win 分区,Win 分区以这种方式被删除,留下了 66GB 的可用空间。

在此处输入图片描述

这是之前 eOS 和 Ubuntu 被其他操作系统取代时分区表的样子:

在此处输入图片描述

我是如何陷入这种境地的:

我主要使用 Linux 和 grub 列表来启动。我缩小了左侧的大 NTFS 分区(标记为 Depo),以便在那里安装 Windows XP 32 位。我这样做了,当然也丢失了 grub。我从一个实时 eOS USB 中恢复了它。这恢复了 grub,并将我的初始 Linux(Mint Xfce)安装作为列表中的第一个,在这里可以看到它位于扩展分区的右外角,而实际上它占据了上面显示的扩展分区内的空白空间。

其他症状:

  • Windows 7 分区完全无法访问;唯一一个在 grub 列表中不存在且在所有系统中不可见的分区
  • 除了 Win7 之外的所有分区都可以在操作系统中访问(当然 XP 除外,因为它看不到 ext4)。

(我必须重新启动才能报告其余内容)

如果不使用 gparted,我该如何解决这个问题?

我更喜欢 GUI。


更新以回答评论和答案:

~$ cat /proc/partitions
major minor  #blocks  name

   8        0  488386584 sda
   8        1  185841664 sda1
   8        2   50996224 sda2
   8        3          1 sda3
   8        4   41389648 sda4
   8        5   51796875 sda5
   8        6   52628906 sda6
  11        0    1048575 sr0

该命令sudo smartctl -a /dev/sda的结果如下:http://pastebin.com/MLEXi8TF

该命令sudo dd if=/dev/sda bs=512 count=1 | xxd | cat的结果如下:http://pastebin.com/z10QbqqQ


回答后更新:

42 GB Mint 分区与已删除的 100 GB 分区重叠。要解决此问题,我是否应该删除 42 GB Mint 分区?


在最新的 gparted live usb 中我收到两条错误消息,但随后我看到了以下内容:

在此处输入图片描述

答案1

感谢 xxd 输出。通过将其转换回二进制文件xxd -r并使用 sfdisk 研究该文件,我看到以下内容:

   Device Boot Start     End   #cyls    #blocks   Id  System
 xxd.bin1   *     25+  23161-  23137- 185841664    7  HPFS/NTFS
 xxd.bin2      23161+  29510-   6349-  50996224    7  HPFS/NTFS
 xxd.bin3      29510+  47663-  18154- 145817169+   5  Extended
 xxd.bin4      42511+  47663-   5153-  41389648+  83  Linux

因此,您的主分区 4 实际上与扩展分区 3 重叠。它们都以相同的位置结束。从 MBR 中的分区表无法获取有关逻辑分区的信息。该数据位于 /dev/sda3 的开头,可能更难研究。

我猜你以某种方式在 gparted 中指向并单击,并将 Mint 的逻辑分区设为主分区。你知道 Mint 分区是否曾经是编号为 5 或更高的逻辑分区吗?

不知何故,gparted 现在似乎太混乱了。如果你幸运的话,parted 仍然可以从命令行使用。说什么parted -l

要删除主分区 4,请执行以下操作:

1)从使用 xxd 创建的磁盘前 512 个字节的文本文件开始。

2)编辑该文件的末尾:

`00001e0: ffff 05fe ffff feff 411c a3fc 6111 00fe  ........A...a...`
`00001f0: ffff 83fe ffff 00e0 b428 a11c ef04 55aa  .........(....U.`

到:

`00001e0: ffff 05fe ffff feff 411c a3fc 6111 0000  .......$....hQ..`
`00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.`

3)从文本文件创建一个二进制文件,如下所示: xxd -r xxd2.txt > xxd2.bin 创建的二进制文件大小应为 512 字节。

4)将二进制文件复制到磁盘的开头: dd if=xxd2.bin of=/dev/sda

5) 现在您应该不再有任何第 4 个主分区,也没有重叠分区。如果您幸运的话,您现在可以使用 parted 恢复逻辑 Mint 分区和主 Windows 分区。如果您不幸,事情会变得比以前更混乱。确保您有备份并知道如何使用备份!

答案2

从 /proc/partitions 我们可以看到以下内容:

1) 您有 4 个主分区 (1-4)。DOS 分区表最多可以有 4 个主分区,在 Linux 中编号为 1-4。其中一个主分区可以是包含更多分区的扩展分区。您的分区编号 3 是一个扩展分区。

2) 您的扩展分区中有 2 个逻辑分区。它们是 sda5 和 sda6。

因此看起来 Gnome-disks 似乎是正确的,您的扩展分区中只有两个分区,并且主分区 4 不属于您的扩展分区。

不幸的是 /proc/partitions 没有显示扩展分区的大小。为此,我们需要输出fdisk -l或至少fdisk -l /dev/sda所以我不能确定您的主分区 4 是否与扩展分区 3 中未使用的空间重叠。

由于 fdisk 没有显示任何输出,您的分区表可能存在问题。也许 cfdisk 更有用。

答案3

因为Henrik Carlqvist 的回答对于我的技能来说似乎太“高级”了,我试图在实时 Gparted usb 会话中删除 mint 分区,结果显示了此图像

在此处输入图片描述

但这仍然不准确,因为 mint 分区的 39.47 GB 空间既出现在扩展分区的内部,也出现在 ex-Win7 分区的 100 GB 空间之外:驱动器显示为比实际多 39.47 GB。无论如何,我继续。在 Gparted 会话中删除 Mint 分区(显示为主分区)似乎有效,但我还将 eOS 分区向右扩展到 mint 初始逻辑分区的 39.47 GB 空间。这导致两者合并为一个未分配的空间:好像空白空间已被扩展……eOS 分区因此丢失。

因此,我决定删除所有分区,清理所有驱动器。

我注意到“磁盘”(`gnome-disk-utility',可在源中找到,Unity 中的默认设置)不仅能够查看分区的正确情况,还可以创建(备份)和恢复磁盘映像。我用这种方式保存然后恢复了我的其中一个系统(我不关心其余的)。

很明显,Gparted 看错了,于是寻找解决方案,询问一个新问题并继续如下:

在实时 USB 会话中启动并执行

sudo dd if=/dev/urandom of=/dev/sda bs=1M

但这似乎并没有像我想要的那样工作,因为处理器工作灯大部分都熄灭了(或者是硬盘灯?),而冷却器很响

然后我读到 urandom 命令非常慢,因为它实际上试图生成真正的随机数。出于安全考虑,我并不想擦除所有数据,只是想清除所有分区(它们有问题),所以我停止了该过程并执行以下操作:

sudo dd if=/dev/zero of=/dev/sda bs=1M

这样,冷却器就会平静下来,同时“工作灯”会一直亮着。

为了查看进度,我打开了单独的终端窗口 并且做到了

watch -n5 'sudo kill -USR1 `pgrep ^dd`'

每 5 秒在初始终端窗口中报告一次进度(来源

245423407104 bytes (245 GB) copied, 3430.82 s, 71.5 MB/s
234354+0 records in
234354+0 records out
245737979904 bytes (246 GB) copied, 3435.84 s, 71.5 MB/s
234655+0 records in
234655+0 records out
246053601280 bytes (246 GB) copied, 3440.88 s, 71.5 MB/s
234956+0 records in
234956+0 records out
246369222656 bytes (246 GB) copied, 3445.91 s, 71.5 MB/s

... 在一台使用 4 年、配备 4GB 内存的普通笔记本电脑上,读取 500GB 硬盘需要 2 小时 30 分钟。

我使用磁盘实用程序恢复了我的一个系统的映像,这似乎是一个很棒的工具。

相关内容