Linux系统下基于SCST的SCSITarget驱动设计硕士毕业论文

上传人:痛*** 文档编号:62153496 上传时间:2022-03-14 格式:DOC 页数:105 大小:3.51MB
收藏 版权申诉 举报 下载
Linux系统下基于SCST的SCSITarget驱动设计硕士毕业论文_第1页
第1页 / 共105页
Linux系统下基于SCST的SCSITarget驱动设计硕士毕业论文_第2页
第2页 / 共105页
Linux系统下基于SCST的SCSITarget驱动设计硕士毕业论文_第3页
第3页 / 共105页
资源描述:

《Linux系统下基于SCST的SCSITarget驱动设计硕士毕业论文》由会员分享,可在线阅读,更多相关《Linux系统下基于SCST的SCSITarget驱动设计硕士毕业论文(105页珍藏版)》请在装配图网上搜索。

1、 摘要随着信息数字化的深入发展,数据存储的需求日益增长。存储虚拟化带给我们最直接的益处就是,提高存储利用率,降低成本,简化存储管理,而基于网络的虚拟存储技术将成为未来的一种趋势,它的开放性、扩展性、管理性等方面的优势将在数据大集中、异地容灾等应用中充分体现出来。存储局域网(SAN)是一种高性能,扩展性极强的存储系统模型,近年来应用非常广泛。FC-SAN是一种基于光纤通道协议的存储局域网,它通过光纤传输SCSI指令和数据。本文详细论述了Linux系统下基于SCST的SCSI target驱动设计原理与实现。SCST是Linux系统下一个为了简化SCSI 驱动设计而开发的一个SCSI子系统层。SC

2、SI target驱动应用于存储局域网(SAN), 它与光纤通道HBA卡协同工作,处理和响应SCSI发起端的I/O请求,实现存储虚拟化和存储分配功能。整个SCSI target驱动分三层模块,最底层模块处理与HBA卡通信,解析SCSI指令和数据并传递给上层驱动处理。虚拟磁盘模块则响应I/O请求,完成数据的最终读写操作。这三个模块均以内核模块的方式嵌入Linux内核。关键词:虚拟存储,SCSI,SAN,SCST,光纤通道AbstractWith the deepening development of digital information, demand for data storage is

3、 increasing dramatically. The basic benefits that storage virtualization brings to us are increment in storage utilization rate increment, cost cutting and simplification in storage management. As network starge virtualization is becoming the trend of future technology, its advantages in compatibili

4、ty, expansibility and quality management will be fully seen in the applications such as data concentration and different area disaster recovery. Storage area network(SAN) is a storage system model with excellent performance and scalability that has been widely used in recent yeas.FC-SAN is baed on t

5、he fibre channel transport protocol,which allows SCSI commands and data transmits on fibre channels.This assay descripts the design and implemention of SCSI target driver based on SCSI under linux operation system. SCST is a SCSI subsystem for linux,it simplify the design of scsi target driver. SCSI

6、 target driver works with Host bus adapters,processes and responses to I/O requests from initiators on storage area network.It realizes storage virtualization and distribution.The whole SCSI target driver is a three-tier system.The lowest module communicates host bus adapters,parses SCSI commands an

7、d data,then pass them to the top module.The virtual disk module response the I/O requests and do the real data read and write operations.These three modules are embeded in linux kernel as linux module.Key Words: storage virtulization,SCSI,SAN,SCST,Fibre Channel 目录摘要iAbstractii图目录III表目录IV第1章 绪论11.1 虚

8、拟存储现状11.1.1 虚拟存储的现实需求11.1.2 存储虚拟化网络的关键技术21.2 虚拟存储的意义和价值31.3 论文研究内容和意义51.4 本章小结5第2章 SCSI技术62.1 SCSI协议框架62.2 SCSI发展现状72.3 SCSI系统与设备82.3.1 结构模型82.3.2 SCSI域92.3.3 主机总线适配器102.3.4 SCSI设备控制器112.4 SCSI阶段112.5 SCSI传输层协议162.5.1 命令描述块162.5.2 逻辑单元192.6 总体描述202.6.1 数据读202.6.2 数据和文件的写操作222.7 本章小结22第3章 Linux SCSI子

9、系统与SCST中间层233.1 Linux SCSI子系统驱动框架233.1.1 SCSI较高层233.1.2 SCSI中间层243.1.3 SCSI较低层253.2 重要数据结构253.2.1 scsi device的抽象253.2.2 scsi host的抽象263.2.3 scsi target的抽象273.2.4 Low-level驱动接口273.3 关键函数分析283.3.1 scsi_scan_host函数283.3.2 scsi_request_fn函数293.3.3 scsi_dispatch_cmd函数303.4 scsi设备扫描过程313.5 SCST中间层323.5.1

10、SCST框架323.5.2 Target驱动管理模块333.5.3 会话管理模块363.5.4 存储设备管理模块403.6 本章小结42第4章 Target驱动程序设计实现434.1 底层驱动设计434.1.1 初始化ISP2432444.1.2 中断处理444.1.3 Response队列处理函数454.1.4 I/O及事件处理函数接口464.2 上层target驱动设计474.2.1 Qlogic驱动注册474.2.2 命令处理流程484.3 磁盘驱动模块494.4 系统测试与性能524.4.1 测试环境524.4.2 测试条件524.4.3 测试结果534.5 本章小结54第5章 总结与

