1概念

LUN的全称是Logical Unit Number,也就是逻辑单元号。我们知道SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个,我们可以用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就可以了。

而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了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就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方。

2介绍

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…,但是我们要注意到,这只是产品做了特别设计,也是少数情况。

3区别

还有很多新手总是把阵列里面的磁盘和主机的内部磁盘的一些概念搞混淆了。

磁盘阵列磁带库大行其道的时代,存储越来越智能化,越来越像一个独立的机器,实际上存储和主机的电气独立本来就是一个必然趋势,俗话说得好,儿大要分家嘛。在存储越来越重要的时代,存储要自立门户是必然的事。

如果我们把存储当作一个独立的主机来看,理解起来就很简单了。我们说到LUN的概念的时候,我们就要将分为两个层面。一个层面就是在阵列这个机器的OS识别到的范围,另一个层面就是服务器的OS识别到的范围。这两个层面是相对独立的,因为如果我们把存储当作一个主机来看,那么它自然有自己的Device、Target、LUN之说,而服务器也有自己的Device、Target、LUN之说;另外一方面,这两个层面又是相互关联的,一个阵列的控制系统,大多都有虚拟化的功能,阵列想让主机看到什么样的东西,主机才能看到相应的东西。当然,服务器识别到的最小的存储资源,就是LUN级别的。那么主机的HBA 卡看到的存储上的存储资源就靠主要两个东西来定位,一个就是存储系统的控制器(Target),一个就是LUN ID,这个LUN是由存储的控制系统给定的,是存储系统的某部分存储资源。

4磁盘管制

我们有了独立的磁盘阵列用了之后,服务器只要看到存储的控制系统,就有可能使用磁盘阵列的磁盘资源,但是磁盘阵列不可能只为某一个服务器来使用,所以它必须管制主机使用某部分磁盘资源。这个管制分为两个部分:一部分就是LUN mapping,类似于绿色通道,就是保证服务器能看到某部分存储资源,一部分就是LUN masking,类似于警戒线,就是保证服务器只可访问给它分配的存储资源,而没分配给服务器的资源,就不要染指了。

实现LUN masking和LUN mapping有三种方法:一个是基于存储控制系统来设置,一个是基于存储交换系统来设置,一个是基于服务器OS来设置。

基于存储控制系统的设置,是比较常见的设置,比如很多磁盘阵列的控制系统,本身就能设置LUN被某服务器看到。比如FastT的partition功能。

基于存储交换系统的设置,也是一种常用的方法,比如常说的zoning。

基于服务器OS的设置,比较少采用,一般采用安装某些操作系统上安装某些软件来实现,因为这个方法全靠服务器自觉,所以比较少用,呵呵。

5多访问

现在,存储网络越来越发达了,一个LUN有多条通路可以访问也不是新鲜事了。

服务器使用多个HBA连接到存储网络,存储网络又可能是由多个交换设备组成,而存储系统又可能有多个控制器和链路,LUN到服务器的存储网络链路又可能存在着多条不同的逻辑链路。那么,必然的,同一个physical LUN在服务器上必然被识别为多个设备。因为OS区别设备无非用的是总线、Target ID、LUN ID来,只要号码不同,就认为是不同的设备。

由于上面的情况,多路径管理软件应运而生了,比如emc的powerpath,这个软件的作用就是让操作系统知道那些操作系统识别到LUN实际上是一个真正的physical LUN,具体的做法,就是生成一个特别的设备文件,操作系统操作这个特殊的设备文件。而我们知道,设备文件+driver+firmware的一个作用, 就是告诉操作系统该怎么使用这个设备。那么就是说,多路径管理软件从driver和设备文件着手,告诉了操作系统怎么来处理这些身份复杂的LUN。

LUN 逻辑单元编号企业级磁盘阵列可容纳许许多多的处理器、主机端口、磁盘和缓存器件,其主要作用是为了给相连的服务器分配逻辑单元号(LUN)。服务器可以直接与磁盘阵列连接在一起,也可以通过交换设备与之相连。磁盘阵列的LUN掩码和交换设备的分区功能,都属于某种形式的安全保障屏蔽,用来控制服务器访问LUN的权限。一旦服务器与LUN连接上,就可以通过当前的网络接口将数据传输到磁盘阵列上。值得一提的是,典型的企业级磁盘阵列一般都可以支持多种接口标准。

