前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第十一章 LVM逻辑卷管理

第十一章 LVM逻辑卷管理

作者头像
晓天
发布2019-07-04 14:19:33
1.7K0
发布2019-07-04 14:19:33
举报

11.1 LVM基本概念

11.1.1 LVM简介

上一章我们讲解了标准分区的使用过程,可以看到,标准分区的配置比较简单,但是标准分区也有很显著的缺点,如:分区创建后不可扩容、分区的空间必须连续,不允许跨越多块空间或磁盘。但是这些缺点,却是我们在生产环境中比较常见的需求,如:存放某个软件相关数据的分区,经常会被软件的数据所占满,需要空间扩容,而且一块磁盘存满了,还需要再加一块新的磁盘。为了满足这种需求,Linux中就需要使用LVM技术来实现。

LVM的简单原理就是把多块磁盘或分区组织一个小组,划分存储空间时从小组中的成员上占用空间,即可以跨越多个磁盘或分区,也可以随时扩容、缩容。是一种十分灵活的磁盘管理方案。

11.1.2 LVM原理

下面我们来具体介绍下LVM的工作原理,首先来学习几个概念

PV:物理卷,可以把一个分区或一块磁盘制作成PV,即一块用于存储数据的磁盘空间。

VG:卷组,由多个PV组成一个PV组

LV:逻辑卷,从VG中划分出一块存储空间,制作文件系统,并挂载使用。LV允许跨越VG中多个PV的空间。

PE:物理单元,PV加入到VG时,会按照VG事先制定好的固定大小,划分成n多个存储单元,称为PE

LE:逻辑单元,从VG中划分出LV时,是按照LV的大小,从VG中划分出足够多的PE给LV使用,被LV所占用的PE,在LV中称为LE。即LE是PE在LV中的映射。

PV、VG、LV、PE、LE的关系如上图所示。分区制作成PV后,加入到VG中,被划分成了多个PE,假设PE大小=1G,则sda7的40G空间个会被分成40个PE,sda8分成50个PE。所以我们可以认为VG其实管理的是内部的PE资源。当要划分LV时,LV所需空间30G,则VG会从PE池中划分出30个PE映射给LV使用。这些PE可以来自于不同的PV上。另外当LV空间被用满时,可以随时的增加空间,若VG中剩余空间不足,则可以先给VG中增加新的PV,再给LV扩容。

11.3 LVM创建文件系统

关于LVM创建LV并制作文件系统使用的实验,我们可以按一下五部逐步完成。

1、新建分区

fdisk /dev/sda ---使用fdisk管理/dev/sda

创建三个分区:sda7(600M) sda8(800M) sda9(1000M)

设置三个分区的文件系统类型均为 8e Linux LVM,结果如下图

partprobe ---更新生效

2、创建PV

pvcreate /dev/sda7 ---制作PV,执行成功的前提:设定类型是8e

pvcreate /dev/sda8

pvcreate /dev/sda9

#pvcreate /dev/sdb

注:PV的来源可以是分区,也可以是整个磁盘,其实在生产环境中,使用更多的是把整个磁盘制作成一个PV。在这里,我们实验的简单、明了,暂时使用分区制作成PV。

pvdisplay ---查看本机所有PV信息

pvdisplay /dev/sda7 ---查看指定的PV信息

3、创建VG,加入PV

vgcreate -s 8m vg01 /dev/sda7 /dev/sda8

注:创建vg, -s指定PE大小,不写,默认4m,后面的vg01是给新VG起的名字,再后的sda7、sda8是加入到VG的PV

vgdisplay ---查看本机所有VG信息,可见:VG大小、PE大小、PE数、使用数、PV数、活动PV数等信息。(读者可对应英文自行查看)

pvdisplay ---可查看到PV加入到VG后的信息,如:PE数、使用数、空闲数。

4、从VG中划分出LV

lvcreate -L 500M -n lv01 vg01

注:创建LV,-L 指定LV大小 -l指定LV中的LE数,-n指定lv名 最后的

vg01指定从哪个VG分

# lvcreate -L 500M -n lv01 vg01 /dev/sda8

注:创建LV时,也可以在命令最后指定PV,即设定LV的LE从哪个PV上占用

lvdisplay ---查看lv信息

lvdisplay -m /dev/vg01/lv01 ---查看LV信息及LE、PE的映射关系

5、给LV制作文件系统,挂载使用

mkfs -t ext4/dev/vg01/lv01 ---制作文件系统

mkdir /mnt/d1 ---创建挂载点

mount /dev/vg01/lv01 /mnt/d1 ---挂载使用

df -h

lsblk ---查看

vi /etc/fstab ---配置开机自动挂载

/dev/vg01/lv01 /mnt/d1 ext4 defaults 1 2

11.4 LVM管理

11.4.1 LVM扩容

我们之前讲过,LVM的最大优势就是可以根据需求灵活的做出扩容操作,下面我们就来看一下扩容的具体命令:

vgextend vg01 /dev/sda9 ---扩容VG,即给VG增加PV

lvextend -L +200M /dev/vg01/lv01 ---扩容LV

参数说明:-L 表示按大小扩容,-l 表示按LE数扩容。不写 + 表示扩容到多大,写 + 表示增加多大

lvextend -L +200M /dev/vg01/lv01 /dev/sda8

注:也可以在扩容时指定在哪个PV上占用新空间。

