SCSI冗余路径软件的研究与实现
摘要:在主机系统和存储系统之间增加冗余SCSI路径,并在主机上运行SCSI路径管理软件,从而在SCSI路径之间实现负载均衡和故障切换。在多主机共享存储系统时,利用路径管理软件的屏蔽功能,可将逻辑单元唯一地分配给某一主机。讨论了在Windows NT系统下SCSI路径管理软件的原理和实现方法。
关键字:SCSI,设备驱动程序,冗余路径,负载均衡
1.引言
随着计算机对信息的处理能力的日益提高,对存储系统在存储容量,存取速度,可用性等方面的要求越来越高。目前,在存储系统中广泛使用了RAID(Redundant Array of Inexpensive Disk)技术,以提高数据的可靠性。即使在磁盘发生错误后,存储系统仍然能够工作,并且能够以新的磁盘来替换故障磁盘。
通常,每台主机只使用一块SCSI卡或光纤卡与RAID系统相连,一旦存储路径发生故障(如SCSI卡或光纤卡故障,光纤Hub故障,连线故障等),主机就不能继续访问存储系统,主机上运行的应用就会被中断。
为提高存储系统的的可用性,在RAID系统的基础上,采用冗余配置,在主机系统和存储系统中建立两条并行的连接。在软件方面,必须在操作系统的存储架构中增加一个设备驱动程序,完成负载均衡,故障切换,逻辑单元屏蔽的功能。
2.建立冗余路径
为防止主机系统失效,存储系统一般被连接于多台主机上,当某台主机失效后,其应用可由高可用(HA)软件或集群(Cluster)软件转移到其他主机上。
为进一步消除单点故障(Single Point of Failure),在存储系统中使用两个RAID控制器,每个RAID控制器连接到一个光纤Hub(或Switch),再连接到主机的光纤卡上。如图1所示。若使用SCSI连接,RAID控制器需直接连接到主机的SCSI卡上。两种连接方式都建立了从主机系统的冗余路径,并允许多台主机同时连接到存储系统上。
光纤卡,光纤Hub,光纤连接电缆(或SCSI卡,SCSI连接电缆)等失效时,由路径管理软件切换到另一条路径上。服务器失效时,由HA或Cluster软件切换其上运行的应用。
图1 存储系统光纤冗余连接
3. SCSI冗余路径模块的功能
在软件方面,还需要SCSI冗余路径模块(SCSI Path Management,简称SPM)。其主要功能为:故障路径切换(Path Failover),负载均衡(Load Balance),逻辑单元屏蔽(LUN Masking)。
3.1故障路径切换
SPM通过消除存储I/O路径上所有部件(如主机的HBA即主机总线适配器,控制器,HUB,电缆等)的单点故障,提高系统的可用性。主机通过多条I/O路径访问存储系统,一旦一条I/O路径出现故障,SPM会立即检测到相应故障,并将之后的I/O操作重新路由至其它正常路径上。重新路由I/O的过程仅需要几秒,对应用程序是透明的,应用程序不会受到路径故障的影响而终止运行。SPM对发生故障的路径持续监控,一旦发现其恢复正常,SPM会恢复该路径的I/O任务。
3.2 负载平衡并增加带宽
在主机与存储系统之间存在多条I/O路径时,为了避免某一存储路径成为系统的性能瓶颈,SPM将主机上的对该存储系统的所有I/O操作均衡地分配至这些路径上去,提供负载平衡能力。
通过同时利用多条并行数据路径,SPM能够有效地提高系统的数据传输带宽。在多台主机共享存储系统的配置中,可以加快I/O访问的操作,减小数据路径的瓶颈,从而增加整个系统的可用带宽。
3.3 逻辑单元屏蔽
在多台主机同时连接到一台存储系统时,SPM的逻辑单元屏蔽(LUN Masking)功能可以使得每台主机在存储系统上拥有其专属的部分,其他主机不能存储属于该主机的存储区域。因此,这些主机可以运行不同的操作系统,在其存储区域上使用不同的文件系统,而不受其他主机的影响。
图3表示多台主机共享连接存储系统的一个配置。图中NT主机使用的区域为LG0;Solaris主机使用LG1;Linux主机使用LG2。从操作系统角度,每台主机都可以看到所有的逻辑盘或逻辑卷。在物理连接上,每一个主机都可以访问到LG0,LG1和LG2。通过SPM软件的逻辑单元屏蔽功能,NT主机只能访问LG0,而不能访问到LG1和LG2;同样,Solaris主机只能访问LG1,而不能访问到LG0和LG2;Linux主机只能访问LG2,而不能访问到LG0和LG1。这种功能允许IT管理员将某个逻辑单元唯一地分配给某一台主机使用,而禁止其他主机访问这个逻辑单元,从而避免多个主机同时访问一个逻辑单元而造成数据冲突和丢失。
4. SPM在Windows NT环境下的实现
为使SPM的各项功能对应用程序透明,SPM需以设备驱动程序的形式实现。所有对存储系统的I/O操作须经由SPM驱动程序。
光纤连接与SCSI连接的区别只存在于硬件方面,在操作系统层次上,对二者的处理是相同的,在上层使用SCSI命令接口,由光纤卡的驱动程序对SCSI命令和数据进行转换。因此SPM对SCSI连接和光纤连接的处理是一致的,内部使用SCSI协议接口。
4.1 运行层次
在Windows NT操作系统下,SPM设计为一个过滤器驱动程序,它是一种特殊类型的中间驱动程序。在系统层次结构中,它位于文件系统驱动程序和磁盘驱动程序之间,来自于文件系统的I/O请求通过它再到下一层。SPM管理数据路径,通过控制和分配数据流量达到I/O负载均衡。将SPM驱动程序设置为filter类型的驱动程序,并