例如,出于调试目的,我需要将磁盘扩展到所有未分配的空间
我的完整磁盘大小是 931.5GB,我有以下分区
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 107.5G 0 part /
└─sda3 8:3 0 3.8G 0 part [SWAP]
所以我的/dev/sda2分区小于931.5GB,我需要使用parted命令增加这个分区以获得更多的espace
未分配的空间为:819.72GB(请参阅 gparted)parted /dev/sda resizepart 2 500GB 但此命令返回以下错误:
Can't have overlapping partitions
我正在使用实时 USB 来完成所有这些操作,以便不安装 /dev/sda,奇怪的是,parted 允许我缩小分区,我的意思是这个
parted /dev/sda resizepart 2 50GB
另一件事,如果我能找到这个问题的解决方案,我想使用选项 -s 以便使用一些 bash 脚本自动执行此过程
这是 fdisk -l 命令的输出
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: C680462D-DE3F-4A97-B2A2-50226E7F9668
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 226453503 225402880 107.5G Linux filesystem
/dev/sda3 226453504 234440703 7987200 3.8G Linux swap
谢谢
答案1
您无法增长的原因/dev/sda2
是您的交换分区/dev/sda3
太接近而/dev/sda2
不允许任何增长。请注意,您的/dev/sda2
分区从扇区 226453503 开始,而交换分区从下一个扇区 226453504 开始。因此,实际上您要求在下一个扇区上增加一个分区(这是一个非常糟糕的主意,这就是为什么gparted
不允许这样做的原因)。
为了解决这个问题,您可以将交换区移动到驱动器的尾部(gparted
想到)或将其删除并在增长后将其添加回来/dev/sda2
(使用您最熟悉的任何分区工具)。遗憾的是,我没有关于自动化该过程的建议,因为它似乎取决于具体情况。但至少现在您知道问题的根本原因。
有一个非常相似的问题和解决方案这里。
答案2
对于在添加新的引导分区(或任何其他分区,尽管可能需要更多步骤)后可能遇到此问题的任何人来说,另一个非常简单的解决方案是gdisk
在尝试通过parted调整大小之前使用对分区进行排序:
gdisk /dev/sdX
Command (? for help): s
之后parted就没有出现分区重叠的错误了。
答案3
要自动化Elder对大量具有不同磁盘大小和分区大小的clonzilla映像的回答,并假设基本布局EFI + OS + Swap始终相同并且操作系统在交换上不休眠,最困难的部分是移动交换分区到磁盘末尾。 Gparted 似乎不接受相对于结束的位置(使用负的开始/结束数字)。您必须处理输出parted print
以找出磁盘有多大,并自动计算开始和结束位置以在mkpart
gparted 命令中使用(并根据需要对齐分区的开始,例如以2048 个扇区)。您需要一些编程,例如 shell 脚本。