我们的一台虚拟机(运行 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 /