首页 > 代码库 > LVM实现原理(pv,vg,lv,pe,le)

LVM实现原理(pv,vg,lv,pe,le)

LVM是依附于DM的功能的,DM(device mapper)是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper Raid Tool)等都是基于该机制实现的。

wKiom1PPKOGhBxkXAADTXlGA4Y4019.jpg

PV:位于整个LVM系统的最底层,可以是一个分区,或者是一个物理磁盘,或者在逻辑上可以当做一个是一个物理设备的,如RAID。使用pvcreate 命令即可将一个分区创建为物理卷(PV),该动作是将逻辑卷管理的相关元数据写入到分区里面。

VG:卷组是建立在物理卷之上的。VG可以看做是一个容器,将下属的所有物理卷包含进来,由此可知卷组的大小就是该卷组中所有物理卷大小的总和。vgcreate命令可以创建一个卷组,vgextend可以将某个物理卷加入到一个卷组中。

PE:物理盘区是卷组中用管理的最小存储单元,在创建卷组时制定大小,卷组一旦创建了,其PE大小是固定的不可改变的,PE的默认大小是4MB。新创建的PV并没有PE这个概念,只有当其加入到VG中才有PE。

LV:我们知道VG简单的说就是个容器,其包含了一个或者多个PV,VG是不能直接格式化使用的。而lv是创建在vg之上的一个逻辑层,并且可以格式化挂载使用。创建lv时指定大小,其实也就是指定要给这个lv分配多少个PE,当PE分配给某个lv后则成为LE。

LE:逻辑盘区是lv管理的最小存储单元,其大小和LV所在VG中的PE大小相同。

注意:上述所说的PE,LE并不是数据的最小存储单元。数据的最小存储单元还是取决于磁盘block大小。

当用户将数据保存的时候,lvm的具体操作有两种方式:

线性模式(linear)---将多个分区的空间拼接起来使用,如一个lv跨度了/dev/sda1和/dev/sda2两个分区,当存储数据的时候先写入到/dev/sda1,当其写满的时再使用/dev/sda2,这种方式下如果某个分区坏掉,则数据并不会完全损坏。

交错模式(triped)---将数据交错存储,如一个lv跨度了/dev/sda1和/dev/sda2,保存一个包含四个数据块大小的文件,第一个数据块保存在/dev/sda1,第二个数据块保存在/dev/sda2,第三个保存在/dev/sda1,依次类推。这种方式下若lv跨度了两个磁盘/dev/sda1和/dev/sdb1,此时性能会有提升,但要是追求这种性能最好使用硬件raid来实现。而且这种模式下若某个分区坏掉,数据会损坏。所以lvm默认存储模式是线性模式(linear)

本文出自 “diannaowa” 博客,请务必保留此出处http://diannaowa.blog.51cto.com/3219919/1442159

LVM实现原理(pv,vg,lv,pe,le)