RHCE系列之LVM—-理论篇

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中涉及了几个概念,大家需要了解下,不然后面理解会比较困难。

中文名英文缩写英文全名介绍物理卷PVphysical volumes物理卷处于逻辑卷管理器中的底层,任何的逻辑卷和卷组都必需依靠物理卷来建立。物理卷可以是一个完整的硬盘,也可以是硬盘中的一个分区,并有一个名字 ( 如hdisk0)。卷组VGlogical volume group卷组是建立在物理卷之上的。一个卷组中可以包含一个物理卷或者多个物理卷。所有的物理卷属于一个称作rootvg的卷组。逻辑卷LVlogical volumes逻辑卷建立在卷组之上,卷组中的空间可以建立多个逻辑卷,并且逻辑卷可以随意在卷组的空闲空间中增减,逻辑卷可以属于一个卷组,也可以属于不同的多个卷组。LV 是位于 PV 上的信息的组合,在 LV 上的数据可以连续或者不连续地出现在 PV。卷组描述区域VGDAVolume Group Descriptor Area用于描述物理卷、卷组、逻辑卷分配的所由信息。和非 LVM 系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的 VGDA( 卷组描述符区域 ) 中。物理区段PEphysical extent物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。逻辑区段LElogical 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以上版本必须使用这个模块。通过下面的命令可以查看到该模块。

12# lsmod | grep dm_moddm_mod

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

1# modprobe dm_mod

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

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

RHCE系列之LVM—-理论篇

相关文章:

你感兴趣的文章:

标签云: