open-iscsi注册为一个scsi host driver,我们需要了解scsi这部分设备扫描的原理,剖析了一下。
1、写在前面
Scsi总线在扫描磁盘设备后生成的盘符与设备通道之间的关系是不固定的,其最主要的原因是设计者考虑到scsi总线在系统中不会静态、唯一存在,会动态生成,而盘符空间在全局只有一个,因此,盘符与设备通道之间很难实现绑定,至少这种绑定关系会随着系统中scsi总线的增加而遭到破坏。所以,设计者采用了动态映射的方法维护盘符与设备通道之间的关系。
盘符与设备通道之间的动态映射会影响到存储设备的管理。例如,一个存储设备由于某种原因拆除了一个磁盘,重新启动之后,所有的盘符将会重新生成,从而会导致磁盘上层的存储软件无法正常启动,除非这些存储软件能够自动识别磁盘设备,然后进行重构。显而易见,盘符与设备通道之间的动态映射增加了存储设备管理的难度。
为了降低存储设备的管理难度,需要固定盘符与磁盘通道之间的映射关系。考虑到存储设备的硬件资源相对固定,所以,这种映射关系在理论上是可以固定的。为此,本文从Linux SCSI层磁盘扫描的角度对这个问题进行分析、总结。
2、磁盘扫描算法描述
通常SCSI总线适配器作为PCI设备的形式存在,其在计算机体系结构中的位置描述如下图所示: