LVM逻辑卷管理从小白进阶到大神

LVM逻辑卷管理从小白进阶到大神

前言

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。

虽然有很多动态调整磁盘的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。

因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。

LVM模型LVM模型

简介

逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图所示。它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。对于上层应用来说卷组替代了磁盘块成为数据存储的基本单元。LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射。LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等。但LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小。相比物理磁盘来说,更易于磁盘空间的管理。

从用户态应用来看,LVM逻辑卷相当于一个普通的块设备,对其的读写操作和普通的块设备完全相同。而从物理设备层来看,LVM相对独立于底层的物理设备,并且屏蔽了不同物理设备之间的差异。因而在LVM层上实现数据的连续保护问题,可以不需要单独考虑每一种具体的物理设备,避免了在数据复制过程中因物理设备之间的差异而产生的问题。从LVM的内核实现原理上看,LVM是在内核通用块设备层到磁盘设备驱动层的请求提交流之间开辟的另外一条路径,即在通用块设备层到磁盘设备驱动层之间插入了LVM管理映射层用于截获一定的请求进行处理。

用户通过lvm提供接口,依靠内核创建一系列LVM逻辑卷,所有对lvm逻辑卷的读写操作最终都会由LVM在通用块设备层下方截获下来,进行更进一步的处理。这里的进一步处理主要指的是完成写请求的映射,是将请求的数据根据实际情况进行一些拆分和重定位操作,从而可以将请求和数据分发到实际的物理设备中去。

基本术语

前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。首先我们讨论以下几个LVM术语:

*物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元

*物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

*卷组(Volume Group,VG)

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

*逻辑卷(Logical Volume,LV)

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

*物理块(Physical Extent,PE)

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

*逻辑块(Logical Extent,LE)

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

图所示LVM抽象模型,展示了PV、VG、LV三者之间关系:

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

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

处理流程

从读写请求处理流程上看,支持逻辑卷管理LVM机制的Linux的I/O子系统对逻辑卷请求的处理流程大致如下:

(1) 文件系统首先调用具体的文件读写过程,将偏移和文件的起始位置转换为具体文件系统的数据块,同时将这些信息以buffer-head结构的形式传递到文件缓冲层(BUFFER层)。

(2) 缓冲层根据数据块的逻辑设备号和块号,将buffer-head结构转换成一个代表请求的bio结构,发向ivm映射层。

(3)Lvm内核处理程序,分析该请求,同时根据需要决定是否进行一些拆分操作,将该拆分后的请求转化到各自对应的磁盘,并将转换后的请求挂到真正的设备上。

(4) 最后由磁盘驱动程序完成读写过程,然后再将处理后的结构依次上上层传送到达文件系统。

ll-rw-block ()是文件系统和块设备的请求传递接口,所有块设备的读写请求都会首先由这个函数进行处理。文件系统提供给ll-rw-block ()的是一个buffer-head的数组,ll-rw-block ()对其中的每一个buffer_head结构调用submit_bh,将每一个buffer-head缓存结构封装成bio请求结构,然后调用submit—bio下发到具体的块设备。submit—bio会调用一个通用的generic_make_request 0方法,根据bio结构中指定的设备,调用该设备队列的make_request函数将请求挂载到相应的设备队列中去。对于LVM映射驱动来说,逻辑卷lvm设备队列的make_request函数就是lvm_make_request_fn。也就是说,对LVM的读写操作最终都会在这个地方被截获处理。内核在这里完成请求的拆分和重定向工作,进而调用generic make request重新确定请求的发送设备,通过具体设备队列操作函数make_request将请求发送到实际物理快设备中去。SnapCDP的主要工作就是在LVM映射层设计一定的策略和机制,实现连续数据保护功能。

优点

LVM通常用于装备大量磁盘的系统,但它同样适于仅有一、两块硬盘的小系统。

小系统使用LVM的益处

传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变:

1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用;

2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中;或采用符号连接的方式使用其它分区的空间。

3.如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。当采用LVM时,情况有所不同:

1.硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;

2.文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求;

3.文件系统建立在LVM上,可以跨分区,方便使用;

大系统使用LVM的益处

在使用很多硬盘的大系统中,使用LVM主要是方便管理、增加了系统的扩展性。

在一个有很多不同容量硬盘的大型系统中,对不同的用户的空间分配是一个技巧性的工作,要在用户需求与实际可用空间中寻求平衡。

用户/用户组的空间建立在LVM上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去。

LVM的配置简单实例

1.环境

VMware Workstation

CentOS7

Xshell6

2.实验步骤

1.打开VMware Workstation,我们添加磁盘。

在这里插入图片描述

2.添加磁盘

2.1进入刚刚的2步骤中,我们进行磁盘的添加。

在这里插入图片描述
2.2添加硬盘,然后点击下一步。

在这里插入图片描述

2.3服务器的磁盘接口基本都是SCSI口,我们就选择这个SCSI口,并点击下一步。

在这里插入图片描述

2.4我们创建新的虚拟磁盘。虚拟磁盘是你用了多大就占多大的物理内存。然后点击下一步。

在这里插入图片描述

2.5这个页面是给这个磁盘配置额度,默认是20G,我们就用默认的就行。然后,点击下一步。

在这里插入图片描述

2.6直接默认,下一步。

在这里插入图片描述

2.7查看自己是否把这个磁盘添加后,是否添加成功。

在这里插入图片描述

2.8重复2.1-2.7,再添加两个新磁盘。

在这里插入图片描述

3.开启此虚拟机。

在这里插入图片描述

4.输入用户名和密码。

localhost login:root
Passwd:******

在这里插入图片描述

5.激活网卡,查看IP地址。

[root@localhost ~]#nmcli connection up ens33
[root@localhost ~]#ip a

在这里插入图片描述

6.打开Xshell6,然后点击新建。

在这里插入图片描述

7.新建centos7-11的连接。

在这里插入图片描述

8.准备连接会话。

在这里插入图片描述

9.配置ssh远程登录的用户名。

在这里插入图片描述

10.配置ssh远程登录的密码。

在这里插入图片描述

11.验证ssh远程登录成功。

在这里插入图片描述

12.查看新的磁盘是否添加成功。

[root@localhost ~]#cd /dev
[root@localhost dev]#ls

在这里插入图片描述

13.对加进来的第一块磁盘进行配置,一定要将文件格式转化成8e的格式。

[root@localhost dev]#cd
[root@localhost ~]#fdisk /dev/sdb

在这里插入图片描述

在这里插入图片描述

14.将剩下的两块新磁盘进行同样的操作。

[root@localhost ~]#fdisk /dev/sdc
[root@localhost ~]#fdisk /dev/sdd

15.将新加的三块磁盘组成一个卷组。

[root@localhost ~]#vgcreate kgc /dev/sd[b-d]1

在这里插入图片描述

16.创建一个30个G大小的逻辑卷名为kgc_ky02。

[root@localhost ~]#cd /dev
[root@localhost dev]#lvcreate -L 30G -n kgc_ky02 kgc
[root@localhost dev]#lvisplay

在这里插入图片描述

17.格式化刚刚创建的逻辑卷。

[root@localhost dev]#mkfs.xfs /dev/kgc/kgc_ky02

在这里插入图片描述

18.挂载逻辑卷到/mnt下

[root@localhost dev]#cd
[root@localhost ~]#mount /dev/kgc/kgc_ky02 /mnt
[root@localhost ~]#df -hT

在这里插入图片描述

实验总结

我们在拿到新的磁盘的时候,我们要做的就是先将他的格式改变一下,便于组成卷组,再由卷组组成逻辑卷。我们的思路是由上而下。最上面的是逻辑卷,中间是卷组,最下面是物理卷。而我们做的时候是由下往上的,层层递进,不慌不忙。也就是我们在做什么复杂的项目的时候,我们通过需求的分析,在加上自己掌握的所学的知识,然后就能逐步解决这个项目。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值