首页 > 代码库 > Linux LVM (1)的基本概念

Linux LVM (1)的基本概念

 LVM


        LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。


目录

    1,概述

    2,前言

    3,基本术语

    4,总结

    5,优点

    6,相关概念

    7,LVM的管理工具

    8,工作方式


概述:


        LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分LVM区管理的灵活性。前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷(physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现 某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如PatitionMagic等),但这都只是暂时解决办法,没有根本解决问题。随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下方便地调整各个分区大小。

wKioL1O6CPmzjXxSAAGO7ZyW74A500.jpg




前言:


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

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

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

        LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。


基本术语:



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

        *物理存储介质(The physical media)

        这里指系统的存储设备:硬盘,是存储系统最低层的存储单元。

        *物理卷(physical volume,PV)

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

        *卷组(Volume Group,VG)

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

        *逻辑卷(logical volume,LV)

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

        *PE(physical extent,PE)

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

        *LE(logical extent,LE)

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

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

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

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

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

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

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





总结 :  

    根据上面的讨论可以看到,LVM具有很好的可伸缩性,使用起来非常方便。可以方便地对卷组、逻辑卷的大小进行调整,更进一步调整文件系统的大小。


优点:



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

    小系统使用LVM的益处

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

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

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

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

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

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

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

    大系统使用LVM的益处

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

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

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


相关概念:


    物理卷

    物理卷是指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备(比如RAID设备)。

    逻辑卷

    一个或者多个物理卷组成一个逻辑卷。对于LVM而言,逻辑卷类似于非LVM系统中的硬盘分区。逻辑卷可以包含一个文件系统(比如/home或者/usr)。

    卷组

    一个或者多个逻辑卷组成一个卷组。对于LVM而言,卷组类似于非LVM系统中的物理硬盘。卷组把多个逻辑卷组合在一起,形成一个可管理的单元。

    物理块physical extent (PE)

    物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。

    逻辑块logical extent (LE)

    逻辑卷按“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。


工作方式:


    下面来看一看LVM到底是怎样工作的。每一个物理卷都被分成几个基本单元,即所谓的PE(Physical Extents)。PE的大小是可变的,但是必须和其所属卷组的物理卷相同。在每一个物理卷里,每一个PE都有一个唯一的编号。PE是一个物理存储里可以被LVM寻址的最小单元。

    每一个逻辑卷也被分成一些可被寻址的基本单位,即所谓的LE(Logical Extents)。在同一个卷组中,LE的大小和PE是相同的,很显然,LE的大小对于一个卷组中的所有逻辑卷来说都是相同的。

    在一个物理卷中,每一个PE都有一个唯一的编号,但是对于逻辑卷这并不一定是必需的。这是因为当这些PEID号不能使用时,逻辑卷可以由一些物理卷组成。因此,LE ID号是用于识别LE以及与之相关的特定PE的。每一次存储区域被寻址访问或者LE的ID被使用,都会把数据写在物理存储设备之上。

    你可能会觉得奇怪,有关逻辑卷和逻辑卷组的所有元数据都存到哪儿去了。类似的在非LVM系统中,有关分区的数据是存储在分区表中,而分区表被存储在了每一个物理卷的起始位置。VGDA(卷组描述符区域)功能就好象是LVM的分区表,它存储在每一个物理卷的起始处。

VGDA由以下信息组成:

◆ 一个PV描述符

◆ 一个VG描述符

◆ LV描述符

◆ 一些PE描述符

    当系统启动LV时,VG被激活,并且VGDA被加载至内存。VGDA帮助识别LV的实际存储位置。当系统想要访问存储设备时,由VGDA建立起来的映射机制就用于访问实际的物理位置来执行I/O操作。



LVM的管理工具:


功能管理物理卷管理卷组管理逻辑卷


Scan    扫描    pvscan       vgscan       lvscan

Create  创建    pvcreate     vgcreate     lvcreate

Display 显示    pvdisplay    vgdisplay    lvdisplay

Remove  删除    pvremove     vgremove     lvremove

Extend  扩展                 vgextend     lvextend

Reduce  减少                 vgreduce     lvreduce


----图形管理工具: 

[root@localhost ~]# system-config-lvm 


