CN113986146A - 轻量级的fc-san共享存储系统及共享存储方法 - Google Patents
轻量级的fc-san共享存储系统及共享存储方法 Download PDFInfo
- Publication number
- CN113986146A CN113986146A CN202111586567.8A CN202111586567A CN113986146A CN 113986146 A CN113986146 A CN 113986146A CN 202111586567 A CN202111586567 A CN 202111586567A CN 113986146 A CN113986146 A CN 113986146A
- Authority
- CN
- China
- Prior art keywords
- storage module
- read
- storage
- instruction
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Abstract
本发明公开了一种Vxworks下轻量级的FC‑SAN共享存储系统及共享存储方法,系统包括存储模块端和主机端;多个存储模块端组成包含多个存储模块端的存储网络;每个存储模块端通过注册函数在连接的主机端的本地抽象成虚拟存储模块,以将存储模块增加到存储网络中;各个主机端能够对每个存储模块端分别进行读操作;每个主机端对应分配有供写入操作的不同的存储模块端,以避免主机端产生写操作冲突;主机端和存储模块端通过FC‑MAP协议通信,以处理读写请求。本发明的技术方案旨在解决Vxworks下现有的FC共享技术还未实现多个主机像操作本地磁盘一样操作远程存储模块的问题。
Description
技术领域
本发明涉及FC共享技术领域,尤其涉及一种Vxworks下轻量级的FC-SAN共享存储系统和一种Vxworks下轻量级的FC-SAN共享存储方法。
背景技术
在FC共享技术领域中,需要实现多个主机共享同一个存储模块,使得用户端可以像操作本地磁盘一样操作远程存储模块,并可进行如分区、创建文件系统或者进行裸地址的读写操作,实现类似FC-SAN的功能。而Vxworks下现有的FC共享技术还未实现多个主机像操作本地磁盘一样操作远程存储模块的功能。
发明内容
本发明的主要目的在于提供一种Vxworks下轻量级的FC-SAN共享存储系统,旨在解决Vxworks下现有的FC共享技术还未实现多个主机像操作本地磁盘一样操作远程存储模块的问题。
为实现上述目的,本发明提供的Vxworks下轻量级的FC-SAN共享存储系统包括存储模块端和多个主机端;所述存储模块端采用Linux操作系统,所述主机端采用Vxworks操作系统;
多个所述存储模块端分别通过交换机与各个所述主机端通信连接,以组成包含多个所述存储模块端的存储网络;
每个所述存储模块端通过注册函数在连接的所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中;
所述存储网络中的各个所述存储模块端显示在所述主机端,以使各个所述主机端能够对每个所述存储模块端分别进行读操作;
每个所述主机端对应分配有供写入操作的不同的所述存储模块端,以避免各个所述主机端产生写操作冲突;
所述主机端,用于根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端,其中,所述FC-MAP协议的数据信息包括FC端口号、消息msgID、消息长度msgLen、消息类型msgType、消息缓冲区地址msgbuf和数据校验;
所述存储模块端,用于侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。
优选地,所述主机端包括操作应用层、文件系统层、虚拟存储模块设备驱动层、主机端协议层,以及第一FC驱动层;
所述操作应用层,用于接收用户的操作指令,并根据所述操作指令向所述文件系统层发出读写指令;
所述文件系统层,用于根据所述读写指令,生成向所述虚拟存储模块设备驱动层发送的IO读写请求;其中,所述指令数据包括指令类型,所述指令类型包括读指令和写指令,当所述指令类型为写指令时,所述指令数据还包括待写入数据;
所述虚拟存储模块设备驱动层,用于根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址;
所述主机端协议层,用于将指令数据和所述虚拟存储模块设备驱动层转化的实际存储地址打包形成FC-MAP协议;
所述第一FC驱动层,用于将所述FC-MAP协议发送至所述存储模块端。
优选地,所述虚拟存储模块设备驱动层,还用于通过所述存储模块的ID号、设备名称、设备存储空间大小以及FC端口号形成所述注册函数,将所述存储模块端连接的存储模块通过所述注册函数在本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中。
优选地,所述存储模块端包括存储应用层、存储端协议层、第二FC驱动层、磁盘设备驱动层,所述磁盘设备驱动层连接有存储模块;
所述第二FC驱动层,用于接收所述第一FC驱动层发出的所述FC-MAP协议,并用于将所述存储端协议层打包的所述FC-MAP协议发送至所述第一FC驱动层;
所述存储端协议层,用于解析所述第一FC驱动层发出的所述FC-MAP协议,以确定所述第一FC驱动层发出的所述FC-MAP协议对应的实际存储地址和指令类型,并用于将所述所述存储模块的反馈数据打包成发送至所述主机端的FC-MAP协议;
所述磁盘设备驱动层,用于根据所述实际存储地址和所述指令数据,在所述存储模块进行读写操作。
优选地,所述主机端设置有第一FC端口,所述存储模块端设置有第二FC端口,各个所述第一FC端口分别与所述第二FC端口通信连接,每个所述第一FC端口和所述第二FC端口设置有唯一的Port号,所述存储模块端对每个所述主机端的所述第一FC端口建立独立的处理线程。
此外,为实现上述目的,本发明还提供一种Vxworks下轻量级的FC-SAN共享存储方法,应用于上述任一项所述的Vxworks下轻量级的FC-SAN共享存储系统;所述共享存储方法包括如下步骤:
获取与所述主机端连接的存储模块端;
通过注册函数,将所述存储模块端连接的存储模块在所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述主机端,从而在所述主机端形成多个所述存储模块端建立的存储网络,其中,所述注册函数包括所述存储模块的ID号、设备名称、设备存储空间大小以及FC端口号;
所述主机端根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端;
所述存储模块端侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。
优选的,所述主机端根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端的步骤,包括:
接收用户的操作指令,并根据所述操作指令发出读写指令;
根据所述读写指令,生成IO读写请求;
根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址;其中,所述指令数据包括指令类型,所述指令类型包括读指令和写指令,当所述指令类型为写指令时,所述指令数据还包括待写入数据;
将所述指令数据和所述虚拟存储模块设备驱动层转化的实际存储地址打包形成FC-MAP协议;
将所述FC-MAP协议发送至所述存储模块端。
优选的,所述存储模块端侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求的步骤,包括:
接收主机端发出的所述FC-MAP协议;
解析所述主机端发出的所述FC-MAP协议,以确定所述主机端发出的所述FC-MAP协议对应的实际存储地址和指令数据;
根据所述实际存储地址和所述指令数据,将所述存储模块以裸设备的方式打开,以进行读写操作。
优选的,所述根据所述实际存储地址和所述指令数据,将所述存储模块以裸设备的方式打开,以进行读写操作的步骤,包括:
当所述读写数据对应的指令类型为读指令时,根据所述实际存储地址和所述读指令,将所述存储模块以裸设备的方式打开,从所述存储模块对应的实际存储地址中读出数据,并将读出的数据打包成FC-MAP协议发送至所述主机端;
当所述读写数据对应的指令类型为写指令时,根据所述实际存储地址、所述写指令和所述待写入数据,将所述存储模块以裸设备的方式打开,在所述存储模块对应的实际存储地址中进行写入操作,并将写入操作的结果打包成FC-MAP协议发送至所述主机端。
优选的,所述共享存储方法,还包括:
在所述主机端上电后,加载FC驱动,以根据所述虚拟存储模块设备驱动层注册的各个所述存储模块端初始化存储网络,创建虚拟存储模块设备驱动层的设备结构体、请求队列和请求处理模块;
所述根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址的步骤,包括:
侦测到IO读写请求时,将所述IO读写请求按照预设的处理顺序添加至所述请求队列;
所述请求处理模块根据预设的处理顺序从所述请求队列中提出所述IO读写请求进行处理,以从所述IO读写请求中确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址。
在本发明的技术方案中,所述存储模块端采用Linux操作系统,所述主机端采用Vxworks操作系统,每个所述存储模块端通过注册函数在连接的所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中;所述存储网络中的各个所述存储模块端显示在所述主机端,以使各个所述主机端能够对每个所述存储模块端分别进行读操作,每个所述主机端对应分配有供写入操作的不同的所述存储模块端,以避免各个所述主机端产生写操作冲突,所述存储模块端用于侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。从而,本发明的技术方案中实现了Vxworks下多个主机端共享同一个存储模块端,使得用户在主机端可以像操作本地磁盘一样操作远程的存储模块端,进行如分区、创建文件系统或者进行裸地址的读写操作,实现类似FC-SAN的功能。进一步的,各个存储模块端分别通过交换机与各个所述主机端通信连接,以组成包含多个所述存储模块端的存储网络,以使存储网络中的各个存储模块端能够进行增加和删除,实现了Vxworks下多个主机端同时共享多个存储模块端,并且避免产生共享冲突。
附图说明
图1为本发明Vxworks下轻量级的FC-SAN共享存储系统一实施例的模块结构示意图;
图2为本发明Vxworks下轻量级的FC-SAN共享存储方法第一实施例的流程示意图。
本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“单元”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“单元”、“部件”或“单元”可以混合地使用。
请参阅图1,为实现上述目的,本发明提供一种Vxworks下轻量级的FC-SAN共享存储系统,包括存储模块端和多个主机端;所述存储模块端采用Linux操作系统,所述主机端采用Vxworks操作系统;
多个所述存储模块端分别通过交换机与各个所述主机端通信连接,以组成包含多个所述存储模块端的存储网络;
每个所述存储模块端通过注册函数在连接的所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中;
所述存储网络中的各个所述存储模块端显示在所述主机端,以使各个所述主机端能够对每个所述存储模块端分别进行读操作;
每个所述主机端对应分配有供写入操作的不同的所述存储模块端,以避免各个所述主机端产生写操作冲突;
所述主机端,用于根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端,其中,所述FC-MAP协议的数据信息包括FC端口号、消息msgID、消息长度msgLen、消息类型msgType、消息缓冲区地址msgbuf和数据校验;
所述存储模块端,用于侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。
在本发明的技术方案中,所述存储模块端采用Linux操作系统,所述主机端采用Vxworks操作系统,每个所述存储模块端通过注册函数在连接的所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中;所述存储网络中的各个所述存储模块端显示在所述主机端,以使各个所述主机端能够对每个所述存储模块端分别进行读操作,每个所述主机端对应分配有供写入操作的不同的所述存储模块端,以避免各个所述主机端产生写操作冲突,所述存储模块端用于侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。从而,本发明的技术方案中实现了Vxworks下多个主机端共享同一个存储模块端,使得用户在主机端可以像操作本地磁盘一样操作远程的存储模块端,进行如分区、创建文件系统或者进行裸地址的读写操作,实现类似FC-SAN的功能。进一步的,各个存储模块端分别通过交换机与各个所述主机端通信连接,以组成包含多个所述存储模块端的存储网络,以使存储网络中的各个存储模块端能够进行增加和删除,实现了Vxworks下多个主机端同时共享多个存储模块端,并且避免产生共享冲突。
具体的,所述存储模块端的数量可以为至少三个。每个所述存储模块端包括CPU模块和与所述CPU模块连接的存储模块,以使所述存储模块端不仅可以进行数据的存储,还可以实现数据的处理和控制。
目前常用的存储共享方式有iscsi、nbd、drbd等,这些方式有以下缺点:
首先,这些方式大多是基于以太网协议进行数据传输,例如iscsi、tcp协议,接口和速率上受到限制。
其次,这些方式实现比较复杂,可移植性差,不能兼容Vxworks等实时操作系统。
并且,传统FC-SAN方案一般适用于有高可用需求的大型磁盘阵列,对硬件上性能要求较高,对嵌入式环境不适用。
同时,通用FC协议栈很复杂,包含多层协议,可移植性差。
本发明采用自定义的轻量级的FC-MAP协议,完成主机端和存储模块端的通信,将远程物理存储模块关联Vxworks主机上,且实现数据块级别访问;并且支持FC网络下多个Vxworks主机端同时访问远程的存储模块。
数据传输过程采用自定义的FC-MAP协议,而不是FC协议。FC-MAP协议主要包含FC端口号、消息msgID、消息长度msgLen、消息类型msgType、消息缓冲区地址msgbuf和数据校验等信息,消息类型分为指令类和数据类,指令类主要完成FC端口号查询、连接状态查询等操作;数据类完成对共享存储模块地址的读写、格式化和挂载等操作。FC-MAP协议直接建立在FC驱动之上,减少了多层协议解析对速率的影响,大大提高了数据传输的效率。
本发明采用C/S模式,server端部署在存储模块端中,client部署在各主机端。存储模块端采用Linux操作系统,实现对本地存储模块的直接访问,处理来自各主机端的请求。
优选地,所述主机端包括操作应用层、文件系统层、虚拟存储模块设备驱动层、主机端协议层,以及第一FC驱动层;
所述操作应用层,用于接收用户的操作指令,并根据所述操作指令向所述文件系统层发出读写指令;
所述文件系统层,用于根据所述读写指令,生成向所述虚拟存储模块设备驱动层发送的IO读写请求;其中,所述指令数据包括指令类型,所述指令类型包括读指令和写指令,当所述指令类型为写指令时,所述指令数据还包括待写入数据;
所述虚拟存储模块设备驱动层,用于根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址;
所述主机端协议层,用于将指令数据和所述虚拟存储模块设备驱动层转化的实际存储地址打包形成FC-MAP协议;
所述第一FC驱动层,用于将所述FC-MAP协议发送至所述存储模块端。
其中,主机端协议层和第一FC驱动层可以合并成一个FC驱动层。
主机端将远程存储模块在本地抽象成虚拟存储模块vitualdisk,并在虚拟存储模块设备驱动层进行注册,提供给上层应用。主机端协议层和第一FC驱动层可以将vitualdisk的IO请求转化成FC-MAP协议传递到存储模块端。
优选地,所述虚拟存储模块设备驱动层,还用于通过所述存储模块的ID号、设备名称、设备存储空间大小以及FC端口号形成所述注册函数,将所述存储模块端连接的存储模块通过所述注册函数在本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中。
当主机端连接新的存储模块端时,所述虚拟存储模块设备驱动层通过所述存储模块的ID号、设备名称、设备存储空间大小以及FC端口号形成注册函数,并判断注册函数中的FC端口号是否与已连接的存储模块端的FC端口号冲突;若不冲突,则将新增的所述存储模块端连接的存储模块通过所述注册函数在本地抽象成虚拟存储模块;若冲突,则拒绝新增的所述存储模块端与所述主机端连接。
优选地,所述存储模块端包括存储应用层、存储端协议层、第二FC驱动层、磁盘设备驱动层,所述磁盘设备驱动层连接有存储模块;
所述第二FC驱动层,用于接收所述第一FC驱动层发出的所述FC-MAP协议,并用于将所述存储端协议层打包的所述FC-MAP协议发送至所述第一FC驱动层;
所述存储端协议层,用于解析所述第一FC驱动层发出的所述FC-MAP协议,以确定所述第一FC驱动层发出的所述FC-MAP协议对应的实际存储地址和指令类型,并用于将所述所述存储模块的反馈数据打包成发送至所述主机端的FC-MAP协议;
所述磁盘设备驱动层,用于根据所述实际存储地址和所述指令数据,在所述存储模块进行读写操作。
所述第一FC驱动层和所述第二FC驱动层之间除了通过FC-MAP协议进行读写操作的数据传送之外,还通过FC-MAP协议进行FC端口号查询,FC端口连接状态查询,以及读写操作的完成反馈等通讯。
具体的,当存在多个存储模块端时,各个存储模块端在同一所述主机端可以采用至少两种方式显示:
第一种,不同的存储模块端在同一主机端作为不同的存储模块显示,每一存储模块具有不同的名称以在主机端进行区别。
第二种,不同的存储模块端在同一主机端作为一个总体存储模块显示,其中,每个存储模块端均设置有写入操作的先后顺序,每一个所述存储模块端作为该总体存储模块的不同的存储区域。当前一个存储模块端写满后,再执行写操作时,向后一个存储模块端进行写入操作。具体的,在所述主机端中,所述磁盘设备驱动层识别所述指令数据包括的指令类型,当指令类型为读指令时,根据实际存储地址从对应的存储模块端读出数据。当指令类型为写指令时,获取实际存储地址,并判断实际存储地址对应的存储模块端是否存满;若否,根据实际存储地址向对应的存储模块端写入数据;若是,根据实际存储地址对应的存储模块端的下一写入存储模块端进行数据写入操作。
优选地,所述主机端设置有第一FC端口,所述存储模块端设置有第二FC端口,各个所述第一FC端口分别与所述第二FC端口通信连接,每个所述第一FC端口和所述第二FC端口设置有唯一的Port号,支持任意点对点之间的通信。所述存储模块端对每个所述主机端的所述第一FC端口建立独立的处理线程,以保证每个主机端发起的读写请求能够并行处理,还能提高共享存储的处理速度。
请参阅图2,此外,为实现上述目的,本发明的第一实施例中提供一种Vxworks下轻量级的FC-SAN共享存储方法,应用于如上述任一项所述的Vxworks下轻量级的FC-SAN共享存储系统;所述共享存储方法包括如下步骤:
步骤S10,获取与所述主机端连接的存储模块端;
步骤S20,通过注册函数,将所述存储模块端连接的存储模块在所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述主机端,从而在所述主机端形成多个所述存储模块端建立的存储网络,其中,所述注册函数包括所述存储模块的ID号、设备名称、设备存储空间大小以及FC端口号;
步骤S30,所述主机端根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端;
步骤S40,所述存储模块端侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。
在本发明的技术方案中,所述存储模块端采用Linux操作系统,所述主机端采用Vxworks操作系统,每个所述存储模块端通过注册函数在连接的所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中;所述存储网络中的各个所述存储模块端显示在所述主机端,以使各个所述主机端能够对每个所述存储模块端分别进行读操作,每个所述主机端对应分配有供写入操作的不同的所述存储模块端,以避免各个所述主机端产生写操作冲突,所述存储模块端用于侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。从而,本发明的技术方案中实现了Vxworks下多个主机端共享同一个存储模块端,使得用户在主机端可以像操作本地磁盘一样操作远程的存储模块端,进行如分区、创建文件系统或者进行裸地址的读写操作,实现类似FC-SAN的功能。进一步的,各个存储模块端分别通过交换机与各个所述主机端通信连接,以组成包含多个所述存储模块端的存储网络,以使存储网络中的各个存储模块端能够进行增加和删除,实现了Vxworks下多个主机端同时共享多个存储模块端,并且避免产生共享冲突。
基于本发明的Vxworks下轻量级的FC-SAN共享存储方法的第一实施例,本发明的Vxworks下轻量级的FC-SAN共享存储方法的第二实施例中,所述步骤S30,包括:
步骤S31,接收用户的操作指令,并根据所述操作指令发出读写指令;
步骤S32,根据所述读写指令,生成IO读写请求;
步骤S33,根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址;其中,所述指令数据包括指令类型,所述指令类型包括读指令和写指令,当所述指令类型为写指令时,所述指令数据还包括待写入数据;
步骤S34,将所述指令数据和所述虚拟存储模块设备驱动层转化的实际存储地址打包形成FC-MAP协议;
步骤S35,将所述FC-MAP协议发送至所述存储模块端。
基于本发明的Vxworks下轻量级的FC-SAN共享存储方法的第二实施例,本发明的Vxworks下轻量级的FC-SAN共享存储方法的第三实施例中,所述步骤S40,包括:
步骤S41,接收主机端发出的所述FC-MAP协议;
步骤S42,解析所述主机端发出的所述FC-MAP协议,以确定所述主机端发出的所述FC-MAP协议对应的实际存储地址和指令数据;
步骤S43,根据所述实际存储地址和所述指令数据,将所述存储模块以裸设备的方式打开,以进行读写操作。
基于本发明的Vxworks下轻量级的FC-SAN共享存储方法的第三实施例,本发明的Vxworks下轻量级的FC-SAN共享存储方法的第四实施例中,所述步骤S43,包括:
步骤S431,当所述读写数据对应的指令类型为读指令时,根据所述实际存储地址和所述读指令,将所述存储模块以裸设备的方式打开,从所述存储模块对应的实际存储地址中读出数据,并将读出的数据打包成FC-MAP协议发送至所述主机端;
步骤S432,当所述读写数据对应的指令类型为写指令时,根据所述实际存储地址、所述写指令和所述待写入数据,将所述存储模块以裸设备的方式打开,在所述存储模块对应的实际存储地址中进行写入操作,并将写入操作的结果打包成FC-MAP协议发送至所述主机端。
基于本发明的Vxworks下轻量级的FC-SAN共享存储方法的第一实施例至第四实施例,本发明的Vxworks下轻量级的FC-SAN共享存储方法的第五实施例中,所述共享存储方法,还包括:
步骤S50,在所述主机端上电后,加载FC驱动,以根据所述虚拟存储模块设备驱动层注册的各个所述存储模块端初始化存储网络,创建虚拟存储模块设备驱动层的设备结构体、请求队列和请求处理模块;
步骤S60,所述根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址的步骤,包括:
步骤S70,侦测到IO读写请求时,将所述IO读写请求按照预设的处理顺序添加至所述请求队列;
步骤S80,所述请求处理模块根据预设的处理顺序从所述请求队列中提出所述IO读写请求进行处理,以从所述IO读写请求中确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址。
在一具体实施例中,存储模块端采用多线程方式,打开FC端口,时刻监听数据,当有新的主机端的FC端口接入时,存储模块端创建独立的线程。同时将本地存储模块以裸设备的方式打开。在主机端先加载FC驱动,初始化存储模块,创建vitualdisk的设备结构体、请求队列和请求处理模块,当上层有IO请求时,首先进入到请求队列中,请求处理模块逐个处理IO请求,在IO请求中,包含待访问的请求类型、磁盘物理地址、读写数据等信息。将IO请求通过FC-MAP协议打包后,通过第一FC驱动层发送到存储模块端。存储模块端根据FC-MAP协议解析出指令和偏移地址,完成对本地物理设备的读写操作。
存储模块端无须保存任何主机端信息,为各个主机端提供对等服务,此外除存储服务本身之外无任何其他负载,最大限度地保障存储服务性能,并提高模块可靠性。
本发明采用光纤通道交换机,具体的,每个所述主机端分别通信连接光纤通道交换机,所述光纤通道交换机通信连接所述存储模块端。
进一步的,所述存储模块端包括CPU模块、FPGA模块、电源模块、时钟模块和热插拔模块,CPU模块连接有存储模块,CPU模块包括存储应用层、存储端协议层、第二FC驱动层、磁盘设备驱动层;所述FPGA模块、所述存储模块和所述热插拔模块分别电连接所述CPU模块,所述电源模块分别与所述CPU模块和所述FPGA模块电连接;所述时钟模块分别与所述CPU模块和所述FPGA模块电连接。
CPU模块选用FT-2000/4,FT-2000/4接资源如下:1、集成2个DDR4-3200通道,支持对DDR存储数据进行实时加密;2、集成 34Lanes PCIe 3.0接口、2个X16(每个可拆分成2个X8)和2个X1;3、集成2个千兆网接口(RGMII),支持10/100/1000Mbps自适应;4、集成4个UART、1个LPC Master、32个GPIO、4个I2C、1个QSPI、2个通用SPI、2个WDT、1个RTC和16个外部中断(和GPIO共用IO)。
电源模块根据CPU和FPGA的上电时序和电流大小的特征,采用分别供电的方式,减少电源对两个芯片使用时的影响。
所述FPGA模块包括依次信号连接的FC端口、端口控制单元和端口路由选择单元;所述端口路由选择单元还分别信号连接有公共寄存器通用协议单元和FC读写协议控制单元,所述公共寄存器通用协议单元和所述FC读写协议控制单元分别信号连接PCIe接口控制单元。
具体的,所述FPGA模块还包括高速接口,用于实现FC光纤通道协议的数据收发。FC端口为两路(FC0和FC1),两路FC端口数据通过端口控制单元对FC端口数据进行收发控制;端口路由选择单元通过数据收发的端口号和CPU模块的公共寄存器通用协议控制单元的寄存器配置信息,实现端口路由功能;FC读写协议控制单元进行数据收发控制,结合寄存器配置信息通过PCIe接口控制单元,实现CPU模块数据协议包的收发;实现FC0、FC1两路光纤通道协议数据和PCIe协议的Switch路由功能,以及存储模块端的FC端口和CPU模块之间的透明桥数据转发功能。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备进入本发明各个实施例所述的方法。
在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、 或“第一实施例~第X实施例”等的描述意指结合该实施例或示例描述的具体特征、 结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料、方法步骤或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种Vxworks下轻量级的FC-SAN共享存储系统,其特征在于,包括存储模块端和多个主机端;所述存储模块端采用Linux操作系统,所述主机端采用Vxworks操作系统;
多个所述存储模块端分别通过交换机与各个所述主机端通信连接,以组成包含多个所述存储模块端的存储网络;每个所述存储模块端通过注册函数在连接的所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中;
所述存储网络中的各个所述存储模块端显示在所述主机端,以使各个所述主机端能够对每个所述存储模块端分别进行读操作;每个所述主机端对应分配有供写入操作的不同的所述存储模块端,以避免各个所述主机端产生写操作冲突;
所述主机端,用于根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端,其中,所述FC-MAP协议的数据信息包括FC端口号、消息msgID、消息长度msgLen、消息类型msgType、消息缓冲区地址msgbuf和数据校验;
所述存储模块端,用于侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。
2.根据权利要求1所述的Vxworks下轻量级的FC-SAN共享存储系统,其特征在于,所述主机端包括操作应用层、文件系统层、虚拟存储模块设备驱动层、主机端协议层,以及第一FC驱动层;
所述操作应用层,用于接收用户的操作指令,并根据所述操作指令向所述文件系统层发出读写指令;
所述文件系统层,用于根据所述读写指令,生成向所述虚拟存储模块设备驱动层发送的IO读写请求;其中,所述指令数据包括指令类型,所述指令类型包括读指令和写指令,当所述指令类型为写指令时,所述指令数据还包括待写入数据;
所述虚拟存储模块设备驱动层,用于根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址;
所述主机端协议层,用于将指令数据和所述虚拟存储模块设备驱动层转化的实际存储地址打包形成FC-MAP协议;
所述第一FC驱动层,用于将所述FC-MAP协议发送至所述存储模块端。
3.根据权利要求2所述的Vxworks下轻量级的FC-SAN共享存储系统,其特征在于,所述虚拟存储模块设备驱动层,还用于通过所述存储模块的ID号、设备名称、设备存储空间大小以及FC端口号形成所述注册函数,将所述存储模块端连接的存储模块通过所述注册函数在本地抽象成虚拟存储模块,以将所述存储模块增加到所述存储网络中。
4.根据权利要求2所述的Vxworks下轻量级的FC-SAN共享存储系统,其特征在于,所述存储模块端包括存储应用层、存储端协议层、第二FC驱动层、磁盘设备驱动层,所述磁盘设备驱动层连接有存储模块;
所述第二FC驱动层,用于接收所述第一FC驱动层发出的所述FC-MAP协议,并用于将所述存储端协议层打包的所述FC-MAP协议发送至所述第一FC驱动层;
所述存储端协议层,用于解析所述第一FC驱动层发出的所述FC-MAP协议,以确定所述第一FC驱动层发出的所述FC-MAP协议对应的实际存储地址和指令类型,并用于将所述所述存储模块的反馈数据打包成发送至所述主机端的FC-MAP协议;
所述磁盘设备驱动层,用于根据所述实际存储地址和所述指令数据,在所述存储模块进行读写操作。
5.根据权利要求1至4中任一项所述的Vxworks下轻量级的FC-SAN共享存储系统,其特征在于,所述主机端设置有第一FC端口,所述存储模块端设置有第二FC端口,各个所述第一FC端口分别与所述第二FC端口通信连接,每个所述第一FC端口和所述第二FC端口设置有唯一的Port号,所述存储模块端对每个所述主机端的所述第一FC端口建立独立的处理线程。
6.一种Vxworks下轻量级的FC-SAN共享存储方法,其特征在于,应用于如权利要求1至5中任一项所述的Vxworks下轻量级的FC-SAN共享存储系统;所述共享存储方法包括如下步骤:
获取与所述主机端连接的存储模块端;
通过注册函数,将所述存储模块端连接的存储模块在所述主机端的本地抽象成虚拟存储模块,以将所述存储模块增加到所述主机端,从而在所述主机端形成多个所述存储模块端建立的存储网络,其中,所述注册函数包括所述存储模块的ID号、设备名称、设备存储空间大小以及FC端口号;
所述主机端根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端;
所述存储模块端侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求。
7.根据权利要求6所述的Vxworks下轻量级的FC-SAN共享存储方法,其特征在于,所述主机端根据用户的操作指令生成虚拟存储模块读写请求,将所述读写请求打包成FC-MAP协议并发送至所述存储模块端的步骤,包括:
接收用户的操作指令,并根据所述操作指令发出读写指令;
根据所述读写指令,生成IO读写请求;
根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址;其中,所述指令数据包括指令类型,所述指令类型包括读指令和写指令,当所述指令类型为写指令时,所述指令数据还包括待写入数据;
将所述指令数据和所述虚拟存储模块设备驱动层转化的实际存储地址打包形成FC-MAP协议;
将所述FC-MAP协议发送至所述存储模块端。
8.根据权利要求7所述的Vxworks下轻量级的FC-SAN共享存储方法,其特征在于,所述存储模块端侦测各个所述主机端发起的读写请求,在接收到所述读写请求时,为每个所述读写请求创建独立的处理线程,并根据所述读写请求将所述存储模块以裸设备的方式打开,以处理所述读写请求的步骤,包括:
接收主机端发出的所述FC-MAP协议;
解析所述主机端发出的所述FC-MAP协议,以确定所述主机端发出的所述FC-MAP协议对应的实际存储地址和指令数据;
根据所述实际存储地址和所述指令数据,将所述存储模块以裸设备的方式打开,以进行读写操作。
9.根据权利要求8所述的Vxworks下轻量级的FC-SAN共享存储方法,其特征在于,所述根据所述实际存储地址和所述指令数据,将所述存储模块以裸设备的方式打开,以进行读写操作的步骤,包括:
当所述读写数据对应的指令类型为读指令时,根据所述实际存储地址和所述读指令,将所述存储模块以裸设备的方式打开,从所述存储模块对应的实际存储地址中读出数据,并将读出的数据打包成FC-MAP协议发送至所述主机端;
当所述读写数据对应的指令类型为写指令时,根据所述实际存储地址、所述写指令和所述待写入数据,将所述存储模块以裸设备的方式打开,在所述存储模块对应的实际存储地址中进行写入操作,并将写入操作的结果打包成FC-MAP协议发送至所述主机端。
10.根据权利要求6至9中任一项所述的Vxworks下轻量级的FC-SAN共享存储方法,其特征在于,所述共享存储方法,还包括:
在所述主机端上电后,加载FC驱动,以根据所述虚拟存储模块设备驱动层注册的各个所述存储模块端初始化存储网络,创建虚拟存储模块设备驱动层的设备结构体、请求队列和请求处理模块;
所述根据所述IO读写请求确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址的步骤,包括:
侦测到IO读写请求时,将所述IO读写请求按照预设的处理顺序添加至所述请求队列;
所述请求处理模块根据预设的处理顺序从所述请求队列中提出所述IO读写请求进行处理,以从所述IO读写请求中确定对应的虚拟存储地址和指令数据,并确定所述虚拟存储地址对应的实际存储地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111586567.8A CN113986146B (zh) | 2021-12-23 | 2021-12-23 | 轻量级的fc-san共享存储系统及共享存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111586567.8A CN113986146B (zh) | 2021-12-23 | 2021-12-23 | 轻量级的fc-san共享存储系统及共享存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986146A true CN113986146A (zh) | 2022-01-28 |
CN113986146B CN113986146B (zh) | 2022-04-08 |
Family
ID=79734077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111586567.8A Active CN113986146B (zh) | 2021-12-23 | 2021-12-23 | 轻量级的fc-san共享存储系统及共享存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986146B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040257857A1 (en) * | 2003-06-23 | 2004-12-23 | Hitachi, Ltd. | Storage system that is connected to external storage |
EP2369479A2 (en) * | 2006-01-24 | 2011-09-28 | Citrix Systems, Inc. | Methods and systems for providing access to a computing environment |
US20120246643A1 (en) * | 2011-03-23 | 2012-09-27 | Lei Chang | File system for storage area network |
CN104636077A (zh) * | 2013-11-15 | 2015-05-20 | 中国电信股份有限公司 | 用于虚拟机的网络块设备存储系统与方法 |
CN108696461A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于智能网络接口卡的共享存储器 |
US10454810B1 (en) * | 2017-03-10 | 2019-10-22 | Pure Storage, Inc. | Managing host definitions across a plurality of storage systems |
-
2021
- 2021-12-23 CN CN202111586567.8A patent/CN113986146B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040257857A1 (en) * | 2003-06-23 | 2004-12-23 | Hitachi, Ltd. | Storage system that is connected to external storage |
EP2369479A2 (en) * | 2006-01-24 | 2011-09-28 | Citrix Systems, Inc. | Methods and systems for providing access to a computing environment |
US20120246643A1 (en) * | 2011-03-23 | 2012-09-27 | Lei Chang | File system for storage area network |
CN104636077A (zh) * | 2013-11-15 | 2015-05-20 | 中国电信股份有限公司 | 用于虚拟机的网络块设备存储系统与方法 |
US10454810B1 (en) * | 2017-03-10 | 2019-10-22 | Pure Storage, Inc. | Managing host definitions across a plurality of storage systems |
CN108696461A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于智能网络接口卡的共享存储器 |
Non-Patent Citations (4)
Title |
---|
刘朝斌等: "存储网络虚拟化关键技术的研究与实现", 《计算机科学》 * |
张琼露等: "SAN存储技术", 《电脑编程技巧与维护》 * |
杨雨春等: "SAN系统中存储空间共享冲突问题的研究", 《计算机工程》 * |
田磊等: "存储区域网中磁盘阵列光纤通道接口的设计与实现", 《计算机工程与科学》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113986146B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7743178B2 (en) | Method and apparatus for SATA tunneling over fibre channel | |
US7853741B2 (en) | Tunneling SATA targets through fibre channel | |
US7055056B2 (en) | System and method for ensuring the availability of a storage system | |
US8694723B2 (en) | Method and system for coupling serial attached SCSI (SAS) devices and internet small computer system internet (iSCSI) devices through single host bus adapter | |
US8205043B2 (en) | Single nodename cluster system for fibre channel | |
US7519768B2 (en) | Computer system, management computer, and volume allocation change method of management computer | |
CN1977254A (zh) | 多协议网桥 | |
US7953878B1 (en) | Multi-threaded internet small computer system interface (iSCSI) socket layer | |
US7080190B2 (en) | Apparatus and method for providing transparent sharing of channel resources by multiple host machines | |
EP2290518A2 (en) | Transport agnostic SCSII/O referrals | |
US20090138613A1 (en) | Network Converter and Information Processing System | |
US8732381B2 (en) | SAS expander for communication between drivers | |
JP2002222110A (ja) | ストレージシステム及び仮想プライベートボリューム制御方法 | |
JP2007501987A (ja) | ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムおよび方法 | |
US9037900B2 (en) | Small computer system interface input output (SCSI IO) referral | |
KR100372915B1 (ko) | 네트워크에 직접 부착 가능한 디스크 시스템 | |
CN113986146B (zh) | 轻量级的fc-san共享存储系统及共享存储方法 | |
US7460550B2 (en) | Storage structure and method utilizing multiple protocol processor units | |
CN102868684A (zh) | 一种光纤通道目标器及光纤通道目标器实现方法 | |
WO2018099241A1 (zh) | 磁盘阵列控制器、数据处理方法及其装置 | |
EP3631640B1 (en) | Communication between field programmable gate arrays | |
CN105955916B (zh) | 一种写立即数的方法、设备及系统 | |
JPH05242006A (ja) | メモリ制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |