LUN是英文Logical Unit Number的缩写,指逻辑单元号。LUN ID的作用就是扩充了Target ID。每个Target下都可以有多个LUN Device,我们通常简称LUN Device为LUN。
概念释义
LUN的全称是Logical Unit Number,也就是逻辑单元号。我们知道
SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个,我们可以用Target ID(也有称为
SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就可以了。
SCSI(
小型计算机系统接口)是一个
并行接口,它可以通过一条电缆同时连接八个设备;电缆和主机(电脑)
适配器组成了SCSI总线。总线允许两个设备之间不通过主机直接交换数据。在SCSI程序中每个设备都分配了一个数字,其中8位(窄)带是0-7之间任意一个数,16位(宽)带是8-16位中任意一个数。这些设备申请输入输出操作,他们是驱动者,设备执行的这些操作是目标。每一个目标有通过设备自身的控制器连接八个附加设备的能力;这些设备是
逻辑单元,其中的每个都分配有用于识别SCSI控制命令过程的识别号。
而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了LUN的概念,也就是说LUN ID的作用就是扩充了Target ID。每个Target下都可以有多个LUN Device,我们通常简称LUN Device为LUN,这样就可以说每个设备的描述就由原来的Target x变成Target x LUN y了,那么显而易见的,我们描述设备的能力增强了。就好比,以前你给别人邮寄东西,写地址的时候,可以写:
但是自从高楼大厦越来越多,你不得不这么写:
xx市人民大街54号xx大厦518室 xxx (收)
所以我们可以总结一下,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…,但是我们要注意到,这只是产品做了特别设计,也是少数情况。
区别
还有很多新手总是把阵列里面的磁盘和主机的内部磁盘的一些概念搞混淆了。
在
磁盘阵列和
磁带库大行其道的时代,存储越来越智能化,越来越像一个独立的机器,实际上存储和主机的电气独立本来就是一个必然趋势,俗话说得好,儿大要分家嘛。在存储越来越重要的时代,存储要自立门户是必然的事。
如果我们把存储当作一个独立的主机来看,理解起来就很简单了。我们说到LUN的概念的时候,我们就要将分为两个层面。一个层面就是在阵列这个机器的OS识别到的范围,另一个层面就是服务器的OS识别到的范围。这两个层面是相对独立的,因为如果我们把存储当作一个主机来看,那么它自然有自己的Device、Target、LUN之说,而服务器也有自己的Device、Target、LUN之说;另外一方面,这两个层面又是相互关联的,一个阵列的控制系统,大多都有虚拟化的功能,阵列想让主机看到什么样的东西,主机才能看到相应的东西。当然,服务器识别到的最小的存储资源,就是LUN级别的。那么主机的HBA 卡看到的存储上的存储资源就靠主要两个东西来定位,一个就是
存储系统的控制器(Target),一个就是LUN ID,这个LUN是由存储的控制系统给定的,是存储系统的某部分存储资源。
磁盘管制
我们有了独立的
磁盘阵列用了之后,服务器只要看到存储的控制系统,就有可能使用磁盘阵列的磁盘资源,但是磁盘阵列不可能只为某一个服务器来使用,所以它必须管制主机使用某部分磁盘资源。这个管制分为两个部分:一部分就是LUN mapping,类似于绿色通道,就是保证服务器能看到某部分存储资源,一部分就是LUN masking,类似于警戒线,就是保证服务器只可访问给它分配的存储资源,而没分配给服务器的资源,就不要染指了。
实现LUN masking和LUN mapping有
三种方法:一个是基于存储控制系统来设置,一个是基于存储
交换系统来设置,一个是基于服务器OS来设置。
基于存储控制系统的设置,是比较常见的设置,比如很多
磁盘阵列的控制系统,本身就能设置LUN被某服务器看到。比如FastT的partition功能。
基于存储交换系统的设置,也是一种常用的方法,比如常说的zoning。
基于服务器OS的设置,比较少采用,一般采用安装某些操作系统上安装某些软件来实现,因为这个方法全靠服务器自觉,所以比较少用。
多访问
现在,存储网络越来越发达了,一个LUN有多条通路可以访问也不是新鲜事了。
服务器使用多个HBA连接到存储网络,存储网络又可能是由多个交换设备组成,而
存储系统又可能有多个控制器和链路,LUN到服务器的存储网络链路又可能存在着多条不同的逻辑链路。那么,必然的,同一个physical LUN在服务器上必然被识别为多个设备。因为OS区别设备无非用的是总线、Target ID、LUN ID来,只要号码不同,就认为是不同的设备。
由于上面的情况,多路径管理软件应运而生了,比如
emc的powerpath,这个软件的作用就是让操作系统知道那些操作系统识别到LUN实际上是一个真正的physical LUN,具体的做法,就是生成一个特别的设备文件,操作系统操作这个特殊的设备文件。而我们知道,设备文件+driver+firmware的一个作用, 就是告诉操作系统该怎么使用这个设备。那么就是说,多路径管理软件从driver和设备文件着手,告诉了操作系统怎么来处理这些身份复杂的LUN。
LUN
逻辑单元编号企业级磁盘阵列可容纳许许多多的处理器、主机端口、磁盘和缓存器件,其主要作用是为了给相连的服务器分配逻辑单元号(LUN)。服务器可以直接与
磁盘阵列连接在一起,也可以通过交换设备与之相连。磁盘阵列的LUN
掩码和交换设备的分区功能,都属于某种形式的安全保障屏蔽,用来控制服务器访问LUN的权限。一旦服务器与LUN连接上,就可以通过当前的
网络接口将
数据传输到磁盘阵列上。值得一提的是,典型的企业级磁盘阵列一般都可以支持多种
接口标准。
技巧
在我们的
IBMShark上,我可以在整个RAID集之上创建一个LUN,其在主机计算机上显示为一个磁盘,我还可以创建几个小的LUN并且在主机计算机上有几个磁盘。哪个做法更好?曾经有人告诉我,多个小的LUN要比一个大的LUN更好,因为多个小的LUN将允许更多的来自
操作系统(OS)的并发I / O。
多个较小的LUN的优点在于你可以把它们分散在许多阵列组并且使用
逻辑卷管理器(Logical Volume Manager,
LVM)来创建
卷组(串接或者
RAID 0)。这将会给后端带来最佳的潜在性能。不过,这不是LUN的大小的问题。这是向多个阵列组分布I/O的能力的问题。在Shark上,我建议一个阵列组在同一RAID 0卷组的LUN数量不超过4个。
多个小的LUN的缺点在于消耗了内部地址。如果LUN的大小为2 GB,那么无论你使用哪种大小的
物理磁盘,Shark的最大容量都是8 TB (4096 x 2 GB)。
前景
作为一个抽象的单元的存储LUN即
逻辑卷的概念应该摒弃,基于LUN的概念已经过时了。
Marks在专业网络媒体公司
TechTarget举办的存储决策会议上说,是时候基于
虚拟机(VM)来管理负载。虚拟机是因为应用的目的而存在的,而不仅仅像LUN那样仅为存储目的而存在”。在虚拟化环境中,随着集成和集群化的负载的增加,作为存储抽象单元的LUN已经不再满足应用的需求。
在使用备份功能,比如快照的情况下,这种转变尤为重要。在大的数据池中,采用基于虚拟机的方式远远比基于LUN进行快照的方式更加高效,因为基于虚拟机的快照恰好包含了一个有用的虚拟机。目的是提供应用级一致性的静默快照。用较有深度的技术观点来看vSphere快照性能很差。
展现形式
对于
块设备,LUN一般通过使用
光纤通道,
以太网光纤通道(
FCoE)或者
iSCSI等来呈现。光纤通道和FCoE通过使用特定的
主机总线适配器(HBA)或CNA(聚合
网络适配器),能够更容易的将主机
IP流量从
存储网络流量中隔离开来。但即使一个特定的存储网络可用,仍有一些重要的设计问题需要考虑。
首先,为保证存储的弹性和高性能,可以通过多个
光纤通道接口来提供LUN。我们把存储弹性作为给定的,因为这一般是存储
系统管理员的标准实践。就性能而言,多个HBA(或双口HBA)通过面向性能的分层技术允许
vSphere和
Hyper-V进行物理分段。