扩容逻辑卷

扩容逻辑卷前,必须确保卷组有足够的剩余容量,若容量不足,需先通过新增或扩容物理卷的方式扩容卷组后,再扩容逻辑卷并调整其文件系统大小。

工作原理

扩容逻辑卷主要包含两个步骤:

  1. 扩容卷组:逻辑卷的空间源于其所在的卷组。因此,须先通过扩容物理卷或新增物理卷方式为卷组增加可用容量。

  2. 扩容逻辑卷:将卷组中的新增空间分配给目标逻辑卷,然后扩展其上的文件系统,以使操作系统能够正常使用。

image

操作步骤

重要

LVM创建逻辑卷不提供数据冗余,对于生产数据,请务必考虑应用层冗余方案或使用阿里云快照一致性组,保护数据。

步骤一:扩容卷组

  1. 登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。

  2. 查看卷组剩余容量。

    执行sudo vgs指令,根据VGVFree字段获取卷组名称及卷组剩余容量。

    sudo vgs
      VG    #PV #LV #SN Attr   VSize  VFree
      vg_01   2   1   0 wz--n- 79.99g    0 

    示例中,卷组名称vg_01,总容量为79.99 GiB,剩余容量为 0 GiB,需先扩容卷组。若卷组空间有剩余则可直接扩容逻辑卷

  3. 扩容卷组。

    扩容卷组中物理卷

    1. 查看物理卷与云盘的对应关系。

      执行sudo pvs -a -o +devices命令,确定物理卷(通过PV字段获取)对应的云盘名称(通过Devices字段获取),并记录物理卷名称和云盘名称。

      sudo pvs -a -o +devices
        PV         VG    Fmt  Attr PSize   PFree Devices    
        /dev/vda1             ---       0     0             
        /dev/vda2             ---       0     0             
        /dev/vda3             ---       0     0             
        /dev/vdb   vg_01 lvm2 a--  <40.00g    0  /dev/vdb(0)
        /dev/vdc1  vg_01 lvm2 a--  <40.00g    0  /dev/vdc1(0)
      • 如果物理卷基于整块云盘创建(无分区),则仅需扩展云盘容量。示例中物理卷/dev/vdb对应的云盘名称/dev/vdb,不存在分区,仅需扩展其容量。

      • 如果物理卷给予云盘的某个分区创建,不仅需要扩展云盘容量,还需要扩容分区。示例中物理卷/dev/vdc1对应的云盘分区名称/dev/vdc1云盘名称/dev/vdc分区编号1,需要扩容分区。

    2. 扩展云盘容量。

      1. 访问ECS控制台-块存储-云盘。在页面左侧顶部,选择目标资源所在的资源组和地域。

      2. 单击目标云盘操作列中的扩容

      3. 确定目标盘与须知页面,核实信息后单击已知晓并备份,继续扩容

      4. 配置扩容方式与容量向导页面,设置扩容参数并确认费用后,单击扩容

        以将云盘容量由40 GiB扩展至50 GiB为例,需填写扩容后的容量50 GiB。
        重要

        扩展云盘容量时会收取新增容量的费用。

      5. (条件必选)若为包年包月云盘,请在支付弹框中等待5秒倒计时结束后,单击确认,去支付,完成支付后返回扩容流程,单击已完成支付,关闭

        如果未完成支付,但单击了已完成支付,关闭,需要单击操作列的查看关联订单,完成支付。
    3. (条件必选)若待扩容物理卷对应云盘的分区,需要在ECS实例内扩容分区。

      将命令中的<云盘名称><分区编号>替换为步骤a中获取到的云盘名称与分区编号后执行命令。

      重要

      云盘名称和分区编号之间有空格。

      sudo LC_ALL=en_US.UTF-8 growpart <云盘名称> <分区编号>
      以扩容/dev/vdc1为例,需要执行sudo LC_ALL=en_US.UTF-8 growpart /dev/vdc 1

      当回执内容中包含关键字CHANGED,表示指令执行成功。

    4. 扩容物理卷。

      <物理卷名称>可通过步骤a获取。

      sudo pvresize <物理卷名称>
      以扩容物理卷/dev/vdb为例,需执行:sudo pvresize /dev/vdb

      当输出内容中包含关键词1 physical volume(s) resized or updated,表示指令执行成功。

    5. 验证卷组扩容是否生效。

      运行sudo vgs,确认卷组剩余可用容量(回执中VFree字段对应的值)是否符合新增预期。

      sudo vgs
      VG    #PV #LV #SN Attr   VSize  VFree 
      vg_01   2   1   0 wz--n- 89.99g 10.00g

      示例中,卷组vg_01的容量由79.99 GiB增加至89.99 GiB,剩余容量VFree10 GiB, 符合预期,卷组扩容成功。

    新增物理卷并加入卷组

    在确保云盘已创建并挂载至目标实例(无需初始化)的情况下,执行以下操作。

    1. 获取新建数据盘的设备名称。

      执行sudo lsblk -f,根据NAMEFSTYPE字段,确定新建数据盘的设备名称。

      sudo lsblk -f
      NAME         FSTYPE      LABEL UUID                                   MOUNTPOINT
      vda                                                                   
      ├─vda1                                                                
      ├─vda2       vfat              7938-FA03                              /boot/efi
      └─vda3       ext4        root  33b46ac5-7482-4aa5-8de0-60ab4c3a4c78   /
      vdb          LVM2_member       okx24E-qSjZ-zv9l-lOkm-Pcxu-q6KX-qzRcCu 
      └─vg_01-lv01 xfs               9e2bfe15-074e-4bf5-aac5-62c58299364f   /mnt/lv01
      vdc          LVM2_member       ISeUSM-AhRp-KdNN-7pWJ-HxGW-2AEq-85m9dE 
      └─vg_01-lv01 xfs               9e2bfe15-074e-4bf5-aac5-62c58299364f   /mnt/lv01
      vdd

      示例中,设备名称vdd无分区及文件系统(FSTYPE为空)为新建数据盘。

    2. 创建物理卷并将其加入卷组中。

      重要

      创建物理卷会删除数据盘中数据,请确保数据盘为空。

      <新盘的设备名称>可通过上一步获取。

      sudo vgextend <卷组名称> /dev/<新盘的设备名称>
      以将云盘vdd初始化成物理卷并添加至卷组vg_01为例,需执行sudo vgextend vg_01 /dev/vdd

      当输出内容中包含关键词successfully extended,表示指令执行成功。

    3. 验证卷组扩容是否生效。

      运行sudo vgs,确认卷组剩余可用容量(回执中VSize字段对应的值)是否符合新增预期。

      sudo vgs
      VG    #PV #LV #SN Attr   VSize   VFree  
      vg_01   3   1   0 wz--n- <89.99g <10.00g

      示例中,卷组vg_01的容量由79.99 GiB增加至89.99 GiB,剩余容量VFree约为10 GiB, 符合预期,卷组扩容成功。

步骤二:扩容逻辑卷

  1. 获取逻辑卷路径。

    运行sudo lvdisplay命令,根据LV Path字段获取逻辑卷路径,后续扩容逻辑卷时需要使用。

    sudo lvdisplay
      --- Logical volume ---
      LV Path                /dev/vg_01/lv01
      LV Name                lv01
      VG Name                vg_01
      LV UUID                DAD6Fy-4lbd-9EW9-UTvx-rGti-hYss-txxxxx
      LV Write Access        read/write
      LV Creation host, time iZbp1hww2c2kyj54i1xxxxx, 2025-09-22 10:37:58 +0800
      LV Status              available
      # open                 1
      LV Size                79.99 GiB
      Current LE             20478
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256

    示例中,逻辑卷lv01的逻辑卷路径为/dev/vg_01/lv01

  2. 扩容逻辑卷。

    sudo lvextend -L +<逻辑卷容量> <逻辑卷路径>

    参数

    说明

    <逻辑卷容量>

    需小于卷组剩余可用容量

    <逻辑卷路径>

    需替换为上一步获取的待扩容逻辑卷路径。

    以逻辑卷路径为/dev/vg_01/lv01,新增10 GiB容量为例,执行sudo lvextend -L +10G /dev/vg_01/lv01

    当输出内容中包含关键词successfully resized,表示扩容逻辑卷成功。

  3. 扩容文件系统。

    1. 运行命令sudo lsblk -f,根据FSTYPEMOUNTPOINT字段,确定并记录待扩容逻辑卷的文件系统类型和挂载目录,后续执行扩容文件系统指令时需要使用。

      sudo lsblk -f                                 
      NAME         FSTYPE      LABEL UUID                                   MOUNTPOINT
      vda                                                                   
      ├─vda1                                                                
      ├─vda2       vfat              7938-FA03                              /boot/efi
      └─vda3       ext4        root  33b46ac5-7482-4aa5-8de0-60ab4c3a4c78   /
      vdb          LVM2_member       okx24E-qSjZ-zv9l-lOkm-Pcxu-q6KX-qzRcCu 
      └─vg_01-lv01 xfs               9e2bfe15-074e-4bf5-aac5-62c58299364f   /mnt/lv01
      vdc          LVM2_member       ISeUSM-AhRp-KdNN-7pWJ-HxGW-2AEq-85m9dE 
      └─vg_01-lv01 xfs               9e2bfe15-074e-4bf5-aac5-62c58299364f   /mnt/lv01

      示例中逻辑卷路径/dev/vg_01/lv01文件系统类型xfs挂载目录/mnt/lv01

    2. 扩容文件系统。

      • ext2/ext3/ext4文件系统。

        将命令中的变量<逻辑卷路径>替换为获取的逻辑卷路径

        sudo resize2fs <逻辑卷路径>
        以扩容逻辑卷lv01(路径为/dev/vg_01/lv01)为例,需执行:sudo resize2fs /dev/vg_01/lv01
      • xfs文件系统。

        将命令中的<挂载目录>替换为获取的逻辑卷挂载目录

        sudo xfs_growfs <挂载目录>
        以扩容逻辑卷(挂载点为/mnt/lv01)为例,需执行:sudo xfs_growfs /mnt/lv01
    3. 检查文件系统扩容是否成功。

      运行sudo df -Th,确认文件系统大小(回执中Size字段对应的值)是否与逻辑卷新容量基本一致。

      文件系统创建时会占用部分容量用于存储元数据,因此文件系统大小可能略小于逻辑卷容量。

