扩展虚拟机上的 LVM 逻辑卷

Kev*_*hen 7 lvm

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

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

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

Kev*_*hen 9

一个示例 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
Run Code Online (Sandbox Code Playgroud)

可以使用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
Run Code Online (Sandbox Code Playgroud)

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

扩展成功后,生成的分区表(use 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
Run Code Online (Sandbox Code Playgroud)

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

在我看来,在可能的情况下,第二种方法更简洁。当然,如果/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
Run Code Online (Sandbox Code Playgroud)

这已经足够了,只有 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
Run Code Online (Sandbox Code Playgroud)

大小的增加将自动传递给卷组,使用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
Run Code Online (Sandbox Code Playgroud)

逻辑卷的大小不会自动增加。这实际上是有道理的,因为计算机不知道您想要增加哪个逻辑卷的大小,或者您可能想要使用卷组中的额外空间创建一个新的逻辑卷。所以用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
Run Code Online (Sandbox Code Playgroud)

增加逻辑卷的方法是使用 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
Run Code Online (Sandbox Code Playgroud)