GParted 方法:

GParted 方法:

我正在运行基于 Linux 的笔记本电脑,为了在其中多重启动多个发行版,我使用 GParted 创建了一个扩展分区,其中包含一堆逻辑分区。现在,在使用这种设置很长一段时间后,我改变了主意,因为我的数据分区缺少存储空间。现在我想像平常一样单独保留一个发行版,并最终将一些其他操作系统存储在外部支持中,以便在需要时插入和使用。

显然,我想要保留的这个分区(以及稍微扩大一点的分区)只是我想要保留的扩展分区中的一个逻辑分区。至于数量,我没问题,这意味着我目前有这个大型发行版专用的扩展分区、交换分区和数据分区,所以在删除扩展分区之前还有空间可以放另一个主分区,但我不知道如何在不触及其中的逻辑分区的情况下删除它,我不想重新安装系统而丢失所有更改和设置,也不想只为逻辑分区保留一个扩展分区。

我该怎么办?我是否必须创建一个新的主服务器,复制其中的逻辑内容,然后删除所有内容?系统是否会启动并保留其现在拥有的所有功能?或者,一旦扩展服务器只包含一个逻辑服务器,是否有办法将其转换为主服务器?或者我可以直接将逻辑服务器从扩展服务器中移出并将其转换为主服务器吗?或者,我又被搞砸了?

答案1

感谢大家的回答,我最终也找到了其他一些方法,只是我搜索的方式不对:我不知道我只需要写“将逻辑变为主要”。我想,我找到的解决方案是 knjers 建议的,但这句话是这样说的,直到我读到这句话,我才明白他在说什么。

帖子内容如下:通过终端转换

如果我早点找到解决这个问题的方法,我就不会再发一篇没用的帖子了,但也许有些人和我的情况一样,所以我会继续这个解决方案。长话短说,我们需要 sfdisk。第一次运行

sudo sfdisk -d /dev/sdX

