以编程方式调整扩展分区的大小以填充整个驱动器

以编程方式调整扩展分区的大小以填充整个驱动器

在任意大小的磁盘上恢复克隆的操作系统映像后(大于捕获原始映像的磁盘),我希望 延长MBR 表中的分区包含所有可用的磁盘空间,以便新逻辑可以添加分区。问题在于如何使用命令行实用程序来实现这一点 — 无需使用交互式程序(尤其是具有 GUI 的程序,如 GParted),并且可能无需通过复杂的 shell 脚本来解析输出等 fdisk

我在 Linux 文本控制台中发现的最简单的方法是:

  1. 使用cfdiskTUI 以交互方式创建 逻辑分区(自动捕捉到现有分区之外的可用空间)延长分区),写入更改并退出。

  2. 使用fdiskshell 交互删除新创建的逻辑分区,写入更改并退出。

(只有在“写入并退出”步骤 fdisk中 延长分区大小调整——我猜是为了修复差异:如果 逻辑分区被自行删除 cfdisk,那么 延长分区的大小没有改变。)

我尝试过的工具不能直接回答我的问题,原因如下:

  • cfdisk— 不可编写脚本,实际上无法调整 延长分区大小(至少在临时逻辑分区已被删除;见上文);

  • fdisk— 不允许创建逻辑外部的分区 延长分割;

  • parted— 脚本友好,但需要指定准确的起始和结束扇区(嗯,最后一个扇区可以输入为 -1s),并且似乎表现得像——至少我无法找出有效的起始扇区号,总是收到“不能有重叠分区”错误,即使传入默认模式下fdisk先前选择的值 ;cfdisk

  • gdisk— 只是将 MBR 分区表转换为 GPT,这对我来说不是一个选择;

  • sfdisk— 专用于从头开始重新创建整个分区表,因此与调用fdisk相同的过度操作集没有什么不同。

我认为这是调整扩展分区大小的常见任务,但令人惊讶的是,找不到任何预先存在的解决方案。

相关内容