LUN MASKING和LUN MAPPING的区别和作用

Abstract: SAN’s provide the infrastructure on which sophisticated storage solutions are built. One benefit is the ability to share a single large storage device across many servers or applications. To enable this the storage is typically carved into...显示全部
Abstract: SAN’s provide the infrastructure on which sophisticated storage solutions are built. One benefit is the ability to share a single large storage device across many servers or applications. To enable this the storage is typically carved into smaller pieces which are each assigned a SCSI logical unit number or LUN. Each LUN is then assigned to one or more servers as required by the configuration.
LUN masking is the ability to exclusively assign each LUN to one or more host connections. LUN Masking is used to assign appropriately sized pieces of storage from a common storage pool to various servers. It allows for large devices to be divided into more manageable pieces, it allows reasonably sized file systems to be built across many devices to improve performance
and reliability, and it is often times part of the fail-over process
when a component in the storage path fails.



在存储网络环境中,LUN Mapping与ZONE是两个较为重要的概念。在多业务系统中,存储上的LUN Mapping或LUN Masking要与FC SWITCH上的ZONE功能配合起来使用,目的是使用不同的主机只能访问到不同的卷。从而更方便的进行存储资源的管理与调配。

LUNMapping和LUNMasking是存储设备自身具有的功能,也需要在存储设备的管理设置软件或设置工具中来完成。由于这两个概念本身有一定的相通和相似的地方,因此有些用户对这两个概念的认识还有一些模糊混淆,有些用户甚至认为设置了LUN Mapping就可以不必再设置Zone,而实际上,这两个功能是相辅相成的。本文将剖析这两个概念的基本含义,并讲解在存储网络中这两个概念各自的应用。

    认识LUN Masking

LUN masking是指LUN与主机HBA卡的WWN地址绑定,与主机HBA卡建立一对一或多对一的连接和访问关系。无论主机跳线到同一个FABRIC(无 zone设置)的哪一个端口上,主机都能识别到相同的LUN。存储设备一般默认在卷和主机间建立多对一的对应关系,即一台主机可访问存储设备上的多个卷。

    在非共享的应用系统中,一般在卷和主机建立一(主机)对多(卷)的关系,不同业务类型的工作站分别访问不同的LUN。在共享式的应用系统中,一般采用多(主机)对一(卷)关系。

    LUN Mapping等于分区?

    LUN Mapping是LUN与存储设备的主机端口进行绑定,工作站连接不同的主机端口时所能访问的LUN不同。

当一个存储系统同时为多个应用系统提供数据存储服务,且不同应用系统的主机分别处于不同的地理地址时,有可能用到第二种LUN Mapping方式。即将不同的LUN与不同的存储主机端口绑定,不同的主机端口与不同的FC交换机或者不同的ZONE连接,从而实现不同的工作站只能访问不同的端口。

一个LUN Mapping中所对应的LUN和存储主机端口成为一个分区。由于存储设备的主机端口数量是一定的,如果划分的LUN Mapping分区越多,分区中存储主机端口就会越少。存储设备的冗余链路连接功能就越小,当一个分区里只能设置一个主机端口是,存储就失去了冗余链路连接功能,整个系统极易因存储主机端口和交换机端口的故障而发生单点故障。

    当系统无FC交换机,主机与存储设备的主机端口直连时,通过LUN Mapping实现起来LUN分区非常方便。当所有主机端口都连接到同一个FABRIC时,就需要与 FCswitch的ZONE结合起来一起使用。

    不同厂商对LUN Masking和LUN Mapping的定义和解释不完全相同。有的甚至就定义成一个名称,如SAN SHARE,而有的存储干脆就没有LUN Masking和LUN Mapping功能。

    ZONE在存储网络的应用

FC SWITCH上的ZONE功能类似于以太网交换机上的VLAN功能,它是将连接在SAN网络中的设备(主机和存储),逻辑上划到为不同的区域内,使得不同区域中的设备相互间不能FC网络直接访问,从而实现网络中的设备之间的相互隔离。

老菜鸟说给新菜鸟的存储基础知识
内容:存储和相关基础知识
范围:限opensystem和windows
版本:Version 0.1 build 20060904

