首页 > 代码库 > LVM逻辑盘卷管理

LVM逻辑盘卷管理

LVM逻辑盘卷管理

LVM是逻辑盘卷管理的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。它的机制就是将多个块设备连接为一个整块的卷组(volumegroup),形成一个存储池。然后,在这个卷组上创建逻辑卷(logicalvolumes),并进一步在逻辑卷上创建文件系统。

当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。


技术分享

物理卷(physicalvolume):指磁盘分区或与磁盘分区有同样功能的设备(如RAID)。创建物理卷时磁盘类型需要是8e。如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。创建物理卷的时候不可以直接格式化!

卷组(volumegroup):就是将多个物理卷组合起来,逻辑上成为一块硬盘。它的大小有物理卷大小和多少决定,且至少要有一个物理卷。

逻辑卷(logicalvolume):在卷组上创建,可以在创建的逻辑卷上建立文件系统。类似与磁盘分区。不同的是逻辑卷的边界可以随意扩展或缩小。

PE(PhysicalExtents):在创建卷组时底层指定的一个存储单位,借鉴Oracle的表述方式就叫做物理盘区(物理扩展),所以我们在划分一个逻辑卷时就是分配多少个PE来决定的,PE的大小是由卷组决定的,PE的大小也是可配置的(下面会阐述),默认为4MB。


LE(LogicalExtents):当PE被分配到一个逻辑卷之后就被称作是LE,也就是说,把逻辑卷划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。


快照(Snapshot):逻辑卷也支持快照,LVM快照通过把文件系统的改变记录到一个快照分区,而不是对这个分区做镜像(也就是保留过去某一刻的状态)。因此当你创建一个快照分区时,你不需要使用和你正创建快照的分区一样大小的分区,而是在做快照过程中需要改变的大小。这取决于有多少数据正在写入分区和你希望保留LVM快照多长时间。你保留的时间越长,在文件系统的的改变越多,更多的快照分区就会被填充改变的信息。在分区上的改变率越高,快照的平均生命期越短。如果一个LVM分区的改变量超过了快照的大小,那么快照就会被释放。简单说就是:快照中什么都没有它只是一个访问原文件的通路。(如图所示)有了快照之后我们对数据的备份就会非常的简单方便。

技术分享

    其创建过程是:先将物理设备做成物理卷,然后将物理卷组合起来形成卷组,最后在卷组上创建逻辑卷。而我们使用的就是逻辑卷。

硬盘分区类型

硬盘有4种分区形式,分别是主分区、扩展分区、逻辑分区和活动分区。下面分别对它们进行介绍。

  1. 主分区

    主分区是用于安装操作系统的分区,其中包含操作系统启动时所必需的文件和数据,系统启动

  2. 时必须通过它才能启动。要在硬盘上安装操作系统,该硬盘上至少要有一个主分区,并且设为

  3. 活动分区来引导启动系统。一个硬盘最多只能划分4个主分区。

  4. 扩展分区

    扩展分区是用户在创建4个以上的分区时使用的分区类型,扩展分区是不能直接用来存储数据

  5. 的,而只是用于划分逻辑分区。扩展分区下可以包含多个逻辑分区,可以为其逻辑分区进行高

  6. 级格式化,并为其分配驱动器号。例如,当用户想为硬盘创建5个分区时,如果都将其创建为主

  7. 分区,系统只能认出4个,这不能满足我们的需求。此时,就可以创建3个主分区,再创建一个

  8. 扩展分区,然后在扩展分区下创建2个逻辑分区。

  9. 逻辑分区

    逻辑分区是从扩展分区划分出来的,主要用于存储数据。在扩展分区中最多可以创建23个逻辑

  10. 分区,各逻辑分区可以获得唯一的由D到Z的盘符。

  11. 活动分区

    活动分区是用于加载系统启动信息的分区。主分区需要激活为活动分区后,才能正常地启动操

  12. 作系统。如果硬盘中没有一个主分区被设置为活动分区,则该硬盘将无法正常启动。

硬盘分区格式

硬盘分区格式也就是文件系统格式。文件系统格式是操作系统用于明确磁盘或分区上文件

的方法和数据结构,不同的分区格式采用不同的文件管理机制来存储和读取文件数据,而

