4.3. 重新调整逻辑卷大小


使用逻辑卷管理器(LVM),您可以根据需要重新定义逻辑卷(LV)大小,而不影响存储的数据。

4.3.1. 扩展线性逻辑卷

您可以使用 lvextend 命令扩展线性(厚)LV 及其快照。

先决条件

  • 管理访问权限.

流程

  1. 确定您的卷组有足够的空间来扩展 LV:

    # lvs -o lv_name,lv_size,vg_name,vg_size,vg_free
      LV                   LSize   VG              VSize  VFree
      LogicalVolumeName    1.49g   VolumeGroupName 30.75g 29.11g
  2. 扩展线性 LV 并调整文件系统大小:

    # lvextend --size +AdditionalSize --resizefs VolumeGroupName/LogicalVolumeName

    使用添加到 LV 的空间替换 AdditionalSize。默认测量单位是 MB,但您可以指定其他单元。将 VolumeGroupName 替换为卷组的名称。使用精简卷的名称替换 LogicalVolumeName

验证

  • 验证线性 LV 是否已扩展:

    # lvs -o lv_name,lv_size
      LV                   LSize
      NewLogicalVolumeName 6.49g

4.3.2. 扩展精简逻辑卷

您可以使用 lvextend 命令扩展精简逻辑卷(LV)。

先决条件

  • 管理访问权限.

流程

  1. 确定精简池有足够的空间供您计划添加的数据:

    # lvs -o lv_name,lv_size,data_percent
    
      LV                LSize   Data%
      MyThinPool        20.10g  3.21
      ThinVolumeName     1.10g  4.88
  2. 扩展 thin LV 并调整文件系统大小:

    # lvextend --size +AdditionalSize --resizefs VolumeGroupName/ThinVolumeName

    使用添加到 LV 的空间替换 AdditionalSize。默认测量单位是 MB,但您可以指定其他单元。将 VolumeGroupName 替换为卷组的名称。将 ThinVolumeName 替换为精简卷的名称。

验证

  • 验证 thin LV 是否已扩展:

    # lvs -o lv_name,lv_size,data_percent
    
      LV                LSize   Data%
      MyThinPool        20.10g  3.21
      ThinVolumeName     6.10g  0.43

4.3.3. 扩展精简池

精简逻辑卷的虚拟大小可能会超过精简池的物理容量,从而导致过度配置。要防止空间不足,您必须监控并定期扩展精简池的容量。

data_percent 指标指示精简池当前使用的已分配数据空间的百分比。metadata_percent 指标反映了用于存储元数据的空间百分比,这对在精简池中管理映射非常重要。

监控这些指标对于确保有效的存储管理和避免容量问题至关重要。

LVM 提供了根据需要手动扩展数据或元数据容量的选项。另外,您可以启用监控并自动扩展精简池。

4.3.3.1. 手动扩展精简池

逻辑卷管理器(LVM)提供手动扩展数据段、元数据段或精简池的选项。

4.3.3.1.1. 扩展精简池

您可以使用 lvextend 命令扩展精简池。

先决条件

  • 管理访问权限.

流程

  1. 显示使用的数据和元数据空间:

    # lvs -o lv_name,seg_type,data_percent,metadata_percent
    
      LV                Type      Data%  Meta%
      ThinPoolName      thin-pool 97.66  26.86
      ThinVolumeName    thin      48.80
  2. 扩展精简池:

    # lvextend -L Size VolumeGroupName/ThinPoolName

    使用您的精简池的新大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 ThinPoolName 替换为精简池的名称。

    数据大小将扩展。如果需要,元数据大小将扩展。

验证

  • 验证精简池是否已扩展:

    # lvs -o lv_name,seg_type,data_percent,metadata_percent
    
      LV                Type      Data%  Meta%
      ThinPoolName      thin-pool 24.41  16.93
      ThinVolumeName    thin      24.41

其他资源

  • lvs (8), lvextend (8) man page
  • LVs -o help
4.3.3.1.2. 扩展精简池数据片段