11、展望555.1 全文总结555.2 后续开发55参考文献56作者简历58致谢59图目录图 2.1 SCSI协议框架7图 2.2 SCSI对象层次9图 2.3 SCSI应用系统与SCSI域10图 2.4多个SCSI域的计算机11图 2.5 SCSI设备控制器的组成11图 2.6 SCSI状态转换16图 2.7六字节命令描述块17图 2.8逻辑单元组成19图 2.9 SCSI数据读操作21图 3.1 Linux SCSI Subsystem23图 3.2 scsi_scan_host函数29图 3.3 scsi_request_fn函数调用30图 3.4 SCSI总线扫描32图 3.5 SCST子

12、系统框架33图 3.6 SCSI客户端/服务器模型37图 3.7 会话注册过程39图 3.8采用下半部机制的会话注册过程39图 3.9 SCST 安全组40图 4.1 Target驱动与固件通信模式44图 4.2 中断处理例程45图 4.3 SCSI 命令处理流程49图 4.4 IOMeter 测试设置52图 4.5 系统I/O吞吐量54表目录表 2.1 SCSI总线参数一览表8表 2.2 CDB命令组18表 2.3 逻辑单元寻址数据位20表 2.4 LUN的四种寻址方式20表 4.1 IOMeter I/O测试53第1章 绪论虚拟存储(Storage Virtualization)是指将多个

13、物理上独立存在的存储体通过软硬件的手段集中管理起来。形成一个逻辑上的虚拟存储单元供主机访问,这个虚拟逻辑单元的存储容量是各物理存储体的存储容量之和,而它的访问带宽则接近各个物理存储体的访问带宽之和。虚拟存储实际上是逻辑存储,把物理设备变成完全不同的逻辑镜像呈现给用户,既充分利用了物理设备的高性能、高可用的优势,又打破了物理设备本身不可克服的局限性。从用户角度来看,它是使用存储空间而不是物理存储硬件,是管理存储空间而不是物理存储部件。虚拟存储可以适应和包容丰富多样、迅速发展的存储设备。具备为异构服务器和客户机提供服务的能力。因此,虚拟存储系统必须具备以下功能:(1)存储协议的自由转换,如从SCS

14、I到光纤通道协议或从SSA到光纤通道协议,能够支持异构存储和服务器环境。(2)支持高可用性和高性能的SAN存储配置,例如指定主从镜像和空闲驱动器、产生合成式驱动器、连接多个存储子系统构成单一驱动器、实现集中式管理以及灵活的存储容量扩充。(3)具有可视性和可管理性,能够在更新和恢复等突发事件发生时及时通知管理员。(4)通过TCPIP网络实现路由镜像、快照和异步远程拷贝等数据复制操作。1.1 虚拟存储现状1.1.1 虚拟存储的现实需求企业级的客户主要面临下面4个挑战:信息的爆炸性增长email、数据仓库、电子商务、媒体、科研、医疗和其他应用都是导致信息不断增长的因素。大多数客户不具备有效管理这种信

15、息爆炸的能力。异构操作平台我们看到越来越多的系统操作环境使用不同厂商的硬件和软件产品,彼此不能兼容。IT经理们发现访问信息及其信息共享越来越困难系统操作的连续性客户要求在任何时间都可以获得信息,包括银行账户、电话单、定购单等,企业必须确保其系统的高可用性。IT资源的短缺信息量的爆炸性增长,导致IT管理人员的短缺。企业必须懂得如何以有限的人力和物力去管理信息。这4个挑战归结起来就是:如何以有限的IT资源,经济有效地管理好不断增长的信息,简化管理异构操作环境的复杂性。所以,虚拟存储以其独特的商务优势成为企业寻求的解决方案。1.1.2 存储虚拟化网络的关键技术存储虚拟化的核心工作是物理存储设备到单一

16、逻辑资源池的映射,通过虚拟化技术,为用户和应用程序提供虚拟化磁盘或虚拟卷,而且用户可以根据需求对它进行任意分割,并分配给特定的主机或应用程序,而为用户隐藏或屏蔽了具体物理设备的各种物理特性。实现虚拟存储化关键技术如下: 1)共享冲突与数据一致性存储虚拟化的一个主要功能是实现存储数据的共享,普通的文件系统只允许对数据进行独占式访问,但是商业应用需要在操作系统和“数据仓库”之间共享数据。数据的不同拷贝应能在不同服务器操作系统所带来的存储共享和并行存储时的I/O访问冲突等。这就需要良好的锁机制算法、多种级别的锁机制以及Cache一致性等技术,来保证数据之间的连贯性和一致性。2)异构适应性虚拟存储的另

17、一个主要目标是实现真正意义上的设备互操作性,简化在在由不同主机操作系统和不同设备类型组成的异构存储环境中的系统管理和用户操作,实现真正意义上的存储设备的透明性。3)系统存储空间的动态扩展开放系统的计算机模型经历了一个从单一的、大而全的结构过渡到“n-层、分布式的或并行”的结构。每一层都可以独立扩展,保证最优的资源利用率。SAN虚拟化允许按照需要扩充存储资源,而对逻辑层和应用层透明。因此,系统管理员可以以兆字节为单位来扩充存储容量,而不破坏重要的应用。按需存储将是未来实现数据中心的主要驱动力。4)数据存储与容错策略由于应用和数据服务是透明的,必须避免越权访问和恶意攻击,数据安全性由整个系统的管理

18、软件来保证,因此保证数据安全性是存储虚拟化技术的难点之一。虚拟存储也必须以较小的容错开销建立容错功能,克服系统单点故障,避免不可恢复的数据损失,同时也必须拥有数据容错备份系统,以保证因不可抗力而丢失的数据拥有的可靠备份。1.2 虚拟存储的意义和价值数据存储设备用户基本上都是从性能、可用性、价格和易于管理几个方面评测存储设备。虚拟存储在这四个方面都能有效地提升存储系统的性能。 I/O 性能:数据访问和传输速度越来越多地决定了计算机应用的质量。比如说,如果数据不能够按照视频媒体播放器的要求速度传递到客户端,那么视频点播系统就不可能实现;如果信用卡数据库信息不能够及时更新,那么整个金融服务体系将会陷

