智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

Linux lvm详解

1. LVM简介

LVM是逻辑卷管理(Logic Volume Manage)的简称,它是建立在物理存储设备上的一个抽象层。 允许你生成逻辑存储卷, 与直接使用物理存储在管理上相比,提供了更好的灵活性。

LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存车处设备将被隐藏, 你可以不用停止应用或卸载文件系统过来调整卷的大小或数据迁移,这样可以减少操作成本。

2. LVM与传统物理分区

LVM与直接使用物理存储相比,有以下优点:
1.灵活的容量: 当使用逻辑卷时, 文件系统更可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷。
2.可伸缩的存储池: 你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备
3.在线的数据再分配:你可以在线移动数据,数据可以在磁盘在线的情况下重新分配, 比如,你可以在线更换可插拔的磁盘
4.方便的设备命名:逻辑卷可以按照你觉得方便的方式来起任何名字
5.磁盘条块化:你可以生成一个逻辑盘, 他的数据可以被条块化存储在2个或更多的磁盘上,这样可以明显提升数据吞吐量。
6.镜像卷: 逻辑卷提供方便的方法来镜像你的数据
7.卷快照: 使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不营销真实数据。

3. LVM架构图

LVM原理图

LVM架构图

4. LVM基本术语

前面谈到,LVM是在物理存储上添加的一个逻辑层,来为文件系统给屏蔽下面的硬件存储设别, 提供了一个抽象的盘卷, 在盘卷上建立文件系统, 首先我们讨论一下几个术语

  1. 物理存储介质(The Physical Media)
    这里是指系统的存储设备, 如:/dev/hda1,/dev/sda 等,是存储系统最底层的存储单元。

  2. 物理卷(PV, Physical Volume)
    物理卷就是指磁盘,磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块, 但和基本的物理存储介质(如分区,磁盘等)比较,却包含有与LVM相关的管理参数。 当前LVM允许你在每个物理卷上保存这个物理卷的0-2 分元数据拷贝,默认为1 ,保存在设备的开始处,为2 时,保存在设备的结束处。硬盘分区后(还未格式化为文件系统)使用pvcreate命令可以将分区创建为pv,要求分区的system ID为8e,即为LVM格式的系统标识符。

  3. 卷组(VG,Volume Group)
    LVM 卷组雷系与非LVM系统中的物理硬盘,由其物理卷组成, 可以在卷组上创建一个或多个(LVM分区)逻辑卷, LVM卷组由一个或多个物理卷组成。将多个PV组合起来,使用vgcreate命令创建成卷组,这样卷组包含了多个PV就比较大了,相当于重新整合了多个分区后得到的磁盘。虽然VG是整合多个PV的,但是创建VG时会将VG所有的空间根据指定的PE大小划分为多个PE,在LVM模式下的存储都以PE为单元,类似于文件系统的Block。

  4. PE(Physical Extend)
    PE是VG中的存储单元。实际存储的数据都是存储在这里面的。

  5. LV(Logical Volume)
    VG相当于整合过的硬盘,那么LV就相当于分区,只不过该分区是通过VG来划分的。VG中有很多PE单元,可以指定将多少个PE划分给一个LV,也可以直接指定大小(如多少兆)来划分。划分为LV之后就相当于划分了分区,只需再对LV进行格式化即可变成普通的文件系统。

通俗地讲,非LVM管理的分区步骤是将硬盘分区,然后将分区格式化为文件系统。而使用LVM,则是在硬盘分区为特定的LVM标识符的分区后将其转变为LVM可管理的PV,其实PV仍然类似于分区,然后将几个PV整合为类似于磁盘的VG,最后划分VG为LV,此时LV就成了LVM可管理的分区,只需再对其格式化即可成为文件系统。

  1. LE(logical extent)
    PE是物理存储单元,而LE则是逻辑存储单元,也即为lv中的逻辑存储单元,和pe的大小是一样的。从vg中划分lv,实际上是从vg中划分vg中的pe,只不过划分lv后它不再称为pe,而是成为le。

LVM之所以能够伸缩容量,其实现的方法就是将LV里空闲的PE移出,或向LV中添加空闲的PE。

5. LVM写入机制

LV是从VG中划分出来的,LV中的PE很可能来自于多个PV。在向LV存储数据时,有多种存储机制,其中两种是:

  • 线性模式(linear):先写完来自于同一个PV的PE,再写来自于下一个PV的PE。
  • 条带模式(striped):一份数据拆分成多份,分别写入该LV对应的每个PV中,所以读写性能较好,类似于RAID 0。

尽管striped读写性能较好也不建议使用该模式,因为lvm的着重点在于弹性容量扩展而非性能,要实现性能应该使用RAID来实现,而且使用striped模式时要进行容量的扩展和收缩将比较麻烦。默认的是使用线性模式。

6. LVM基本操作

6.1 创建PV

首先得先创建分区,并将分区的类型改为8e。在这里,我们可以按照以下方式分别创建/dev/sdb1、/dev/sdb2、/dev/sdc1、/dev/sdc2.

创建PV使用以下命令格式:

[root@zcwyou ~]# pvcreate device_name

例如: pvcreate /dev/sdb1

pvcreate命令部分可选参数

pvcreate命令部分可选参数

