Linux 磁盘管理之 LVM 详解与实战分析,linuxlvm


许多 Linux 使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。而 LVM 技术就实现了用户动态管理分配磁盘的需求。

一. LVM 的认识

简介

LVM(Logical Volume Manager)逻辑盘卷管理, LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统,来提高磁盘分区管理的灵活性。

LVM 使用理解

0005

LVM 的意义

传统分区使用固定大小分区,重新调整大小十分麻烦。通过 LVM 创建和管理“逻辑”卷,而不是直接使用物理硬盘的磁盘管理方式可以让管理员弹性地管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到 LVM,也可以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。

LVM 的使用优点

通过 LVM 系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM 可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“DBdata” 和 “DBSoft”, 而不是使用物理磁盘名 “sda” 和 “sdb” 或 ”hda” 和 ”hdb” 。而且当系统添加了新的磁盘,通过 LVM 管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

工作原理:通过讲底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。

0004

(引用一张图)上图的顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV);一个或多个物理卷可以用来创建卷组(VG);然后基于卷组可以创建逻辑卷(LV)。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。其中卷组可以有分出空闲空间用于磁盘的调整或其他操作。

【总结】 LVM与直接使用物理存储相比,有以下优点:

灵活的容量

当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷。 可伸缩的存储池

可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备。 在线的数据再分配

你可以在线移动数据,数据可以在磁盘在线的情况下重新分配。比如,你可以在线更换可热插拔的磁盘。 方便的设备命名 磁盘条块化.

生成一个逻辑盘,它的数据可以被条块化存储在2个或更多的磁盘上。这样可以明显提升数据吞吐量。 镜像卷

逻辑卷提供方便的方法来镜像你的数据。 卷快照

使用逻辑卷,可以获得设备快照用来一致性备份或测试数据更新效果而不影响真实数据。

二. LVM 相关术语

物理存储介质(The physical media)

这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda 等等,是存储系统最底层的存储单元。

PV物理卷(physical volume)

物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如 RAID ),是 LVM 的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。LVM 底层的东西,可以是硬盘,也可以是分区(分区类型为 8e)

VG卷组(Volume Group)

LVM 卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个 “LVM 分区”(逻辑卷), LVM 卷组由一个或多个物理卷组成。

LV逻辑卷(logical volume)

LVM 的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如 /home 或者 /usr 等)。

PE(physical extent)物理拓展块

每一个物理卷被划分为称为 PE(Physical Extents) 的基本单元,具有唯一编号的PE是可以被 LVM 寻址的最小单元。PE 的大小是可配置的,默认为 4MB。

LE(logical extent)逻辑块

逻辑卷也被划分为被称为 LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE 是相同的,并且一一对应。

首先可以看到,物理卷(PV)被由大小等同的基本单元 PE 组成。

0006

一个卷组由一个或多个物理卷组成:

0006

从上图可以看到, PE 和 LE 有着一一对应的关系。逻辑卷建立在卷组上。逻辑卷就相当于非LVM系统的磁盘分区,可以在其上创建文件系统。

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符。

下图是磁盘分区、卷组、逻辑卷和文件系统之间的逻辑关系的示意图:

LVM 磁盘动态管理原理

0001

需要注意的是 /boot 分区不能基于 LVM 创建,必须独立出来。

系统启动 LVM 时激活 VG ,并将 VGDA 加载至内存,来识别 LV 的实际物理存储位置。当系统进行 I/O 操作时,就会根据 VGDA 建立的映射机制来访问实际的物理位置。

四.如何创建LVM?

传统磁盘运行在 Linux 系统只需要三大步:分区 - 格式化(创建文件系统) - 挂载。(PS当然分区之前可能也有磁盘raid 的制作)

而想通过 LVM 管理磁盘则需要五大步:分区 - PV 创建 -VG 创建 - LV 创建 - 格式化以及挂载。

原理:将多个物理磁盘分区之后进行 PV 操作,将磁盘分成多个物理块,那 VG 则是将多个物理组成一个逻辑组,相当于一个 PV 的大仓库,那 LV 操作则是将这个大仓库进行逻辑分区的操作。

0006

五. PV,VG,LV如何管理?

1. PV 阶段

pvcreate: 将实体 partition 建立成 PV pvscan: 搜寻目前系统里面任何具有 PV 的磁盘 pvdisplay:显示出目前系统上面的 PV 状态 pvremove: 将 PV 属性移除,让该 partition 不具有 PV 属性

2. VG 管理

vgcreate:就是主要创建 VG 的指令啦!他的参数比较多,等一下介绍 vgscan:搜寻系统上面是否有 VG 存在 vgdisplay:显示目前系统上面的 VG 状态 vgextend:在 VG 内增加额外的 PV vgreduce:在 VG 内移除 PV vgchange:设置 VG 是否启动 (active) vgremove:删除一个 VG

与 PV 不同的是,VG 的名字是自定义的,PV 的分区是分区的设备文件名,VG 就是组合的大磁盘,名称需要自定义。

3. LV 阶段

创造出 VG 这个大磁盘之后,再来就是要创建分区。这个分的区就是所谓的 LV 。

与LV有关的命令

lvcreate :创建 LV lvscan :查询系统上面的 LV lvdisplay :显示系统上面的 LV 状态 lvextend :在 LV 里面增加容量 lvreduce :在 LV 里面减少容量 lvremove :删除一个 LV lvresize :对 LV 进行容量大小的调整

相关内容