存储虚拟化在Linux中的应用研究(上传).docVIP

存储虚拟化在Linux中的应用研究(上传).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
存储虚拟化在Linux中的应用研究信息计算已经从以服务器为核心的时代逐渐进入到了以存储为中心的时代。本文首先介绍了存储虚拟化技术,然后对Linux系统下块设备缓冲区的I/O体系结构和SCSI协议栈的进行了分析研究,最后提出了在设备驱动程序之上构造异构接口的存储池虚拟层的实现方法。 存储虚拟化,SCSI协议栈,存储池虚拟层 0 引 言 存储虚拟化技术可以将各种异构的存储资源统一成对用户透明的单一逻辑视图,存储虚拟化是解决存储管理问题的有效手段。通过对Linux系统下块设备缓冲区的I/O体系结构以及SCSI协议栈的研究分析,我们可以在文件系统之下,设备驱动程序之上构造异构接口的存储池虚拟层来实现存储虚拟化。 存储虚拟化 存储虚拟化就是把多个具有不同性能和容量的存储介质模块(如硬盘、RAID)的局部存储空间集中管理起来,在一个存储池中得到统一管理所有的存储模块,形成一个统一的逻辑层。存储虚拟化更有效地利用和管理各种异构的存储资源,为使用者提供大容量、高数据传输性能的存储系统。存储虚拟化是通过虚拟抽象层来实现的。通过在主机和I/O子系统之间的一个层面加入虚拟化的功能,进一步屏蔽所有块设备驱动的细节,以便构建异构接口的存储池,同时实现对SCSI接口、FC接口和USB接口的设备。 块I/O子系统分析 块I/O子系统 Linux支持的文件系统以块的形式组织文件,为了减少对物理块设备的访问,在文件以块的形式调入内存后,使用块高速缓存对它们进行管理。为了加快对物理块设备的存取,Linux维护一个块缓冲区缓存,系统中所有的块缓冲区都放在这个缓存中。 Linux中的块设备驱动程序高级块设备驱动程序和低级块设备驱动程序。前者处理虚拟文件系统层,后者处理硬件设备层。在高级块设备驱动程序和低级块设备驱动程序之间是块缓冲区缓存,它用来缓冲各个设备所读写的数据,提高系统对块设备的读写速度。 由于块设备驱动程序是中断驱动的,因此,只要高级驱动程序一发出块请求,它就可以终止执行。在稍后的时间低级驱动程序才被激活,它会调用一个所谓的策略程序从一个队列中取得这个请求,并向磁盘控制器发出适当的命令来满足这个请求。每个块设备驱动程序都维护自己的请求队列并且每个物理块设备都应该有一个请求队列。因此策略程序就可以顺序扫描这种队列,并以最少地移动磁头而为所有的请求提供服务。 SCSI协议栈 SCSI协议将SCSI设备划分为两类:发起设备和目标设备。发起设备请求执行一个I/O进程,并发出I/O命令,目标设备则是一个进程的执行者。Linux下的SCSI协议栈可以分为上,中,下三层。 SCSI协议栈中的上层驱动通过提供标准的读写接口维护一类SCSI设备和文件系统的接口。它负责从SCSI协议栈外接收请求,然后转化为SCSI请求,交给SCSI协议栈的中间层去处理。当相应的请求处理完毕,SCSI协议栈的上层驱动会从中间层接收处理的相关状态,并将该状态依次返回给SCSI协议栈外的请求。 SCSI协议栈的中间层是SCSI协议栈的核心,它定义了其它所有SCSI驱动所必须的内部接口和服务。主要包含和SCSI协议模块化相关的一些功能,比如:Proc文件系统、总线扫描、错误处理、SCSI命令排队等。当在系统中加载SCSI上层或下层驱动时,系统会主动加载并调用SCSI协议栈中间层模块。 SCSI协议栈的下层主要和硬件层交互,它控制各种不同的SCSI适配器。主机将通过这些适配器和SCSI总线来控制相关的SCSI设备。通过使用SCSI协议栈下层的伪SCSI设备驱动可以将一些非SCSI协议转换为SCSI协议,使上层的SCSI设备驱动可以控制非SCSI设备(如FC和USB)。 存储池虚拟层的实现方法 存储池虚拟层是一种存储空间的逻辑视图,这种仅在逻辑上存在的块设备只是一种中间的过渡层,因此,必需要由数据重定向把对存储池虚拟层的请求重定向为对实际物理设备的请求。通过修改子buffer_head的b_rdev成员域,把经过逻辑映射之后的子buffer_head挂到组成虚拟存储池的多个物理设备的低级块设备驱动程序的请求队列上,然后由该低级块设备驱动程序的请求处理函数对其进行优化处理,最后执行I/O操作。 为了把各种块设备的低级驱动程序有效地组织起来,我们在内核中设置了一个结构数组blk_dev[],这个数组以主设备号为下标,数组中的每个元素都是一个blk_dev_struct数据结构,其主体就是请求队列函数(request queue)。此外,该结构中还有一个函数指针queue,当该指针非0时,就调用请求队列函数找到具体设备的请求队列,这是考虑到具有同一主设备号的多项设备而设的,通常还要使用另一个指针data来提供辅助性的信息,这方面主要采用了原有的块I/O子系统的设备请求策略。存储池是作为块设备来构造的,我们

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档