- 论坛徽章:
- 2
|
那位大侠给的回复如下:
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 |
|