注释:如果没有这个命令的话我们可以把相关的软件包装上,我们可以用“rpm”的方式或者是“yum”的方式安装。我是用“yum”的方式安装的。那个是包会产生这个软件包那。看下面:


[root@localhost ~]# rpm -qf  /usr/sbin/system-config-lvm 

system-config-lvm-1.1.5-13.el5

[root@localhost ~]# yum   -y  install  system-config-lvm


主要命令的语法:


- pvcreate设备名...

- vgcreate卷组名  物理卷...

- vgcreate-s pe大小      卷组名    物理卷...

- lvcreate-L 大小    -n  逻辑卷名  卷组名

- lvcreate-l pe个数  -n  逻辑卷名  卷组名

- lvextend-L +大小  /dev/卷组名/逻辑卷名







实现方法:


注释:"/dev/sdb7"这个分区是我新分的分区。大家在做的时候可以按照自己分的区来做。


创建物理卷的命令是 pvcreate 


[root@localhost ~]# pvcreate  /dev/sdb7

  Writing physical volume data to disk "/dev/sdb7"

  Physical volume "/dev/sdb7" successfully created

以上命令将“/dev/sdb7”初始化成物理卷,使用物理卷显示命令“pvdisplay”查看物理卷情况如下:


[root@localhost ~]# pvdisplay 

  "/dev/sdb7" is a new physical volume of "9.32 GB"

  --- NEW Physical volume ---

  PV Name               /dev/sdb7

  VG Name               

  PV Size               9.32 GB

  Allocatable           NO

  PE Size (KByte)       0

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               WSaYsw-z57t-36HY-rIQ7-P8u3-e2Gg-DD7I1c


创建卷组VG(Volume Groups)


    卷组(Volume Group)简称VG,它是一个或者多个物理卷的组合。卷组将多个物理卷组合在一起,形成一个可管理的单元,它类似于非LVM系统中的物理硬盘。

    创建卷组的命令为vgcreate,下面利用它创建了一个名为“vg_long”的卷组,该卷组包含“/dev/sdb7”这个物理卷。


[root@localhost ~]# vgcreate vg_long  /dev/sdb7

  Volume group "vg_long" successfully created


使用卷组查看命令vgdisplay显示卷组情况:


[root@localhost ~]# vgdisplay 

  --- Volume group ---

  VG Name               vg_long

  System ID             

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               9.32 GB

  PE Size               4.00 MB

  Total PE              2386

  Alloc PE / Size       0 / 0   

  Free  PE / Size       2386 / 9.32 GB

  VG UUID               MOp7Ex-6ymH-3jvz-jxRd-sMKl-5G14-MvF2E1


创建逻辑卷LV(Logical Volumes)

    逻辑卷(Logical Volumes)简称LV,是在卷组中划分的一个逻辑区域,类似于非LVM系统中的硬盘分区。

    创建逻辑卷的命令为"lv_long",通过下面的命令,我们在卷组"vg_long"上创建了一个名字为"lv_long"的逻辑卷,大小为10GB,其设备入口为"/dev/vg_long/lv_long"。



[root@localhost ~]# lvcreate -L 8G  -n lv_long vg_long

  Logical volume "lv_long" created

[root@localhost ~]# lvdisplay 

  --- Logical volume ---

  LV Name                /dev/vg_long/lv_long

  VG Name                vg_long

  LV UUID                T0chYK-VKde-QwEQ-fHfn-wh0j-UUa8-gdNEOf

  LV Write Access        read/write

  LV Status              available

  # open                 0

  LV Size                8.00 GB

  Current LE             2048

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0


也可以使用-l参数,通过指定PE数来设定逻辑分区大小。


创建文件系统:


在逻辑卷上创建ext3文件系统:


[root@localhost ~]# mkfs.ext3  /dev/vg_long/lv_long 


创建了文件系统以后,就可以加载并使用了:



我们把我们新建的“逻辑卷”挂载到“/mnt”这个目录。这个目录就是用来挂载一些分区的。


[root@localhost ~]# mount  /dev/vg_long/lv_long  /mnt/












本文出自 “Dragon” 博客,请务必保留此出处http://1208073155.blog.51cto.com/9039381/1435230