🔥 热门搜索

M
Memo
Linux LVM逻辑卷管理详解
Linux相关# linux# LVM

Linux LVM逻辑卷管理详解

📅 2026/3/21👁️ 7 次阅读🕐 更新于 2026/3/22

什么是LVM?

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

为什么要使用LVM?

在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,这时候,我们不能直接更换大硬盘,因为硬盘有价,数据无价,这时候我们就可以使用LVM,LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

LVM工作机制

LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

逻辑卷管理概念

物理卷(PV, Physical Volume)

物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.

卷组(VG, Volume Group)

LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个"LVM分区"(逻辑卷),LVM卷组由一个或多个物理卷组成。

逻辑卷(LV, Logical Volume)

LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。

关系结构

复制代码
物理硬盘 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统

LVM操作实战

1. 检查系统是否安装了LVM管理工具

bash 复制代码
rpm -qa|grep lvm

输出示例:

复制代码
lvm2-2.02.177-4.el7.x86_64
llvm-private-5.0.0-3.el7.x86_64
lvm2-libs-2.02.177-4.el7.x86_64

2. 安装LVM工具(如果未安装)

bash 复制代码
yum install lvm*

3. 创建物理卷(PV)

基本PV命令:

  • pvcreate:将物理分区新建为pv
  • pvs/pvscan:查看系统里有pv的磁盘
  • pvdisplay:显示系统上面的pv状态
  • pvremove:删除pv

使用两个磁盘:/dev/sdl (20G) 和 /dev/sdh (1G) 来完成LVM

bash 复制代码
pvcreate /dev/sdl /dev/sdh

输出:

复制代码
Physical volume "/dev/sdl" successfully created.
Physical volume "/dev/sdh" successfully created.

查看新建的PV:

bash 复制代码
pvs

输出:

复制代码
PV      VG  Fmt  Attr PSize  PFree
/dev/sdh    lvm2 ---   1.00g  1.00g
/dev/sdl    lvm2 ---  20.00g 20.00g

4. 创建卷组(VG)

有关VG的命令:

  • vgcreate [-s xM] vgName /dev/sd...:新建vg,-s后面接pe的大小(可选)
  • vgextend:扩展vg,就是增加pv
  • vgs/vgscan:查看系统里有vg的磁盘
  • vgdisplay:显示系统上面的vg状态
  • vgremove:删除vg
  • vgreduce:在vg里删除pv

创建vgqjc并查看:

bash 复制代码
vgcreate -s 16M vgqjc /dev/sdl
vgs

输出:

复制代码
VG    #PV #LV #SN Attr VSize   VFree
vgqjc   1   0   0 wz--n-  19.98g 19.98g

5. 创建逻辑卷(LV)

有关LV的命令:

  • lvcreate -l pe num /-L size -n lvname vgName:新建lv,-l指定pe的个数,-L指定容量
  • lvextend:增加容量
  • lvs/lvscan:查看系统里有lv的磁盘
  • lvdisplay:显示系统上面的lv状态
  • lvremove:删除lv
  • lvreduce:在lv里减少容量

创建lvqjc:

bash 复制代码
lvcreate -l 512 -n lvqjc vgqjc

输出:

复制代码
WARNING: ext4 signature detected on /dev/vgqjc/lvqjc at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/vgqjc/lvqjc.
Logical volume "lvqjc" created.

查看:

bash 复制代码
lvs

输出:

复制代码
LV    VG    Attr      LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lvqjc vgqjc -wi-a----- 8.00g

6. 格式化逻辑卷

bash 复制代码
mkfs.ext4 /dev/vgqjc/lvqjc

7. 挂载使用

bash 复制代码
mount /dev/vgqjc/lvqjc /mnt
df -Th

输出显示逻辑卷已成功挂载到/mnt目录。

LVM的在线扩展

情况一:VG空间足够

当需要扩展的PE数量,VG可以提供时:

bash 复制代码
lvextend -L +100M /dev/vgtest/lvtest
resize2fs /dev/vgtest/lvtest  # 更新文件系统大小

情况二:VG空间不够

需要先扩展VG,即往VG中加PV:

bash 复制代码
# 新建PV
pvcreate /dev/sdg

# 扩展VG
vgextend vgtest /dev/sdg

# 扩展LV
lvextend -L 1G /dev/vgtest/lvtest

# 更新文件系统
resize2fs /dev/vgtest/lvtest

LVM的缩减操作

注意:缩减操作有风险,请确保数据已备份!

  1. 卸载文件系统
  2. 缩减文件系统
  3. 缩减逻辑卷
bash 复制代码
# 检查当前大小
lvs

# 缩减文件系统到5G
resize2fs /dev/vgqjc/lvqjc 5G

# 缩减逻辑卷到5G
lvreduce -L 5G /dev/vgqjc/lvqjc

# 重新挂载并验证
mount /dev/vgqjc/lvqjc /mnt
df -Th
ls /mnt  # 检查文件是否丢失

删除LVM

如果要彻底移除LVM,需要按创建步骤的反向操作:

  1. 卸载文件系统
  2. 删除LV
  3. 删除VG
  4. 删除PV
bash 复制代码
# 卸载
umount /dev/mapper/vgqjc-lvqjc

# 删除LV
lvremove /dev/mapper/vgqjc-lvqjc

# 删除VG
vgremove /dev/mapper/vgqjc

# 删除PV
pvremove /dev/sdl

常用命令总结

物理卷(PV)管理

bash 复制代码
pvcreate /dev/sdX      # 创建物理卷
pvs                    # 查看物理卷简要信息
pvdisplay              # 查看物理卷详细信息
pvremove /dev/sdX      # 删除物理卷

卷组(VG)管理

bash 复制代码
vgcreate vgname /dev/sdX    # 创建卷组
vgs                         # 查看卷组简要信息
vgdisplay                   # 查看卷组详细信息
vgextend vgname /dev/sdX    # 扩展卷组
vgreduce vgname /dev/sdX    # 从卷组中移除物理卷
vgremove vgname             # 删除卷组

逻辑卷(LV)管理

bash 复制代码
lvcreate -L 大小 -n lvname vgname    # 创建逻辑卷
lvs                                    # 查看逻辑卷简要信息
lvdisplay                              # 查看逻辑卷详细信息
lvextend -L +大小 /dev/vgname/lvname   # 扩展逻辑卷
lvreduce -L 大小 /dev/vgname/lvname    # 缩减逻辑卷
lvremove /dev/vgname/lvname            # 删除逻辑卷

文件系统操作

bash 复制代码
resize2fs /dev/vgname/lvname           # 调整ext文件系统大小
mkfs.ext4 /dev/vgname/lvname           # 格式化逻辑卷
mount /dev/vgname/lvname /mountpoint   # 挂载逻辑卷

注意事项

  1. 备份重要数据:在进行LVM缩减操作前,务必备份重要数据
  2. 在线扩展:LVM支持在线扩展,无需卸载文件系统
  3. 缩减风险:缩减操作需要先卸载文件系统,操作不当可能导致数据丢失
  4. PE大小:创建卷组时可以通过-s参数指定PE大小,影响后续扩展的粒度
  5. 文件系统类型:不同文件系统使用不同的工具调整大小(ext系列用resize2fs,xfs用xfs_growfs)