有些新手总是在各式各样的概念里绕来绕去,弄的不亦乐乎。所以我就把我的一些理解写了下来,供您参考.我说的不局限于任何一种具体产品和厂家,也可能有些说法和某些厂家的说法不一样,但是我觉得应该算的上是本原的东西,有以不变应万变之功效,呵呵,见笑
1、关于HBA
HBA的全称为Host Bus Adapter,即主机总线适配器。
a、总线适配器是个什么东西呢?
我们首先要了解一下主机的结构,一台计算机内部多半由两条总线串在起来(当然实际情况会有不同,这里只讨论常见的,简单的情况),一条总线叫系统总线,一条叫I/O总线。系统总线上接了CPU,MEmory,cache什么的,I/O总线上接的就是外围设备,现如今最常见的就是PCI总线了。这两条总线之间用桥接的芯片或者说电路连接起来。举个形象的例子,就好比一个城市里,有两条主干道,一条属于行政区,一条属于商业区,中间有个环岛,将两条主干道连接到了一起,系统总线就好比行政区里的主干道,而I/O总线就好比商业区的主干道。系统总线和I/O总线的带宽的单位都是以Gbyte来记,但是显而易见的是,行政区的主干道和商业区的主干道相比的话,前者肯定更“核心”,更宽,更顺畅,设计的要求也高。
我们知道,在向公仆部门要求服务的时候,是要有一些接口的部门和程序的,而桥接芯片的作用就是连接和协调两条总线的工作的。
虽然I/O总线的速度和系统总线的带宽相比要低很多,但是好歹也是以G来计量的,而我们知道外围设备的速度,往往只有几百兆,甚至几十k而已,怎么协调工作呢?好比卖煎饼果子摊子不能直接戳到城市主干道上,怎么办?好办,在主干道边上开个2000平米的小吃城,把摊子都收进去好了。那么主机总线适配器的作用也就是这个,我们就是要把外设组织起来,连接到I/O总线上去!HBA就是指Host和I/O BUS直接的一个适配器,也好比一个水管工常说的“双通”。
b、常见的HBA有哪些呢?
比如显卡,网卡,scsi卡,1394卡等等。我要拿出来说的就是FCHBA和ATA&IDE。我们通常说的什么Emulex的LP9002,什么Qlogic的QLA2340都是FCHBA卡,就是将Fibre Channel的设备和IO总线连接起来的适配器。ATA也是一种适配器技术,我们PC主板上的ATA接口,就是一个磁盘适配器的对外接口,要强调的就是,ATA说的是适配器技术,IDE是说得存储外设技术,比如我们可以说IDE硬盘,IDE光驱,说ATA接口,但是说IDE接口,ATA硬盘就不时那么合适了,虽然很多情况下,大家都习惯把他们混在一起说。
描述HBA的时候,有几个主要的规范要说一下
  > 一个承上,就是说,HBA和IOBUS怎么连,我们经常说的PCI接口卡,就是指这个HBA卡是要插在PCI BUS上的PCI slot上的,但是现在的计算机上,不仅仅只有PCI总线而已,大家碰到的时候留意。
  >一个启下,就是说HBA要和外设怎么连,这样的规范就很多了。
  >再说HBA本身,比如带宽,比如运行机制(protocol等),独立处理能力等等
Tips:有时候我们看到的一块卡,看到的实际是一个物理的卡,有的时候实际上是多个Adapter,好比一家机构,挂多个牌子,有的时候,一块卡有两条通道,好比一家公司,有两套人马。

2、关于lun