不同的操作系统则需要不同的文件系统格式的支持。

目前常用的分区格式主要有3种,即FAT16格式、FAT32格式和NTFS格式,下面分别对

它们进行介绍。

  1. FAT16格式

    FAT16格式是MS-DOS和早期的Windows 95操作系统中使用的磁盘分区格式,它采用16位的文件分

  2. 配表,也称为FAT格式。FAT16对现在的操作系统已经不再适用。

  3. FAT32格式

    FAT32格式采用32位的文件分配表,对磁盘的管理能力较强,支持Windows XP和其之前的部分

  4. Windows 操作系统。

  5. NTFS格式

    NTFS是一种特别为磁盘配额、文件加密和网络应用等管理安全特性而设计的硬盘分区格式。其

  6. 优点是安全性和稳定性方面非常好,在使用过程中不易产生文件碎片,并能对用户的操作进行

  7. 记录,通过对用户权限进行非常严格的限制,使每个用户只能按照系统赋予的权限进行操作,

  8. 充分保护了系统和数据的安全,如果要安装Windows 7或Windows 8必须采用NTFS格式。

简单的实现一个LVM逻辑卷实现过程:

1、创建分区

   首先创建磁盘分区,这里使用SCSI硬盘,并且系统已经有了三个主分区,那么我们只能创建扩展分区,并在扩展分区上创建逻辑分区了。我使用fdisk工具进行分区。

#fdisk /dev/sda

   注意的是分区类型必须是8e,否则无法支持LVM逻辑卷的使用。分区完最好输入p查看下创建好的分区以及类型,最后保存退出。这里我创建了/dev/sda5和/dev/sda6两个逻辑分区,大小分别是7G和3G。

 2、创建物理卷

   命令是pvcreate,我们可以将上面所创建的两个分区创建为物理卷,也可以先只将一个分区创建为物理卷。

   #pvcreate /dev/sda5 /dev/sda6

 3、创建卷组

   命令是vgcreate,将上面创建的两个物理卷创建为一个卷组

#vgcreate myvg /dev/sda5 /dev/sda6

注意:

   myvg是指定创建的卷组的逻辑名,可以随意的设定。后面就是将创建的物理卷添加到卷组中,这里我们也可以只将一个物理卷添加到卷组中,等想再添加另一个物理卷的时候再添加。需要注意PE(默认是4M)这个概念,它表示卷组上创建的所有逻辑卷都以4MB为增量单位来进行扩充或缩减。PE大小决定了逻辑卷的最大大小,4MB的PE决定了单个逻辑卷最大容量为256GB,若希望使用大于256G的逻辑卷则创建卷组时指定更大的PE。PE大小范围为8KB到512MB,并且必须总是2的倍数。如果想指定PE大小只需要添加-s选项,指定PE大小就行了,列:

#vgcreate -s 16M myvg /dev/sda5 /dev/sda6。这里指定PE大小为16M。

4、激活卷组

   为了立即使用卷组而不用重启系统,可以使用vgchange命令来激活卷组

#vgchage -ay myvg

5、创建逻辑卷

   创建逻辑卷的命令是lvcreate,我们在myvg卷组上创建一个6G大小的逻辑卷,

   -L来指定逻辑卷的大小;-n指定逻辑卷的名称

#lvcreate -L 6G -n mylv myvg

6、格式化逻辑卷分区

   这里我使用的是ext3格式的文件系统

   #mke2fs -j /dev/myvg/mylv

   创建挂载点来挂在创建好的逻辑卷分区

  #mkdir /mylv

   #mount /dev/myvg/mylv /mylv

扩展一下内容

1、为卷组添加新的物理卷

   当我们又创建了新的物理卷的时候,想要添加到myvg卷组中时,需要使用vgextend这个命令了。

#vgextend -t myvg /dev/sda7       #先测试是否可以添加物理卷

#vgextend myvg /dev/sda7

   这里/dev/sda7表示我们创建的新的物理卷

   2、从卷组中删除物理卷

   要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷使用,这时我们就要使用pvdisplay命令察看一个物理卷信息:

   如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。删除物理卷的命令为vgreduce:

  #vgreduce myvg /dev/sda7   这里为了简单说明,就将新添加的/dev/sda7从卷组中删除

附注:

   如果我们创建的卷组包含两个物理卷,一个7G(/dev/sda5),一个3G(/dev/sda6),而我们LV上面已经有6G的数据了,这样我们就不能将/dev/sda5给移除了,因为移除/dev/sda5必然会损坏数据。而且我们不能确定数据是不是都在/dev/sda5上面,也不能贸然移除/dev/sda6。如果需要移除/dev/sda6的话,应该先将/dev/sda6上面的数据移到同卷组的其他物理卷上,然后再移除/dev/sda6。这就需要使用pvmove这个命令了,步骤如下

 #pvmove /dev/sda6    #不需要指定将数据移动到那儿个磁盘上,它会自动将数据移动到同组的物理卷上

 #vgreduce myvg /dev/sda6  将物理卷6删除

3、删除逻辑卷

   删除逻辑卷时,要先将其卸载,然后才能删除,这里我们为了简单说明就将上面新建的逻辑卷作为例子

   #umount /dev/myvg/mylv

   #lvremove /dev/myvg/mylv

   Do you really want to remove active logical volume mydata? [y/n]:y

4、扩展逻辑卷大小

   扩展逻辑卷大小的命令是lvextend,上面我们创建逻辑卷的时候还剩4G容量,那么我们就为其再添加2G容量的步骤如下

   #lvextend –L 8G /dev/myvg/mylv

   或者这样增加这1G容量

   #lvextend –L +2G /dev/myvg/mylv

   增加逻辑卷的容量以后,我们的物理边界扩展了,此时查看逻辑卷的大小并没有改变,因为逻辑边界没有扩展。所以我们就需要扩展逻辑卷的逻辑边界了,命令如下

#resize2fs /dev/myvg/mylv              #这里不用跟调整的大小,会自动扩展到扩展的物理边界

   5、减小逻辑卷的大小

需要先将文件系统卸载了。需要注意的是,在缩减的时候我们的数据文件可能会受到影响,所以一般不建议缩减逻辑卷大小。这里我们使用的大小是添加过1G后的逻辑卷的大小,我们将其缩减为5G的大小。步骤如下

#umount /dev/myvg/mylv

#e2fsck –f /dev/myvg/mylv            #强行检测逻辑卷

#resize2fs /dev/myvg/mylv 5G          #调整逻辑卷的大小

#lvreduce –L 5G /dev/myvg/mylv       #缩减逻辑卷的大小

或者

