在Linux系统中,逻辑卷管理(LVM)是一种灵活的磁盘管理技术,它通过将物理硬盘抽象为物理卷(PV),将物理卷组合为卷组(VG),再从卷组中划分逻辑卷(LV),实现了对存储空间的动态管理和调整,相比传统的分区管理方式,LVM支持在线扩容、缩减、快照等功能,特别适合需要频繁调整存储配置的场景,本文将详细介绍Linux环境下创建LVM的完整流程,包括环境准备、物理卷创建、卷组管理、逻辑卷划分、文件系统挂载及后续维护等关键步骤。

环境准备与物理设备确认
在开始创建LVM之前,需要确保系统中存在可用于LVM管理的物理设备,这些设备可以是未分区的磁盘、分区或软件RAID设备,通过fdisk -l或lsblk命令查看当前系统的磁盘设备信息,
lsblk
输出结果中会显示磁盘的名称、大小、类型等信息,假设系统中有一块新磁盘/dev/sdb(未分区),或现有分区如/dev/sdb1(文件系统类型为Linux LVM或未使用),这些都可以作为LVM的物理设备,如果使用未分区的整块磁盘,可直接跳过分区步骤;若需使用分区,需先通过fdisk或parted工具创建分区,并将分区类型ID设置为8e(Linux LVM)。
创建物理卷(Physical Volume,PV)
物理卷是LVM的基本存储单元,可以是磁盘分区或整块磁盘,创建物理卷需使用pvcreate命令,基本语法为:
pvcreate [选项] 设备路径
对整块磁盘/dev/sdb创建物理卷:
pvcreate /dev/sdb
若要对多个分区创建物理卷,可同时指定多个设备路径,如:
pvcreate /dev/sdb1 /dev/sdc1
执行命令后,可通过pvdisplay命令查看物理卷的详细信息,包括UUID、大小、PE大小等:
pvdisplay
若需删除物理卷(需确保卷组已清理),可使用pvremove命令:
pvremove /dev/sdb
创建卷组(Volume Group,VG)
卷组是由一个或多个物理卷组成的存储池,逻辑卷将从卷组中划分空间,创建卷组使用vgcreate命令,基本语法为:
vgcreate [选项] 卷组名 物理卷路径...
将物理卷/dev/sdb创建为名为vg_data的卷组,并设置PE大小为4MB(默认为4MB,通常无需修改):
vgcreate vg_data /dev/sdb
若要组合多个物理卷,可依次列出设备路径,如:
vgcreate vg_storage /dev/sdb1 /dev/sdc1 /dev/sdd1
创建完成后,通过vgdisplay命令查看卷组信息,包括总大小、PE数量、已用/空闲空间等:
vgdisplay vg_data
若需调整卷组属性(如扩展卷组),可使用vgextend命令添加新的物理卷:
vgextend vg_data /dev/sde
删除卷组前需确保所有逻辑卷已删除,使用vgremove命令:

vgremove vg_data
创建逻辑卷(Logical Volume,LV)
逻辑卷是最终用于挂载和使用存储单元,其大小可从卷组的空闲空间中灵活分配,创建逻辑卷使用lvcreate命令,基本语法为:
lvcreate [选项] 卷组名 -n 逻辑卷名 -L 大小
参数说明:
-n:指定逻辑卷名称(不可省略);-L或--size:指定逻辑卷大小,支持单位K、M、G、T等;-l或–extents:指定PE数量(如-l 50%VG表示使用卷组50%的空间)。
在vg_data卷组中创建一个大小为10GB的逻辑卷lv_home:
lvcreate -n lv_home -L 10G vg_data
若要创建占用卷组20%空间的逻辑卷lv_logs:
lvcreate -n lv_logs -l 20%VG vg_data
创建完成后,通过lvdisplay命令查看逻辑卷详情,包括路径、大小、所属卷组等:
lvdisplay /dev/vg_data/lv_home
逻辑卷的设备路径通常为/dev/卷组名/逻辑卷名,如上述示例中的路径为/dev/vg_data/lv_home。
创建文件系统与挂载逻辑卷
逻辑卷创建后,需为其创建文件系统才能正常使用,根据需求选择文件系统类型(如ext4、xfs等),使用mkfs命令格式化逻辑卷,为lv_home创建ext4文件系统:
mkfs -t ext4 /dev/vg_data/lv_home
若要创建xfs文件系统:
mkfs.xfs /dev/vg_data/lv_home
文件系统创建完成后,需创建挂载目录并挂载逻辑卷,创建/data/home目录并挂载:
mkdir -p /data/home mount /dev/vg_data/lv_home /data/home
为使系统重启后自动挂载,需将挂载信息写入/etc/fstab文件,格式为:
/dev/vg_data/lv_home /data/home ext4 defaults 0 2
可通过blkid命令获取逻辑卷的UUID(推荐使用UUID挂载,避免设备路径变化):
blkid /dev/vg_data/lv_home
将UUID写入/etc/fstab:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data/home ext4 defaults 0 2
LVM的动态调整与管理
LVM的核心优势在于支持动态调整逻辑卷大小,无需卸载文件系统(需文件系统支持在线扩容,如ext4、xfs等)。

