NOTE
Linux 逻辑卷管理器 LVM
整理 PV、VG、LV 创建扩容、缩容和快照等 LVM 管理操作。
概述
LVM(Logical Volume Manager,逻辑卷管理器)是一种将多个物理存储设备整合为单一虚拟磁盘的技术,实现了文件系统容量的弹性调整,解决了传统磁盘分区大小固定的限制。
核心概念
| 概念名称 | 缩写 | 说明 |
|---|---|---|
| Physical Volume | PV | 物理卷,实际的磁盘设备或分区,是LVM的基本存储单元 |
| Volume Group | VG | 卷组,由多个PV组成的虚拟存储池,是LVM的核心管理单元 |
| Physical Extent | PE | 物理扩展块,LVM的最小存储单元(类似文件系统的block),默认大小为4MB |
| Logical Volume | LV | 逻辑卷,从VG中划分出的虚拟区块,可格式化后挂载使用,相当于传统分区 |
LVM 创建流程
1. 环境准备
安装LVM2管理工具:
yum install lvm2
2. 磁盘准备阶段
对物理磁盘进行分区,并将分区类型标记为8e(Linux LVM标识符),便于识别管理。
3. PV阶段(物理卷管理)
pvcreate:将物理分区初始化为PVpvcreate /dev/sdb1pvscan:扫描系统中的PVpvdisplay:显示PV详细信息pvremove:移除PV属性
4. VG阶段(卷组管理)
-
vgcreate:创建卷组vgcreate [-s N[mgt]] VG_NAME PV_NAME示例:
vgcreate -s 16M myvg /dev/sdb1(设置PE大小为16MB) -
vgscan:扫描系统中的VG -
vgdisplay:显示VG详细信息 -
vgextend:扩展VG容量(添加PV) -
vgreduce:缩减VG容量(移除PV) -
vgchange:修改VG状态(激活/停用) -
vgremove:删除VG
5. LV阶段(逻辑卷管理)
-
lvcreate:创建逻辑卷lvcreate [-L SIZE] [-l PE_NUM] [-n LV_NAME] VG_NAME示例:
lvcreate -L 10G -n mylv myvg(创建10G大小的逻辑卷) -
lvscan:扫描系统中的LV -
lvdisplay:显示LV详细信息 -
lvextend:扩展LV容量 -
lvreduce:缩减LV容量 -
lvresize:调整LV容量 -
lvremove:删除LV
6. 文件系统阶段
-
格式化逻辑卷:
mkfs.xfs /dev/myvg/mylv -
挂载使用:
mkdir /srv/lvm mount /dev/myvg/mylv /srv/lvm
容量调整操作
扩展容量流程(VG空间充足时)
- 扩展LV:
lvextend -L +5G /dev/myvg/mylv - 扩展文件系统:
xfs_growfs /srv/lvm(XFS系统)- 对于ext4系统:
resize2fs /dev/myvg/mylv
- 对于ext4系统:
扩展容量流程(VG空间不足时)
- 扩展VG:
vgextend myvg /dev/sdc1 - 继续上述扩展LV和文件系统的操作
精简配置(Thin Provisioning)
基本概念
- 传统LVM:厚置备,立即分配全部指定空间
- 精简卷: thin provisioning,按需动态分配物理空间
配置步骤
-
创建精简池(thin pool):
lvcreate -L 100G --thinpool mythinpool myvg -
创建精简卷(thin volume):
lvcreate -V 50G --thin -n thinvol1 myvg/mythinpool- 此处50G为虚拟大小,实际占用空间随数据写入而增长
LVM 快照功能
工作原理
LVM在VG中预留专用区域存储快照。初始时快照区为空,当原始文件被修改时,原始数据块会被复制到快照区,实现”写时复制”机制。
操作命令
-
创建快照:
lvcreate -s -l 26 -n snapname /dev/myvg/mylv-s:指定创建快照-l:指定使用的PE数量(决定快照区大小)
-
使用xfsdump备份快照:
xfsdump -l 0 -L lvm1 -M lvm1 -f /home/lvm.dump /srv/snapshot
命令速查表
| 任务 | PV 阶段 | VG 阶段 | LV 阶段 | 文件系统 (XFS) | 文件系统 (EXT4) |
|---|---|---|---|---|---|
| 扫描 | pvscan | vgscan | lvscan | lsblk, blkid | |
| 创建 | pvcreate | vgcreate | lvcreate | mkfs.xfs | mkfs.ext4 |
| 查看详细信息 | pvdisplay | vgdisplay | lvdisplay | df, mount | |
| 扩展 | — | vgextend | lvextend/lvresize | xfs_growfs | resize2fs |
| 缩减 | — | vgreduce | lvreduce/lvresize | 不支持 | resize2fs |
| 删除 | pvremove | vgremove | lvremove | umount,格式化 | |
| 调整大小 | — | — | lvresize | xfs_growfs | resize2fs |
| 属性修改 | pvchange | vgchange | lvchange | /etc/fstab,重挂载 |