(#lvreduce –L -2G /dev/myvg/mylv)

#mount /dev/myvg/mylv /mylv

#df –lh                              #查看各个磁盘的大小

说明:在我们缩减的时候需要先用e2fsck命令强行检测下逻辑卷,然后用resize2fs命令调整逻辑卷的大小,最后用lvreduce来减小逻辑卷大小。


常用命令的简单介绍:

1、物理卷相关命令

   pvcreate             #创建物理卷

   pvremove             #移除物理卷

   pvmove               #移动物理卷的数据

   pvscan               #扫描物理卷

   pvdisplay            #查看物理卷的信息

   例如:

   #pvdisply            #查看所有的物理卷信息

   #pvdisply /dev/sda5 #只查看特定的物理卷的信息

   pvs                  #简单查看物理卷的信息

   2、卷组相关命令

   vgcreate      #创建卷组

     -s :指定PE大小,默认PE大小是4M

   vgdisplay     #查看卷组的信息

   vgextend      #扩展卷组大小

     -t :检测制定物理卷是否可以添加进来

   vgreduce      #缩减卷组大小

     -t :检测指定物理卷是否可以移除出去

   vgscan        #扫描卷组

   vgs           #查看卷组的简单信息

   3、逻辑卷相关命令

   lvcreate      #创建逻辑卷

     -L :指定创建逻辑卷的大小

     -n :指定逻辑卷的名称

   lvdisplay     #查看逻辑卷的信息

   lvremove      #移除逻辑卷

   lvreduce      #缩减逻辑卷大小

   lvextend      #扩展逻辑卷大小

   lvs           #简单查看逻辑卷的信息


二、创建学习篇

首先创建PV,然后将PV组合成VG,最后将VG划分为LV。

1、创建分区

使用分区工具(如:fdisk等)创建LVM分区,注意LVM的分区类型为8e

使用fdisk创建分区,根据设备文件的绝对路径(/dev/sda)进入分区管理

技术分享

技术分享

注:一定要指定分区的格式为8e,这是LVM的分区格式

技术分享

2、创建物理卷(PV)

格式:pvcreate  设备名称

技术分享

查看结果

格式:pvdisplay  设备名称

技术分享

格式:pvs

技术分享

3、创建卷组(VG)

格式:vgcreate VGNAME PV名称 …

技术分享

vgcreate –s PE 可以指定PE大小

技术分享

查看结果:

格式:vgdisplay  设备名称

技术分享

格式:vgs

技术分享

4、创建逻辑卷(LV)

格式:lvcreate –L SIZE –n LV_NAME VG_NAME

技术分享

(说明:-L指定逻辑卷的大小,-n指定逻辑卷名称卷组名称 –l指定PE的个数)

查看结果:

格式:lvdisplay

技术分享

格式:lvs

技术分享


5、LV格式化及挂载

下一步需要对LV进行格式化(使用mke2fs进行格式化操作),然后LV才能存储资料

技术分享

技术分享

技术分享

:逻辑卷的设备文件路径:/dev/VG_NAME/LV_NAME

/dev/mapper/VG_NAME-LV_NAME


三、管理学习篇

1、扩展VG

首先准备好一个PV,然后使用vgextend命令即可完成扩展;

命令格式:vgextend VG_NAME /PATH/TO/PV

技术分享


2、缩减VG

首先确定要移除的PV,然后将此PV上的数据转移至其他PV,最后从卷组中将此PV移除;

命令格式:

  • 移动数据:pvmore 盘区到盘区

技术分享

  • 移除VG:vgreduce VG_NAME /PATH/TO/PV

技术分享

注:在移除物理卷之前一定要把数据转移到其他盘区上


3、删除PV

命令格式:pvremove

技术分享


4、扩展逻辑卷

首先确定扩展多大?然后确定当前逻辑卷所在的卷组有足够的空间可用,最后进行扩展:方法:

一:扩展物理边界:lvextend-L [+]SIZE /path/to/lv

技术分享

(注:“+”可省的,其中有“+”表示扩展了,无“+”表示扩展了)


二:扩展逻辑边界:resize2fs/path/to/device

技术分享


5、缩减逻辑卷

由于逻辑卷的缩减有风险,所以第一步要确定缩减为多大?也就是说至少能容纳原有的数据,第二步进行缩减;缩减需要三步:

a)、卸载并强行检测文件系统

命令:e2fsck –f

技术分享

技术分享

b)、逻辑边界

命令:resize2fs/path/to/device SIZE

技术分享

c)、物理边界

命令:lvextend -L [+/-]SIZE /path/to/lv

d)、查看结果

技术分享

技术分享


6、快照卷(只是做原件的通路,不能修改,不能写入)

lvcreate

-s :指定快照卷;

-p r:限定快照卷为只读访问的;

格式: lvcreate -L SIZE-s -p r -n LV_NAME /path/to/lv

技术分享

技术分享

技术分享

技术分享

技术分享


7、利用LV的快照功能还原系统

#lvcreate -L 50M -s -p r -n mylv-snap /dev/myvg/mylv【创建快照mylv-snap】

#mount -o ro /dev/myvg/mylv-snap /media【挂载快照】

#tar -jcv -f /backup/lvm.tar.bz2 /media/*        【备份快照数据】

#umount /media

#lvremove  /dev/myvg/mylv-snap

对/dev/myvg/mylv里面的数据进行随意修改.......


还原:

#tar -jxv -f  /backup/lvm.tar.bz2  -C /mnt【将快照备份的数据还原到lvm当中】


8、移除逻辑卷和快照卷

首先要确定已经卸载过了逻辑卷

格式:lvremove /path/to/lv

技术分享


9、移除卷组

格式: vgremove/path/to/lv

技术分享


总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。



本文出自 “12690807” 博客,转载请与作者联系!

LVM逻辑盘卷管理