Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux逻辑卷管理LVM

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

作者:酷可达拉斯

文章介绍了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)

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

特点:

数据安全性对比

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

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

特性维度线性逻辑卷 (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,可以不停机检修

总结

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

您可能感兴趣的文章:
阅读全文