您可以使用 lvextend 命令扩展 data_percent 段。

先决条件

  • 管理访问权限.

流程

  1. 显示 data_percent 片段:

    # lvs -o lv_name,seg_type,data_percent
    
      LV                Type      Data%
      ThinPoolName      thin-pool 93.87
  2. 扩展 data_percent 片段:

    # lvextend -L Size VolumeGroupName/ThinPoolName_tdata

    Size 替换为您的数据片段的大小。将 VolumeGroupName 替换为卷组的名称。将 ThinPoolName 替换为精简池的名称。

验证

  • 验证 data_percent 片段是否已扩展:

    # lvs -o lv_name,seg_type,data_percent
    
      LV                Type      Data%
      ThinPoolName      thin-pool 40.23

其他资源

  • lvs (8), lvextend (8) man page
  • LVs -o help
4.3.3.1.3. 扩展精简池元数据片段

您可以使用 lvextend 命令扩展 metadata_percent 段。

先决条件

  • 管理访问权限.

流程

  1. 显示 metadata_percent 片段:

    # lvs -o lv_name,seg_type,metadata_percent
    
      LV                Type      Meta%
      ThinPoolName      thin-pool 75.00
  2. 扩展 metadata_percent 片段:

    # lvextend -L Size VolumeGroupName/ThinPoolName_tmeta

    使用元数据片段的大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 ThinPoolName 替换为精简池的名称。

验证

  • 验证 metadata_percent 片段是否已扩展:

    # lvs -o lv_name,seg_type,metadata_percent
    
      LV                Type      Meta%
      ThinPoolName      thin-pool 0.19

其他资源

  • lvs (8), lvextend (8) man page
  • LVs -o help

4.3.3.2. 自动扩展精简池

您可以通过启用监控和设置 thin_pool_ autoextend_threshold 和 thin_pool _autoextend_percent 配置参数来自动扩展精简池。

先决条件

  • 管理访问权限.

流程

  1. 检查精简池是否已监控:

    # lvs -o lv_name,vg_name,seg_monitor
    
      LV                VG              Monitor
      ThinPoolName      VolumeGroupName not monitored
  2. 使用 dmeventd 守护进程启用精简池监控:

    # lvchange --monitor y VolumeGroupName/ThinPoolName

    VolumeGroupName 替换为卷组的名称。将 ThinPoolName 替换为精简池的名称。

  3. root 用户身份,在您选择的编辑器中打开 /etc/lvm/lvm.conf 文件。
  4. 取消注释 thin_pool_autoextend_thresholdthin_pool_autoextend_percent 行,并将每个参数设置为所需的值:

    thin_pool_autoextend_threshold = 70
    thin_pool_autoextend_percent = 20

    thin_pool_autoextend_threshold 决定 LVM 开始自动扩展精简池的百分比。例如,将其设置为 70 表示 LVM 会在达到 70% 容量时尝试扩展精简池。

    thin_pool_autoextend_percent 根据精简池达到阈值时应扩展的百分比来指定。例如,将其设置为 20 表示精简池将增加其当前大小的 20%。

  5. 保存更改并退出编辑器。
  6. 重启 lvm2-monitor

    # systemctl restart lvm2-monitor

其他资源

  • lvs (8), lvchange (8), dmeventd (8) man pages

4.3.4. 扩展 VDO 池

监控和定期扩展 VDO 池的容量非常重要,以防止耗尽空间。

逻辑卷管理器(LVM)提供根据需要手动扩展 VDO 池容量的选项。另外,您可以启用监控并自动化 VDO 池的扩展。

4.3.4.1. 手动扩展 VDO 池

使用 lvextend 命令扩展 VDO 池。

先决条件

  • 管理访问权限.

流程

  1. 显示当前 VDO 使用情况:

    # lvs -o lv_name,vg_name,lv_size,data_percent VolumeGroupName/VDOPoolName
    
      LV          VG              LSize Data%
      VDOPoolName VolumeGroupName 5.00g 60.03

    VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。

  2. 扩展 VDO 池:

    # lvextend --size PhysicalSize VolumeGroupName/VDOPoolName

    使用新的物理大小替换 PhysicalSize。将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。