19、入混乱。虚拟技术可以通过“Stripe”实现数据地址在多个存储设备上带状分布和拆分实现并行的读写,最终达到整个存储系统面向应用的整体I/O性能的提高。 可用性:信息化的社会越来越要求信息系统能够在7*24的条件下保持在线状态。系统故障引起的应用服务的不顺畅给企业和个人带来的损失和不便将越来越不能容忍,尤其是在重要的部门和行业,如能源、交通、公共安全、金融等,数据的价值已经不能够估量。他们对存储系统得可用性的要求比以往更高。虚拟技术可以通过镜像技术实现对单一数据在多个存储介质上创建副本防止因个别存储介质的损坏对整个系统得影响,确保系统的高可用性。 存储容量成本:随着磁盘存储设备的价格降低,在各个

20、领域存储系统的消费不断增加。但是由于对数据安全的要求的不断提高,镜像和远程数据复制迁移形式的虚拟存储应用增加更为迅速。从而存储容量成本依旧是一个重要的衡量因素。虚拟技术可以通过聚合多个存储设备的空间和根据不同服务器需要重新部署存储空间的分配实现现有存储空间的高利用率,避免不必要的设备开支。 可管理性:目前的普遍的信息技术应用都存在着随着系统复杂度的增加系统管理开销递增,以及由于系统管理原因造成的错误率的递增。一般来讲,管理成本已经达到了设备成本的5到10倍。因此管理开销也是对系统评估的一个重要的指标。高度集成,一体化的管理是最为理想的管理模式。虚拟技术可以将多个小设备整合成一个大设备,来降低直

21、接被管理的设备数量。由此,提高了容错能力,降低故障率和恢复次数。 虚拟存储除了在以上四个作为存储系统基本的评估指标发挥积极作用外,在现实应用中,通过虚拟技术在如下十个方面体现了高效能的存储系统应用价值: 1. 提高存储空间利用率(Improved utilization):虚拟化存储可以提高40%至50%的空间利用率,尤其是在为远端设置镜像存储时更加体现优势。 2. 灾难恢复(Disaster Recovery):在没有虚拟存储前,数据复制迁移只能在对称的磁盘阵列或主机间进行。通过虚拟技术,复制迁移和镜像可以在不对称的设备间部署,不必要在容灾恢复端准备一个与主站同样的主机或者磁盘阵列。 3.

22、快速备份(Rapid backup):通过文件系统的快照技术,虚拟存储系统可以避免由于在应用服务器代理软件和备份服务器的通讯产生的瓶颈。由于备份将给予快照,备份窗口可以任意选择,不受时间限制。 4. 数据移植(Data migration):大部分的磁盘厂商都提供了特有的工具帮助在其自有平台的磁盘间移植数据。虚拟存储可是简单地实现在不同平台间的数据复制迁移。 5. 自动化的空间扩充(Scalability):在综合的虚拟化系统中,预制的管理策略在分配给某个用户,如数据库,的存储空间用尽时自动调整空间分配为其扩容。 6. 在线基于磁盘的恢复(On-Line Disk Recovery):基于廉价

23、的SATA阵列整合,管理员可以通过虚拟存储的快照功能在线地将系统恢复至错误发生前最近的时间点。 7. 服务应用程序测试(Application Testing):通过虚拟存储,某些给予实际数据环境的应用测试不必担心会破坏重要数据资源。虚拟系统可以通过复制迁移,为测试提供一个安全的数据平台。 8. 提高数据库性能(High database performance):虚拟系统将数据库的hot files动态地置于某个solid-state磁盘上可以提高昂贵的solid-state磁盘的使用效率。 9. 高可用性(High Availability):虚拟系统将IT系统的存储和服务切实地分离开来,

24、一方面可以有效地单独对数据进行保护,在存储内部后台建立起容错机制;另一方面,也杜绝了应用端的错误对数据端的影响。 10. 在不同服务器平台间的有效资源共享(Storage Share between different operating system):在一般的SAN中,Windows和UNIX的平台间数据共享和共存一直都是一个大问题。目前的SAN通过虚拟技术可以支持多文件系统在相同SAN中的共存。1.3 论文研究内容和意义课题主在研究基于SCST(SCSI target mid-level subsystem for Linux)的SCSI Target的驱动设计,并在此基础上实现HBA卡

25、构筑的存储网络以及存储的虚拟化管理。将不同厂商的FC-SAN、NAS、IP-SAN、DAS等各类存储资源整合起来,形成一个统一管理、监控和使用的公用存储池。基于SCST target驱动,存储服务器不仅能够实现对客户端系统的数据保护、文件的共享服务、存储的可扩展性也能实现对客户端各种平台操作系统的保护,在客户端磁盘故障或其他硬件故障造成服务中断时,在最短的时间内恢复应用,恢复数据。同时,存储管理端结合各种raid技术以及snapshot,cdp技术保证数据的安全性和可靠性,实现数据的连续实时数据保护,避免关键业务数据的丢失,为企业挽回因数据丢失所造成的损失。目前存储市场上基于windows平台

