您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页SCSI

SCSI

来源:叨叨游戏网
维普资讯 http://www.cqvip.com

SCSI冗余路径驱动程序在Windows NT 下的设计和实现 张雷兰谭毓安 (北京理I大学计算机科学与工程系,北京100081) E—nmil:victartan@btamail.net.en 摘要该文研觅了在NT系统中RDP设备驱动程序的设计原理和实现方法 RDP驱动程序通过对磁盘I/O请求的挂 接和处理,实现故障切换和负载均衡。在路径发生故障时RDP驱动程序将1/0切换到其它路径,吼增加系统的可用性。 通过将I/0负栽均衡分布在各SCSI路径, 增加系统数据吞吐能力。 关键词 负栽均衡SCS1 Windows N1 设备驱动程序 文章编号1002—8331-(2002)11-0141-02 文献标识码A 中图分类号TP302.8 The Design and Implementation of RDP Device Driver for Windows NT Zhang Xuelan Tan Yu’an (Department of Computer Science and Engineering,Beijing Institute of Technology,Beijing 100081) Abstract: uhilize redundant SCSI paths between the hod and storage system.the kernel driver described in the paper cal3 switch l/O to the survival path in cane of path failure.It also dispatch the I/O to multiple paths to increase the throughput system. Keywords:fault tolerance,SC s】 Windews NT device driver 存储设备在性能、叮靠性和扩展性 而的要求越来越高。 高端的存储系统都采用RAID技术实现数据的冗余存储 在开 放系统领域,主要的1/0技术是SC s1 1/o路径是在主机和存 储设备之间的数据传输路径 如粜只有 条I/0路径 若该路 径上的任一部件(丘Ⅱ主机SCS1 或光纤乍、连接电缆等)发生 故障,主机即不能访问存储系统中的数据 与存储系统本身具 备的高可靠性相此 该I/0路径是系统中的单点故障 为避免I/0路径的单点故障,在主机和存储设备之问需要 建立两条甚至更多的I/0路径。当条路径发生故障时,使用 其它路径继续访问数据,即故障切换功能 在正常情况下,将l/ O分发到所有存储路径E 提高系统的吞吐量和数据处理能 力,即负载均衡功能 为实现故障切换和负载均衡,在系统内核 中需运行RDP(Redundant Data Path)设备驱动程序。RDP驱 围1 SCSI冗案路径 2中间驱动程序 将RDP设备驱动程序设计为中间驱动程序。在系统层次 结构中 它位于文件系统驱动程序和磁盘驱动程序之间,文件 系统驱动程序或其它上层程序的I/O请求都通过RDP驱动程 序,再转发到下层的磁盘驱动程序t”,如图2所示。 动程序在路径故障时将I/0丹发到不同的路径上 在路径故障 时将I/0转移副其它路径, 匝翼口 匦蛔蘸  蘸叵 围2 RDP分层结构 1冗余路径的物理拓扑 SCSI冗余路径如图1所示 在主机更多的SCSI接口忙 在存储设备方,需要安装两个或 方,采用图示的RAID系  部分,不论底层硬件类型如 统 I D是逻辑磁盘 由若干物理磁盘组合而成,可设置不同的 RAID级别实现数据冗余存储。逻辑磁盘可映射到 个或多个 主机通道的<Target.Lun>上 Target和Lun可根据需要进行 设置。 磷盘驱动程序是操作系统的何,它都向上层提供个标准的接口。采用分层结构可以避免 作者简介:张雪兰,女.1954年生 副教授,主要研究方向为计算机仿真 高可用系统等。谭毓安,男 I972年生 博士生 讲师,主要研究方向为计算 机安生技术 计算机工程与应用2002,1 1 141 维普资讯 http://www.cqvip.com