计费说明

扩容逻辑卷时,会收取以下费用。

  • 通过扩容物理卷扩容卷组

    扩展云盘容量时会收取新增容量的费用,计费方式和原云盘一致。

    • 包年包月云盘:容量扩展成功后,将立即以新容量进行计费。按剩余时长补足新旧容量差额费用。

      差额费用=包月价格/30天*剩余时长*新增容量。

      剩余时长单位为天,数值精确到秒。
    • 按量付费云盘:容量扩展成功后,将立即按新容量进行计费。计费时长以小时为单位折算,下一小时将生成当前小时的消费明细。

  • 通过新增物理卷扩容卷组

    云盘的计费项因类型而异,包括云盘容量费用、预配置性能费用及性能突发费用。除性能突发费用在突发后计费外,其他费用在创建后即开始计费,无论是否挂载至实例,不同类型或地域云盘价格可能不同。

更多信息,请参见块存储计费

常见问题

  • 安装工具时提示“404 Not Found”如何解决?

    CentOS 6、Debian 9/10/11操作系统已结束生命周期,需要先切换Centos源地址Debian 9/10/11源地址后再进行工具安装。

  • 扩容逻辑卷时提示Insufficient free space错误怎么办?

    扩容逻辑卷时,新增容量需小于卷组可用空间。

    1. 查看卷组剩余容量。

      执行sudo vgs指令,根据VSize字段获取卷组剩余容量。

      sudo vgs
      VG    #PV #LV #SN Attr   VSize  VFree 
      vg_01   2   1   0 wz--n- 89.99g 10.00g

      示例中逻辑卷的新增容量不可超过卷组剩余的10 GiB容量。

    2. 将剩余空间全部用于逻辑卷扩展。

      <逻辑卷路径>需替换为获取的待扩容逻辑卷路径

      sudo lvextend -l +100%FREE <逻辑卷路径>