如何在系统运行时调整Linux分区大小?

如何在系统运行时调整Linux分区大小?

我们的一台虚拟机(运行 OpenSUSE LEAP 15.3)的文件系统最初设置为 10GB,但它的文件系统仅满了。所以我在 vSphere 中将其扩展了 20GB。根据我找到的描述,我首先/dev/sda3从该磁盘末尾的 20GB 创建一个新分区:

~ # fdisk -l   

Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000845f1

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048  1026047  1024000  500M 83 Linux
/dev/sda2        1026048 20971519 19945472  9.5G 83 Linux
/dev/sda3       20971520 62914559 41943040   20G 83 Linux
~ #

但后来我产生了疑问。我认为实际上最好再次删除新创建的分区并扩展已经存在的/dev/sda2.

我怎样才能最好、最简单地做到这一点?即我如何/dev/sda3再次删除并将/dev/sda2的结束扇区更改为 62914559 ?对我来说,问题是我需要从正在运行的虚拟机本身执行此操作,而不损坏文件系统。即,我无法从包含某些分区编辑工具的 CD 或记忆棒启动该系统,但需要在系统运行时执行此操作。我想这是可能的,但我显然不是 Linux 高手,所以请耐心等待!

如果与此处相关:/dev/sda2使用 btrfs 进行格式化。

答案1

懒惰的方式:使用 btrfs 功能合并sda3到现有文件系统中

如果您只关心结果(即使分区的磁盘容量sda3成为现有文件系统的一部分),您可以简单地执行以下操作:

(假设这sda2是您的根文件系统,以及您实际想要扩展的文件系统)

btrfs device add /dev/sda3 /   # this makes the new capacity available

然后

btrfs filesystem balance /     # this optimizes things but can take a long time

你就完成了。

是的,单个btrfs文件系统可以占用多个分区。


彻底的办法:实际删除sda3分区并扩展sda2

首先,您需要删除sda3您创建的分区。如果您还没有安装它,将其添加到现有的btrfs或以其他方式使用它,您可以简单地运行fdisk /dev/sda,然后输入d“删除分区”,然后3输入要删除的分区数,最后w将更改写入磁盘并退出fdisk

然后运行cat /proc/partitions并确保不再sda3列出:如果有,请运行partprobe /dev/sda并再次检查。

扩展现有分区的最简单的工具可能是growpart.它似乎没有作为 OpenSuSE 15.3 上的标准提供,但显然你可以从这里获取它:https://software.opensuse.org/download.html?project=Cloud%3ATools&package=growpart

要扩展sda2分区以占用磁盘上位于其之后的任何连续的未分区可用空间:

growpart /dev/sda 2

然后调整btrfs文件系统的大小以填充现在更大的分区:(假设sda2是您的根文件系统)

btrfs filesystem resize max /

相关内容