本人一直想对lvm进行一个总结,正好今天看到一篇好文章,加上自己以前笔记就进行一个总结,方便以后查看学习和帮助其他人学习,在这里感谢http://sofar.blog.51cto.com/353572/1304241博主文章,我在他的基础上加以补充完善,总结了这篇文章。最后说一句感谢51CTO,感谢CCTV。


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

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


160003455.jpg

物理卷(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分区的改变量超过了快照的大小,那么快照就会被释放。简单说就是:快照中什么都没有它只是一个访问原文件的通路。(如图所示)有了快照之后我们对数据的备份就会非常的简单方便。

211750748.png

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

简单的实现一个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)进入分区管理

211833676.png

211909966.png

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

212019727.png

2、创建物理卷(PV)

格式:pvcreate  设备名称

212038655.png

查看结果

格式:pvdisplay  设备名称

212143689.png

格式:pvs

212206851.png

3、创建卷组(VG)

格式:vgcreate VGNAME PV名称 …

212229719.png

vgcreate –s PE 可以指定PE大小

212245915.png

查看结果:

格式:vgdisplay  设备名称

212316379.png

格式:vgs

212328692.png

4、创建逻辑卷(LV)

格式:lvcreate –L SIZE –n LV_NAME VG_NAME

212346344.png

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

查看结果:

格式:lvdisplay

212402322.png

格式:lvs

212417194.png


5、LV格式化及挂载

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

212441549.png

212615811.png

212703702.png

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

/dev/mapper/VG_NAME-LV_NAME


三、管理学习篇

1、扩展VG

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

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

212727774.png


2、缩减VG

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

命令格式:

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

212827199.png

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

213022663.png

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


3、删除PV

命令格式:pvremove

213044254.png


4、扩展逻辑卷

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

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

213114403.png

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


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

213136729.png


5、缩减逻辑卷

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

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

命令:e2fsck –f

213305881.png

213204189.png

b)、逻辑边界

命令:resize2fs/path/to/device SIZE

213401485.png

c)、物理边界

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

d)、查看结果

213730917.png

213809764.png


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

lvcreate

-s :指定快照卷;

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

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

213841311.png

213910899.png

213938423.png

214038679.png

214053171.png


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

214114583.png


9、移除卷组

格式: vgremove/path/to/lv

214130349.png


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

http://www.svipc.com/thread-336-1-1.html