LVM详细资料大全

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVM详细资料大全相关的知识,希望对你有一定的参考价值。

参考技术A

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁碟分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4核心上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux作业系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬碟空间。普通的磁碟分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个档案时,这个档案因为受上层档案系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁碟上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号连结,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

基本介绍

    中文名 :逻辑卷管理 外文名 :Logical Volume Manager 简称 :LVM 最新版本 :稳定版1.0.5 分类 :计算技术语 作用 :磁碟分区
前言,简介,基本术语,处理流程,优点,

前言

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬碟分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬碟、重新对硬碟分区,然后恢复数据到新分区。 LVM模型 虽然有很多动态调整磁碟的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的伺服器,停机是不可接受的,而且对于添加新硬碟,希望一个能跨越多个硬碟驱动器的档案系统时,分区调整程式就不能解 决问题。 因此完美的解决方法应该是在零停机前提下可以自如对档案系统的大小进行调整,可以方便实现档案系统跨越不同磁碟和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。

简介

逻辑卷管理器(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) LVM抽象模型 逻辑卷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时,情况有所不同: LVM 1.硬碟的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬碟空间; 2.档案系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求; 3.档案系统建立在LVM上,可以跨分区,方便使用; 大系统使用LVM的益处 在使用很多硬碟的大系统中,使用LVM主要是方便管理、增加了系统的扩展性。 在一个有很多不同容量硬碟的大型系统中,对不同的用户的空间分配是一个技巧性的工作,要在用户需求与实际可用空间中寻求平衡。 用户/用户组的空间建立在LVM上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬碟时,不必把用户的数据从原硬碟迁移到新硬碟,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬碟转移到新硬碟空间中去。

Centos7调整XFS格式的LVM大小详细教程

前提:XFS是centos7 预装的操作系统,XFS只能扩大不能缩小,所以需要利用xfsdump / xfsrestore 工具在必须缩小lvm 的情况下,备份与还原资料。

本实验的效果是:
1,/dev/mapper/centos-home仅仅保留50G;
2,将/home分出来的空间分给/dev/mapper/centos-root。
原始空间大小如下图示:
首先,必须确保其他分区有足够的空间用来分给根目录/。可以使用以下命令查看:
技术分享图片

扩容根目录的思路如下:
将/home文件夹备份,删除/home文件系统所在的逻辑卷,增大/文件系统所在的逻辑卷,增大/文件系统大小,最后新建/home目录,并恢复/home文件夹下的内容。

第一步:安装xfsdump 套件

yum -y install xfsdump

第二步:备份/home

xfsdump -f /home.xfsdump /home
?  -> home

?  -> home

第二步:缩减/dev/mapper/centos-home大小

卸载/home

umount /home

要先终止所有使用/home文件系统的进程,这里要注意不要在/home目录下执行下面的操作:

fuser -km /home

然后,卸载:

umount /home

将/home的Logical Volume缩减为50GB

lvreduce -L 5G /dev/mapper/centos-home
Do you really want to reduce home? [y/n]: y

技术分享图片

出现此问题是/root满了

技术分享图片`
删除了一些根下的东西就好了

技术分享图片
再次执行

lvreduce -L 50G /dev/mapper/centos-home
Do you really want to reduce home? [y/n]: y

技术分享图片

第四步:增加/dev/mapper/centos-root的空间大小

lvextend -l +100%FREE /dev/centos/root

技术分享图片
延展xfs空间

xfs_growfs /dev/centos/root

技术分享图片

第五步:恢复/home的内容

格式化/home的lvm

mkfs.xfs -f /dev/mapper/centos-home

技术分享图片

挂载 /home /dev/mapper/centos-home

mount /home

还原备份资料到 /home

xfsrestore -f /home.xfsdump /home

调整过后的空间大小如下图示:

技术分享图片

以上是关于LVM详细资料大全的主要内容,如果未能解决你的问题,请参考以下文章

逻辑卷管理(LVM)

SqlServer详细资料大全

Arduino详细资料大全

MIPS详细资料大全

CAP详细资料大全

Cadence详细资料大全