6.2 查看PV信息

使用以下命令简要查看PV信息:

[root@zcwyou ~]# pvs 

详细查看PV信息,直接使用该命令,查看所有PV的信息。

[root@zcwyou ~]# pvsdisplay

pvsdisplay device_name表示查看device_name这个PV的信息。

6.3 创建VG

在有了PV之后,接下来我们要创建VG,创建VG使用以下命令:

vgcreate VG_NAME PV_NAME

-s PE:指定PE的大小

6.4 查看VG信息

查看VG使用以下命令:

简要查看VG信息。

[root@zcwyou ~]# vgs

详细查看VG信息,直接使用该命令,查看所有VG的信息。

[root@zcwyou ~]# vgdisplay

vgdisplay VG_NAME:表示查看这个VG的信息。

6.5 创建LV

使用的命令:

lvcreate -L SIZE -n LV_NAME VG_NAME

-L 指定逻辑卷的大小
-n 指定逻辑卷的名称
-l PE的个数

lvcreate命令部分可选参数
lvcreate命令部分可选参数

6.6 查看LV信息

查看LV使用以下命令:

简要查看LV信息

[root@zcwyou ~]# lvs

lvdisplay 逻辑卷的设备文件名称: 详细查看LV信息

[root@zcwyou ~]# lvdisplay

逻辑卷的设备文件名称路径:/dev/VG_NAME/LV_NAME 或者 /dev/mapper/VG_NAME-LV_NAME

6.7 挂载LV

在挂载LV之前,我们要对LV进行格式化后再挂载,然后存放文件看是否正常。

6.8 扩展(增加)卷组

步骤:

Step1:准备好一个PV

Step2:使用vgextend命令完成扩展,命令格式:vgextend VG_NAME /PATH/TO/PV

vgextend命令部分可选参数
vgextend命令部分可选参数

6.9 缩减(删除)卷组

步骤:

Step1: 确定要移除的PV

Step2: 将此PV上的数据转移至其他的PV

命令:pvmove PV_NAME

Step3:从卷组中将此PV移除

命令:vgreduce /PATH/TO/PV

vgextend命令部分可选参数

vgextend命令部分可选参数

6.10 扩展逻辑卷

步骤:

Step1: 先确定扩展的LV大小,并确保对应卷组有足够的空间

Step2: 扩展物理边界

使用lvextend命令:lvextend -L [+]SIZE /PATH/TO/LV

参数说明:

-L [+]SIZE: 指定扩展的容量;如果带+号,表示扩展的容量是在原来的基础上加上SIZE的容量;如果不带,表示扩展容量到SIZE,单位为”kKmMgGtT”

-l [+]SIZE: 指定扩展的容量;如果带+号,表示扩展的容量是在原来的基础上加上SIZE个PE的容量;不带+号,表示扩展到SIZE个PE的容量

SIZE: 表示数字

lvextend命令部分可选参数
lvextend命令部分可选参数

Step3: 扩展逻辑边界

使用resize2fs /PATH/TO/DEVICE

resize2fs命令可选参数
resize2fs命令可选参数

6.11 缩减逻辑卷

步骤:

Step1: 确定缩减后的大小,至少确保缩减后能容纳原来的所有数据

Step2: 执行缩减:

A.因为缩减有风险,所以必须卸载并检测文件系统,使用e2fsck -f命令

B.缩减逻辑边界,使用resize2fs命令
resize2fs /path/to/device SIZE

C.缩减物理边界,使用lvreduce命令

lvreduce -L [-]SIZE /path/to/lv

lvreduce命令可选参数
lvreduce命令可选参数

6.12 移除逻辑卷

移除逻辑卷之前,确保已经没有被挂载。此时使用lvremove /path/to/lv命令即可

6.13移除卷组

使用vgremove VG_NAME

vgremove命令可选参数
vgremove命令可选参数

7. LVM快照实现

创建出来的快照卷是已经记录了原卷某个时刻所有文件的状态,在原卷没有做出修改之前,快照卷只是作为访问原卷的一个入口;一旦原卷中的文件发生改变的时候,系统会将原卷的文件复制一份到快照卷,这时的快照卷就不能作为访问原卷的入口了,快照卷里面只有原卷没有发生改变之前复制过来的文件。这时,我们就可以对快照卷里面的文件进行打包备份。

创建快照使用lvcreate命令,使用以下参数

-L SIZE: 指定快照卷的大小
-s: 表示创建快照卷
-p r: 限制快照卷为只读访问
-n LV_NAME: 指定快照卷的名称

示例:lvcreate -L SIZE -s -p r -n LV_NAME /path/to/lv

lvcreate命令部分可选参数
lvcreate命令部分可选参数

8. 总结

创建LV的过程:
创建PV –> 创建VG –> 创建LV –> 格式化 –> 挂载
扩展卷组的过程:
准备PV –> 完成扩展
缩减卷组的过程:
确定移除的PV –> 转移移除PV的数据到别的PV –> 从卷组中移除PV
扩展逻辑卷的过程:
确定扩展大小 –> 扩展物理边界 –> 扩展逻辑边界
缩减逻辑卷的过程:
确定缩减大小 –> 卸载逻辑卷 –> 缩减逻辑边界 –> 缩减物理边界

赞(1)
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!