Chinaunix

标题: Lun id, scsi id, device id, unit serial number之间的关系 [打印本页]

作者: xiegang112    时间: 2009-01-19 16:23
标题: Lun id, scsi id, device id, unit serial number之间的关系
哪位兄弟能解释一下Lun id, scsi id, device id, unit serial number之间的关系?
谢谢
作者: cncqpansky    时间: 2009-01-19 23:54
A device ID is a vendor-defined identification string that is the most specific ID that Setup uses to match a device to an INF file. A device has only one device ID. A device ID has the same format as a hardware ID. If an enumerator reports a list of hardware IDs for a device, the device ID should be the first hardware ID in the list.
作者: cncqpansky    时间: 2009-01-19 23:56
SCSI ID numbers identify devices on the SCSI chain.

SCSI ID 7 is usually special because the Apple SCSI and Hi-Speed SCSI
cards count as a device set to ID 7 by default (and every Macintosh has a hard-
wired SCSI ID of 7).
作者: cncqpansky    时间: 2009-01-19 23:58
LUN ID指的是划分给主机端操作系统的磁盘空间实体的识别ID
作者: cncqpansky    时间: 2009-01-20 00:01
Unit Serial Number应该是指的是你的整个磁柜笼子的产品序列号...(这个我不确定是否正确, 等论坛的大虾们指正)

不知道这样明白没有, 一个UNIT SERIAL NUMBER笼子里面的不同device id的磁盘划分出不同的LUN (ID)通过SCSI设备的ID号码被主机识别

[ 本帖最后由 cncqpansky 于 2009-1-20 00:04 编辑 ]
作者: cncqpansky    时间: 2009-01-20 00:05
我觉得楼主肯定是在啥地方看到资料混淆了, 方便的话把资料文字段落贴上来大家一起看看更好理解
作者: xiegang112    时间: 2009-01-20 11:02
谢谢楼上的解释。不过它们之间的关系我还是不是很明白。device identifier 和unit serial number都是在scsi3规范sam-3中定义的。它们是inquery命令page 83,page80的查询结果。  
其实我想搞清这些定义的关系是因为我遇到了一下问题:
我有一个server,上面运行了多路径软件。它连接了一台阵列,比如ams。现在我分配两个lun:lun11和lun12.然后把这两个lun映射给server。映射的lun id分别为lun 0,lun 1. 此时,多路径软件为这两个lun创建多路径设备。
然后,我把这两个lun重新映射。把lun11 映射成lun 1,lun12映射成lun 0,让它们交换。
通过以上这些操作,多路径软件能自动识别其lun的变化。不知道它是怎么利用device identifier和unit serial number来实现的,主要有以下问题:

1.多路径软件必须通过lun的唯一标示来确定某一个lun。但我们阵列上的lun,其实都是经过某种程度的虚拟化后,再暴露给用户的( lun mapping)。这就会造成,整列控制器在响应scsi inquery命令的时候是如何处理这个标识符的?因为就像上面的例子,我可以把不同的lun map到同一个lun id。
2.针对上面的例子,我所提到那些概念,比如device identifier,unit serial numbers是什么时候产生的?各自所属的对象是什么。
我的理解是:
1.创建一个lun时,分配device identifier。因为创建lun相当与分配一个虚拟设备,是相对物理的操作。这个时候,为其分配device identifier,唯一标示该“物理”设备。
2.lun mapping。根据scsi 协议,需要建立一个TL联结才能实现通信。scsi 是通过lun id(当然还需要cannel,target的信息)来定位某一个lun。因此,之前阵列中划分的lun,需要分配一个lun id,才能被外界访问。lun mapping就是把具体的lun和lun id绑定,这个mapping关系由阵列维护。
3.多路径的聚合。多路径软件通过查询设备的device identifier来确定某一个设备的不同路径。
4.在把lun做remapping后,比如例子中把论交换后。由于多路径软件有device identifier信息。所以他仍然能正确处理lun的多路径。

另外,之所以提到unit serial number。是因为scsi_id程序在查询device identifier不成功时,可能会返回unit serial number。通过unit serial number 来标示一个lun。而多路径软件,比如redhat的device mapper multipath tool会利用外部程序(一般是scsi_id程序),来获得lun的标识符。以此来实现路径的聚合。如果说unit serial number是一个closure的序列号。那么它又怎么标示一个lun呢? 并且在sam-3中提到This page (unit serial number) provides a product serial number for the target or logical unit.这句话该怎么理解呢?
谢谢

[ 本帖最后由 xiegang112 于 2009-1-20 11:34 编辑 ]
作者: deadwind    时间: 2009-01-20 14:57
换言之