lsblk 或lvdisplay 都可以看到lv扩容成功,空间大小已增加。

但是,如果我们使用df -h 查看发现文件系统使用信息,会发现lv所在的文件系统大小未发生变化。这是因为扩容增加的空间并未制作文件系统。但如果我们使用mkfs命令重新制作文件系统的话,原有数据将会丢失,所以,我们需要做的只是将新增空间制作文件系统。命令如下:

resize2fs /dev/vg01/lv01 ---重置LV大小,自动将未做文件系统的空间格式化。

或者,我们也可以在扩容的同时,增加-r参数,扩容后直接对新增空间制作文件系统,如下。

lvextend -L +200M -r/dev/vg01/lv01

11.4.2 数据转移

再者,就是LE对于PE映射的转移。我们可以想象,如果有一块磁盘已经有了明显的故障迹象,读写速度命令降慢了许多,我们是不可以等着这块磁盘彻底故障、不可读写了再将其替换的,那样就容易产生数据丢失了。所以我们要在磁盘还能够读写,但已经有故障的初级现象时就提前更换。那么势必要将原有磁盘上的数据转移到新磁盘。可以使用如下命令:

pvmove /dev/sda7 /dev/sda9

解释:把sda7上所有LE对PE的映射,转移到sda9上,即所有LE映射到sda9的PE上,数据也跟着复制过去,不会丢失

另外,当我们发现VG中的PV使用不合理,有些PV上LV比较多,使用率高,而有些PV则很少被LV所占用,造成PV使用不均衡,单个PV数据读写压力大的现象。则我们也需要把一个PV上的部分被LV占用的映射PE转移到其他PV上。命令如下:

pvmove /dev/sda9:0-10 /dev/sda8 ---把sda9的0-9 号PE对LE的映射,转移到sda8上,以实现磁盘使用的均衡化

注意:在指定源PV时,指定的是PV上的PE号,而不是在LV中的映射LE号。

lvdisplay -m /dev/vg01/lv01 ---转移完毕可见到新的映射关系

11.4.3 缩容

既然能做VG、LV扩容,当然也可以所缩容。LV的缩容命令如下:

lvreduce -L -200M/dev/vg01/lv01 ---LV缩容

但是,缩容后,文件系统的超级块将被破坏,则文件系统不可再用,可以将原文件系统卸载后再次挂载以证明。所以只能重新mkfs制作文件系统再使用,但原数据会丢失。若果重新格式化时报错失败,则可以使用dd命令将LV的前100M用二进制的0作擦除后,再格式化(具体的dd命令前面章节已经讲过)。

如果VG中有未用的PV,如之前被替换的故障PV,则可以将其从VG中删除,命令如下:

vgreduce /dev/vg01 /dev/sda7 ---VG缩容,删除PV

11.4.4 LVM删除

如果LVM不想再使用,要全部清除,思路就是按照创建时的过程逆向操作即可:

umount /dev/vg01/lv01 ---卸载文件系统

lvremove /dev/vg01/lv01 ---删除LV

vgremove /dev/vg01 ---删除VG,前提:VG中已没有LV

pvremove /dev/sda[789] ---删除PV。PS:用到了正则表达式,是否记得?

fdisk /dev/sda ---进入fdisk菜单,删除分区

11.4.5 小结

①文件系统是指可用的,被格式化好的存储空间,存储空间,可由分区提供,也可以从多块磁盘上占用。

②LV实质是由PE组成的存储空间,在该空间内制作文件系统,划分block,可以认为,PE大,block小,是在PE内划分的block

11.5 swap交换分区

我们之前在安装系统时讲过,swap分区又称交换分区,就是常说的虚拟内存。功能是:当系统物理内存不足的或使用空间紧张系统会在磁盘上开辟块空间,临时当内存使用,称为虚拟内存

在不同操作系统中,虚拟内存也有诸多叫法:虚拟内存(统一叫法),swap交换空间(Linux),页面文件(windows),换页空间(unix)。

我们之前讲过,swap空间的大小是于物理内存的大小相关的,最大可用量是物理内存的2倍。

那么当我们扩容了主机物理内存的大小后,如何手动扩容swap大小呢?这就需要创建swap分区来实现。具体步骤如下:

free -h ---查看内存系统信息,swap行表示swap空间使用信息

fdisk /dev/sda ---磁盘内创建一个分区,文件系统类型设置成:82 Linux swap,如sda10 500M,之后partprobe更新

mkswap /dev/sda10 ----制作swap文件系统

swapon /dev/sda10 ---启用swap分区

free -h ---可见swap空间已增加

swapoff /dev/sda10 ---关闭swap分区

lsblk ---可见swap分区

vi /etc/fstab ---配置开机自动挂载

/dev/sda10 swap swap default 0 0

之上,是用标准分区模式创建的swap分区,其实使用LV做swap过程类似:

lvcreate -L 400M -nlv03 vg01 --创建lv03

mkswap /dev/vg01/lv03 ---制作swap文件系统

swapon /dev/vg01/lv03 ---启用swap

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云硬盘
云硬盘(Cloud Block Storage,CBS)为您提供用于 CVM 的持久性数据块级存储服务。云硬盘中的数据自动地在可用区内以多副本冗余方式存储,避免数据的单点故障风险,提供高达99.9999999%的数据可靠性。同时提供多种类型及规格,满足稳定低延迟的存储性能要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档