26、的存储解决方案已经有很多,无疑这些解决方案都存在windows平台依赖而导致的安全性及稳定性的问题。相对于windows系统,Linux无论在安全性能还是在系统稳定性上都有着绝对的优势。再者,Linux系统下有很多成熟的开源软件,例如逻辑卷管理器LVM,RAID管理程序mdadm等等,在这些优秀的开源软件之上开发我们的虚拟存储软件,不仅可以大大的缩短开发周期和开发费用,还可以提高程序代码的稳定性和安全性。本论文通过设计基于FC-SAN的SCSI Target驱动,通过LVM存储管理器提供存储,实现了光纤网络的存储分配和管理服务。1.4 本章小结本章主要讲述了当今虚拟存储的技术现状及其现实意义以

27、及本论文的研究内容及研究意义。第2章 SCSI技术在SCSI出现之前,计算机外围设备领域十分混乱,特别是小型计算机上装备的磁盘驱动器、打印机和其他外围设备所采用的接口和通信协议十分混乱。ST506和ESDI接口都在争夺磁盘驱动器的市场,希望获得行业主导地位。并行接口和串行接口虽然拥有各自的标准,但却引出了广泛的兼容性问题。小型计算机系统接口SCSI(Small Computer System Interface)就是试图为计算机的外围设备建立一个标准的接口和通信协议。SCSI定义了电缆铺设要求,电气信号标准,事务处理协议和通用命令集。提出SCSI的目的就是为了实现一种设备接口,它能够适用于多种

28、外围设备,这些外围设备包括从磁盘驱动器,磁带驱动器等存储设备到打印机,扫描仪之类的输出设备。SCSI技术起源于1979年设备制造商Shugart试图为磁盘控制器设计一种通用型接口。当时设计的目的是使这种接口能支持8位的数据和控制命令传输。计算机以前通常通过控制线来控制来控制磁盘,而SCSI采用标准命令集来控制磁盘。自从1981年Shugart和NCR向ANSI X3T9.2提交设计规范后,该技术就定名为SCSI,并与1986年成为ANSI的标准X3.121-1986,也就是简称的SCSI-1。其间二十多年,SCSI经历了许多发展,包括总线宽度的增加,总线速率的倍增,扩充了SCSI总线仲裁,允许

29、一条SCSI总线上可有多个主伺配器等,现在的SCSI技术已演化为多个相关的系列技术,并超出原先的设计范围,更加多样化。仅从时间上来讲,似乎它并不算一门新技术,但正因为网络的迅猛发展,它也进入了一个重新发展的阶段。以致有些人认为,SCSI是21世纪的新I/O技术。总体而言,它具有超过一般I/O技术的一些性能特点:支持告诉的数据传递;方便地支持多个存储设备间的连接;SCSI设备间的高兼容性和与其他相关存储技术的兼容性;与其他存储技术(如RAID)构成的高可靠性。正是这些特点使得SCSI技术在I/O技术和存储技术的市场上占有非常重要的份额。2.1 SCSI协议框架SCSI协议集包含了许多集体的标准和

30、协议。SCSI的协议基础是SAM(SCSI Architecture Model),即SCSI结构模型。通常所说的SAM在包含一些其他协议的通吃,主要围绕SCSI-3,所以也成SCSI-3结构模型,而SCSI-3本身也是许多标准的集合,每个标准定义了SCSI的某一具体部分,如物理特性、控制命令等。SCSI-3及其各个标准仍在不断演化和继续发张中。在SAM基础上更新后的SCSI结构模型是SAM-2,SAM-3,SAM-4,SAM-5,并已由ANSI批准。整个SCSI协议框架如图2.1所示:图 2.1 SCSI协议框架在SAM的基础上,SCSI协议集按功能可大致分为设备命令集(SCSI块操作指令集

31、SBC,SCSI多媒体命令集MMC等)、通用命令集(SCSI基础命令SPC-2,SPC-3等)、SCSI传输协议(SCSI-3光纤通道协议FCP,IP网络SCSI协议ISCSI等),设备互联标准(SCSI并行接口协议SPI-3,SPI-4即ultra320等)。2.2 SCSI发展现状目前市场上有着多种多样的SCSI的系列和产品,各个系列和产品间可能存在数据交换速率、电信号、总线宽度等的不同。这些不同特性在满足用户各种需求的同时,也使用户在开始时难以选择合适的产品。在此,通过对SCSI发展过程和现状的介绍,了解认识这些不同特型的含义。最初的SCSI支持8位总线宽和5MB/s的总线速率。总线宽度

32、是SCSI的一个重要指标,8位总线宽指的是SCSI使用8根总线一起作为其数据总线。在其后发展的SCSI-2提供了跟多的命令和更高的数据交换速率,以及16位的数据总线和多种命令集。在其基础上,又有多个方面的发展个提高,退出了SCSI-3以提供更快速的数据传输。经历了近些年的发展,SCSI标准渐趋稳定和完善。最新的SCSI是第四代SCSI-3-ultra320和正在定义的第五代SCSI-3 ultra640,ultra320定义了320MB/s的总线数据交换速率,已是最初SCSI的5MB/s的60多倍了。与其他I/O技术相比,ultra320已超越普通I/O技术的性能,是相当高速的了。从下表可见,

33、SCSI的速率逐渐提高,而且总线也尽量向16位发展。出总线速率和总线宽度外,作为外围设备I/O技术,SCSI的总线长度也是很关键的参数。总体而言,SCSI的总线长度也随着SCSI的发展有所增加。 表 2.1 SCSI总线参数一览表SCSI名称协议标准数据总线宽度最大可挂设备数信号最大总线长度(m)速率(兆字节/秒,MB/s)普通SCSI(SCSI-1)SCSI-188SE65HVD25宽SCSISCSI-21616SE610HVD25快SCSISCSI-21616HVD/SE320快宽SCSISCSI-21616HVD/SE320ULTRA SCSIULTRA SCSI88HVD/SE25/1

