在虚拟机上扩展 LVM 逻辑卷

在虚拟机上扩展 LVM 逻辑卷

我遇到了一个非常具体的问题。我在虚拟机上的单个物理卷上运行了一个 LVM。逻辑卷的大小约为 150GB,我希望将其扩展到 250GB。

我能够从虚拟机管理器扩展物理卷,但物理大小的变化并未反映在我的 LVM 逻辑卷上。

我没有直接找到任何答案,而是通过一些实验找到了解决方案。我想在下面的答案中分享它。

答案1

LVM 图示例:

在此处输入图片描述

LVM 的理念是将逻辑卷从物理卷中抽象出来,这样多个物理卷在用户看来就像一个连续的逻辑卷。

根文件系统位于 ,/dev/file-server-vg/root而交换位于/dev/file-server-vg/swap。我们的想法是,实际上我们可以在 PV 层中拥有多个真实硬盘,并且它们都可以添加到卷组中,这将允许它们全部作为单个连续的文件系统出现在系统中/dev/file-server-vg/root

在这个问题中,我一直将其用作/dev/file-server-vg/root文件服务器,但它空间不足。幸运的是,这个系统在虚拟机上,我能够/dev/sda使用虚拟机管理器扩展物理卷。但是,大小的增加不会自动传递到/dev/file-server-vg/root文件系统。我们需要执行一些简单的命令才能使其正常工作。

开始之前,使用pvdisplay查看存在哪些物理卷。这将列出所有物理卷及其所属的卷组。在本例中,我们只有一个物理卷/dev/sda3

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               file-server-vg
  PV Size               155.26 GiB / not usable 0   
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              65346
  Free PE               0
  Allocated PE          65346
  PV UUID               0EXhc4-EoHZ-b79R-ncSe-SWXI-ztPe-Fsc7zk

sudo parted可以使用然后列出当前分区表print

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot
 2      538MB   794MB  256MB  ext2
 3      794MB   167GB  166GB                     lvm

在此示例中,我们希望将容量从 155.56GiB 扩展到 255.56GiB。使用虚拟机管理器,我们通常可以扩展磁盘空间,在本例中,我们将扩展 100GiB。

扩容成功后,生成的分区表(使用print free)将如下所示。请注意,“可用空间”显示 108GB (~100GiB)。

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot
 2      538MB   794MB  256MB  ext2
 3      794MB   275GB  166GB                     lvm
      167GB   275GB  108GB  Free Space

扩展逻辑卷有两种方法:创建一个新的分区并将其添加到卷组,或者增加相同的分区。

我认为,在可能的情况下,第二种方法更简洁。当然,如果/dev/sda3是物理硬盘,并且你又买了一块硬盘来扩展空间,那么使用第一种方法是合乎逻辑的。

在 parted 中输入resize 3 794MB 275GB将调整分区 3 的大小以占用所有可用空间,差不多:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  538MB   537MB   fat32              boot
 2      538MB   794MB   256MB   ext2
 3      794MB   275GB   274GB                      lvm
        275GB   275GB   1032kB  Free Space

这已经足够好了,只有 1MB 没有被使用。

接下来我们将重新启动机器。这是刷新分区表所必需的。

现在你会看到,物理体积已经增大了,pvdisplay

--- Physical volume ---
  PV Name               /dev/sda3
  VG Name               file-server-vg
  PV Size               255.26 GiB / not usable 0   
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              65346
  Free PE               0
  Allocated PE          65346
  PV UUID               0EXhc4-EoHZ-b79R-ncSe-SWXI-ztPe-Fsc7zk

大小的增加将自动传递给卷组,使用时vgdisplay您将获得以下内容。请注意,vgextend它实际上并没有像您想象的那样做。它不会占用可用空间,而是用于向特定卷组添加新的物理卷。

--- Volume group ---
  VG Name               file-server-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               255.26 GiB
  PE Size               4.00 MiB
  Total PE              65346
  Alloc PE / Size       65346 / 255.26 GiB
  Free  PE / Size       0 / 0   
  VG UUID               NwwIgT-W0SH-aeTe-d078-hcxx-XZ6W-QfnSA0

逻辑卷不会自动增加大小。这实际上是有道理的,因为计算机不知道您要增加哪个逻辑卷的大小,或者您可能想使用卷组中的额外空间创建一个新的逻辑卷。因此,您lvdisplay将看到下表,显示/dev/file-server-vg/root只有 153.26GiB,但不用担心,我们非常接近。

--- Logical volume ---
  LV Path                /dev/file-server-vg/root
  LV Name                root
  VG Name                file-server-vg
  LV UUID                l6qvYZ-AmYw-tdgi-2jUu-XNB2-gecQ-6fDPt8
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 1
  LV Size                153.26 GiB
  Current LE             64834
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/file-server-vg/swap_1
  LV Name                swap_1
  VG Name                file-server-vg
  LV UUID                OohMkN-rGLa-fM4M-6he2-MbM9-BBc3-Ck2Hs5
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

增加逻辑卷的方法是使用lvextend -L +100GB /dev/file-server-vg/root

之后使用以下命令扩展文件系统resize2fs /dev/file-server-vg/root

您已完成。您可以lvdisplay检查/dev/file-server-vg/root卷是否已扩展到 253.26GiB

  --- Logical volume ---
  LV Path                /dev/file-server-vg/root
  LV Name                root
  VG Name                file-server-vg
  LV UUID                l6qvYZ-AmYw-tdgi-2jUu-XNB2-gecQ-6fDPt8
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 1
  LV Size                253.26 GiB
  Current LE             64834
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/file-server-vg/swap_1
  LV Name                swap_1
  VG Name                file-server-vg
  LV UUID                OohMkN-rGLa-fM4M-6he2-MbM9-BBc3-Ck2Hs5
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

相关内容