专栏首页Linux、云计算技术交流第十一章 LVM逻辑卷管理

第十一章 LVM逻辑卷管理

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

本文分享自微信公众号 - 教主小筑(gh_e0879483602d)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 远程办公经验为0,如何将日常工作平滑过度到线上?

    我是一名创业者,我的公司(深圳市友浩达科技有限公司)在2018年8月8日开始运营,现在还属于微型公司。这个春节假期,我一直十分关注疫情动向,也非常关心其对公司带来的影响。

    TVP官方团队
    TAPD 敏捷项目管理腾讯乐享企业邮箱企业编程算法
  • 数据中台,概念炒作还是另有奇效? | TVP思享

    作者简介:史凯,花名凯哥,腾讯云最具价值专家TVP,ThoughtWorks数据智能业务总经理。投身于企业数字化转型工作近20年。2000年初,在IBM 研发企业级中间件,接着加入埃森哲,为大型企业提供信息化架构规划,设计,ERP,云平台,数据仓库构建等技术咨询实施服务,随后在EMC负责企业应用转型业务,为企业提供云迁移,应用现代化服务。现在专注于企业智能化转型领域,是数据驱动的数字化转型的行业布道者,数据中台的推广者,精益数据创新体系的创始人,2019年荣获全球Data IQ 100人的数据赋能者称号,创业邦卓越生态聚合赋能官TOP 5。2019年度数字化转型专家奖。打造了行业第一个数据创新的数字化转型卡牌和工作坊。创建了精益数据创新方法论体系构建数据驱动的智能企业,并在多个企业验证成功,正在向国内外推广。

    TVP官方团队
    大数据数据分析企业
  • 扩展 Kubernetes 之 CRI

    使用 cri-containerd 的调用流程更为简洁, 省去了上面的调用流程的 1,2 两步

    王磊-AI基础
    Kubernetes
  • 扩展 Kubernetes 之 Kubectl Plugin

    kubectl 功能非常强大, 常见的命令使用方式可以参考 kubectl --help,或者这篇文章

    王磊-AI基础
    Kubernetes
  • 多种登录方式定量性能测试方案

    最近接到到一个测试任务,某服务提供了两种登录方式:1、账号密码登录;2、手机号+验证码登录。要对这两种登录按照一定的比例进行压测。

    八音弦
    测试服务 WeTest
  • 线程安全类在性能测试中应用

    首先验证接口参数签名是否正确,然后加锁去判断订单信息和状态,处理用户增添VIP时间事务,成功之后释放锁。锁是针对用户和订单的分布式锁,使用方案是用的redis。

    八音弦
    安全编程算法
  • 使用CDN(jsdelivr) 优化博客访问速度

    PS: 此篇文章适用于 使用 Github pages 或者 coding pages 的朋友,其他博客也类似.

    IFONLY@CUIT
    CDNGitGitHub开源
  • 扩展 Kubernetes 之 CNI

    Network Configuration 是 CNI 输入参数中最重要当部分, 可以存储在磁盘上

    王磊-AI基础
    Kubernetes
  • 聚焦【技术应变力】云加社区沙龙online重磅上线!

    云加社区结合特殊时期热点,挑选备受关注的音视频流量暴增、线下业务快速转线上、紧急上线防疫IoT应用等话题,邀请众多业界专家,为大家提供连续十一天的干货分享。从视野、预判、应对等多角度,帮助大家全面提升「技术应变力」!

    腾小云
  • 京东购物小程序购物车性能优化实践

    它是小程序开发工具内置的一个可视化监控工具,能够在 OS 级别上实时记录系统资源的使用情况。

    WecTeam
    渲染JavaScripthttps网络安全缓存

扫码关注云+社区

领取腾讯云代金券