要获取驱动器的详细地图(显然,X 代表设备号,运行sudo fdisk -l如果您不知道驱动器代码,请使用以下命令获取驱动器列表。
只需将其复制到文本文件中,然后手动将分区表编辑为所需的分区表即可。请小心,搞砸一切的可能性相当高。我之前在 USB 上测试过,它确实有效。

无论如何,您所要做的就是找出要创建的地图,并用扇区的形式表达它。如果您的情况和我一样(想要摆脱扩展分区),那么一切都会变得更容易,因为这意味着您可以删除任何逻辑分区,但要删除的逻辑分区必须是主分区,并且扩展分区内只有一个逻辑分区,大小与主分区一样大。您可以使用更简单的自动工具(如 GParted)来实现这种情况。这样做更容易,因为您可以将扩展分区的起点和终点用作新的主分区,而如果您想保留包含多个逻辑分区的扩展分区,并将其中一个逻辑分区移出扩展分区(显然,只有当它是最后一个或第一个逻辑分区时才有可能 - 如果不是,只需移动它 - 并且如果您有三个或更少的主分区/扩展分区),编辑会稍微复杂一些,因为您必须正确指定扩展分区的新起点/终点以包含所有其他主分区等。

举例来说,假设您有这个简单的地图:一个单独的逻辑分区,位于最开始的扩展分区,一个交换分区和一个巨大的数据分区。

sudo sfdisk -d /dev/sda

/dev/sda 的分区表
单位:扇区

/dev/sda1:启动=2048,大小=80000000,Id=f
/dev/sda2:启动=80002048,大小=800000,Id=82
/dev/sda3:启动=80802048,大小=800000000,Id=83
/dev/sda4:启动=0,大小=0,Id=0
/dev/sda5:启动=4096,大小=79997952,Id=83

这些数字都是我编造的,以便于更容易理解它是如何工作的。如您所见,可能的“真实”分区的最大数量是四个,这意味着每个逻辑分区都将从五开始编号,即使您的主分区少于四个。此外,如果您只有三个分区而没有逻辑分区,/dev/sda4 将显示为从 0 开始的类型 0 和大 0。始终显示四个主分区的阈值。ID 83 是 Linux ext 分区,82 是 Linux swap(带 ID 的分区类型列表)。现在,如果我们想保留这个精确的映射,除了用逻辑分区替换扩展分区作为逻辑分区之外,我们只需粘贴我们得到的命令的精确输出(来自“分区表”)并按如下方式修改它:

/dev/sda 的分区表
单位:扇区

/dev/sda1:启动=4096,大小=79997952,ID=83
/dev/sda2:启动=80002048,大小=800000,ID=82
/dev/sda3:启动=80802048,大小=800000000,ID=83
/dev/sda4:启动=0,大小=0,ID=0

我们所做的就是将逻辑分区及其原始限制(它开始于扩展分区之后,结束于扩展分区之前,您必须设置自己的限制)放置在扩展分区(它现在占据编号 < 5 的位置,为扩展分区或主分区保留)的位置,ID 为 83(Linux 本机文件系统,最终将其定义为主分区)。这样,当我们导入新表时,包含逻辑分区所有文件的块将被识别为主分区的一部分,但不会删除任何文件,因此非常完美。要导入新配置,请保存文本文件并执行以下命令:

sudo sfdisk --force /dev/sdX < path/to/file/yournewpartitiontable.txt

重要的:从实时会话执行此操作,基本要求是您的硬盘未在使用中并且所有分区都已卸载。如果您要修改的驱动器不是您的系统驱动器(例如辅助硬盘驱动器或外部驱动器或 USB 笔式驱动器/SD 卡),那么没问题,只需确保所有分区都已卸载即可。

GParted 方法:

在启动 GParted live 以删除所有其他逻辑分区并获取包含所有逻辑分区的扩展分区和仅包含我想要切换到主逻辑分区的扩展分区时,我实际上偶然遇到了一种新方法(我使用过的方法,所以我可以保证它有效,您只需要少于四个分区,因为您需要一个免费的备份块并实际创建您的新主分区,然后才能删除扩展分区)。

GParted 有一个复制函数会将分区的精确副本复制到足够大的可用块中。我所做的就是将逻辑分区复制到扩展分区之外,然后,在确保一切工作都像在原始分区中一样后,删除逻辑分区和扩展分区并将所有内容移到它们的位置,扩展我的数据分区。这种方法更安全,因为它不是 100% 手动的,但也更耗时(我确实让我的数据分区占用了剩余的可用空间,将其从 380 GiB 扩大到 440 GiB,这需要 5 个小时),并且可能对硬盘造成更大的压力,因为您将在其中执行更多操作,而不是直接修改分区表和符号信息。但同样,这也更简洁,因为您是在一次操作中完成所有操作,占用剩余的可用空间并使分区粘在一起,而不会在它们之间浪费空间(使用 sfdisk,您将为新主分区提供旧逻辑分区的边界,这意味着从后开始并在前结束,在中间留下未使用的空间)。

希望这会有所帮助,加油!

答案2

只需使用逻辑分区的起始和结束 LBA 地址,并将它们输入为 MBR 中四个主分区槽之一的起始和结束。

如果是 SSD,则希望它与 8 个 LBA 扇区的倍数对齐。当所有内容至少对齐 4096B 时,SSD 的使用寿命会更长。128KB 甚至更好。

答案3

就我个人而言,我不会这么做;保留一个包含逻辑分区的扩展分区不会造成任何实际危害。由于逻辑分区的数据结构受损,可能会有丢失分区的风险,但这种风险可能小于使用分区工具将逻辑分区转换为主分区的风险。

如果你真的想这么做,我推荐我的修复零件程序,它可以在 MBR 系统和当前分区布局的限制内将主分区转换为逻辑分区,反之亦然。根据您所说的,我预计此转换不会出现问题。该过程将类似于:

  1. 在磁盘上启动 FixParts
  2. 键入p以查看分区表并验证 FixParts 是否显示了所有应显示的内容
  3. 键入r以将逻辑分区更改为主分区。(系统会要求您输入分区号。)
  4. 再次键入p以查看分区表,以确保一切正常。
  5. 键入w以保存您的更改。

fdisk尽管记录逻辑分区的起始和结束扇区,删除它及其包含的扩展分区,然后使用或手动重新创建分区parted可以起作用,但这需要额外的工作,并且会增加人为错误的机会;因此,我不会那样做——当存在一个可以自动执行此操作而没有打字错误造成严重破坏的机会的工具时,我不会那样做。

相关内容