大话存储系列0——LUN 与 LVM 名词解释

简介: 在看这篇文章之前,请先参考我的博客:http://blog.csdn.net/cymm_liu/article/details/8656154  中的第4部分:逻辑卷管理,摘录如下: 逻辑卷一旦创建,之后就无法改变,如果开始的时候划分了100G的逻辑盘,但是两年之后,空间使用快满了,但是又不能放到别的磁盘(逻辑盘),因为受上层文件系统的限制,一个文件不可能跨越多个分区来存放。

在看这篇文章之前,请先参考我的博客:http://blog.csdn.net/cymm_liu/article/details/8656154 

中的第4部分:逻辑卷管理,摘录如下:

逻辑卷一旦创建,之后就无法改变,如果开始的时候划分了100G的逻辑盘,但是两年之后,空间使用快满了,但是又不能放到别的磁盘(逻辑盘),因为受上层文件系统的限制,一个文件不可能跨越多个分区来存放。更别提多个磁盘了。如果一个文件超过了这100G,那就死路一条了。。

所以必须有一种机制,在一个逻辑磁盘空间满了的时候,可以轻易的添加空间,而不让原来的数据受到损害,如果在RAID控制器那一层去划分,对于实现来说,不容易所以,我们考虑把RAID控制器提交给OS的逻辑磁盘(OS会认为是物理磁盘),重现加以组织,再分配。这就是VM(Volume Manger)卷管理。


通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O操作的性能,以及提供冗余保护,它的快照功能允许用户对逻辑卷进行实时的备份。

对一般用户来讲,使用最多的是动态调整文件系统大小的功能。这样,你在分区时就不必为如何设置分区的大小而烦恼,只要在硬盘中预留出部分空闲空间,然后根据系统的使用情况,动态调整分区大小。

再深入介绍逻辑卷管理之前,我们先了解如下概念:

  • 物理卷(Physical Volume, PV):LVM是操作系统识别到的物理磁盘(或者RAID提交的逻辑磁盘LUN)改了个叫法,叫物理卷, 物理卷可以是一个磁盘,也可以是磁盘中的一个分区。它为LVM提供了存储介质。
  • 逻辑卷组(Logical Volume Group, LVG):多个PV可以被逻辑的放到一个VG中,逻辑卷组是一个虚拟的打存储空间,逻辑上是连续的,它可以由多块PV组成,此时VG会将所有PV首尾相连,组成一个逻辑上连续编址的大存储池,这就是VG。在一个VG上可以创建多个逻辑卷(LV)。
  • 物理区块(Physical Partion):它是在逻辑上再将一个VG分割成连续的小块(注意,是逻辑上的分割,而不是物理上) ,也就是说LVM会记录每个PP的大小(具体有几个扇区组成啊),还会记录PP的序号偏移。这样就相当于在VG这个大池中顺序切割,比如我们假设一个PP的大小是4MB,那么由之前的知识知道一个扇区是512B,所以4MB/512B =8192 个扇区。  如果PV是实际的一块物理磁盘,那么这些扇区就是连续的。如果PV本身是经过RAID控制器虚拟化形成的虚拟盘(LUN),那么这些扇区可能位于若干条带中:也就是说这8192个扇区物理上不一定连续。
  • 逻辑区块(logical Partition):PP可以再次组成LP,逻辑区块是比较难理解的,一个LP可以对应一个PP,也可以对应多个PP。前者对应前后没有什么区别,而后者,又分为两种情况:一种为多个PP,组成一个大的LP,像是RAID0一样;另一种是一个LP对应几份PP,这几份PP没一份内容都一样,类似于RAID1,对个PP内容互为镜像,然后用一个LP来代表它们,往这个LP写数据,也就同时写入了这个LP对应的几份PP中。
  • 逻辑卷(Logical Volume, LV): 若干LP再经过连续组合成LV,也就是LVM所提供的最终可用来存储数据的单位。生产逻辑卷,在主机看来还是和普通磁盘一样,对其进行分区,格式化等。每个逻辑分区上都可以创建具体的文件系统。

LVM看起来很复杂,其实操作起来很简单,我们理一下思路,首先创建PV(真实或者RAID提供的LUN)——> 将PV加入VG ——> 在VG中创建LV  ——> 然后格式化这个LV,当成普通硬盘来使用。 


