LVM作为在内核2.4.x版本开始引入的一个新的功能,受到大家的不断关注和使用。随着内核版本的升级,现在2.6.x内核中,lvm已经升级到了2.02.98版本了。鉴于当前,LVM的广泛应用和在RHCE与RHCA课程中所占的比重,本文本着学习交流的精神,对现有LVM相关文章进行搜集整理,加以优化,已达到更完善,更易学习理解的LVM文章,希望能对初学者起到帮助。

为何要使用LVM?

要想知道为何要使用LVM,我们需要先从几个简单的概念说起。

大家都知道,分区是由磁盘上相邻扇区组成的一个容器,并且分区是由简单数据结构定义的。而文件系统从另一方面来说是驻留在分区内的数据结构。文件系统支持计算机定位单独的文件,它们比分区更为复杂。实际上,调整一个分区大小通常也需要调整其分区内的文件系统大小。为了简单起见,我所用的“调整分区”就是指“调整分区以及其中包含的文件系统”。

分区调整从本质上说至少有点风险,因此长期以来分区都是静态存储器的天下。虽然后来出现了许多pc分区调整工具,如Partition Magic之类。这些工具可以让你用一个特殊磁盘来引导系统,并可以动态地重新调整分区和文件系统的大小。重新引导后,你就拥有了重新调整过大小的新分区了。

这些调整分区工具虽然从一定程度上解决了一些存储器管理问题,但是它们并不是最完美的。诸如Partition Magic之类的工具,对于个人pc还算适合,但对服务器来说就不合适了。

首先,它们需要重新引导系统,而这正是大多数运维人员尽量避免的。其次如果在每次需要调整存储器(例如,如果每周存储器调整都需要做很大调整)时不能重新引导系统怎么办?如果需要扩充文件系统使它能跨越多个硬盘驱动器会发生什么,或者如果在允许Apache 继续对外提供服务的同时,需要动态扩充或缩减卷的存储容量,此时该怎么办呢?在一个高度可用的动态环境中,基本的分区调整工具是无法满足这些要求的。

对于这样一些要求和其它一些情况,lvm(逻辑卷管理)应运而生,并且迅速成为一种非常出色的解决方案。

LVM是什么?

LVM(逻辑卷管理)是一种磁盘分配技术,用来补充或替换传统分区,在LVM配置中,它通过系统将物理卷管理抽象到更高的层次,形成更简单的管理模式。通过使用 LVM,所有物理磁盘和分区,无论它们的大小和分布方式如何,都被抽象为单一存储(single storage)源。而这个被抽象出来的单一存储源就是LVM中的VG(逻辑卷组)。然后LVM将卷组再转而分成LV(逻辑卷),最后在逻辑卷上创建文件系统,即传统配置中的分区。我们可以先结合下图看下大概的结构,后面我会再为大家细分该图。

虽然这种磁盘分配方法复杂性增加了,但好处是比较灵活。一个LVM配置将几个小磁盘或分区的空间合并成一个大的逻辑磁盘成为可能。对于分区调整来说,更重要的是逻辑磁盘可以被创建、删除和重新分配大小,就像文件系统中的文件那样。你不需要考虑分区起始点,只需要考虑它们的绝对大小即可。

LVM的基本概念

LVM中涉及了几个概念,大家需要了解下,不然后面理解会比较困难。

中文名

英文缩写

英文全名

介绍

物理卷

PV

physical volumes

物理卷处于逻辑卷管理器中的底层,任何的逻辑卷和卷组都必需依靠物理卷来建立。物理卷可以是一个完整的硬盘,也可以是硬盘中的一个分区,并有一个名字 ( 如hdisk0)。

卷组

VG

logical volume group

卷组是建立在物理卷之上的。一个卷组中可以包含一个物理卷或者多个物理卷。所有的物理卷属于一个称作rootvg的卷组。

逻辑卷

LV

logical volumes

逻辑卷建立在卷组之上,卷组中的空间可以建立多个逻辑卷,并且逻辑卷可以随意在卷组的空闲空间中增减,逻辑卷可以属于一个卷组,也可以属于不同的多个卷组。LV 是位于 PV 上的信息的组合,在 LV 上的数据可以连续或者不连续地出现在 PV。

卷组描述区域

VGDA

Volume Group Descriptor Area

用于描述物理卷、卷组、逻辑卷分配的所由信息。和非 LVM 系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的 VGDA( 卷组描述符区域 ) 中。

物理区段

PE

physical extent

物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。

逻辑区段

LE

logical extent

逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

下面用几个范例给大家讲解一下:

依旧是上面那个图,我们从图中能看到物理磁盘disk 0上的所有四个分区(/dev/hda[1-4])以及完整的物理磁盘1(/dev/hdb)和物理磁盘2(/dev/hdd)作为物理卷添加到卷组VG0中。

卷组是实现n-to-m映射的关键(也就是,将n个PV看作m个LV)。在将PV分配给卷组之后,就可以创建任意大小的逻辑卷(只要不超过VG的大小)。在图中,创建了一个称为LV0的逻辑卷,并给其他LV留下了一些空间(这些空间也可以用来应付LV0以后的增长)。

LVM中的逻辑卷就相当于物理磁盘分区。在实际使用中,它们就是物理磁盘分区。

在创建 LV 之后,可以使用任何文件系统对它进行格式化并将它挂载在某个挂载点上,然后就可以开始使用它了。上图的下面显示了一个经过格式化的逻辑卷LV0被挂载在/var。

通过上面的例子应该对逻辑卷的基本概念有了更加清晰的了解了。下面,我们要再对两个概念进行深入了解,来为后面更好的操作LVM做基础。

区段

为了实现n-to-m物理到逻辑卷映射,PV和VG的基本块必须具有相同的大小。这些基本块被称为物理区段(PE)和逻辑区段(LE)。尽管n个物理卷(PV)映射到m个逻辑卷(LV),但是物理区段(PE)和逻辑区段(LE)总是一对一映射的。

在使用 LVM时,对于每个 PV/LV 的最大区段数量并没有限制。默认的区段大小是 4MB,对于大多数配置不需要修改这个设置,因为区段的大小并不影响I/O性能。但是,区段数量太多会降低LVM的效率,所以可以使用比较大的区段,从而减少区段数量。

然而需要注意的是,在一个VG中不能混用不同的区段大小,而且用LVM修改区段大小是一种不安全的操作,会破坏数据,因此建议在初始设置时选择一个合适的区段大小,以后不要更改。

由于不同的区段大小意味着不同的VG粒度,因此如果选择的区段大小是4GB,那么只能以4GB的整数倍进行缩小或扩展LV。

上图是用PE和LE显示的与前面示例相同的布局(VG0中的空闲空间也由空闲LE组成,尽管图中没有显示它们),整个图展现了物理到逻辑区段的映射。

另外,我们需要注意上图的区段分配策略。因为LVM并非总是连续分配PE的,因此运维人员可以设置不同的分配策略,但是一般不需要这么做,因为默认策略(名为一般分配策略(normal allocation policy))使用符合常规的规则,比如不把并行的条带放在同一物理卷上。

大家想下,如果现在创建出第二个LV即LV1的话,最终的PE分配会是什么样子的呢?

最终的PE分配就如上图一样,中间增加的黄×××块即为新增加的LV即LV1的PE。这样子,大家应该就能理解区段和区块的关系了吧。

设备映射器

设备映射器(也称为dm_mod)是一个Linux内核模块(也可以是内置的),它的作用是对设备进行映射 ——LVM的2.0以上版本必须使用这个模块。通过下面的命令可以查看到该模块。

# lsmod | grep dm_mod
dm_mod

在大多数主流发行版中,设备映射器会被默认安装,常常会在引导时或者在安装或启用 LVM或EVMS包时自动进行装载(EVMS是一种替代LVM的工具)。如果没有启用这个模块,可以使用如下命令进行引导。

# modprobe dm_mod

注意:作为运维人员,在创建VG和LV时,尽量使用便于理解记忆,标注其用途的名字进行命名,千万不要像前面的VG0,LV0之类的。设备映射器的作用就是将这些名称正确地映射到物理设备。

与物理磁盘相反,无法直接访问卷组(这意味着没有/dev/mapper/VG0这样的文件,也不能执行dd if=/dev/VG0 of=dev/VG1)。

本篇理论就先给大家介绍到这里了,下一篇会为大家介绍LVM的一些基本操作。希望能对大家有帮助。

转载于:https://blog.51cto.com/nolinux/1350941

RHCE系列之LVM----理论篇相关推荐

  1. YOLO系列专题——YOLOv1理论篇

    近期工作上基于YOLOv3做项目并且需要测试TI开发板对OD模型的友好程度,所以想写个YOLO系列的专题,本文就从2015年的v1版本<You Only Look Once: Unified, ...

  2. YOLO系列专题——YOLOv3理论篇

    YOLOv3理论篇 YOLOv3实践篇 背景介绍: YOLOv3的基本思想与YOLOv2大致相同,过程如下: 将输入图像分成S*S个格子,每个格子负责预测中心在此格子中的物体: 每个格子预测B个bou ...

  3. YOLO系列专题——YOLOv2理论篇

    YOLOv2理论篇 YOLOv2实践篇 背景介绍: YOLOv1和同时期的SSD属于两个单阶段检测模型,以速度快著称.但是YOLOv1的诸多缺陷导致精准度较差.召回率低.估计YOLOv2参考了SSD或 ...

  4. 从头造一个SSD网络(1):理论篇

    目录 前言 SSD的优势 SSD的检测流程 先验框的选择 训练时的匹配问题 正负样本问题 损失函数 前言 上一篇我们讨论了R-CNN这种两阶段的目标检测器,通过我的描述,大家应该已经知道了,R-CNN ...

  5. 手撸Spring系列8:Spring AOP(理论篇)

    说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正. ...

  6. 7,xilinx 7系列FPGA理论篇——CMT时钟模块简介

    上篇咱们仅仅简要的介绍了时钟的用法,并未详细的说明,主要是因为很多时钟用法是针对特定的应用需求,无法一一介绍.本篇咱们将重提上篇的CMT时钟模块,聊一聊它的用法.可以这么说,每个靠谱的FPGA设计里都 ...

  7. 艾伟_转载:学习 ASP.NET MVC (第五回)理论篇

    本系列文章导航 学习 ASP.NET MVC (第一回)理论篇 学习 ASP.NET MVC (第二回)实战篇 学习 ASP.NET MVC (第三回)实战篇 学习 ASP.NET MVC (第四回) ...

  8. dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇)

    点击上方公众号名称关注,获得更多内容 ✎ 编 者 悟 语 唉!嫉妒之心真的能俘获它所接触到的任何目标啊--"欲加之罪,何患无辞"呢?"觉悟高的"更有" ...

  9. 手撕 CNN 经典网络之 VGGNet(理论篇)

    2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发了新的卷积神经网络,并命名为VGGNet.VGGNet是比AlexNet更深的 ...

最新文章

  1. 汇编程序-更灵活的定位内存地址方法
  2. Java类集框架 —— HashMap源码分析
  3. 实时获取ccd图像_四元数数控:CCD视觉检测定位系统在玻璃瓶缺陷的检测
  4. C语言检测大气成分,自动化结构健康监测
  5. 文件锁操作《精通Unix下C语言编程与项目实践》之三
  6. HDU 6833 A Very Easy Math Problem
  7. html 冒泡事件拦截,Js 冒泡事件阻止
  8. 小学的题 大学的解法
  9. 大数据Hadoop之——Hadoop图形化管理系统Hue(Hue环境部署)
  10. python实现sm3加密算法
  11. Codeblock一直卡在编译界面
  12. 微型计算机就是完全采用大规模集成电路,微型计算机就是完全采用大规模集成电路或超大规模集成电路芯片,使计算机的主要电路都集成在一块芯片上。...
  13. java socket连接超时_Java中Socket设置连接超时的代码
  14. 计算机开机速度慢是什么原因,电脑开机慢是什么原因?怎么处理?
  15. dubbo官网最新版导航
  16. MapReduce学习1:MapReduce基本概念
  17. 如何将GPU中list类型的数据转移到CPU
  18. SpringBoot启动报错Consider defining a bean of type ‘com.test.springmvc.dao.xx‘ in your configuration.
  19. springmvc 升级到5.2.15版本,前台时间显示时间戳全局处理
  20. 几种重要的排序算法——交换排序

热门文章

  1. c# 串口最简单接收十六进制
  2. innodb参数汇总
  3. 指针数组,数组指针,指针函数,函数指针,二级指针详解
  4. .net中实现拖拽控件
  5. java常用的几种线程池
  6. C# LINQ(5)
  7. Digit Sum II( ABC044ARC060)
  8. 从SQL Server 2000/2005到SQL Server 2008的升级测试
  9. 关于按值传递和按引用传递(送给这个方面的新手——包括我自己)
  10. [转]DotNet for Symbian平台 (Nokia,Sony,Motorola等手机)