4.3. 重新调整逻辑卷大小
使用逻辑卷管理器(LVM),您可以根据需要重新定义逻辑卷(LV)大小,而不影响存储的数据。
4.3.1. 扩展线性逻辑卷
您可以使用 lvextend
命令扩展线性(厚)LV 及其快照。
先决条件
- 管理访问权限.
流程
确定您的卷组有足够的空间来扩展 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
扩展线性 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)。
先决条件
- 管理访问权限.
流程
确定精简池有足够的空间供您计划添加的数据:
# lvs -o lv_name,lv_size,data_percent LV LSize Data% MyThinPool 20.10g 3.21 ThinVolumeName 1.10g 4.88
扩展 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
命令扩展精简池。
先决条件
- 管理访问权限.
流程
显示使用的数据和元数据空间:
# 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
扩展精简池:
# 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
段。
先决条件
- 管理访问权限.
流程
显示
data_percent
片段:# lvs -o lv_name,seg_type,data_percent LV Type Data% ThinPoolName thin-pool 93.87
扩展
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
段。
先决条件
- 管理访问权限.
流程
显示
metadata_percent
片段:# lvs -o lv_name,seg_type,metadata_percent LV Type Meta% ThinPoolName thin-pool 75.00
扩展
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
先决条件
- 管理访问权限.
流程
检查精简池是否已监控:
# lvs -o lv_name,vg_name,seg_monitor LV VG Monitor ThinPoolName VolumeGroupName not monitored
使用
dmeventd
守护进程启用精简池监控:# lvchange --monitor y VolumeGroupName/ThinPoolName
将 VolumeGroupName 替换为卷组的名称。将 ThinPoolName 替换为精简池的名称。
-
以
root
用户身份,在您选择的编辑器中打开/etc/lvm/lvm.conf
文件。 取消注释
thin_pool_autoextend_threshold
和thin_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%。- 保存更改并退出编辑器。
重启
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 池。
先决条件
- 管理访问权限.
流程
显示当前 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 池的名称。
扩展 VDO 池:
# lvextend --size PhysicalSize VolumeGroupName/VDOPoolName
使用新的物理大小替换 PhysicalSize。将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。
验证
验证 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_threshold
和 vdo_pool_autoextend_percent
参数来自动扩展 Virtual Data Optimizer (VDO)池。
先决条件
- 管理访问权限.
流程
检查 VDO 池是否已监控:
# lvs -o name,seg_monitor VolumeGroupName/VDOPoolName LV VG Monitor VDOPoolName VolumeGroupName not monitored
将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。
使用
dmeventd
守护进程启用 VDO 池监控:# lvchange --monitor y VolumeGroupName/VDOPoolName
将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。
-
以
root
用户身份,在您选择的编辑器中打开/etc/lvm/lvm.conf
文件。 取消注释
vdo_pool_autoextend_percent
和vdo_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%。- 保存更改并退出编辑器。
重启
lvm2-monitor
:# systemctl restart lvm2-monitor
其他资源
-
lvs (8)
,lvchange (8)
,dmeventd (8)
man pages
4.3.5. 缩小逻辑卷
当 LV 的大小缩小时,释放的逻辑扩展将返回到卷组,然后可供其他 LV 使用。
存储在减少的区域中的数据会丢失。在继续操作前,始终备份数据并调整文件系统的大小。
先决条件
- 管理访问权限.
流程
列出逻辑卷及其卷组:
# lvs -o lv_name,vg_name,lv_size LV VG LSize LogicalVolumeName VolumeGroupName 6.49g
检查挂载逻辑卷的位置:
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-NewLogicalVolumeName /MountPoint
将 /dev/VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。
卸载逻辑卷:
# umount /MountPoint
将 /MountPoint 替换为您的逻辑卷的挂载点。
检查并修复所有文件系统错误:
# e2fsck -f /dev/VolumeGroupName/LogicalVolumeName
重新定义 LV 和文件系统大小:
# lvreduce --size TargetSize --resizefs VolumeGroupName/LogicalVolumeName
使用 LV 的新大小替换 TargetSize。将 VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。
重新挂载文件系统:
# mount -o remount /MountPoint
将 /MountPoint 替换为您的文件系统的挂载点。
验证
验证文件系统的空间使用情况:
# df -hT /MountPoint/ Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/VolumeGroupName-NewLogicalVolumeName ext4 2.9G 139K 2.7G 1% /MountPoint
将 /MountPoint 替换为您的逻辑卷的挂载点。
验证 LV 的大小:
# lvs -o lv_name,lv_size LV LSize NewLogicalVolumeName 4.00g