新插入一个逻辑层,对单个硬盘的读写会有一定的性能损失,但其带来的好处是巨大的。首先,逻辑分区大小不再受硬盘实际大小的限制,它可以扩展到几块硬盘上;其次,逻辑分区可以很方便的做调整大小、备份等维护操作;而且,如果系统中存在多块硬盘,通过设置逻辑卷到物理卷的映射关系(采用LVM striped mapping),可以提高I/O的读写性能,因为此时的读写是在多块硬盘上并发进行的,比对单个硬盘的读写显然要快很多。

下面是一个LVM使用的例子: 



更多逻辑卷管理的资料参照博客:http://www.ibm.com/developerworks/cn/linux/l-lvm2/index.html



看完上面这些,对lun和LVM应该能很清晰的认识了,下面我们继续总结下:


lun 是指硬件层分出的逻辑盘,如raid卡可以将做好的400G的raid5再分成若干个逻辑盘,以便于使用,每一个逻辑盘对应一个lun号,OS层仍把这些逻辑盘看做是物理盘。(lun最早出自scsi,后来引申到所有硬件层划分的逻辑盘)


卷  是软件层分成的逻辑分区,如LVM的逻辑卷LV对于OS层来说就是一个分区(可以格式化成一种文件系统,挂载到某个目录下),只是逻辑卷的大小是可以扩展的,而且一个逻辑卷可能是由多个物理硬盘组成。本质上LVM是一个软件,介于OS与磁盘驱动程序之间。

        LUN是英文 Logical unit number的缩写,即逻辑单元号,它是在SCSI-3中定义的,并非单用于存储范畴,也可以指使用SCSI协议的一切外围设备,如磁带机、SCSI打印机等等。

         从SCSI-3的SAM模型中我们知道,SCSI-3(或者之后的版本)的协议层规定,对于16位宽的SCSI总线,其寻址范围只有16个,即只能挂载16个外围设备,每个设备称为一个target。

         为了提高总线的寻址能力,于是又引入了一层,它规定在每个target上,还可以虚拟(也可以实际连接)出多个设备,例如某个target上可能接了一个磁带机,一个打印机,他们共用一个target地址,但为了区分他们,于是就用LUN加以区别,磁带机假设为LUN0,打印机假设为LUN2,这样就解决了多设备的寻址问题。这是实际设备连接的例子,存储阵列是最好的虚拟设备的例子。一个存储阵列在SCSI总线看来是一个Target,占用一个SCSI的Target地址,但存储阵列的存储空间太大,我们需要将其分成不同的部分,以供不同的应用,达到集中存储,集中管理的目的。分割出来的每部分存储我们就用Lun来区别,如LUN1代表地址块0-1023,LUN2代表地址块1024-65535等等。

           从上面可以看出,计算机在使用SCSI标准(注意我这里用的标准一词,代表了统含SAM模型中的4层,而并不使用接口,协议或者命令等词语)接外挂存储时,使用的是总线(BUS)-目标(Target)-LUN三元寻址方案,总线指的是你的计算机上有几条SCSI总线,有几块SCSI卡?目标指的是在该总线上,设备的目标地址即常说的SCSI地址是多少?LUN指的是设备在一个Target上分配的逻辑地址,逻辑单元号。这种寻址方案和设备的连接方式,类似于物理上星形连接,逻辑上总线连接的一种网络拓扑。


    那么什么又是存储卷呢?这要从存储的卷管理器说起。存储卷管理器是操作系统中的一个对象,他主要负责存储块设备的在线管理。当我们的一个存储LUN接入计算机后,计算机发现这个设备的存在,就需要在卷管理器上注册,卷管理器为存储卷提供注册的虚拟接口,获取存储LUN的基础信息,如空间大小,三元地址,块大小,起止地址,健康情况等,再为其创建一个对应的数据结构的抽象,这样计算机通过卷管理器,就能够动态的扑捉被注册的存储LUN的实时信息,实现动态管理。一个存储LUN被卷管理器进行注册抽象之后,就被卷管理器认为是一个可被鱼肉的直接下属,它可以再次被分割成更小区域,当然也可以不分割,再对分割后或者没分割后的存储空间进行数据抽象,建立相关的数据结构,供文件系统层调用。

     因此,存储LUN和卷在物理上可能是同一个东西,只是从不同的角度,不同的层次去看它,去理解它。当然,对计算机来说,这些不同确实数据处理过程的需要,也有必要弄清楚的。





相关文章
|
存储 网络协议 Windows
利用FreeNas创建iSCSI块级存储
利用FreeNas创建iSCSI块级存储
472 0
利用FreeNas创建iSCSI块级存储
|
1月前
LVM的底层pv数据迁移
LVM的底层pv数据迁移
19 7
|
存储 安全 数据安全/隐私保护
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
488 0
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
|
存储 虚拟化 网络协议