RDP驱动程序直接操作硬件,从而简化了RDP驱动程序的蹬 计,并且可以支持不同种类的磁盘和HBA接口卡 NT系统的磁盘设备名的格式为 、Device ̄larddiskX ̄arti— ti0n0 ,其中“x”代表磁盘号,从0开始编号 每一个磁盘殴备 现负载均衡。利用多条1/{2'路径同时进行数据传输,可提高系 统的数据存取速度。 RDP实现了三种负载均衡算法,以适应不同的应用需求。 4.1轮流分配 算法l轮流分配1/0到各路径,每次接收到1/O请求时, 都会切换路径。这种算法适合于主要以随机数据存取为主的应 用场合,因其算法简单,开销极小 设Ⅱ为路径总数,path的范 围为(0,1, 一1).其路径path的计算方法为: . 都有其SCSI地址,包括c、b t和d四个部分。c表示主机SCSI 卡的编号,b表示SCSI卡巾总线的编号(一般为O).t和d分别 表示该设备在SCS1总线上的Target和Lun编号 对于磁盘分 区,其设备名格式为 \Device\HarddiskXWartitionY .其中“x”代 表磁盘号,“Y 代表分区号,分区从I开始编号 逻辑盘符(如 C:,D:)即对应于一个磁盘分区。 atph+l; 若0≤path≤Ⅱ一2 0; 若path=n-2 ‘ 对于连接到多条sCs】路衽上的磁盘,对于每一条路径. NT系统都创建一个碰盘设备与之对应,斟此,该磁盘在系统中 有多个设备名,其磁盘号和SCS1地址不同 对图1所示的LD. 其SCSI地址为c1bOtldO和c2b0t2d0。对于该磷盘上的分 . 4.2连续区域分配 HBA及其驱动程序实现丁聚合(Scatter Gather)功能。当 读写连续的磁盘扇区时,HBA驱动程序将这些读写请求合并 为同一个DMA操作进行传输,从而提高存取速度。在连续数 据存取的场合,若采用算法1.读写请求将发送到不同的路径, 各HBA接收到的读写请求并不连续.不能利用HBA的聚合 功能。 也存在多个设备名,磁盘号不同而分 号相I司= RDP驱动程序为每一个LD创建一个过滤醴备(iflter device). 并调用IoAttachDevice将过滤设备挂接在躜盘设备和分区设 备之上 挂接完成后所有的磁盘1/0都将经由RDP.再由 RDP向下转发到磁盘驱动程序 算法2能避免算法I的缺点。它将磁盘分为若干连续区 域.对每个区域的读写请求均使用同一路径。因此,对在每个区 域内的连续磁盘扇区的读写请求,将始终分配到同一路径。假 设硅续区域的范围为,个扇区.Ⅱ为路径总数,读写请求的磁盘 扇区号为b.则路径path的计算方法为: path=(b/r)mod n 3故障切换 对每一磁盘I/O.NT系统酋先生成一个IRP结拘,其中包 括该1/O的设备 磁盘痢 、内存缓冲区地址等信息 然后. 以IRP结构作为^口参数调用设备驱动程序的读写^口。在 I/O操作完成后.该IRP结构r十1的c0mpleti0nR0u ne被调用. 来通知设备驱动程l 该1/O操作已完成 RDP驱动程序j叶1/0的处理流程如图3所示。当读写磁 4.3 HBA负载分配 算法l和算法2分别适用于随机读写和连续读写的场合, 但没有考虑在存储拓扑结掏复杂的情况下HBA的1/0负载 分布 盘设备或分区设备时,rdp—readwrite接收到一个1RP结构 jrp 在将jrp发送到磁盘驱动程序之前,首先选择一个路径,将 jrp的设备设置为埘廊的礁盘设备或分 设备,再将irp的 算法3根据HBA的负载进千f分配,将1/O负载平均分布 到每个HBA。为每一HBA设置计数器hl和hc,hl为已发送至 该HBA的1/O请求总数,k为设HBA正在处理的I/O请求 个数。向谖HBA发送一个1/0请求后, c和 分别增1.1/O 请求完毕后.k减1 对于任一磁盘I/(】,选择HBA负载最小的路径(即k最 小) 若HBA负载相等.则选择胁最小的路径 路径path的计 算方法为: fi;k,=min(hc0,hcl,…hcn一),若hco.hc .~hc l不全相等 .CompletionRouline 世置为r1dp done 埘此.I/0将由选定的路径 执行。 磁盘驱动程序收到】rp后,执行该1/0 在I/O执 t完毕 后,rdp_done被调用。有两种可能的结果:如果I/O执行成功. 标记LeO的路径状态为n:常,jrp执行完毕;若陵路径发生故 障.I/O执行失败.则标记1/0的路径状态为坏,并选择另外一 个未使用的路径.作为,rp的设备.将 read ite r 再次发送到磁盘驱动 done ; 一 n( …ht… 一 ),若hc0=hc】: 。 程序。如果所有的路往部执行失_艘,贝q 再向下发送。 r 一5结论 毽 正揣蛏忭为l 的设备 由于采用了分层结掏设计.将RDP与具体硬件设备的处 碑隔离,使RDP处于具有标准接口的磁盘驱动程序之上,以较 小的代析实现故障切换和负载均衡的功能,能适应多种硬件环 境一RDP实现的三种负载均衡算法能够在各种不同应用场合 下提高系统的1/O吞吐能力。对于Windows 2000,该文描述的 工佧原理同样适用 在添加了与系统进行接口的少量代码后, 目前RDP已能够在Window's 2000中运行。 0 设量m do 。。m t l 的 ut J 盘 坤至T肋般{嘞程序 (收稿日期:2001年7月) 图3 RDP驱动程序对1RP的处理 参考文献 4 负载均衡 在rdp_readwrite中,RDP驱动程序日J根据各路径的负荷 状态选择一路径,将LeO转发到该路径对应的磁盘设备,以实 142 2002 l1 计算机工程与应用 1科欣翻译组译.Wind。ws M设备驱动程序设计指南【M1.机槭工业出 版社.1997 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务