一种块级网络存储访问方法

文档序号:7662829阅读:143来源:国知局

专利名称::一种块级网络存储访问方法
技术领域
:本发明涉及一种在计算机网络上的网络存储访问方法,尤其是一种客户端基于块的远程对服务器的存储资源进行访问的网络存储访问方法。
背景技术
:在现有相关技术中,网络存储技术是计算机远程访问存储资源的常用方法。目前流行的网络存储技术主要以以下两种为代表存储区域网络技术(StorageAreaNetwork,SAN)、以及网络附加存储技术(NetworkAttachedStorage,NAS)。它们都实现了通过IP网络访问存储设备上的数据。两者的主要区别是,SAN访问同一操作系统平台数据资源,NAS则可访问不同操作系统平台上的数据文件。但是无论是SAN还是NAS,它们实现复杂,并且都不能完成从同一客户机访问和下载不同操作系统平台数据和应用程序的工作,限制了网络存储访问的跨平台应用能力。本发明提出一种基于磁盘块的网络存储访问方法一BSAN(BlockStorageNetworkAccess)。该方法通过网络访问服务器的存储设备,可按照扇区访问服务器上的存储资源和数据资源,支持对OS以及其他的内核程序和应用程序进行运行和加载,
发明内容针对现有计算机网络存储技术实现复杂,网络存储访问的跨平台应用能力有限的不足,本发明提出网络环境下一种在计算机网络上的网络存储访问方法,尤其是一种客户端基于块的远程对服务器的存储资源进行访问的网络存储访问方法。该方法在客户机启动时截获客户机上对磁盘的块请求,转化为网络上块级访问服务器硬盘上文件的方法,搜索和寻找存储有操作系统引导程序的扇区,并把用户所选择的操作系统引导程序下载到客户机上,建立和完成通过服务器下载客户机操作系统的引导过程。在客户机的操作系统启动后,通过在操作系统的通过设备层下截获对块设备的请求,并转化为对服务器磁盘镜像的请求并发送,继而完成客户机和资源存储服务器之间的交互,实现从同一客户机上对不同操作系统平台的数据和程序的访问。本发明是适用于通过网络连接的计算系统的网络存储访问方法,所述网络计算系统包括通过计算机网络连接的服务器和客户机,所述网络存储访问方法由分别运行于客户机和服务器上的客户端模块BSANC和服务器端模块BSANS构成,客户机加电后,首先由基本输入输出系统进行加电自检的工作;BSANC初始化,创建虚拟的存储设备接口,将本地访问磁盘的读写等中断操作命令封装到传输报文中发送到网络中的服务器上,BSANS端模块则根据逻辑扇区号对虚拟硬盘文件进行操作,将客户机要访问的物理扇区号转换成服务器上的逻辑扇区号,在将读数据的请求封装后,发送给BSANS。所述BSANC的初始化步骤如下BSANC广播搜索BSANS;BSANS收到BSANC搜索网络中服务器的报文;BSANC从BSANS收到服务器的IP地址;BSANC发送创建会话连接请求报文;BSANS收到BSANC创建会话连接的请求报文;BSANS为会话分配缓冲区等资源,保存会话状态,并设置定时器,BSANC和BSANS之间建立会话连接;BSANC向BSANS查询系统为当前用户分配的存储设备列表和对应的磁盘镜像标识;BSANC从BSANS获得系统为当前用户分配的存储设备列表和镜像的标识;BSANC向BSANS査询存储设备镜像参数设定信息;BSANC从BSANS获得存储设备参数设定信息,并创建虚拟存储设备,将存储设备映射或注册到本地。客户机启动后通过BSANC按照下列步骤随时访问服务器上的数据BSANC虚拟的存储设备接口截获操作系统程序对存储设备的访问操作指令,将其对磁盘扇区的读写转换为对设备块号读写请求指令,再封装后由发送给BSANS;BSANS从磁盘镜像、应用程序和存储设备中找到相应的位置,将对应块的内容返回给客户机,若是写操作,则将写请求中的内容写入该位置。BSANC与BSANS之间块请求报文的传输基于TCP协议,并在本地保存请求的状态。采用了本发明的BSAN方法解决了现有存储技术无法支持客户端远程启动和远程访问跨平台存储资源的问题。此外,BSAN基于通用TCP/IP协议,实现起来简单。图l是BSAN模块结构示意图2是BSAN客户端初始化阶段的有限状态机;图3是BSAN客户端读写操作阶段的有限状态机;图4是BSAN服务端有限状态机;图5是BSAN客户端模块结构示意图6是BSAN服务端模块结构示意具体实施例方式下面参照图示对本发明进行详细说明。如图l,BSAN是一种基于扇区(块)的管理和访问服务器存储设备块的方法,分为服务端和客户端两个部分,分别位于客户机和服务器的物理驱动层和应用层。BSAN服务端负责管理服务器上的存储设备,为每个用户分配存储设备块,并响应客户端对服务端存储设备操作的请求。客户机操作系统和应用程序存放在服务器上存储镜像中,其中每个镜像保存一种操作系统和相应的应用程序,这些存储镜像由系统中所有的客户机共享;此外,BSAN服务端将服务器的存储设备分割为不同大小的存储设备块,BSAN根据用户的权限为其分配一个或者多个存储设备块。BSAN服务端管理这些存储镜像和存储设备块,并为它们各分配一个四字节的标识号(设备ID),协议运行时,客户机通过标识号访问它们。BSAN客户端负责在客户机上创建虚拟的存储设备接口,它在网络中搜索BSAN服务器的IP地址并和服务器建立会话连接,然后向服务器査询为当前用户预先分配的存储设备块设备ID的列表,以及存储镜像文件的设备ID,并根据设备ID依次査询每个存储设备块和存储镜像的参数,包括块大小、磁头数、柱面数、扇区数等;BSAN客户端根据计算需要,访问这些设备块,按扇区下载OS内核程序、应用程序,读用户数据,并将计算结果保存到存储设备块上。用户完成计算后,BSAN客户端负责关闭它和服务端之间的会话连接。BSAN客户端具有如下功能:<table>tableseeoriginaldocumentpage5</column></row><table><table>tableseeoriginaldocumentpage6</column></row><table>下表面列出了BSAN的功能原语:<table>tableseeoriginaldocumentpage6</column></row><table><table>tableseeoriginaldocumentpage7</column></row><table>BSAN的工作过程分为两个阶段初始化阶段和读写操作阶段。图2-4给出了BSAN客户端初始化阶段、读写操作阶段和服务端的状态迁移图。图2是BSAN客户端初始化阶段的状态转移图,其中各状态说明如下CI1:BSAN客户端启动;CI2:BSAN客户端广播搜索BSAN服务器的请求报文完毕;CI3:BSAN客户端从服务端收到BSAN服务端的IP地址;CI4:BSAN客户端发送创建会话连接请求报文完毕;CI5:BSAN客户端收到和服务端建立会话连接;CI6:BS^J客户端向服务端查询系统为当前用户分配的存储设备列表和用户选择的操作系统对应的存储镜像的标识;CI7:BSAN客户端从服务器获得系统为当前用户分配的存储设备列表和用户选择的操作系统对应的存储镜像的标识;CI8:BSAN客户端向服务端査询存储设备或存储镜像参数信息;CI9:BSAN客户端从服务端获得存储设备或存储镜像参数信息,并创建虚拟存储设备,将存储设备或存储镜像映射到本地;客户端开始读写操作阶段;CI10:客户端收到服务端发送的切换服务器通知。其中,图中以(I)开始的事件是主体收到的报文,以(O)开始的事件是主体发出的报文,其他事件是主体和OS或者应用程序的交互操作。BSAN定义了客户机对服务器上存储设备和存储镜像按扇区访问时BSAN客户端和BSAN服务端间的通信报文。BSAN客户端模拟的存储设备接口,截获OS程序对存储设备的访问操作指令,将其转换为同样的读写请求指令,封装后由BSAN客户端发送给服务端,服务端从存储镜像、应用程序&存储设备中找到相应的位置,将其中的内容返回给客户端,或将写请求中的内容写入该位置。读写访问阶段的有限状态机如图4所示。图3是BSAN客户端读写操作阶段的状态转移,其中各状态说明如下CRW1:BSAN客户端空闲;CRW2:BS認客户端从虚拟存储设备获得OS或应用程序访问存储设备的读写请求;CRW3:BSAN客户端向服务端发送读写操作报文完毕;CRW4:BS緒客户端收到服务端发送的读写操作应答;CRW5:BSAN客户端收到服务端发送的错误处理报文。其中,图中以(I)开始的事件是主体收到的报文,以(O)开始的事件是主体发出的报文,其他事件是主体和OS或者应用程序的交互操作。图4是BSAN服务器端状态转移图,其中各状态说明如下-Sl:服务端初始化完毕,监听客户端报文;S2:服务端收到客户端搜索网络中BS細服务器的报文;S3:服务端收到客户端创建会话连接的请求报文;S4:服务端和客户端间已经建立会话连接,服务端为该会话分配缓冲区等资源,保存会话状态,并设置定吋器;S5:服务端收到客户端发送的存储设备列表査询请求或者设备参数查询请求;S6:服务端收到客户端发送的读、写操作请求;S7:服务端对存储镜像或者存储设备进行读写操作;S8:服务器定时器超时前没有收到心跳消息或者其他任何该客户端的消息;S9:服务端向客户端发送切换服务器的报文。其中,图中以(I)开始的事件是主体收到的报文,以(O)开始的事件是主体发出的报文,其他事件是主体和OS或者应用程序的交互操作。为实现BSAN的功能,BSAN定义查询、控制、读写和错误处理等四类报文,其中每类报文又包含多种子类型的报文。如图6所示,BSAN报文分为两个部分报文头部和报文数据区。报文头部占用四个字节,其中前两个字节为操作码(OptionCode),后两个字节为子操作码(SubOptCode),操作码用于区分不同的报文类型,子操作码用于区分每种报文的子类型。BSAN査询报文负责如下工作客户端搜索网络中的BSAN服务器的IP地址,査询系统为用户分配的存储设备块列表、存储镜像的设备ID列表,以及査询存储设备块或存储镜像的参数信息。协议査询类报文包括<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>BSAN报文在网络上传播时,可能因为外部干扰或者服务器端负载过重丢包而导致出错,客户机或者服务器处理报文时也有可能发生错误,BSAN提供错误处理报文以解决协议运行过程中发生错误的情况。错误处理报文的操作码为3,子操作码为0。BSAN定义了如下6种错误类型1读写报文中起始逻辑扇区字段不合法2读写报文请求的逻辑扇区数超过最大值3用户没有读权限4用户没有写权限5设备ID不存在6SessionID不存在在现有采用X86指令体系结构的计算机中,当操作系统启动时,在加载操作系统内核之前,首先要通过INT13中断访问存储,加载MBR上的引导程序。因此,BSAN客户端在加载操作系统时将客户机对磁盘的读、写访问操作重定向到局域网中的BSAN服务器上。如图5所示,NSA客户端包括四个模块BSAN层、虚拟存储设备注册模块、读写请求处理模块和预读缓存管理模块。BSAN层提供了客户端网络通信的所有功能调用接口,负责实现和BSAN服务端的网络通信。虚拟存储设备注册映射模块负责在客户机上注册存储设备,创建虚拟存储设备接口。读写请求处理模块负责接受OS和应用程序的对存储设备的读写操作指令,并将其通过预读缓存模块或直接和BSAN层进行处理。预读缓存管理模块用于管理本地内存中的数据缓冲区,以提高系统性能。如图6所示,BSAN服务端包括六个组成部分BS認层、存储管理模块、用户管理模块、调度模块,本地存储设备读写操作模块和预读缓存管理模块。BSAN层提供了BSAN网络协议的所有功能调用接口。存储管理模块负责管理服务器上的所有存储设备和存储镜像,以及这些设备、镜像的参数信息。用户管理模块负责管理系统中所有的用户,以及为他们分配的存储设备。调度模块,本地存储设备读写操作模块和预读缓存管理模块协作实现。在优选实施例中,本发明的BSAN方法被应用于一个基于网络计算的计算机系统。在安装了Windows2003操作系统的普通PC上实现了BSANServer,实现BSANClient的实模式代码及保护模式BSANClient驱动。客户机和服务器通过高速以太网互连。作为另一实施例,上述BSAN读写请求处理模块对读写等控制报文的传输采用TCP协议,将来自通用设备层的读写请求,转化为BSAN的TCP传输报文格式发送出去。服务器解析并处理该报文。相应地,TCP/IP协议层上的BSAN传输报文还带有以下字段charhandle[8],该字段是客户端上在发送包前拷贝到内存的虚拟设备层请求结构的地址,用于保存报文的状态。因此,发送报文的部分代码相应为memcpy(myrequest.handle,&req,sizeof(req);rq_for—each—bio(bio,req)structbio—vec*bvec;Offset=0;bio—for—each—segment(bvec,bio,i){kaddr=kmap(bvec-〉bv_page);memcpy(myrequest.rq_ack.data+offset,kaddr+bvec->bv—offset,bvec->bv—len)offset=offset+bvec-〉bv—len;sock—xmit(sock,1,&myrequest,sizeof(mypacket)+sizeof(req->nr—sectors*SECTOR—SIZE),O);读取的部分代码则相应为sock—xmit(sock,0,&buffer,sizeof(buffer),0);myreply=(struct_packet*)&buffer;find一request(lo,myreply->handle);offset=sizeof(^_packet);rq_for—each一bio(bio,req){bio一for一each—segment(bvec,bio,i){kaddr=kmap(bvec->bv_page);memcpy(kaddr+bvec->bv—offset,buffer++offset,bvec->bv—len);offset=offset+bvec->bv—len;kunmap(bvec->bv_page);end_request(req);基于TCP/IP的BSAN传输主要用于服务质量不保证的网络,利用优化的TCP协议传输数据报文,可提高磁盘块数据在这类网络上的传输效率。以上描述了BSAN的原理、功能原语、报文、客户端及服务器端的状态转移、结构。基于本发明的方法,客户机可从存储在服务器上的多种磁盘镜像中访问数据,从而较好地支持网络存储的访问。以上描述的具体实施方式只是对本发明进行示例,本领域技术人员在不脱离本发明实质性思想的基础上进行各种修改和改进后得到的技术方案,均视为在本发明的范围之内。本发明适当的范围以权利要求书为准进行确定。权利要求1、一种计算机系统的网络存储访问方法,所述网络计算系统包括通过计算机网络连接的服务器和客户机,所述网络存储访问方法由分别运行于客户机和服务器上的客户端模块BSANC和服务器端模块BSANS构成,客户机加电后,首先由基本输入输出系统进行加电自检的工作;BSANC初始化,创建虚拟的存储设备接口,将本地访问磁盘的读写等中断操作命令封装到传输报文中发送到网络中的服务器上,BSANS端模块则根据逻辑扇区号对虚拟硬盘文件进行操作,将客户机要访问的物理扇区号转换成服务器上的逻辑扇区号,在将读数据的请求封装后,发送给BSANS。2、如权利要求1所述的方法,其特征在于所述BSANC的初始化步骤如下BSANC广播搜索BSANS;BSANS收到BSANC搜索网络中服务器的报文;BSANC从BSANS收到服务器的IP地址;BSANC发送创建会话连接请求报文;BSANS收到BSANC创建会话连接的请求报文;BSANS为会话分配缓冲区等资源,保存会话状态,并设置定时器,BSANC和BSANS之间建立会话连接;BSANC向BSANS查询系统为当前用户分配的存储设备列表和对应的磁盘镜像标识;BSANC从BSANS获得系统为当前用户分配的存储设备列表和镜像的标识;BSANC向BSANS查询存储设备镜像参数设定信息;BSANC从BSANS获得存储设备参数设定信息,并创建虚拟存储设备,将存储设备映射或注册到本地。3、如权利要求2所述的方法,其特征在于客户机启动后通过BSANC按照下列步骤随时访问服务器上的数据BSANC虚拟的存储设备接口截获操作系统程序对存储设备的访问操作指令,将其对磁盘扇区的读写转换为对设备块号读写请求指令,再封装后由发送给BSANS;BSANS从磁盘镜像、应用程序和存储设备中找到相应的位置,将对应块的内容返回给客户机,若是写操作,则将写请求中的内容写入该位置。4、如权利要求3所述的方法,其特征在于BSANC与BSANS之间块请求报文的传输基于TCP协议,并在本地保存请求的状态。全文摘要本发明的网络存储访问方法适用于分布式的计算机系统,所述网络存储访问方法由客户端模块BSANC和服务器端模块BSANS构成,客户机加电后BSANC自动初始化,创建虚拟的存储设备接口,将本地访问磁盘的读写等操作命令封装到传输报文中发送到网络中的服务器上,服务器上的BSANS端模块则根据逻辑扇区号对虚拟硬盘文件进行操作,将客户机要访问的物理扇区号转换成服务器上的逻辑扇区号,从磁盘镜像文件中找到相应的位置,将对应块的内容返回给客户机,若是写操作,则将写请求中的内容写入该位置。文档编号H04L29/06GK101420360SQ200710163478公开日2009年4月29日申请日期2007年10月26日优先权日2007年10月26日发明者徐广斌申请人:徐广斌
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1