调整虚拟磁盘大小后如何增加活动分区的大小?

调整虚拟磁盘大小后如何增加活动分区的大小?

我正在运行一个空间不足的网络服务器。它在 VMware ESX 上作为虚拟机运行,并且我将其硬盘驱动器的大小增加了一倍。

Disk /dev/sda: 96 GiB, 103079215104 bytes, 201326592 sectors
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: 0x51f6b050

Device     Boot   Start       End  Sectors  Size Id Type
/dev/sda1  *       2048    999423   997376  487M 83 Linux
/dev/sda2       1001470 100661247 99659778 47.5G  5 Extended
/dev/sda5       1001472 100661247 99659776 47.5G 8e Linux LVM

它显示 dev/sda 为 96GB,这一定是指物理卷,这意味着下表上有三个分区 - sda1、sda2 和 sda2。

但是,如果我运行 DF 命令,我会得到以下信息:

Filesystem                     1K-blocks     Used Available Use% Mounted on
udev                             4068132        0   4068132   0% /dev
tmpfs                             817508     9312    808196   2% /run
/dev/mapper/webserver--vg-root  44762192 35857748   6607612  85% /
tmpfs                            4087524        0   4087524   0% /dev/shm
tmpfs                               5120        0      5120   0% /run/lock
tmpfs                            4087524        0   4087524   0% /sys/fs/cgroup
/dev/sda1                         482922   152390    305598  34% /boot
tmpfs                             817508        0    817508   0% /run/user/1000

如果它们不是分区,它们是什么?看起来问题好像是 /dev/mapper/webserver--vg-root (我刚刚删除了一些文件,以便我可以使用系统)。如何根据磁盘空间的增加来增加其大小?

提前致谢

答案1

您没有看到额外磁盘空间的原因是磁盘(您已增长的磁盘)和操作系统中的可用空间之间涉及多个级别:

  • 磁盘本身
  • 磁盘上的分区(允许将单个磁盘用于不同目的)
  • LVM(逻辑卷管理,可以更轻松地管理磁盘空间)
  • 文件系统(管理分区或逻辑卷中的文件存储)

这些层中的每一层都需要了解磁盘空间的增加情况。

由于您使用的是 LVM,因此有两种方法。您可以添加一个新分区并使用它,如中所述回答(足够接近 - 这描述了添加新磁盘,但您可以添加新的主分区以以相同的方式使用现有磁盘上添加的空间)。您也可以扩展现有分区...

让我们逐层浏览一下:

  1. 磁盘本身:您已经完成了。
  2. 分区:要扩展分区,您可以使用图形工具,例如gparted, 或 plain fdisk

    fdisk /dev/sda
    

    删除现有分区及其容器,记下它们的起始扇区:

    p
    

    (这会打印分区表并提供我们稍后需要的信息)

    d
    5
    d
    2
    

    这不会删除任何数据,它只是删除标记(在任何情况下,只要我们不告诉fdisk写入,磁盘上就不会发生任何变化)。创建新的扩展分区:

    n
    e
    

    接受默认分区号。对于第一个扇区,确保fdisk使用与之前使用的相同的起始扇区sda2(在您的情况下为 1001470);对于最后一个扇区,fdisk将自动选择最大的可能值(使用所有磁盘空间,这就是您想要的)。里面新建一个逻辑分区:

    n
    l
    

    再次检查起始扇区(在您的情况下为 1001472),并使用所有磁盘空间。

    w
    

    会将更改写入磁盘。因为我们在使用时更改了分区,所以此时您可能需要重新启动。

  3. LVM:我们需要告诉LV子系统新的磁盘空间;我们首先扩展占用分区的物理卷来做到这一点:

    pvresize /dev/sda5
    

    然后是逻辑卷

    lvresize -r -l 100%PVS /dev/mapper/webserver--vg-root
    
  4. 文件系统:这个很简单,上面-r的选项lvresize就可以使用一个名为fsadm.

答案2

如果您的磁盘使用 GPT,parted 将是解决此问题的好方法。

例子:

sudo parted
(parted) select /dev/sda
Using /dev/sda
(parted) mkpart
Partition type?
primary File system type? [ext2]?
Start? 1
End? 10000
(parted) quit
cro@mac-mini-Ubuntu $

答案3

重要提示:我建议在搞乱分区之前几个小时对虚拟机进行快照。 VMWare 中的快照在进行修改时经常会出错立即地做完之后。

最简单的方法是创建一个新磁盘、一个新的主分区,并将其添加到卷组中。

您需要使用 fdisk 创建一个新分区。

然后在新磁盘中创建一个新分区(或 /dev/sda 和分区 3,而不是旧磁盘的分区 1 - /dev/sda )

sudo fdisk /dev/sdb
n         -- new 
p         -- primary
(accept all defaults with ENTER)

更改分区类型:

t
1
8E         -- Linux LVM

写它:

w        
q

(我假设/dev/sdb1是在此时创建的。如果是其他,请在vgextend下面替换它)

根据系统的不同,此时可能会要求您重新启动。您可以重新启动,或运行:

partprobe

如果您没有该命令,请使用以下命令安装:

sudo apt-get install parted

检查卷组(VG 名称)的内容:

vgdisplay

从现在开始,我假设它是网络服务器--vg

将分区添加到卷组:

vgextend webserver--vg /dev/sdb1

然后您可以使用(实时,比参考教程中的 lvextend + resize 更好)调整它的大小

lvextend -r -l+100%FREE /dev/vg/webserver--vg-root

PS 这是@Stephen Kitt 的替代路线,无需删除分区。它对于扩展磁盘来说足够灵活,过程也不太复杂,缺点是随着时间的推移,扩展文件系统时文件系统管理会变得更加复杂。实际上,此过程通常更面向物理机,例如在第二个磁盘上增长 LVM 分区。

参考:

无需重启Linux系统即可重新读取分区表
如何管理和使用LVM(逻辑卷管理)

相关问题:

不断增长的 LVM 根

相关内容