a、lun的概念
   lun的全称是logical unit number,也就是逻辑单元号。我们知道scsi总线上可挂接的设备数量是有限的,一般为6个或者15个,我们可以用target ID(也有称为scsi id的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了。
   而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了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就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方.
b、lun是什么东西?
   lun id不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的lun可能是磁盘空间,可能是磁带机,或者是media changer等等.
   lun的神秘之处(相对于一些新手来说)在于,它很多时候不是什么可见的实体,而是一些虚拟的对象。比如一个阵列柜,主机那边看作是一个target device,那为了某些特殊需要,我们要将磁盘阵列柜的磁盘空间划分成若干个小的单元给主机来用,于是就产生了一些什么逻辑驱动器的说法,也就是比 target device级别更低的逻辑对象,我们习惯于把这些更小的磁盘资源称之为lun0,lun1,lun2....什么的。而操作系统的机制使然,操作系统识别的最小存储对象级别就是lun device,这是一个逻辑对象,所以很多时候被称之为logical device。
   有人说,我的windows里,就认到一个磁盘呀,没看到什么lun的说法,是不是lun=physical disk呢?回答是否定的,只要你注意,磁盘的属性里就可以看到有一个lun的值,只是因为你的disk没有被划分为多个存储资源对象,而将整个磁盘当作一个lun来用,lun id默认为零,如此而已。
   我们曾经碰到过这样的问题,比如有人问,我们有一个磁盘阵列,连到了两个主机上,我们划分了一个lun给两个主机认到,然后我们想,先在操作系统将磁盘分为两个区,让两个主机分别使用两个分区,然后再出现某一台主机宕机之后,使用集群软件将该分区切换到另外一个主机上去,这样可行吗?答案也是否定的,集群软件操作的磁盘单元是lun,而不是分区,所以该操作是不可行的。当然,在一些环境,一般也是一些要求比较低的环境,可以在多个主机上挂载不同的磁盘分区,但是这种情况下,实际上是没有涉及到磁盘的切换的,所以在一些高要求的环境里,这种情况根本就不允许存在。
   还要说明的地方是,在有些厂商和有些产品的概念里,lun id被绑定到了具体的device上,比如ibm的一些带库,整个带库只有一个target id,然后changer,tape drive被分别分配为lun0,lun1,lun2.....,但是我们要注意到,这只是产品做了特别设计,也是少数情况。
c、存储和主机的电气独立时代的lun的概念
还有很多新手总是把阵列里面的磁盘和主机的内部磁盘的一些概念搞混淆了。
在磁盘阵列和磁带库大行其道的时代,存储越来越智能化,越来越像一个独立的机器,实际上存储和主机的电气独立本来就是一个必然趋势,俗话说得好,儿大要分家嘛。在存储越来越重要的时代,存储要自立门户是必然的事。
如果我们把存储当作一个独立的主机来看,理解起来就很简单了。我们说到lun的概念的时候,我们就要将分为两个层面。一个层面就是在阵列这个机器的os识别到的范围,一个层面就是服务器的os识别到的范围。这两个层面是相对独立的,因为如果我们把存储当作一个主机来看,那么它自然有自己的device, target,lun之说,而服务器也有自己的device,target,lun之说;另外一方面,这两个层面又是相互关联的,一个阵列的控制系统,大多都有虚拟化的功能,阵列想让主机看到什么样的东西,主机才能看到相应的东西。当然,服务器识别到的最小的存储资源,就是lun级别的。那么主机的HBA 卡看到的存储上的存储资源就靠主要两个东西来定位,一个就是存储系统的控制器(target),一个就是lun id,这个lun是由存储的控制系统给定的,是存储系统的某部分存储资源。
d、lun masking,lun mapping
我们有了独立的磁盘阵列用了之后,服务器只要看到存储的控制系统,就有可能使用磁盘阵列的磁盘资源,但是磁盘阵列不可能只为某一个服务器来使用,所以他必须管制主机使用某部分磁盘资源。这个管制分为两个部分:一部分就是lun mapping,类似于绿色通道,就是保证服务器能看到某部分存储资源,一部分就是lun masking,类似于警戒线,就是保证服务器只可访问给它分配的存储资源,而没分配给服务器的资源,就不要染指了。
实现lun masking和lun mapping有三种方法:一个是基于存储控制系统来设置,一个是基于存储交换系统来设置,一个是基于服务器os来设置。
基于存储控制系统得设置,是比较常见的设置,比如很多磁盘阵列的控制系统,本身就能设置lun被某服务器看到。比如FastT的partition功能。
基于存储交换系统的设置,也是一种常用的方法,比如常说的zoning。
基于服务器os的设置,比较少采用,一般采用安装某些操作系统上安装某些软件来实现,因为这个方法全靠服务器自觉,所以比较少用,呵呵。
e、lun的multi-path
现在,存储网络越来越发达了,一个lun有多条通路可以访问也不是新鲜事了。
服务器使用多个HBA连接到存储网络,存储网络又可能是由多个交换设备组成,而存储系统又可能有多个控制器和链路,lun到服务器的存储网络链路又可能存在着多条不同的逻辑链路。那么,必然的,同一个physical lun在服务器上必然被识别为多个设备。因为os区别设备无非用的是总线,target id,lun id来,只要号码不同,就认为是不同的设备。
由于上面的情况,多路径管理软件应运而生了,比如emc的powerpath,这个软件的作用就是让操作系统知道那些操作系统识别到lun实际上是一个真正的physical lun,具体的做法,就是生成一个特别的设备文件,操作系统操作这个特殊的设备文件。而我们知道,设备文件+driver+firmware的一个作用,就是告诉操作系统该怎么使用这个设备。那么就是说,多路径管理软件从driver和设备文件着手,告诉了操作系统怎么来处理这些身份复杂的lun。
收起
参与7

查看其它 6 个回答cookie5354的回答

cookie5354cookie5354系统工程师wust
这个基础知识很受用!
互联网服务 · 2013-03-24
浏览1781

回答者

cookie5354
系统工程师wust

cookie5354 最近回答过的问题

回答状态

  • 发布时间:2013-03-24
  • 关注会员:0 人
  • 回答浏览:1781
  • X社区推广