如何将主分区移动到扩展分区?

如何将主分区移动到扩展分区?

我安装的是 Fedora 18 和 Windows 8,并且需要为另一个系统留出空间。

我有一项非常棘手的任务:我需要将我的主 /boot 分区移动到包含所有其他系统分区(主分区、根分区和交换分区)的扩展分区内。布局如下:

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      718847      358400    7  HPFS/NTFS/exFAT
/dev/sda2          718848    84604927    41943040    7  HPFS/NTFS/exFAT
/dev/sda3        84604928    85628927      512000   83  Linux
/dev/sda4        85628928   883879935   399125504    5  Estendida
/dev/sda5        85630976    92938239     3653632   82  Linux swap / Solaris
/dev/sda6        92940288   197797887    52428800   83  Linux
/dev/sda7       197799936   883879935   343040000   83  Linux

如果想要图片的话(葡萄牙语): GParted 打印屏幕

如屏幕截图所示,如果需要的话,我的空闲空间比已使用空间多得多,而且我还有一个有超过 250G 可用空间的外部驱动器。如果可能的话,我想在扩展分区内设置启动分区。默认情况下,Fedora 使用最多的主分区数量,我想释放一个分区来安装另一个操作系统。另一个非常理想的解决方案是将 Windows 分区移动到专用的扩展分区内,因为我认为 Windows 的启动分区没有被使用(我使用 GRUB 作为引导加载程序)。

答案1

Linux 可以从逻辑分区顺利启动。有少数分区程序可以将主分区转换为逻辑分区,反之亦然,但通常(也许总是)有限制。我最熟悉的用于此任务的程序是我自己修复零件。我建议您阅读它的网页来了解如何使用它。

/dev/sda2就您而言,主要问题是和之间没有可用空间/dev/sda3。因此,您需要缩小其中一个分区以创建一些可用空间——仅一个扇区就足够了,但您可能必须将其缩小 1MiB。GParted 可以完成这项工作,但有一个警告:Windows 对其启动分区非常挑剔。如果您从 启动/dev/sda2,则在 GParted 中缩小该分区可能会导致无法启动。因此,最好从 Windows 执行此操作。一旦 之前有未分配的空间/dev/sda3,FixParts 应该可以毫无问题地将其转换为扩展分区内的逻辑分区。

答案2

这里探讨了两种可能的方法:缩小 /dev/sda2 或删除 /dev/sda1 的分区(同时保持其数据完好)。

我确信除了这两个之外还有其他选择。我只是指出一些方法。

为什么要将主分区移到扩展分区?我猜您担心的是限制:MBR 的传统限制是 4 个分区。如果将 /dev/sda3 移到扩展分区,那么您将成功绕过该限制。但是,您打算将 Fedora 分区放在哪里?具体来说,“起始”值和“结束”值是什么?您还有另一个问题需要处理,那就是是否有足够的可用空间。

从 fdisk 报告来看,/dev/sda4 是您的扩展分区,起始于 85628928,比 /dev/sda5 的起始位置早 2048。因此,这表明在扩展分区的起始位置,在扩展分区内的第一个“逻辑驱动器”之前有一点空间。现在,您的 /dev/sda3 起始于 84604928,正好是 /dev/sda2 结束于 84604927 之后的一个扇区。因此,在 /dev/sda3 之前没有可用空间来插入扩展分区的起始位置。

这意味着您基本上有两个选择:移动 /dev/sda3 分区的内容,或者缩小 /dev/sda2(至少缩小 2048),以便 /dev/sda2 尽早结束。简单地缩小可能比尝试重新定位分区更安全。这些是该过程中真正危险的部分。如果您可以缩小 /dev/sda2,那么您可以调整扩展分区的起始扇区,使用某些软件进行调整是相当安全的。(OpenBSD 的 fdisk 是我见过的最好的现代软件:Ranish Partition Manager 也很棒。)

从图片上看,扩展分区后似乎有“未分配”的空间。

实际上……可能有更简单的方法来处理这一切。您使用 /dev/sda1 吗?或者它是某种您实际上不使用的系统恢复分区?

如果您实际上不使用 /dev/sda1,您可以执行以下操作:A) 使用 OpenBSD fdisk(我对这个软件选项相当熟悉。)B) 编辑分区 0(假设它是从 2048 开始、到 718847 结束且类型 ID 为 7 的分区)。注意:块大小可能会报告不同?如果是这样,请根据需要使用不同的数字进行补偿。C) 对分区 0 进行以下更改:开始:从 2048 更改为 0 结束:从 718847 更改为 0 类型/ID:从 07 更改为 00

现在,MBR 上有一个空闲位置。现在可以添加分区,并让其从 883879935 之后开始,并使用驱动器末尾的 44.29 GB。NTFS 数据将继续位于 2048 处的磁盘上。如果您觉得需要再次从该位置启动,可以编辑 MBR,将分区更改为从 2048 开始,在 718847 处结束,然后再次使用 Type/ID 07。驱动器上只能有分区(其中一个是“扩展分区”),这实际上没有限制。常见的限制是 MBR 只能定义 4 个这样的分区,因此一次只能有那么多可用/活动的分区。但您可以随意来回切换。

我以前也曾成功地做过这样的恶作剧。但请注意,某些软件可能会做一些奇怪的事情,并尝试写入不在分区中的空间。我特别警惕休眠支持(这是笔记本电脑吗?)。此外,我使用 Microsoft System Center Data Protection Manager(备份软件)的经验表明,它以某种方式存储数据,而不是使用定义分区内的文件系统卷。OpenBSD 的 fdisk 的一个优点是您可以修改引导记录,这些更改可以小心地恢复。在我更经常使用 MS-DOS 的那些日子里,微软的 FDISK 会销毁分区中前 512 个字节(或者是 2048 个字节?)的数据。如果对文件系统卷进行此类更改,则实际上会导致数据丢失,这通常会导致整个文件系统卷无法使用。因此,安全地执行某些任务的能力可能取决于您使用的软件(以及您对所做事情的了解程度和谨慎程度)。如果我还没有充分备份所有重要数据(最好在不同的驱动器上),我不建议尝试进行任何类型的驱动器大小调整/移动或分区删除(同时尝试保持文件系统卷完好无损)。

您可能想要做的一件事是复制(而不是移动)现有的 /dev/sda3 分区。在 /dev/sda7 之后,您有足够的可用空间来存储副本(甚至多个副本)。理论上,这可以使用 dd 来完成(对 skip= 等内容使用适当的值)。但是,如果您写入未分区的空间,通常需要非常小心,不要让多个软件使用(写入)该空间。如果您没有一丝不苟地跟踪数字,您可能会丢失它。(对于几乎整篇文章,我只是在写一些相当可能的事情。对于重要数据,唯一值得推荐的方法是进行适当的备份,保存整个驱动器上所有人的所有重要数据。)

我确认了 Rod Smith 对评论中问题的回答:Linux 系统可以从扩展分区启动。

相关内容