LUN概述
LUN的全称是Logical Unit Number,也就是逻辑单元号,是SCSI中的概念。 我们用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了。 早期的SCSI系统采用3个ID,一个SCSI总线上只能接驳8个设备,除了SCSI 控制卡占用了一个ID外,只剩7个设备号可用。尽管SCSI以后采用了4位ID,扩展到了16个设备,但对于现代的存储设备,这种个位数的ID识别号显然 不够用。目前生产环境上多产用RAID技术来规划存储,通过RAID组合后的磁盘不再能看到单独的磁盘信息,而是变成了一个巨大的存储空间。古老的 RAID技术只能将此存储空间整体分配,被指定了一个LUN后,成为了一个“逻辑”磁盘,供接驳的计算机使用。
鉴于上述种种原因,于是我们引进了LUN的概念,也就是说LUN ID的作用就是扩充了Target ID。每个Target下都可以有多个LUN Device,我们通常简称LUN Device为LUN,这样就可以说每个设备的描述就有原来的Target x变成Target x LUN y了,那么显而易见的,我们描述设备的能力增强了,同时也能对存储空间内的磁盘进行单独的管理。就好比,以前你给别人邮寄东西,写地址的时候,可以写:
xx市人民大街54号 xxx(收)
但是自从高楼大厦越来越多,你不得不这么写:
xx市人民大街54号xx大厦518室 xxx (收)
所以我们可以总结一下,LUN ID不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的LUN可能是磁盘空间,可能是磁带机,或者是media changer等等。 LUN就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方。
还要说明的地方是,在有些厂商和有些产品的概念里,LUN ID被绑定到了具体的Device上,比如IBM的一些带库,整个带库只有一个Target ID,然后changer,tape drive被分别分配为LUN0、LUN1、LUN2…,但是我们要注意到,这只是产品做了特别设计,也是少数情况。
存储和主机的LUN概念区别
在磁盘阵列和磁带库大行其道的时代,存储越来越智能化,越来越像一个独立的机器,实际上存储和主机的电气独立本来就是一个必然趋势,俗话说得好,儿大要分家嘛。在存储越来越重要的时代,存储要自立门户是必然的事。
如果我们把存储当作一个独立的主机来看,理解起来就很简单了。我们说到LUN的概念的时候,我们就要将分为两个层面。一个层面就是在阵列这个机器的OS识 别到的范围,另一个层面就是服务器的OS识别到的范围。这两个层面是相对独立的,因为如果我们把存储当作一个主机来看,那么它自然有自己的Device、 Target、LUN之说,而服务器也有自己的Device、Target、LUN之说;另外一方面,这两个层面又是相互关联的,一个阵列的控制系统,大 多都有虚拟化的功能,阵列想让主机看到什么样的东西,主机才能看到相应的东西。当然,服务器识别到的最小的存储资源,就是LUN级别的。那么主机的HBA 卡看到的存储上的存储资源就主要靠 两个东西来定位,一个就是存储系统的控制器(Target),一个就是LUN ID,这个LUN是由存储的控制系统给定的,是存储系统的某部分存储资源。
LUN masking,LUN mapping和Zone
我们有了独立的磁盘阵列用了之后,服务器只要看到存储的控制系统,就有可能使用 磁盘阵列的磁盘资源,但是磁盘阵列不可能只为某一个服务器来使用,所以它必须管制主机使用某部分磁盘资源。实现这种管制的主要技术有:LUN mapping,LUN masking和Zone。
LUN masking
LUN masking是指LUN与主机HBA卡的WWN地址绑定,与主机HBA卡建立一对一或多对一的连接和访问关系。无论主机跳线到同一个FABRIC(无 zone设置)的哪一个端口上,主机都能识别到相同的LUN。存储设备一般默认在卷和主机间建立多对一的对应关系,即一台主机可访问存储设备上的多个卷。
每块磁盘都在一个队列里,磁盘分区也能被分配成LUN。当多台计算机在同一时间访问同一磁盘时将会导致磁盘数据的混乱。如果你应用LUN masking,那么一个单独的RAID将被分到多个逻辑磁盘上,这些磁盘都分配给了指定的计算机。通过LUN masking,只有特定的LUN才能被特定的SCSI卡访问。不仅是SCSI接口的磁盘阵列,由于FC实际使用的也是SCSI协议,因此较新的FC磁盘 阵列也可有提供LUN masking功能。被划分完的LUN设备会属于一个Host Group中。同一Group中的FC卡,能访问这个Group中的LUN,而不能跨越Group访问指派给别的Group的LUN
逻辑单元数掩码(LUN masking)是以独立磁盘冗余阵列(RAID)为中心的,在一个端口掩码多个LUN的加强型方法。LUN masking在存储控制器级别上进行 主机HBA的WWN绑定,因此存储控制器能够将不同LUN划分给一个或多个主机,可以提供LUN级别的访问控制。
LUN masking也允许磁盘存储资源在多个独立服务器之间共享。单个的大容量RAID设备可以划分子模块,之后通过带LUN masking功能的SAN光纤通道连到RAID上的不同主机上,提供服务。所以,只有一个或者有限的服务器可以看到LUN (例如,磁盘薄片,部分,单元), 可对RAID设备中的每个LUN进行限制。
但并不是所有的RAID设备具有LUN masking能力,这样,为了设置LUN masking, 一些HBA厂商允许在驱动器级进行持久绑定(persistent binding)。
LUN Mapping
LUN Mapping是LUN与存储设备的主机端口进行绑定,工作站连接不同的主机端口时所能访问的LUN不同。
当一个存储系统同时为多个应用系统提供数据存储服务,且不同应用系统的主机分别处于不同的地理地址时,有可能用到第二种LUN Mapping方式。即将不同的LUN与不同的存储主机端口绑定,不同的主机端口与不同的FC交换机或者不同的ZONE连接,从而实现不同的工作站只能访 问不同的端口。
一个LUN Mapping中所对应的LUN和存储主机端口(WWPN)成为一个分区。由于存储设备的主机端口数量是一定的,如果划分的LUN Mapping分区越多,分区中存储主机端口就会越少。存储设备的冗余链路连接功能就越小,当一个分区里只能设置一个主机端口时,存储就失去了冗余链路连 接功能,整个系统极易因存储主机端口和交换机端口的故障而发生单点故障。 当系统无FC交换机,主机与存储设备的主机端口直连时,通过LUN Mapping实现起来LUN分区非常方便。当所有主机端口都连接到同一个FABRIC时,就需要与 FCswitch的ZONE结合起来一起使用,来实现数据通信的隔离。
不同厂商对LUN Masking和LUN Mapping的定义和解释不完全相同。有的甚至就定义成一个名称,如SAN SHARE,而有的存储干脆就没有LUN Masking和LUN Mapping功能。
ZONE
在早期的SAN方案中,服务器大多是同种操作系统,SAN环境下的安全性问题并不突出。但是现在的方案中,异种操作系统并存的需求比比皆是,多套磁盘阵列 子系统或具有多个主机接口的磁盘阵列子系统也很常见。为了保证SAN正常工作,不互相破坏数据。基于FC存储交换机层面的Zoning 分区划分,可以有效提供一种解决方案。这样服务器只能访问同一分区内的设备,提高设备访问的安全性.
很多用户将Zoning 分区和LIP 隔离混淆,认为Zoning 就是LIP 隔离,实际情况为两者是不同的概念。
当FC 存储交换机遵循FC-AL协议工作时,一般所有的设备之间协商AL_PA地址(或常说的Loop_ID),这个过程我们称为环路初始化(LIP)。SAN上有任何新的设备启动都会引起LIP,这时所有的机器停止工作进行地址协商,因此LIP会使系统中断工作.
当 FC存储交换机遵循FC-SW协议工作时,需要特殊的服务来确保SAN正常工作,与上面所说LIP相类似的一个服务就是RSCN。设备做完Fabric Login后会向交换机登记许多信息,当该设备关闭或重新启动时就会引起登记状态的改变,RSCN服务就是负责将登记状态改变信息通知SAN上的所有设 备。
可见,LIP和RSCN都对SAN的正常工作造成破坏,对于一些特殊关键应用甚至是致命的,如视频流应用和磁带库备份应用。根据FC-AL协议标准,LIP一般需要15毫秒,而遵循FC-SW 协议的RSCN根据实际的SAN环境的复杂程度,甚至影响正常通讯达数秒。
对于不具备LIP隔离功能的交换机,在解决RSCN 影响问题时,只能靠Zoning 分区的方法使一个分区的设备对其他分区的设备减轻冲击。但是,在视频流应用的实际测试效果来看,仍然对正常通讯的设备性能造成了较大的影响.
进行zone划分有两种方式:
1.基于端口的Hardware Zoning(硬件分区)划分,可以产生直观、清晰的逻辑划分,在实践中被大量使用。
2. Software Zoning(软件分区)方法,即基于WWN (World Wide Name) 进行分区。不过,软件分区在实际使用中较少使用.
FC SWITCH上的ZONE功能类似于以太网交换机上的VLAN功能,它是将连接在SAN网络中的设备(主机和存储),逻辑上划到为不同的区域内,使得不同区域中的设备相互间不能FC网络直接访问,从而实现网络中的设备之间的相互隔离。
Zoning分区可具有以下特点:
a. 分区可以重叠、同一设备可属于不同分区
b. 分区可以在设备运行时动态划分
c. 使不同的操作系统可以在一个SAN里共存
假设两台FC交换机通过级连线连接成一个fabric。红色区域的交换机端口属于ZONE 1,绿色区域属于zone 2,蓝色区域属于zone 3,橙色区域既属于zone 1又属于zone 3,白色为扩张端口区域,不需要定义zone。
在这两台FC交换机组成的fabric中,凡是红色区域zone 1中的设备之间都可以相互访问,但是不能访问绿色区域和蓝色区域中的设备,但可以访问橙色区域中的设备,因为橙色也属于zone 1。
蓝色区域与红色区域相似。
绿色区域zone 2中的设备之间只能可以相互访问,别的任何区域的设备。
橙色区域中的设备既可以访问红色区域中的设备,又可以访问蓝色区域中的设备,但不能访问绿色区域中的设备。
按照中方法,无论存储系统的结构有多么复杂,都可以通过画图的方式把LUN、存储设备主机端口,交换机端口和工作站之间的关系分析清楚。
LUN masking和Zone比较
由上文可以知道,LUN masking和zone的功能都是将特定的LUN划分给特定的主机来实现数据隔离,这两项技术的具体区别如下:
1、交换机里面那个隔离的功能叫Zoning,该功能能做一些隔离和访问限制, 但是是基于端口层次的。如果要把一个端口连接的多个LUN区别对待,Zoning就不行了,就得靠阵列控制器里面的Lun Masking功能了。例如,通过同一个端口连接的LUN需要分配给多个主机,那么就需要Lun Masking。
2、LUN masking是在存储控制器或者HBA卡上进行的,可以控制主机访问特定的LUN。Zone
发生在SAN中的交换机上,他将不同的存储正列和主机划归到不同的zone中。
3、 zone是通过交换机端口的强制物理的隔离masking是逻辑隔离,物理没有隔离。在多台服务器连一台或者多台存储用。存储设备有很多,主机不同应用有很多,OS有很多 时,zone能很好的隔离数据。 根据前文所述,LUN masking和只能 主机HBA卡建立一对一或多对一的连接和访问关系, 如果在一个LUN对应多台主机的共享存储架构中,则只能通过zone来实现。 LUN Masking的层面是逻辑的阵列内部,ZONE的层面除了一个设备以外,还有多个设备,而多个设备的情况下,显然这个存储的LUN Masking不能给另外一个存储用。 如果交换机未划分zone那么连接到该换机的主机将可任意访问连接到该交换机的LUN。同时在交换机上划分多个zone也可以有效防止当单个zone失效的时候,影响到其他zone! 因此当主机或者存储特别多的时候,zone就变得很有意义。
4、划分zone还一方面是 FC协议本身的问题,在出现意外的情况时,会产生RSCN公告,大量的RSCN时会影响到正常使用,影响NameServer的正常工作,和响应 Fabric Login,通过HardwareZone隔离设备是ZONE的功能之一。也正是因为这样,我们划分ZONE的原则是Single HBA ZONE。现在交换机都采用FC-SW协议了,以前老的loop协议的时候产生LIP,产生LIP会让数据中断。
参考至:http://baike.baidu.com/view/541220.htm
http://bbs.chinaunix.net/viewthread.php?tid=586064
http://club.techtarget.com.cn/showtopic-45530.aspx
http://www.loveunix.net/viewthread.php?tid=108984
http://bbs.chinaunix.net/thread-8937-1-1.html
http://space.doit.com.cn/18911/viewspace-1997.html
http://www.sanduel.com/SAN-Storage-FAQs/What-is-LUN-Masking.html
http://storagetrendz.blogspot.com/2008/06/lun-mapping-persistent-binding-lun.html
http://technet.microsoft.com/en-us/library/cc758640%28WS.10%29.aspx
http://searchstorage.techtarget.co.uk/answer/LUN-masking-or-LUN-zoning-Which-one-is-a-better-fit-for-a-SAN-fabric?ShortReg=1&mboxConv=searchStorageUK_RegActivate_Submit&
本文原创,转载请注明出处、作者
如有错误,欢迎指正