lz的意思是device identifier如同以太网的MAC地址,而lun id如同以太网的IP地址
作者: 冬瓜头    时间: 2009-01-20 15:10
楼主的研究已经到了协议层次了,表面解释不能满足楼主需求,需要一位做过盘阵底层研发的人员来解释。我认识一位,可以给你问问。
作者: xiegang112    时间: 2009-01-20 15:34
标题: 回复 #9 冬瓜头 的帖子
呵呵,谢谢冬瓜头。
我在ams做了lun的remapping 测试:
bash-3.00# lscfg -vl hdisk232
  hdisk232         U787B.001.DNWG61D-P1-C1-T2-W50060E801002E1D7-L0  Other FC SCSI Disk Drive

        Manufacturer................HITACHI
        Machine Type and Model......DF600F
        Part Number.................
        ROS Level and ID............30303030
        Serial Number...............77011805
        EC Level....................
        FRU Number..................
        Device Specific.(Z0)........00000312B3001102
        Device Specific.(Z1)........0048
        Device Specific.(Z2).........
        Device Specific.(Z3).........
        Device Specific.(Z4).........l..
        Device Specific.(Z5)........
        Device Specific.(Z6)........
发现U787B.001.DNWG61D-P1-C1-T2-W50060E801002E1D7-L0中最后的L0和map后的lun id对应。而Device Specific.(Z1)........0048中的048和lun的实际id对应。不知道这些id分别从scsi的那个命令来的。

[ 本帖最后由 xiegang112 于 2009-1-20 15:35 编辑 ]
作者: xiegang112    时间: 2009-01-20 15:56
标题: 回复 #8 deadwind 的帖子
感觉上有点类似ip与mac的关系,但是不太确定。因为在iscsitarget程序中,scsi id和scsi serial number是可以自己指定的。现在还不明白它们之间的关系。这儿是否存在一种寻址关系还不确定。iscsitarget配置文件中配置的scsi id,实际上就是scsi inquery命令中的device identifier。不知道它和我们通常所说的,用于scsi 寻址的scsi id有什么联系。因为在直连的scsi 总线设备中,scsi id由连接顺序确定,它决定了选择阶段哪个设备被选择,感觉上有个寻址的作用。但device identifier视乎没有这个作用,这个已经是scsi 命令阶段的内容了。但是很多文档,把device idenfier叫做scsi id。比如在一篇scsi overview的文档上就是这样定义scsi identifier的:
SCSI Identifier represents either an initiator port or a target port identifier. Also
called device identifier and port identifier. Note that other standards define the value
of SCSI identifiers. For example, SPI-2 defines target identifiers to be in the range
0-7, 0-15, and 0-31.
这个定义明显和sam-3的中的device identifier的定义不符。所以现在很困惑,希望兄弟们指点一下。
谢谢
作者: 冬瓜头    时间: 2009-01-21 11:28
那位大侠给的回复如下:


1.        多路径软件必须通过lun的唯一标示来确定某一个lun。但我们阵列上的lun,其实都是经过某种程度的虚拟化后,再暴露给用户的( lun mapping)。这就会造成,整列控制器在响应scsi inquery命令的时候是如何处理这个标识符的?因为就像上面的例子,我可以把不同的lun map到同一个lun id。

回答: raid 这一端如何实现lun mapping, host才不会管,对host来说一个lun 就是一个disk device. 这个lun 他有一个serial number, 而且是world wide unique的。这就是标示。但是由于lun serial number是在vpd page 80h获取的,而且根据scsi标准,vpd page 80h是optional的,不一定会有。所以一般是找device id的信息,因为device id是在vpd page 83h里的,而且是mandatory的。在实际上,vpd page 80h的实现已经成为事实上的业界比标准。所以device id + serial number成为一个混合标示。

另外,vpd page 80h里的logical Unit serial number 指的就是lun 的serial number, 不是enclosure的serial number. Logical unit 才是 真正对的叫法,但是被无数人误叫成LUN. LUN是LU’s number.



2.针对上面的例子,我所提到那些概念,比如device identifier,unit serial numbers是什么时候产生的?各自所属的对象是什么。


回答: LU serial number 是在lun 在raid里被生成的时候创建的,不管有没有被map。 就算是没有map,这个lun 也有serial number.
Device id 的话,有点复杂。虽然说vpd page 83h是强制的,但是里面有许多designator是可以有vendor 决定是否实现的,而且每个designator的内容和赋值没有硬性规定,比如designator logical unit names, 你也可以把serial number的值赋给logical unit name,也可以另外再搞一个。另外还有别的信息如relative port, port group等等, raid 可以通过这个报告这个lun是通过那个raid上的host port map到server 端的。这些东西是否实现和如何实现(和硬件有关),要有原厂的scsi external spec, 否则你无法知道他的数据的意思。更何况vpd page 83h里还有vendor自己可以定义的designator.

Device id应该是在lun 被map到host port的时候生成的。如果raid 在vpd 83h里支持port information的话,那么每次mapping改动时应该device id也会跟着变(如果mapping 的raid host port也变的话)。

引申一下,在iSCSI中,不同的host port会有不同的IP, 这时候,raid也可以选择在device id中报告网段,mask等等其他和网络有关的信息。(至于是不是这么做看厂家了)。




其他

建议搞到厂家的SPEC, 然后使用sg3_util, 看看原始设备(sg device), 使用sg_inq命令拿vpd pages, 对照scsi 协议和厂家的spec




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2