34、.520宽ULTRA SCSIULTRA SCSI宽1616HVD/SE2540ULTRA288LVD/SE1240ULTRA2宽1616LVD/SE1280ULTRA160(ULTRA3)1616LVD/SE12160ULTRA21616LVD12320备注:SCSI的三种电信号方式为SE(single ended),HVD(high voltage differential,高电压分差)和LVD(low voltage differential,低电压分差)2.3 SCSI系统与设备2.3.1 结构模型SCSI-3结构化模型由分层对象组成。顶上是代表I/O系统的域。一个SCSI域的结构化模

35、型是由一些SCSI设备组成的,这些设备都和抽象服务分发子系统连接,图2.2展示了完整的SCSI-3对象层次,所有组件在SCSI-2中都能找到。图 2.2 SCSI对象层次2.3.2 SCSI域如同网络内需要多个网络设备才能形成一个网络环境,SCSI的设备也是在一定的环境能运作的,需要多个SCSI设备。SCSI设备间的运行环境即是SCSI域。在这个域内,功能上生成和发送SCSI命令和任务管理请求的SCSI端口定义为SCSI发起端;在功能上接收和处理SCSI命令和任务管理的端口为SCSI目标端。SCSI域的组成必须包括一个以上的SCSI设备、设备内的SCSI目标端和发起端以及提供数据交换的总线。S

36、CSI总线连接了挂在上面的所有SCSI设备,使得主机免于处理一些I/O任务。如图2.3 将一个实际SCSI应用系统抽象为一个SCSI域,域中有多个SCSI设备。而且,带SCSI驱动器的计算机也看成是一个SCSI设备。尽管可以允许多个SCSI设备在同一总线上,SCSI协议实际定义的是设备间的一对一的数据交换,同一时刻在SCSI总线上只允许两个设备见的数据交换。这两个设备,一个是含有发起端的设备,另一个则拥有目标端的设备。某一具体存储设备可以有发起端、目标端,或兼有发起端和目标端。如果某一SCSI设备上兼有发起端和目标端,基于总线分时使用的原则没在某一特定时间仍只有发起端或目标端运作。参照SCSI

37、域的定义,在一个具体的SCSI域中,必须有至少一个发起端和一个目标端。因主机在数据方面的需求,一般情况下主机配置了SCSI控制器,其中至少有一个SCSI发起端。而磁盘设备等则主要是依据需要提供存储和数据服务,一般有目标端。SCSI发起端和目标端的定义是依据SCSI的命令和任务而言的,SCSI总线上数据的传输可以是从发起端到目标端或反之,相对存储用户则是对应数据的磁盘写或读操作等。图 2.3 SCSI应用系统与SCSI域2.3.3 主机总线适配器主机总线适配器(Host Bus Adapter,HBA)是用来连接计算机和SCSI总线的。主机总线适配器可以做成独立的可插入电路板(HBA卡),大多数

38、PC系统都是这么做的。它也可以继承到计算机的主板上,但只有特殊的家用计算机和工作站才这么做,一台计算机可以有几个主机适配器,它们可以把几条SCSI总线都连接到计算机上。当连接几条SCSI总线时,这些SCSI总线是独立的SCSI域。因而,可以在不同的SCSI总线上使用相同的SCSI ID。有几个SCSI域的计算机如图2.4所示.图 2.4多个SCSI域的计算机2.3.4 SCSI设备控制器在每个SCSI设备内,都有一个以上的SCSI设备控制器,其功能如同网络设备中的网卡。它实现SCSI存储设备与其他设备以及计算设备的具体通信。在逻辑上,每个SCSI设备控制卡有一个任务管理单元和一个以上的逻辑单元

39、(LU)。如图所示,有多个逻辑单元。任务管理单元对来自SCSI发起端(如计算设备)的各种任务管理请求进行管理和处理,并通知和答复发起端设备。逻辑单元主要执行针对存储介质的各种操作。图 2.5 SCSI设备控制器的组成2.4 SCSI阶段在一个简单的SCSI事务处理中,启动器为取得总线的控制权而进行仲裁。一旦它获得了对总线的控制权,它就选择一个目标器进行连接。目标器做出响应,然后启动器和它进行消息交换,为即将到来的事务处理建立程序规则。断开连接的优先权、数据传输宽度、和同步传输的时序都通过消息来协商。当协商完成以后,启动器就给启动器发送一个状态码指示结果。在总线被释放之前,还可以进行一些其他消息

40、发送。这个过程按照一定的顺序发生,从一个阶段到另一个阶段。虽然由启动器发起这个过程,但是当前总现阶段却是由目标器来控制的。启动器可以要求把当前阶段改变到一个特殊的阶段,但是最终是由目标器决定从一个阶段改变到另外一个阶段。SCSI协议定义了8个不同的阶段:总线空闲阶段仲裁阶段选择阶段重新选择阶段命令阶段数据阶段状态阶段消息阶段这些阶段不一定按照以上列出的顺序发生。消息阶段几乎可以在任何时候发生。是否支持重新选择取决于目标器设备是否有断开连接的权力。数据阶段仅仅应用与传输数据的操作。这些阶段中的每一个都被SCSI总线上的不同信号的结合和所交换的明确的数据类型标识出来。在SCSI总线上的6个信号决定

41、了它处于哪一个阶段,以及传输的数据的类型和方向。这些信号是:BSY(忙) 表示总线正在使用的信号SEL(选择)表示选择一个目标器或者重选一个启动器的信号C/D(控制/数据)表示控制或数据信息的信号I/O(输入/输出)表示数据相对于启动器的传输方向的信号MSG(消息)表示消息阶段的信号ATN(注意)表示启动器用来请求消息阶段的信号总线空闲阶段在总线空闲阶段,总线上没有活动。没有I/O进程处于等待状态,没有设备提出使用总线的要求,总线随时可以被占用。上面列出的信号没有一个是活动的。仲裁阶段在仲裁阶段,启动器为取得总线的控制权进行协商。它声明一盒BSY信号,表示总线正在被使用,并驱动对应于它的SCS

42、I ID的数据线。对一个8位的数据总线来说,数据线的编号是从DB(0)到DB(7)。一个ID号为7的启动器声明DB(7)为真,以此提出使用总线的要求。在一个规定的时间延迟后,启动器检查是否有另外一个设备正在试图获得总线控制权。如果和另外一个设备ID对应的数据线被声明为真,俺么这个设备就也在试图获取总线的控制权。最后,ID号最大的设备在这次仲裁中获得胜利,得到总线的控制权。一般来说,SCSI主机适配器被分配给较高的ID号,以保证它们在仲裁中获得许可。一旦仲裁器获得总线的控制权,它就声明SEL信号来结束仲裁阶段,并进入选择阶段。选择阶段在BSY信号仍然为真的时候,声明SEL信号就使启动器选择了一个

43、目标器。然后它就声明对应于它自己的SCSI ID的数据线和对应于它选择的目标器的SCSI ID的数据线。这里的I/O信号是反相的,以把这个阶段区别于重新选择阶段。启动器也设置ATN信号为证来请求消息输出阶段。这个阶段在选择阶段之后。这一步在SCSI-1下是可选的,但是在SCSI-2下是强制实现的。最后,启动器释放BSY信号。对一个目标起来说,当SEL信号和它的ID位都为真,并且BSY和I/O信号都为假的时候,它就可以断定自己被选中了。它用在一个制定的时间段内设置BSY信号为真来响应。启动器通过释放SEL信号来确认它的选择。重新选择阶段当目标器正在执行命令的时候,如果它从总线上断开,就会切换到重

44、新选择阶段来重新建立连接。这个阶段和选择阶段是镜像对应的关系,但是在仲裁和设置总线信号的过程中,目标器是主动方,而不是启动器。在重新选择阶段目标器也声明I/O信号和SEL信号。启动器也声明BSY信号的办法来对重新选择做出响应。一旦目标器声明BSY信号和释放SEL线来做出响应,启动器就释放BSY信号,连接继续进行。消息输出阶段因为启动器在选择阶段设置了ATN信号,目标器接下来就进入了消息输出阶段。它依靠声明MSG和C/D信号来做到这一点。在SCSI-2中,在设备选择阶段之后必须跟随消息输出阶段。在初始的消息输出阶段,只是一小部分消息是有效的。在正常的情况下,启动器将会发送一条Identify消息

45、。这条消息在启动器和目标器设备内的逻辑单元之间建立起了连接。这个连接被称为I_T_L连接。对于支持目标器例行程序而不是逻辑单元的设备,可以建立一个I_T_R连接。对目标器例行程序的支持,虽然是在SCSI-2中提出的,但是在SCSI-3中被逐步淘汰了。在Identify消息之后可能跟随着其他的消息。对标签队列的请求和同步传输或宽数据传输也在这里发生。命令阶段当消息输出阶段结束之后,目标器进入命令阶段。它提高C/D信号的电平,使I/O信号和MSG信号反相,以此来表明进入了命令阶段。这就通知了启动器:目标器已经为接收一个CDB(命令描述块)做好了准备。CDB的大小随着其所属的命令组而不同。命令组号告

46、诉目标器在CDB中有多少个字节。一旦它收到了整个命令块,可能会发生一下几种情况:如果CDB的大小或格式有错误,目标器将切换到消息阶段来报告错误。如果命令要求数据传输,目标器就切换到数据输出或数据输入阶段,这取决与所发出的命令。如果不要求数据传输,目标器就切换到状态阶段,并且给启动器发送一个状态字节来报告命令的输出。数据输入和数据输出如果一条SCSI命令要求数据传输,而且参与数据传输的目标器已经为数据接收或者发送做好准备,目标器就将总线设置为数据输出或数据输入状态。在简单的情况下,在命令阶段和数据阶段中启动器和目标器保持连接。在较为复杂的情况下,目标器可以和启动器断开,当输出准备好之后在和启动器

47、重新连接。这要求启动器在选择阶段后发送给目标器的Identify消息中已经赋予目标器断开连接的权力。例如,磁盘驱动器在寻道和读取指定扇区的时候就可以断开连接。这就使得当目标器被占用的时候,启动器可以被释放出来以用于另外一个事务处理。目标器通过反相C/D信号和MSG信号电平来进入数据阶段。它根据相对于启动器而言的数据传输方向来提高或降低I/O信号的电平。提高I/O信号的电平表示数据输入阶段;相反,使该信号反相来表示数据输出阶段。在异步传输模式下,启动器和目标器通过一系列的REQ/ACK握手的方式来协调它们之间的数据传输。如果它们之间协调同步传输,在数据字节和能够被预定发送的REQ脉冲序号之间的时

48、序就要预先建立起来。在任何一种情况下,REQ和ACK的脉冲序号必须相等。状态阶段在命令和任何相关数据的传输完成后,目标器就切换到状态阶段。它声明C/D和I/O信号为真,并把MSG信号反相。状态阶段之后命令就结束了,除非命令是非正常终止的。一条消息会引起进程异常终止,意外的设备复位或断开连接,或者总线复位都会引起命令的非正常终止。状态码只有一个字节,表示命令执行的成功或失败。它可能会指出目标器忙或者目标器被一个启动器保留,也可能指出一系列命令的中间某一条命令执行成功,它也可以告诉启动器哪些被称为检测数据的扩展信息是可以利用的。消息输入阶段消息输入阶段是SCSI事务处理的最后一个阶段。目标器声明C

