lvresize 命令详解
一、命令概述
lvresize
是 LVM(逻辑卷管理)工具集中用于调整逻辑卷(LV)大小 的综合命令,整合了 lvextend
(扩展)和 lvreduce
(缩小)的功能,可灵活扩展或缩小逻辑卷的空间。其核心功能是通过增加或减少逻辑扩展(LE)的数量,调整LV的大小,并支持同步调整底层文件系统(如ext4、XFS),适用于动态适配存储需求变化(如业务扩容、释放闲置空间)的场景。
二、语法格式
lvresize
支持多种调整方式,核心语法如下:
# 按指定大小调整LV(扩展或缩小)
lvresize -L|--size [+|-]Size| -l|--extents [+|-]Number[PERCENT] [选项]... LV [PV...]
# 通过指定物理卷(PV)的扩展调整LV
lvresize [选项]... LV PV...
# 调整瘦池(thin pool)的元数据大小
lvresize --poolmetadatasize [+]Size [选项]... LV_thinpool [PV...]
- 参数说明:
LV
(必需):目标逻辑卷(格式为VG/LV
,如vg00/data_lv
)。PV...
(可选):指定用于扩展的物理卷(仅从这些PV中分配LE)。[+|-]Size
/[+|-]Number
:+
表示扩展,-
表示缩小(无符号表示直接设置目标大小)。
三、核心功能
lvresize
的核心功能是灵活调整LV大小,兼顾扩展和缩小场景,具体包括:
- 双向调整:支持扩展(增加LE)和缩小(减少LE),释放的LE归还给卷组(VG)供其他LV使用。
- 文件系统联动:通过
-r
选项自动调用fsadm
调整底层文件系统大小(需文件系统支持,如ext4支持双向调整,XFS仅支持扩展)。 - 瘦池支持:可调整瘦池(thin pool)的元数据区大小(
--poolmetadatasize
),适配瘦卷(thin LV)的元数据需求。 - 分配控制:指定物理卷(PV)或分配策略(如连续分配、条带化),优化存储布局。
四、选项详解
1. 大小指定选项(必选核心)
选项 | 长选项 | 说明 |
---|---|---|
-L [+\|-]Size | --size [+\|-]Size | 以绝对或相对大小调整LV: - +Size :扩展(如 -L +10G 增加10GiB);- -Size :缩小(如 -L -5G 减少5GiB);- Size :直接设置目标大小(如 -L 50G 调整为50GiB);单位支持 k (KiB)、M (MiB)、G (GiB)等(基础2进制单位)。 |
-l [+\|-]Number[PERCENT] | --extents [+\|-]Number[PERCENT] | 以逻辑扩展(LE)数调整,支持百分比: - +Number :增加LE(如 -l +100 增加100个LE);- -Number :减少LE(如 -l -50 减少50个LE);- Number :直接设置目标LE数(如 -l 500 调整为500个LE);百分比后缀: - %VG :卷组总大小的百分比;- %FREE :卷组空闲空间的百分比;- %ORIGIN (快照用):源LV大小的百分比。 |
2. 文件系统与元数据选项
选项 | 长选项 | 说明 |
---|---|---|
-r | --resizefs | 调整LV后,自动调用 fsadm(8) 同步调整底层文件系统(需文件系统支持,如ext4可缩小,XFS仅可扩展)。 |
--poolmetadatasize [+]Size | - | 调整瘦池(thin pool)的元数据区大小(如 --poolmetadatasize +100M 增加100MiB元数据空间)。 |
3. 分配策略与范围控制
选项 | 长选项 | 说明 |
---|---|---|
--alloc 策略 | - | 物理扩展(PE)的分配策略: - normal :默认策略(避免条带在同一PV);- contiguous :连续分配(提升读性能);- anywhere :允许任意分配(空间紧张时使用,可能降低性能)。 |
PV... (位置参数) | - | 仅从指定物理卷(PV)中分配LE(如 lvresize vg00/data_lv /dev/sda 仅用 /dev/sda 的空间)。 |
4. 强制与安全选项
选项 | 长选项 | 说明 |
---|---|---|
-f | --force | 强制调整,忽略警告(如文件系统未收缩、尺寸不匹配LE边界等,缩小时有数据丢失风险)。 |
-n | --nofsck | 调整文件系统前不执行fsck检查(需配合 -f 使用,可能导致文件系统损坏,不推荐)。 |
5. 测试与调试选项
选项 | 长选项 | 说明 |
---|---|---|
-t | --test | 测试模式,不实际修改LV(仅模拟操作,用于验证调整计划)。 |
-v | --verbose | 显示详细操作日志(用于调试,重复多次可增加详细程度)。 |
五、使用示例
1. 扩展LV 10GiB,并同步扩展文件系统
lvresize -L +10G -r vg00/data_lv # 增加10GiB,自动扩展底层文件系统(如ext4)
2. 缩小LV至50GiB(需先手动收缩文件系统)
# 假设文件系统已收缩至50GiB,当前LV大小为60GiB
lvresize -L 50G -r vg00/data_lv # 缩小至50GiB,同步文件系统
3. 通过卷组空闲空间的50%扩展LV
lvresize -l +50%FREE -r vg00/data_lv # 扩展LV,使用卷组50%的空闲空间
4. 调整瘦池的元数据区(增加50MiB)
lvresize --poolmetadatasize +50M vg00/thin_pool # 扩展瘦池元数据空间
六、注意事项
- 缩小风险:必须先手动收缩底层文件系统(如
resize2fs
用于ext4),确保被缩减的区域无数据,否则会直接删除数据。 - 文件系统兼容性:
- 支持双向调整:ext4、ext3、Btrfs(部分模式)。
- 仅支持扩展:XFS(需通过
xfs_growfs
手动扩展,-r
可自动调用)。
- 尺寸对齐:调整后的大小必须是逻辑扩展(LE)的整数倍,条带卷需是条带数的倍数(否则自动四舍五入)。
- 瘦池特殊处理:调整瘦池数据区大小时,需确保瘦卷总虚拟大小不超过新数据区容量;元数据区不足会导致瘦卷创建失败。
- 强制选项慎用:
-f
会跳过关键检查(如文件系统未收缩),可能导致文件系统损坏,仅在确认安全时使用。