LUN的更多相关文章

  1. linux添加新LUN,无需重启

    linux添加新LUN,无需重启 在给存储增加新的Lun时,在linux下一般是: A.重启操作系统B.重启HBA卡驱动 1. kudzu添加完新硬盘后,运行命令kudzu重新扫描新的硬件设备,类似a ...

  2. LUN/PV/VG/LV

    存储中的几个概念,参考一些网络资料重新画个图梳理下,如下: LUN:lun是针对存储设备(如磁盘阵列)的逻辑概念,物理上可能就是几块硬盘.那么主机的HBA 卡看到的存储上的存储资源就靠主要两个东西定位 ...

  3. LINUX系统下添加映射存储LUN

    LINUX系统下添加映射存储LUN(无需重启) 背景:Oracle rac环境 添加新实例,重新划分存储空间,从存储映射新的LUN. 问题:映射后,linux操作系统无法识别新的LUN,不能重启系统, ...

  4. Add LUN to ASM in Linux

    # Create new LUN for Linux in the AMS2100 # echo "- - -" >/sys/class/scsi_host/host3/sc ...

  5. LUN 和 LVM 知识

    LUN是对存储设备而言的,volume是对主机而言的. lun是指硬件层分出的逻辑盘,如raid卡可以将做好的400G的raid5再分成若干个逻辑盘,以便于使用,每一个逻辑盘对应一个lun号,OS层仍 ...

  6. 存储的一些基本概念(HBA,LUN)

    有些新手总是在各式各样的概念里绕来绕去,弄的不亦乐乎.所以我就把我的一些理解写了下来,供您参考.我说的不局限于任何一种具体产品和厂家,也可能有些说法和某些厂家的说法不一样,但是我觉得应该算的上是本原的 ...

  7. 存储的几个LUN问题

    存储的几个LUN问题 . ---整理自EMC论坛 1. Linux中如何识别LUN?(AIX是否也差不多) 当创建好LUN并建好storage group后,主机(linux)可以直接用fdisk - ...

  8. SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功

    [用户单位] 中国联通某分公司[数据恢复故障描述]    SUN 光纤存储系统,中心存储为6枚300G硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的服务器上,服务器上运行SUN SOLAR ...

  9. 词根:lun = moon, 表示“月亮”

    词根:lun = moon, 表示“月亮” lunar [lun月亮,-ar形容词后缀,…的] 月亮的,太阴的,似月的,新月形的 semilunar [semi-半,lun月亮,-ar形容词后缀,…的 ...

  10. Zoning and LUN Masking

    In a SAN ( Storage Area Network ), if all the hosts are allowed to access all the drives in the SAN, ...

随机推荐

  1. 十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)远程的监控工具连接到本地的JVM执行命令

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  2. DSL与编译原理

    DSL:领域语言 类似于SQL的一种语言,比如自创一种语言,如何解析 可以自己实现类似于一种语言: 比如hibernate里面的sql解析就使用ANTLR 比如:http://hellojinjie. ...

  3. 20165233 Java第五、六章学习总结

    20165233 2017-2018-2 <Java程序设计>第四周学习总结 教材学习内容总结 ch05 子类与父类以及子类的继承性 一个子类只能有一个父类 使用extends关键字定义子 ...

  4. django-DIL模板自定义过滤器,自定义标签,自定义包含标签

    自定义过滤器 DTL模板语言生来只是为了方便的展示信息,所以与编程语言相比显得有点薄弱,有时候不能满足我们的需求.因此django提供了一个接口,让开发者能自定义标签和过滤器. 首先,你需要添加一个t ...

  5. selenium webdriver——JS滚动到最底部

    JS控制滚动条的位置: window.scrollTo(x,y); 竖向滚动条置顶 window.scrollTo(0,0); 竖向滚动条置底 window.scrollTo(0,document.b ...

  6. GridView弹出对话框

    if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) ...

  7. Unix高级编程Note2

    [Unix Note2] 1.信号屏蔽 2.信号不会排队,即产生同时产生10次,会被合并为1次. 3.sigsuspend,sigsuspend后,进程就挂在那里,等待着开放的信号的唤醒.系统在接收到 ...

  8. 24.Swap Nodes in Pairs (List; Two-Pointers)

    Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...

  9. 岛屿的个数12 · Number of Islands12

    [抄题]: 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. [ [1, 1, 0, 0, 0], [0, 1, 0, 0 ...

  10. 1-求组合数(c(n, m))的几种方法

    1.求C(n, m) 动态规划(递归+记忆数组) 递推关系为:C(n, m) = C(n-1, m) + C(n - 1, m - 1),C(n, m)表示为从n个数中选出m个出来,可以基于最后一个元 ...