49、/D和MSG信号为真,从而进入了消息阶段,并且声明I/O信号为真表示消息对于启动器来说是输入的。经常,目标器将发送一条Command Complete 消息来表示命令处理已经结束了,而且已经发送了一个状态字节。它也可以发送消息表是错误状态或者在命令处理的过程中,在它从总线上断开连接之前给启动器发出警告。阶段序列从一个阶段转移到另外一个阶段是被严格定义的,而且是复杂的。实际上,一旦启动其选择了一个目标器,阶段序列可以按照一定的路径进行.图2.6说明了在阶段之间可能的状态转换。图 2.6 SCSI状态转换2.5 SCSI传输层协议由于本课题主要内容基于SCSI传输层,因此着重对SCSI传输层协议进

50、行分析。SCSI传输层协议完成实际的数据传输。当计算机上有某一文件需要写到SCSI磁盘上或从SCSI磁带上读取某文件时,都是发起端和目标端设备在互联层已建立的基础上,通过传输层协调实现的。传输层提供了两类服务:命令的执行和确认;数据的传输。命令的执行是总线进入命令阶段后,由发起端通过命令描述块(Command Description Block,CDB)向目标端发送具体的命令。命令的确认是在西欧哪个县进入通信(MESSAGE)阶段后,发起端收到来自目标端的命令执行的确认信息。数据的传输则是建立在数据阶段(数据出或数据入)上的。依赖于这两类服务,完成一个完整的数据传递:命令的执行、数据的传递和最

51、终的命令确认。SPC协议集定义了CDB标准。2.5.1 命令描述块对存储设备的实际操作是通过对目标端发送一个命令描述块来完成的。有些情况下,在一个命令描述块后会有一些参数送往目标端,这些参数是在命令描述块后的数据阶段发送的。命令描述块有定长和不定长两种格式,而定长格式的命令描述块又有不同的规定长度,如6字节或10字节的命令描述块。无论哪种格式,在一个命令描述块中,一般会有一些重要的单元:操作码(OPCODE),逻辑单元号(LUN),逻辑区地址(LBA),传递数据的长度,控制字节等。其中操作码是所有命令描述块都有的,处于命令描述块的最初的一个字节。如果目标端检查发现命令描述块中的某些参数不正确,

52、该设备会终止执行命令描述块中的相应操作。图2.7给出了一个典型的6字节的CDB的格式。图中,每一个横行为一个字节,该例子中的描述块格式由从“0”到“5”的6个字节组成。其中,字节“0”为操作码字节。图 2.7六字节命令描述块1.操作码操作码定义CDB的具体操作。这8位在理论上共有256个可能的操作码。实际上其中一些属于保留码,目前未定义。操作码的8个位又分为两个区:位57为分组码,指示其后的命令具体属于哪个分组,如“000”为分组“0”,为6字节CDB命令组;为04则是具体的命令码。例如比较常见的6字节读指令read(6)操作码为08H,6字节写指令write(6)操作码为0AH。代表命令组的

53、高3为可以有8个不同的组合,所以可以代表8个命令组,见表2.2。保留的组绝对不可以被使用,那是SCSI委员会留给SCSI标准将来的版本使用的。表 2.2 CDB命令组组操作码说明000h1Fh6字节命令120h3Fh10字节命令240h5Fh10字节命令360h7Fh保留480h9Fh16字节命令5A0hBFh12字节命令6C0hDFh厂商自定7E0hFFh厂商自定2.逻辑区地址该地址是逻辑单元或磁盘分区中的起始操作块的位置。在6字节CDB中,有21为的逻辑地址区,其他格式的CDB有更大的逻辑地址区,以寻址和访问更大的存储空间。3.传递数据长度该长度定义了将传递的数据的总量。一般以CDB块为单

54、位,且长度范围为1255个块。该参数可以为零,但对不同的CDB格式有不同的意义。4.参数表长度该长度定义了在CDB之后(数据阶段)发送的参数的长度。它是以字节为单位的。对于需要在CDB之后发送的一些参数,如模式参数、诊断参数等,均需要在CDB中定义长度。该长度为零表示没有参数需要发送。5.分配长度它定义了在应用程序中最大的已分配字节数。该长度限制了返回数据,如诊断数据、日志(LOG)数据等的最大字节量,从而保证存储系统的可靠性。该参数为零表示没有数据返回。如果将要传递的出具超出了限制,则相应的设备应不传递数据,并使用状态阶段返回一个特定的状态信息。6.控制字节它是所有CDB格式的最后一个字节。

55、SCSI-2中,控制字节仅仅包含了在标准中定义的两位,它们是连接位(Link bit)和标志位(flag bit),而且这两位都是可选的。连接位使你可以将几个命令连接成一个命令链,命令链中的每一个命令被称为连接的命令。从而这些链接的命令就形成了一个连接的I/O过程。这就可以组织其他I/O过程的命令插入这个已形成命令链的I/O过程,这就是在目标器内的优化方法。举个例子,当一个逻辑数据块需要被读取-修改-写回时,这个做法就变得十分有用。而且,连接的命令允许使用逻辑块的相对地址。标志位必须和连接命令一起使用。这引起在连接的命令执行结束之后发送服务响应LINKED COMMAND COMPLETE(W

56、ITH FLAG)(0BH),而不是发送服务响应LINKED COMMAND COMPLETE(0AH)。在SCSI-3中出现了新的标志位:ACA位。ACA是偶然事件自动通信(auto contingent allegiance)的所写,它是在命令执行过程中万一发生错误时LUN所采取的一种措施。2.5.2 逻辑单元逻辑单元是SCSI设备的组成部分。可以认为是一个虚拟的、可通过SCSI ID的设备被寻址和访问的设备。一个SCSI ID的设备上可以有多个逻辑单元,所以LU适当扩展了SCSI总线对可访问设备数目的限制,使得目标端设备上可以有多个可被访问的设备而只占用一个有效的SCSI ID。对一个L

