无法满足分区上的所有约束

我有一个双启动Windows 7 32位与ubuntu 12.04 lts 64位在一个硬盘驱动器。 我想给我的ubuntu分区更多的硬盘空间。 不幸的是,当我打开GParted时,它在我的分区表上显示了一个未分配的空间。 这个非常“ 未分配的空间 ”实际上包含了我的Windows的C:/和D:/分区 7.当我双击该项时,它向我显示了这个警告:“ 无法满足分区上的所有约束 ”。

请帮我。 我希望我的分区表得到修复 。 所以,我可以增加我的ubuntu分区。

如果您说GParted显示整个磁盘未分配,那么您可能遇到以下两个问题之一:

  • 剩余的RAID数据 – 如果磁盘在过去与基于主板的软件RAID一起使用,则剩余的RAID数据可能会使GParted感到困惑。 在Linux中键入sudo dmraid -E -r /dev/sda可以解决这个问题; 但是,在执行此操作之前,您应该绝对肯定系统当前未配置为使用RAID。 (有些计算机甚至在单磁盘设置上使用RAID – 很奇怪,但确实如此。)
  • 损坏的分区表 – 任何数量的分区表问题都可能导致GParted剥落并声称磁盘未分区。 其中大部分都可以通过在磁盘上使用我的FixParts程序来修复。 该程序是Ubuntu中gdisk包的一部分。

您可能还想查阅有关此问题的网页,该问题将对其进行更详细的描述。

如果你的意思是只有一些分区似乎丢失了,但其他分区出现在GParted中,那么这个问题还有其他原因。 提供更多细节,例如sudo parted /dev/sda print以及准确缺失的清晰描述,是诊断和解决问题所必需的。


编辑:根据下面评论中的信息,似乎分区表已损坏。 FixParts 可能会有所帮助,但我没有做出任何承诺,我建议谨慎使用它。 如果FixParts没有完成足够的工作, TestDisk可能能够恢复丢失的分区。

背景,并回答您的问题:在传统的主引导记录(MBR)分区系统(您已经拥有)上,最多可以有四个分区,其中一个( 扩展分区)可以作为占位符任意数量的逻辑分区。 fdisk标识为w95 ext'd (lba)的分区是扩展分区。 在Linux下,主分区(包括扩展分区,如果存在)编号为1-4,而逻辑分区编号为5及以上。 所有主分区都在磁盘的第一个扇区(MBR)中定义,但每个逻辑分区都在其自己的数据结构中定义,称为扩展引导记录(EBR),其结构类似于MBR。 关于“分区表7的无效标志0x6165”的消息意味着这些EBR之一的密钥识别特征被损坏。 根据分区软件和所涉及的分区,这可能使以常规方式恢复分区变得困难或不可能。

分区包含文件系统,但这两个是不同的概念 – 分区只是磁盘上的一组连续扇区(例如,扇区2048到923,647)。 文件系统是一种更复杂的数据结构,使您可以将文件存储在分区中。 这两者通常是一起创建和操作的,但是有一些工具可以分别完成工作的每个部分。 例如, fdiskparted都操纵分区而不是文件系统; 而mkfstune2fsfsck和类似的工具操纵文件系统。 文件系统操作工具通常将分区标识符作为参数,因为它们需要一种方法来定位它们的文件系统,而分区则需要这样做 – 文件系统通常从包含分区的第一个扇区开始。 我正在胡说八道,因为这是你的分区表损坏了; 你的文件系统可能完全没问题,除了分区表损坏,你无法识别它们的起点。

TestDisk忽略分区表并扫描文件系统以构建新的分区表,这就是为什么它可能有用 – 它不需要损坏的数据结构。 OTOH,扫描整个磁盘上的文件系统可能非常耗时,并且会导致不再有效的旧文件系统的杂散位,特别是如果您过去重新分区或移动磁盘上的文件系统。 如果文件系统损坏,TestDisk也可能会失败,这可能就是这种情况 – 无论您的分区表可能没有在哪里受到损坏,但可能会对一个或多个文件系统造成严重破坏。 因此,TestDisk只能作为最后的手段使用。