扩容逻辑卷
首先使用lvextend命令扩展逻辑卷空间,再通过文件系统扩容命令调整文件系统大小,将lv_home扩容至15GB:
lvextend -L +5G /dev/vg_data/lv_home # 增加5GB空间
或直接指定最终大小:
lvextend -L 15G /dev/vg_data/lv_home
对于ext4文件系统,使用resize2fs命令扩容:
resize2fs /dev/vg_data/lv_home
对于xfs文件系统,使用xfs_growfs命令:
xfs_growfs /data/home
扩容后可通过df -h查看文件系统大小是否更新。
缩容逻辑卷
缩容逻辑卷需谨慎操作,建议先备份重要数据,步骤与扩容相反:先缩容文件系统,再缩容逻辑卷,将lv_home从15GB缩容至10GB:
- 卸载逻辑卷(若在线挂载):
umount /dev/vg_data/lv_home
- 检查并修复文件系统(ext4文件系统需执行):
e2fsck -f /dev/vg_data/lv_home
- 缩容文件系统(ext4使用
resize2fs,需指定目标大小):resize2fs /dev/vg_data/lv_home 10G
- 缩容逻辑卷:
lvreduce -L 10G /dev/vg_data/lv_home
- 重新挂载并检查:
mount /dev/vg_data/lv_home /data/home df -h
创建LVM快照
LVM快照可捕获逻辑卷在某一时间点的数据状态,常用于数据备份,快照需基于只读逻辑卷创建,且大小需根据数据变化量合理设置(通常为源逻辑卷的10%-20%),为lv_home创建一个5GB的快照lv_home_snap:
lvcreate -L 5G -s -n lv_home_snap /dev/vg_data/lv_home
快照设备路径为/dev/vg_data/lv_home_snap,可将其挂载为只读设备进行备份:
mkdir /mnt/snap_backup mount -o ro /dev/vg_data/lv_home_snap /mnt/snap_backup
备份完成后,删除快照:
umount /mnt/snap_backup lvremove /dev/vg_data/lv_home_snap
LVM的日常维护与故障排查
查看LVM信息
- 查看所有物理卷:
pvscan - 查看所有卷组:
vgscan - 查看所有逻辑卷:
lvscan - 查看卷组空闲空间:
vgdisplay vg_data | grep "Free"
常见故障处理
- 物理卷丢失:若物理卷损坏,可通过
vgreduce --removemissing vg_data移除丢失的物理卷(可能导致数据丢失,需提前备份)。 - 逻辑卷无法挂载:检查文件系统是否损坏,使用
e2fsck或xfs_repair修复。 - 快照空间不足:快照耗尽空间会导致源逻辑卷写入失败,需及时删除或扩展快照。
LVM通过灵活的存储管理机制,为Linux系统提供了动态调整存储空间的能力,尤其适用于虚拟化、数据库、文件服务器等场景,掌握LVM的创建、扩容、缩容及快照操作,能够有效提升存储资源利用率和系统运维效率,在实际操作中,需注意数据备份和命令参数的准确性,避免因误操作导致数据丢失,通过合理规划物理卷、卷组和逻辑卷的配置,可充分发挥LVM的技术优势,满足不同业务场景的存储需求。


