57、U的实际访问是通过该逻辑单元的一个特定的编号,即逻辑单元号实现的。如图2.8所示,一个逻辑单元包括:一个逻辑单元号(Logic Unit Number,LUN),一个以上的逻辑单元名,一个设备服务器,一个任务管理器以及一个以上的任务集。其中,任务管理器负责控制任务执行的先后顺序。一个SCSI目标设备如果需要支持多个SCSI传输协议,则它需要多个设备名。在目标端的每个逻辑单元都有对应的编号,即LUN。LUN的序号是从LUN 0 开始的。LUN是在一个SCSI设备内对逻辑单元寻址的依据。图 2.8逻辑单元组成不同于SCSI ID,逻辑单元的地址范围是不依赖于SCSI总线的宽度的。它定义在CDB中,

58、由CDB的格式和相关协议决定了LUN的范围,比如在SCSI-2中,一个SCSI ID的设备可以有8个逻辑单元,其编号是07.逻辑单元的寻址方式有四种,其方式的定义由寻址数据的第7和第6为决定。如下表所示:表 2.3 逻辑单元寻址数据位位字节76543210N-1寻址方式MSBN这四种LU寻址方式为:逻辑单元寻址(logic unit addressing),外围设备寻址(peripheral device addressing),平地址范围寻址(Flat space addressing)和扩展逻辑单元寻址。这四种方式正好与两位二进制的叔的组合一致。表 2.4 LUN的四种寻址方式二进制数00

59、011011功能外围设备寻址平地址范围寻址逻辑单元寻址扩展逻辑单元寻址在LUN中,LUN 0是一个所有SCSI设备必须接受的地址。应用程序可通过对LUN 0的访问获取关于SCSI 目标端设备以及其中各个逻辑单元的信息。对LUN 0的寻址规定使用外围设备寻址方式,以确保对LUN 0的访问。2.6 总体描述2.6.1 数据读如果计算机需要从存储设备上读取文件或数据,无论数据的大小,都至少经历一个SCSI的读操作。当然,操作系统需首先将用户的读取操作通过SCSI I/O的应用程序编程接口(applicatopn programming interface,API)转化为SCSI的读操作,并在操作完成

60、后通过相应的API返回相应的值。图 2.9 SCSI数据读操作在SCSI域内,这个操作在传输层简单地描述为5个主要过程,如图2.9所示。1) 发起端通过CDB发送SCSI的读(READ)命令。2) 目标端接收到该请求,制定的逻辑单元(LU)中设备管理器执行该请求。3) 目标端以字节为单位向发送端传递数据。并非所有SCSI命令都有该过程。4) 在数据传输完毕后,目标端向发起端发送任务完成。5) 发起端接收到完成的命令。当然这些过程是建立在SCSI的互联层基础上的。其中,在第一个过程之前,包括SCSI总线由空置阶段进入总线仲裁和选择阶段,完成发起端对总线使用权的获得以及目标端的选择和寻址。之后,目

61、标端空置操作(如读操作)进入第一个过程。在第一个过程中,目标端发送REQ信号,进一步进入到信息传递阶段集的命令阶段,通过CDB传递命令获取“读”命令。在其后的数据传递中,目标端从其空置的外围设备中读取数据并发送到发起端。如目标端的设备需较长时间准备数据,则可能有多个总线的释放而进入空置阶段和重选阶段。在目标端完成数据传递后,则进入状态阶段并返回一个状态信息。为进一步指示完成整个读(READ)操作,在第四个过程中,总线进入到信息传递阶段集的通信阶段,目标端发送“命令完成”通信,并可释放SCSI总线的BSY信号。在完成第五个过程后,总线可回复到空置阶段。2.6.2 数据和文件的写操作对数据传递而言

62、,数据写操作与数据读的方向是不一样的,所以在上面描述的过程中略有不同。数据写操作中,仍然需要具体的SCSI的各个阶段,并需要各个SCSI信号以及SCSI命令,如写(WRITE)命令等。它基本上与上面的读操作类似。另外,在此将从另一个角度描述写操作过程。不同于简单的数据读或写,文件的读写需要文件系统和操作系认的介入。在系统中有写操作时,文件系统先通过操作系统和文件系统查找一个文件存放存储设备(如磁盘)的逻辑块地址(Logic Block Address,LBA);之后,文件系统将一些参数,如数据的指针、数据的长度以及LUN等传递给SCSI的API,并只是一个写操作。如写6000字节到LUN0的逻

63、辑快递至0001234AB。SCSI的API则具体发送一个写明了给LUN0,并将数据以存储设备认可的方式分批或一次性地传递到LUN0直到数据全部传输完毕。之后,SCSI的API返回,并指示任务完成。然后,文件系统通知应用程序任务完成。至此,一个文件的写操作完成。2.7 本章小结本章主要讲述了SCSI技术架构,主要部分为SCSI传输层协议以及SCSI总线通信状态转换关系,这是本论文课题研究所必需要了解,驱动设计过程中必须根据SCSI协议规范设计指令,数据处理流程及状态转换。第3章 Linux SCSI子系统与SCST中间层3.1 Linux SCSI子系统驱动框架与Linux内核中的其他主流子系统不同,SC

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!