Linux操作系统之逻辑卷管理LVM详解

 更新时间:2026年04月26日 10:37:16   作者:酷可达拉斯  
文章介绍了Linux系统中的逻辑卷管理(LVM)技术,包括LVM的基本概念、卷类型(线性卷、条带卷)、操作(创建物理卷、卷组、逻辑卷,挂载等)和扩容等方法,以及常用命令总结,Lvm提供灵活的的存储管理方式,适用于需要动态扩展存储空间的场景

Linux系统中,随着数据量的不断增长,单个物理硬盘或单个磁盘分区因磁盘空间有限,可能无法满足数据存储需求。

为解决磁盘空间不足问题,Linux引入了逻辑卷管理(LVM)技术,允许用户灵活地管理和扩展存储资源。

逻辑卷管理 LVM(Logical Volume Manager)是Linux系统下的一个逻辑卷管理工具,它提供了一个抽象层,允许用户对物理硬盘进行更灵活的管理。

LVM通过将物理硬盘或磁盘分区转换为物理卷(PV),然后将物理卷组合成卷组(VG),最后在卷组上创建逻辑卷(LV)来实现对存储资源的灵活管理。

一、LVM术语

物理卷(PV, Physical Volume)

 物理卷就是指磁盘、磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。

比如你新添加了一块磁盘 /dev/sdb, 那么你可以将整块磁盘/dev/sdb 标记成一个PV,也可以先对/dev/sdb 分区,如分了两个主分区/dev/sdb1 和 /dev/sdb2 ,然后将这两个分区/dev/sdb1 和 /dev/sdb2 分别标记成一个PV。

卷组(VG, Volume Group)

 LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成,相当于磁盘容量总和的一个存储池。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

逻辑卷(LV, Logical Volume)

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

PE(physical extent)

 每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

LE(logical extent)

 逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

总的来说, 使用LVM 机制创建一个LV 的过程是:一块硬盘(物理存储介质)被格式化为物理卷(physical volume),其内部被分成若干个默认大小为4M的PE(physical extent),然后在PV的基础上创建卷组(Volume Group),可以把一个或者多个PV加到VG中,VG就好像一个空间池,有多少个PV,VG就有多大的容量,最后基于VG创建逻辑卷(logical volume) ,一个逻辑卷就是若干个PE,然后将LV格式化再挂载(将LV当成传统磁盘划分里面的磁盘分区)。

二、LVM卷类型

 在 LVM 中,您可以选择使用线性逻辑卷(Linear LV)或条带逻辑卷(Striped LV)来管理存储空间。这两种方式在磁盘资源的利用和性能方面有所不同。

线性逻辑卷(Linear LV)

 线性逻辑卷是 LVM 中的一种基本形式,它将物理卷上的数据按照线性顺序进行存储。换句话说,数据从一个物理卷的末尾延伸到下一个物理卷的开始,依次类推,直到所有物理卷都被使用完毕。

特点:

  • 数据按照线性顺序存储,从一个物理卷延伸到下一个物理卷。
  • 简单直观,易于管理。
  • 适用于小型环境或者对数据读取顺序要求不高的场景。

条带逻辑卷(Striped LV)

条带逻辑卷是一种高级形式的逻辑卷,它将数据分布在多个物理卷之间,以提高读写性能和并发能力,数据被分成固定大小的条带(或块),依次存储在不同的物理卷上。

特点:

  • 数据被分割成条带,并分布在多个物理卷上,增加了读写并发能力和性能。
  • 更好地利用了磁盘资源,提高了磁盘IO
  • 适用于对性能要求较高、需要大量并发读写操作的场景。

数据安全性对比

线性逻辑卷和条带逻辑卷在数据安全性上差异显著,主要体现在故障影响范围数据恢复可能性上。

线性卷在磁盘故障时仍有望恢复部分数据,而条带卷一旦有一块磁盘损坏,则可能导致卷内所有数据的丢失。

特性维度线性逻辑卷 (Linear Logical Volume)条带逻辑卷 (Striped Logical Volume)
基本原理数据按顺序写入磁盘,写满第一个才写入第二个数据被分割成小块(条带),并行写入多个磁盘,类似RAID 0
主要目标方便地聚合多个磁盘的存储空间追求极致I/O性能,通过并行读写提升吞吐量
数据安全性提供有限的数据恢复可能性灾难性数据丢失风险极高
故障影响单个磁盘故障,仅损失该磁盘上的数据单个磁盘故障,可能导致整个卷的数据都不可访问或损坏
数据恢复有机会恢复幸存的、未被损坏的文件几乎所有文件都会丢失,恢复难度极大
应用场景通用存储、文件服务器(对性能要求不高)高性能计算、数据库日志、临时数据(单点故障影响小的场景)

综上,不过是线性卷还是条带卷都不适合存储对数据安全性要求高的数据,只适合存储一些对容量要求较高,对数据安全性风险要求低或可有可无的数据,如应用日志。

三、LVM操作

硬盘分区

 首先,使用fdisk、parted等工具检测系统中的新硬盘,并对其进行分区,根据需要选择合适的分区类型和大小,不分区也可用整块磁盘创建物理卷,所以分区不是必选项,看实际情况而定。

创建物理卷

 使用pvcreate命令将新硬盘的分区转换成物理卷(PV)。例如,假设新硬盘的设备路径为/dev/sdc和/dev/sde,执行以下命令将其转换为物理卷:

pvcreate /dev/sdc /dev/sde

创建卷组

 使用vgcreate命令将创建好的物理卷处理成卷组(VG)。例如,创建一个名为testvg的卷组,包含/dev/sdc和/dev/sde这两个物理卷:

vgcreate testvg /dev/sdc /dev/sde

创建逻辑卷

