发明名称 一种用于网络存储的方法及其系统
摘要 一种用于网络存储的协议及其系统,属于计算机信息存储技术领域,目的在于克服现有网络存储协议的不足,构造一种可满足价格、带宽、部署复杂性等需求的网络存储协议,并减少服务器负载、提高I/O服务性能。本发明的协议以VI为基础,包括启动器进程和目标器进程;本发明的系统,包括一个启动器和N个目标器,启动器、目标器通过VI网络接口、VI连接通道连入网络;启动器和目标器间通过一个或多个VI连接通道传输数据。本发明利用VI取代传统TCP/IP协议作为构建存储协议的通信基础,缩短了网络存储数据的关键路径,提高了物理网络带宽的利用率和网络I/O的响应速度,有效解决了网络带宽、存储访问速度、互操作性等网络存储问题。
申请公布号 CN1997033B 申请公布日期 2010.11.24
申请号 CN200610166583.0 申请日期 2006.12.28
申请人 华中科技大学 发明人 冯丹;王芳;叶俊;施展;周可;庞丽萍
分类号 H04L29/08(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 方放
主权项 一种用于网络存储的方法,包括启动器进程和目标器进程,(1)启动器进程顺序包括:(1.1)启动器初始化步骤,启动器根据用户指定模式选择加载小型计算机系统接口SCSI适配器驱动模块或基于虚拟接口的小型计算机系统接口协议应用编程接口vSCSI API模块,完成相关初始化;(1.2)启动器发起登入步骤,启动器调用连接管理模块向用户指定的一个或多个目标器发送认证信息,请求登入;(1.3)启动器等待认证步骤,启动器等待来自目标器的认证响应,若在时间阈值内等到认证响应,顺序进行,否则转入认证超时处理步骤;(1.4)虚拟接口VI连接通道建立步骤,启动器和一个或多个目标器间建立一个或多个VI连接通道,注册对应VI发送/接收缓冲区和关联发送/接收描述符;(1.5)启动器等待命令步骤,连接建立完毕后,启动器等待接收来自系统或上层应用的SCSI命令,接收到命令,顺序进行;(1.6)启动器解析命令步骤,启动器解析当前SCSI命令,根据用户指定的数据分布规则或策略,以及当前SCSI命令的类型生成一个或多个vSCSI请求;若是SCSI读命令,进行步骤(1.7),否则转步骤(1.8);(1.7)启动器读命令预处理步骤,启动器根据用户指定的数据分布规则或策略中使用到的一个或多个目标器,根据步骤(1.6)中生成的各vSCSI读请求中数据量大小,对各目标器对应的VI接收缓冲区执行开始接收PostRecv操作,准备好各VI接收队列,顺序进行;(1.8)启动器发送请求步骤,启动器将步骤(1.6)生成的针对目标器的一个或多个vSCSI请求并发执行开始发送PostSend操作,向目标器发送vSCSI请求;若发送的是写请求,进行步骤(1.9),否则转步骤(1.10);(1.9)启动器写命令预处理步骤,启动器按照使用的规则或策略对SCSI命令请求缓冲区request_buffer中待写数据进行运算定位,确定待写数据与各目标器的对应关系,然后按照用户指定的数据加密级别对以上确定的各目标器对应数据分别进行加密运算处理,最后将加密处理后的数据并行拷贝到各自对应的VI发送缓冲区队列,等待发送,顺序进行;(1.10)启动器等待响应步骤,启动器等待来自目标器的响应,接收到响应,则根据不同的响应类型,进入不同处理例程:读命令的响应进入步骤(1.11),写命令的响应进入步骤(1.12),状态查询类命令的响应进入步骤(1.13);若在时间阈值内未接收到响应,则转入响应超时处理步骤;(1.11)启动器读命令处理步骤,启动器接收来自一个或多个目标器的数据,并按照用户指定的数据加密级别对各VI接收缓冲区中数据进行解密运算处理,然后按照使用的规则或策略对SCSI命令request_buffer中待回填空间进行运算定位,确定来自各目标器的数据与其对应关系,最后将解密处理后的数据拷贝到以上计算出的SCSI命令的request_buffer对应位置中;回填完毕,转步骤(1.14);(1.12)启动器写命令处理步骤,启动器接收到来自一个或多个目标器的响应,对各待写数据队列并发执行PostSend操作,将待写数据发送到对应的目标器;数据发送完毕,转步骤(1.14);(1.13)启动器状态查询类命令处理步骤,启动器接收到对应一个或多个目标器的一个或多个vSCSI状态查询响应,提取并向系统或上层应用返回SCSI响应信息;反馈完毕,转步骤(1.14);(1.14)启动器请求处理完毕步骤,启动器执行完毕当前SCSI命令,转步骤(1.5),等待执行下一个SCSI命令。(2)目标器进程顺序包括:(2.1)目标器初始化步骤,目标器启动设备服务线程初始化,初始化完毕后连接管理模块;(2.2)目标器等待登入步骤,目标器等待接收来自启动器的登入认证请求;(2.3)目标器接收登入步骤,目标器接收到登入请求,对其进行身份验证,非法登入请求转入非法处理步骤,通过验证的合法请求接受其登入,向启动器发送认证响应;(2.4)目标器等待命令步骤,目标器等待接收来自启动器的vSCSI命令;(2.5)目标器解析命令步骤,目标器接收到vSCSI命令,对其进行解析,根据当前vSCSI命令类型的不同,进行不同处理:vSCSI读命令转步骤(2.6),写命令转步骤(2.7),状态查询类命令转步骤(2.10);(2.6)目标器读命令处理步骤,目标器在读写增速模块控制下,将数据从物理存储设备或内存缓冲区Cache拷贝到VI发送缓冲区队列,并对其执行PostSend操作,将数据发送至启动器;数据全部发送完毕,转步骤(2.11);(2.7)目标器写命令预处理步骤,目标器根据请求大小执行PostRecv操作,准备好VI接收队列,生成并调用PostSend操作向启动器发出写准备好ready响应,顺序进行;(2.8)目标器等待数据步骤,目标器等待来自启动器的数据,若在时间阈值内接收到数据,顺序进行;否则转入接收超时处理步骤,(2.9)目标器写命令处理步骤,目标器接收来自启动器的数据,在读写增速模块控制下,将数据从VI接收缓冲区直接写到物理存储设备或Cache;数据全部接收完毕,转步骤(2.11);(2.10)目标器状态查询类命令处理步骤,目标器提取vSCSI命令中封装的SCSI查询命令,按照SCSI协议规范执行查询操作,并将查询所得的反馈信息封装进vSCSI查询响应中,调用PostSend操作发送至启动器;查询响应发送完毕,转步骤(2.11);(2.11)目标器请求处理完毕步骤,目标器将当前vSCSI命令成功执行完毕,转入步骤(2.4),等待执行下一个vSCSI命令;
地址 430074 湖北省武汉市洪山区珞喻路1037号