- 论坛徽章:
- 0
|
谢谢楼上的解释。不过它们之间的关系我还是不是很明白。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 编辑 ] |
|