使用lvcreate命令将卷组分成若干个逻辑卷(LV)。例如,在myvg卷组上创建一个名为mylv的逻辑卷,大小为10GB:

lvcreate -L 10G -n testlv testvg

格式化逻辑卷

使用mkfs命令对逻辑卷进行格式化,以便存储数据。例如,将testlv逻辑卷格式化为ext4文件系统:

mkfs.ext4 /dev/testvg/testlv

挂载逻辑卷

创建一个目录作为逻辑卷的挂载点,然后使用mount命令将逻辑卷挂载到该目录。例如,将testlv逻辑卷挂载到/testdir目录:

mkdir /testdir
echo "/dev/testvg/testlv /testdir ext4 defaults 0 0" >> /etc/fstab
mount -a
df -h

 现在,新硬盘已经成功挂载到Linux系统中,并且可以通过LVM进行灵活的管理和扩展。

四、LVM扩容操作

当需要扩展逻辑卷的大小时,可以使用lvextend命令进行扩容。例如,将testlv逻辑卷的大小扩展为20GB:

lvextend -L 20G /dev/testvg/testlv

扩容后,需要更新文件系统的容量以识别新的空间。对于ext2、ext3、ext4文件系统,可以使用resize2fs命令;对于xfs文件系统,可以使用xfs_growfs命令。例如,更新testlv逻辑卷上的ext4文件系统:

resize2fs /dev/testvg/testlv

testlv逻辑卷的大小已经成功扩展为20GB,并且文件系统已经更新了容量。

若LV使用的是xfs文件系统,例如,更新testlv2逻辑卷上的xfs文件系统则执行以下命令进行更新:

xfs_growfs /dev/testvg/testlv2

完成以上步骤后,testlv2逻辑卷的大小已经成功扩展为20GB,并且文件系统已经更新了容量。

五、LVM常用命令

pvdisplay #显示物理卷的属性信息
vgdisplay [卷组名] #显示卷组的属性信息
lvdisplay #查看逻辑卷属性信息
pvs      #查看卷组
lvs      #查看逻辑卷
pvcreate  #创建物理卷
vgcreate 卷组名 物理卷全路径名[物理卷全路径名] #创建卷组
lvcreate  #创建逻辑卷
vgrename 原卷组名 新卷组名 #卷组重命名
vgcfgbackup [卷组名] #把卷组中的VGDA信息备份到“/etc/lvmconf”目录中的文件
vgcfgrestore -n 卷组名 物理卷全路命名  #从备份文件中必得指定物理卷的信息卷组的建立与删除命令
vgremove 卷组名 #删除卷组
vgextend 卷组名 物理卷全路径名[物理卷全路径名] #将物理卷加入卷组
vgreduce 卷组名 物理卷全路径名[物理卷全路径名] #将物理卷从卷组中移除
lvremove  #删除逻辑卷
lvextend -L|--size +逻辑卷大小增量 逻辑卷全路径名
lvreduce q -L|--size +逻辑卷减小量 逻辑卷全路径名
pvremove   #移除物理卷
lvscan   #扫描逻辑卷
pvmove /dev/sdb /dev/sdd #迁移pv,可以不停机检修

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux进程资源占用详解

    Linux进程资源占用详解

    本文档详细介绍了在Linux系统下分析和监控进程资源占用的方法,涵盖了多种工具和命令,如top、htop、ps、pidstat、atop、sar、vmstat、pmap、smem、ss、iotop、lsof等,这些工具可以帮助用户快速查看和监控CPU、内存、I/O等关键指标,从而有效定位和解决资源使用问题
    2025-11-11
  • Linux下安装Python3.6及避坑指南

    Linux下安装Python3.6及避坑指南

    这篇文章主要介绍了Linux下Python3.6的安装及避坑指南,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • ubuntu18虚拟机克隆后ip相同的解决方法

    ubuntu18虚拟机克隆后ip相同的解决方法

    这篇文章主要给大家介绍了关于ubuntu18虚拟机克隆后ip相同的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Linux常用命令mkdir详解

    Linux常用命令mkdir详解

    在Linux系统中,mkdir命令用来创建一个目录或一个级联目录。那么具体如何使用呢,我们下面来探讨下
    2018-04-04
  • centos7 设置grub密码及单用户登录实例代码

    centos7 设置grub密码及单用户登录实例代码

    这篇文章主要介绍了centos7 设置grub密码及单用户登录实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法

    修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法

    这篇文章主要介绍了修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Linux安装VNC过程(Linux桌面版远程)

    Linux安装VNC过程(Linux桌面版远程)

    文章介绍了在CentOS 7上安装和配置VNC服务的方法,包括设置密码、启停服务、关闭端口以及设置开机自启动,还提到了卸载GUI图形界面的方法,以提高服务器性能
    2026-01-01
  • linux下安装PyQt5+qt-esigner教程

    linux下安装PyQt5+qt-esigner教程

    文章介绍了在Linux下安装PyQt5和Qt Designer,并详细描述了如何将.ui文件编译为.py文件,以及如何编写主文件来运行生成的.py文件,步骤包括安装PyQt5和Qt Designer、使用pyuic命令编译.ui文件、在.bashrc中添加快捷方式,并编写主文件导入生成的.py文件
    2025-01-01
  • Linux性能监控与调优方式详解

    Linux性能监控与调优方式详解

    本文系统介绍Linux性能监控与调优方法,涵盖CPU、内存、磁盘、网络等指标检测工具及优化策略,如进程绑定、I/O调度调整、TCP缓冲优化等,适用于性能问题诊断与解决
    2025-08-08
  • Linux中“!”你不知道的惊叹用法总结

    Linux中“!”你不知道的惊叹用法总结

    这篇文章主要给大家介绍了关于Linux中“!”你不知道的惊叹用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01

最新评论