验证

  1. 验证 VDO 池是否已扩展:

    # lvs -o lv_name,vg_name,lv_size,data_percent VolumeGroupName/VDOPoolName
    
      LV          VG              LSize  Data%
      VDOPoolName VolumeGroupName 10.00g 30.02

其他资源

  • lvs (8), lvextend (8) man page

4.3.4.2. 自动扩展 VDO 池

您可以通过启用监控和设置 vdo_pool_autoextend_thresholdvdo_pool_autoextend_percent 参数来自动扩展 Virtual Data Optimizer (VDO)池。

先决条件

  • 管理访问权限.

流程

  1. 检查 VDO 池是否已监控:

    # lvs -o name,seg_monitor VolumeGroupName/VDOPoolName
    
      LV                VG              Monitor
      VDOPoolName       VolumeGroupName not monitored

    VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。

  2. 使用 dmeventd 守护进程启用 VDO 池监控:

    # lvchange --monitor y VolumeGroupName/VDOPoolName

    VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。

  3. root 用户身份,在您选择的编辑器中打开 /etc/lvm/lvm.conf 文件。
  4. 取消注释 vdo_pool_autoextend_percentvdo_pool_autoextend_threshold 行,并将每个参数设置为所需的值:

    vdo_pool_autoextend_threshold = 70
    vdo_pool_autoextend_percent = 20

    vdo_pool_autoextend_threshold 决定 LVM 开始自动扩展 VDO 池的百分比。例如,将其设置为 70 表示 LVM 尝试在达到 70% 容量时扩展 VDO 池。

    vdo_pool_autoextend_percent 根据 VDO 池达到阈值时应扩展的百分比来指定。例如,将其设置为 20 表示 VDO 池将增加其当前大小的 20%。

  5. 保存更改并退出编辑器。
  6. 重启 lvm2-monitor

    # systemctl restart lvm2-monitor

其他资源

  • lvs (8), lvchange (8), dmeventd (8) man pages

4.3.5. 缩小逻辑卷

当 LV 的大小缩小时,释放的逻辑扩展将返回到卷组,然后可供其他 LV 使用。

警告

存储在减少的区域中的数据会丢失。在继续操作前,始终备份数据并调整文件系统的大小。

先决条件

  • 管理访问权限.

流程

  1. 列出逻辑卷及其卷组:

    # lvs -o lv_name,vg_name,lv_size
    
      LV                   VG              LSize
      LogicalVolumeName    VolumeGroupName 6.49g
  2. 检查挂载逻辑卷的位置:

    # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName
    
    SOURCE                                           TARGET
    /dev/mapper/VolumeGroupName-NewLogicalVolumeName /MountPoint

    /dev/VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。

  3. 卸载逻辑卷:

    # umount /MountPoint

    /MountPoint 替换为您的逻辑卷的挂载点。

  4. 检查并修复所有文件系统错误:

    # e2fsck -f /dev/VolumeGroupName/LogicalVolumeName
  5. 重新定义 LV 和文件系统大小:

    # lvreduce --size TargetSize --resizefs VolumeGroupName/LogicalVolumeName

    使用 LV 的新大小替换 TargetSize。将 VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。

  6. 重新挂载文件系统:

    # mount -o remount /MountPoint

    /MountPoint 替换为您的文件系统的挂载点。

验证

  1. 验证文件系统的空间使用情况:

    # df -hT /MountPoint/
    
    Filesystem                                       Type  Size  Used Avail Use% Mounted on
    /dev/mapper/VolumeGroupName-NewLogicalVolumeName ext4  2.9G  139K  2.7G   1% /MountPoint

    /MountPoint 替换为您的逻辑卷的挂载点。

  2. 验证 LV 的大小:

    # lvs -o lv_name,lv_size
    
      LV                   LSize
      NewLogicalVolumeName 4.00g
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.