是否可以在不重新启动的情况下扩大 / 分区?

是否可以在不重新启动的情况下扩大 / 分区?

我可以扩大根 ( /) 分区,而fdisk无需重新启动(删除并使用相同的第一个扇区重新创建它,但最后一个扇区更大)。

但是,我无法使内核重新读取分区表:

# partx -va /dev/vda
partx: /dev/vda: adding partition #5 failed: Device or resource busy
partx: /dev/vda: error adding partition 5

# kpartx -va /dev/vda
device-mapper: reload ioctl on vda5 failed: Invalid argument
add map vda5 : 0 41492480 linear 0:0 2048

# hdparm -z /dev/vda
/dev/vda:
 re-reading partition table
 BLKRRPART failed: Device or resource busy

# sfdisk -R /dev/vda
BLKRRPART: Device or resource busy
This disk is currently in use.

我知道我在做什么,分区内的 ext 文件系统支持在线扩容。

有没有办法强制内核更新其分区表?

编辑: 我知道 LVM,但它是不是这个问题的答案。

答案1

内核将使用旧的(缓存的)分区表,直到您卸载受影响磁盘上的所有分区。

由于您无法在系统运行期间卸载和安装 / 分区,因此您唯一的选择就是重新启动。

下次尝试使用 LVM,因为它允许您调整卷(甚至是根卷)的大小,而无需更改分区表。

答案2

要在线调整文件系统的大小,尤其是 /,您需要在物理层和虚拟层之间进行某种形式的抽象,例如 LVM。

要使用 LVM 实时调整大小,请使用:

pvcreate /dev/sdX
vgcreate vg1 /dev/sdX
lvcreate Root -L10G

然后下次磁盘即将满时,您将使用lvextend /dev/mapper/vg1-Root -L+10G --resizefs并瞧您获得了更多空间。

阅读有关 LVM 的内容http://linux.die.net/man/8/lvm

编辑

要礼貌地要求内核更新缓存的分区表,您可以尝试partprobe 但我不认为它可以按照您的需要工作,如前所述,重新挂载所有文件系统,除非您启动到实时虚拟机,否则这很难。

编辑

您可以调整分区的大小,但这需要您记住/写下您看到的大小,fdisk这对每个人来说都是一个非常高级的步骤。当您获得这些数字后,您可以从开始大小重新创建分区,然后让它填充磁盘。 如果分区是磁盘上的最后一个分区,这会更容易,如果您必须调整中间分区的大小,那么您肯定不走运

我曾为顾客做过几次,但这是一项令人毛骨悚然、伤脑筋的工作。 为了安全和数据保存,我不推荐这种方式。

相关内容