CN106341488A - 一种基于tcmu虚拟块设备的网络存储后端超时处理方法 - Google Patents
一种基于tcmu虚拟块设备的网络存储后端超时处理方法 Download PDFInfo
- Publication number
- CN106341488A CN106341488A CN201610873905.9A CN201610873905A CN106341488A CN 106341488 A CN106341488 A CN 106341488A CN 201610873905 A CN201610873905 A CN 201610873905A CN 106341488 A CN106341488 A CN 106341488A
- Authority
- CN
- China
- Prior art keywords
- tcmu
- data
- block device
- virtual block
- network
- 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.)
- Pending
Links
Classifications
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于TCMU虚拟块设备的网络存储后端超时处理方法,包括应用主机,所述应用主机包括TCMU虚拟块设备、TCMU内核模块和数据处理模块,数据处理模块通过网络双向电连接不少于三个数据存储主机;完成基于TCMU虚拟块设备的网络存储后端超时处理方法,TCMU虚拟块设备通过Linux内核VFS和 LIO模块,将数据传输到TCMU内核模块中,TCMU内核模块将数据转换成SCSI命令并将其保存在与用户空间共享的一片内存空间中;本基于TCMU虚拟块设备的网络存储后端超时处理方法,在IO密集型系统中,可以大大减小请求包超时检测的系统开销,提高了系统的性能。并且可以根据上层具体业务情况,在超时时间准确性和系统开销中,进行权衡。
Description
技术领域
本发明涉及分布式数据存储技术领域,具体为一种基于TCMU虚拟块设备的网络存储后端超时处理方法。
背景技术
在云计算技术发展的今天,随着虚拟化,网络等技术的日趋成熟,存储在整个云计算生态中扮演越来越重要角色。往往在云计算中的存储系统都是以分布式形态呈现,分布式存储正逐渐蚕食传统存储市场。在分布式存储系统中,如何生成虚拟块设备是个令人头疼的问题。直到Linux内核3.18合入了TCMU机制,才让此问题得到较圆满的解决。
分布式系统都是通过网络通信,网络是计算机系统最不可靠的系统,通常会出现不可预测的错误或异常。而TCMU又是Linux操作系统内核模块,需要及时处理其请求,否则会引起Linux内核crash,但是现今没有能够有效解决Linux内核crash的方法,导致Linux内核crash造成的损失无法逆转,给使用者造成诸多的不便。为此,我们提出一种基于TCMU虚拟块设备的网络存储后端超时处理方法。
发明内容
本发明要解决的技术问题是克服现有的缺陷,提供一种基于TCMU虚拟块设备的分布式存储后端超时处理方法,在IO密集型系统中,可以大大减小请求包超时检测的系统开销,提高了系统的性能。并且可以根据上层具体业务情况,在超时时间准确性和系统开销中,进行权衡,可以有效解决背景技术中的问题。
为实现上述目的,本发明提供如下技术方案:一种基于TCMU虚拟块设备的网络存储后端超时处理方法,包括应用主机,所述应用主机包括TCMU虚拟块设备、TCMU内核模块和数据处理模块,所述TCMU虚拟块设备双向电连接TCMU内核模块,该TCMU内核模块双向电连接数据处理模块,且数据处理模块通过网络双向电连接不少于三个数据存储主机;完成基于TCMU虚拟块设备的网络存储后端超时处理方法,具体流程步骤如下:
步骤①:应用主机产生数据,并将数据写入TCMU虚拟块设备中;
步骤②:TCMU虚拟块设备通过Linux内核VFS和 LIO模块,将数据传输到TCMU内核模块中,TCMU内核模块将数据转换成SCSI命令并将其保存在与用户空间共享的一片内存空间中;
步骤③:TCMU内核模块通知数据处理模块对共享内存空间中的SCSI命令进行处理;
步骤④:数据处理模块收到通知后,将SCSI命令从共享内存空间中读取SCSI命令,并将其转换成网络传输协议所规定的请求包格式,为每个请求包分配递增且唯一的序列号seq,保存在等待确认请求队列中,将请求包通过网络连接发送到数据存储主机,数据存储主机将数据落地后,会给数据处理模块回复确认响应包;
步骤⑤:数据处理模块收到响应包后,将请求包从等待确认请求队列中取出,根据响应包内容把请求包转换为SCSI确认命令,通知TCMU内核模块,确认SCSI命令已经被处理;
步骤⑥:TCMU内核模块通过TCMU虚拟块设备响应应用程序,确认数据已存储。
作为本发明的一种优选技术方案,在网络连接出现不可预测的错误及异常的时候,会导致步骤④和⑤,数据处理模块和数据存储主机网络传输请求包丢包,而一些请求包无法确认,引发SCSI命令超时,造成TCMU内核模块有crash现象的发生;
此时将时间划分为定长的时间窗口,每当一个时间窗口结束时,搜集当前所有等待确认的请求包的序列号seq,将其与上一个时间窗口(可自定义的时间窗口跨度)的序列号集进行交集运算,得到的结果便是等待确认的时间在自定义的时间窗口数量之间的请求包,可以认定这些请求包已经超时,并对这些请求包进行超时确认,及时通知TCMU内核模块,防止TCMU内核模块crash。
作为本发明的一种优选技术方案,数据处理模块不需要在请求包发送时,记录请求包的发送时间;数据处理模块不需要对所有等待确认的请求包的发送时间与当前时间进行对比。
作为本发明的一种优选技术方案,所述数据处理模块包括A/D转换器、信号放大器和数据耦合器,所述A/D转换器的输出端电连接数据耦合器的输入端,所述数据耦合器的输出端电连接信号放大器的输入端。
作为本发明的一种优选技术方案,所述网络包括互联网、局域网、2G通讯网络、3G通讯网络、4G通讯网络、WIFI网络和蓝牙通讯网络。
与现有技术相比,本发明的有益效果是:本基于TCMU虚拟块设备的网络存储后端超时处理方法,网络利用多种通讯方式,使得分布式系统的连接方式较多,并且通讯方式较多,使用方便,在极低开销的情况下,检测大量通过网络发送的TCMU请求包是否存在超时的情况,并对超时的请求包进行处理,本发明在超时方案的时候,不需要在请求包发送时,记录请求包的发送时间,不需要对所有等待确认的请求包的发送时间与当前时间进行对比,超时检测频率大大降低,达到提高系统性能,并且采用可自定义的时间窗口跨度,根据用户需要进行自定义,使用比较方便,在IO密集型系统中,可以大大减小请求包超时检测的系统开销,提高了系统的性能。并且可以根据上层具体业务情况,在超时时间准确性和系统开销中,进行权衡。
附图说明
图1是本发明的基于TCMU虚拟块设备的分布式存储系统的结构图;
图2是本发明的基于TCMU虚拟块设备的分布式存储系统超时处理工作原理图;
图3是本发明的数据处理模块内部结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供一种技术方案:一种基于TCMU虚拟块设备的网络存储后端超时处理方法,包括应用主机,应用主机包括TCMU虚拟块设备、TCMU内核模块和数据处理模块,所述数据处理模块包括A/D转换器、信号放大器和数据耦合器,所述A/D转换器的输出端电连接数据耦合器的输入端,A/D转换器进行模数转换,便于数据的存储,所述数据耦合器的输出端电连接信号放大器的输入端,数据耦合器将A/D转换器转换的数字信号进行耦合,经过信号放大器的放大作用,便于信息的存储,TCMU虚拟块设备双向电连接TCMU内核模块,该TCMU内核模块双向电连接数据处理模块,且数据处理模块通过网络双向电连接不少于三个数据存储主机,所述网络包括互联网、局域网、2G通讯网络、3G通讯网络、4G通讯网络、WIFI网络和蓝牙通讯网络,网络利用多种通讯方式,使得分布式系统的连接方式较多,并且通讯方式较多,使用方便;完成基于TCMU虚拟块设备的网络存储后端超时处理方法,具体流程步骤如下:
步骤①:应用主机产生数据,并将数据写入TCMU虚拟块设备中;应用主机产生的数据通过输入键盘等输入设备进行输入产生,还可以是应用主机和外部的数据库连接直接进行数据传输产生;
步骤②:TCMU虚拟块设备通过Linux内核VFS和 LIO模块,将数据传输到TCMU内核模块中,TCMU内核模块将数据转换成SCSI命令并将其保存在与用户空间共享的一片内存空间中;TCMU内核模块采用现今常的ARM处理器,并且存储空间为TCMU内核模块内置或者外置的数据存储器,数据存储器为ROM不仅能够写入数据还能够提取出数据;
步骤③:TCMU内核模块通知数据处理模块对共享内存空间中的SCSI命令进行处理;此时TCMU内核模块将数据处理信息传递给数据处理模块,数据处理模块接受请求之后对共享内存空间中的SCSI命令进行处理;
步骤④:数据处理模块收到通知后,将SCSI命令从共享内存空间中读取SCSI命令,并将其转换成网络传输协议所规定的请求包格式,为每个请求包分配递增且唯一的序列号seq,保存在等待确认请求队列中,将请求包通过网络连接发送到数据存储主机,数据存储主机将数据落地后,会给数据处理模块回复确认响应包;数据存储主机采用分布式的连接方式,能够将数据同时存储在多个数据存储主机中,避免了一个数据存储主机损坏而导致数据丢失现象的发生;
步骤⑤:数据处理模块收到响应包后,将请求包从等待确认请求队列中取出,根据响应包内容把请求包转换为SCSI确认命令,通知TCMU内核模块,确认SCSI命令已经被处理;
步骤⑥:TCMU内核模块通过TCMU虚拟块设备响应应用程序,确认数据已存储。TCMU内核模块和TCMU虚拟块设备进行电信号的传输以及处理,确认数据的存储与否。
在步骤②中,TCMU虚拟块设备通过Linux内核VFS和 LIO模块,将数据传输到TCMU内核模块中,此时Linux内核VFS和 LIO模块的输入端电连接。
在网络连接出现不可预测的错误及异常的时候,会导致步骤④和⑤,数据处理模块和数据存储主机网络传输请求包丢包,而一些请求包无法确认,引发SCSI命令超时,造成TCMU内核模块有crash现象的发生;
当出现以上情况时,需要为请求包增加超时机制,通常做法是在请求包发送时,记录请求包发送时间,放入等待确认请求队列,之后定期扫描等待确认请求队列中所有的请求包,发现等待确认的请求包超时后,进行处理。但是对于IO密集型的系统,每秒钟需要发送成千上万个请求包,这种定期扫描的办法,对于操作系统来说,开销实在太大;为解决上述问题,可以采用以下方式进行规避:
此时将时间划分为定长的时间窗口,每当一个时间窗口结束时,搜集当前所有等待确认的请求包的序列号seq,将其与上一个时间窗口(可自定义的时间窗口跨度)的序列号集进行交集运算,得到的结果便是等待确认的时间在自定义的时间窗口数量之间的请求包,可以认定这些请求包已经超时,并对这些请求包进行超时确认,及时通知TCMU内核模块,防止TCMU内核模块crash,数据处理模块不需要在请求包发送时,记录请求包的发送时间;数据处理模块不需要对所有等待确认的请求包的发送时间与当前时间进行对比。
确认数据处理模块的超时时间范围的计算方式如下:
数据处理模块的超时时间范围为T1,TCMU内核模块规定的超时时间为T2,规定时间窗口的时间为T3,则:
T1范围为(T2- T3)到T2之间;
例如,TCMU内核模块规定的超时时间为30s,规定时间窗口为15s,时间窗口跨度为1。其实是设定了数据处理模块的超时时间是15s-30s之间。如果设置为更细粒度的时间窗口,比如5s,时间窗口跨度为5,则可以调整为数据处理模块的超时时间为25s-30s,采用可自定义的时间窗口跨度,根据用户需要进行自定义,使用比较方便。
对比定期扫描的方法和本发明的检测方式,有如下优点:
1.数据处理模块不需要在请求包发送时,记录请求包的发送时间;
2.数据处理模块不需要对所有等待确认的请求包的发送时间与当前时间进行对比;
3.数据处理模块超时检测频率大大降低。
本发明提出的基于TCMU虚拟块设备的分布式存储后端超时处理方法,在极低开销的情况下,检测大量通过网络发送的TCMU请求包是否存在超时的情况,并对超时的请求包进行处理,本发明在超时方案的时候,不需要在请求包发送时,记录请求包的发送时间,不需要对所有等待确认的请求包的发送时间与当前时间进行对比,超时检测频率大大降低,达到提高系统性能,采用可自定义的时间窗口跨度,根据用户需要进行自定义,使用比较方便,在IO密集型系统中,可以大大减小请求包超时检测的系统开销,提高了系统的性能。并且可以根据上层具体业务情况,在超时时间准确性和系统开销中,进行权衡。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (5)
1.一种基于TCMU虚拟块设备的网络存储后端超时处理方法,包括应用主机,其特征在于:所述应用主机包括TCMU虚拟块设备、TCMU内核模块和数据处理模块,所述TCMU虚拟块设备双向电连接TCMU内核模块,该TCMU内核模块双向电连接数据处理模块,且数据处理模块通过网络双向电连接不少于三个数据存储主机;完成基于TCMU虚拟块设备的网络存储后端超时处理方法,具体流程步骤如下:
步骤①:应用主机产生数据,并将数据写入TCMU虚拟块设备中;
步骤②:TCMU虚拟块设备通过Linux内核VFS和 LIO模块,将数据传输到TCMU内核模块中,TCMU内核模块将数据转换成SCSI命令并将其保存在与用户空间共享的一片内存空间中;
步骤③:TCMU内核模块通知数据处理模块对共享内存空间中的SCSI命令进行处理;
步骤④:数据处理模块收到通知后,将SCSI命令从共享内存空间中读取SCSI命令,并将其转换成网络传输协议所规定的请求包格式,为每个请求包分配递增且唯一的序列号seq,保存在等待确认请求队列中,将请求包通过网络连接发送到数据存储主机,数据存储主机将数据落地后,会给数据处理模块回复确认响应包;
步骤⑤:数据处理模块收到响应包后,将请求包从等待确认请求队列中取出,根据响应包内容把请求包转换为SCSI确认命令,通知TCMU内核模块,确认SCSI命令已经被处理;
步骤⑥:TCMU内核模块通过TCMU虚拟块设备响应应用程序,确认数据已存储。
2.根据权利要求1所述的一种基于TCMU虚拟块设备的网络存储后端超时处理方法,其特征在于:在网络连接出现不可预测的错误及异常的时候,会导致步骤④和⑤,数据处理模块和数据存储主机网络传输请求包丢包,而一些请求包无法确认,引发SCSI命令超时,造成TCMU内核模块有crash现象的发生;
此时将时间划分为定长的时间窗口,每当一个时间窗口结束时,搜集当前所有等待确认的请求包的序列号seq,将其与上一个时间窗口(可自定义的时间窗口跨度)的序列号集进行交集运算,得到的结果便是等待确认的时间在自定义的时间窗口数量之间的请求包,可以认定这些请求包已经超时,并对这些请求包进行超时确认,及时通知TCMU内核模块,防止TCMU内核模块crash。
3.根据权利要求2所述的一种基于TCMU虚拟块设备的网络存储后端超时处理方法,其特征在于:数据处理模块不需要在请求包发送时,记录请求包的发送时间;数据处理模块不需要对所有等待确认的请求包的发送时间与当前时间进行对比。
4.根据权利要求1所述的一种基于TCMU虚拟块设备的网络存储后端超时处理方法,其特征在于:所述数据处理模块包括A/D转换器、信号放大器和数据耦合器,所述A/D转换器的输出端电连接数据耦合器的输入端,所述数据耦合器的输出端电连接信号放大器的输入端。
5.根据权利要求1所述的一种基于TCMU虚拟块设备的网络存储后端超时处理方法,其特征在于:所述网络包括互联网、局域网、2G通讯网络、3G通讯网络、4G通讯网络、WIFI网络和蓝牙通讯网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610873905.9A CN106341488A (zh) | 2016-10-08 | 2016-10-08 | 一种基于tcmu虚拟块设备的网络存储后端超时处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610873905.9A CN106341488A (zh) | 2016-10-08 | 2016-10-08 | 一种基于tcmu虚拟块设备的网络存储后端超时处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106341488A true CN106341488A (zh) | 2017-01-18 |
Family
ID=57839736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610873905.9A Pending CN106341488A (zh) | 2016-10-08 | 2016-10-08 | 一种基于tcmu虚拟块设备的网络存储后端超时处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106341488A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107256131A (zh) * | 2017-06-15 | 2017-10-17 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟磁盘分布式块存储系统的性能优化方法 |
CN114047874A (zh) * | 2021-10-20 | 2022-02-15 | 北京天融信网络安全技术有限公司 | 一种基于tcmu虚拟设备的数据存储系统和方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633131A (zh) * | 2005-01-14 | 2005-06-29 | 清华大学 | 一种iSCSI存储系统的实现方法 |
CN101589378A (zh) * | 2006-12-04 | 2009-11-25 | 桑迪士克股份有限公司 | 通过虚拟块防止超时的便携式模块接口 |
CN102023926A (zh) * | 2010-12-08 | 2011-04-20 | 杭州华三通信技术有限公司 | 一种数据超时老化处理方法及其装置 |
CN103645865A (zh) * | 2013-12-26 | 2014-03-19 | 深圳市迪菲特科技股份有限公司 | 一种命令超时的处理方法 |
CN104636077A (zh) * | 2013-11-15 | 2015-05-20 | 中国电信股份有限公司 | 用于虚拟机的网络块设备存储系统与方法 |
-
2016
- 2016-10-08 CN CN201610873905.9A patent/CN106341488A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633131A (zh) * | 2005-01-14 | 2005-06-29 | 清华大学 | 一种iSCSI存储系统的实现方法 |
CN101589378A (zh) * | 2006-12-04 | 2009-11-25 | 桑迪士克股份有限公司 | 通过虚拟块防止超时的便携式模块接口 |
CN102023926A (zh) * | 2010-12-08 | 2011-04-20 | 杭州华三通信技术有限公司 | 一种数据超时老化处理方法及其装置 |
CN104636077A (zh) * | 2013-11-15 | 2015-05-20 | 中国电信股份有限公司 | 用于虚拟机的网络块设备存储系统与方法 |
CN103645865A (zh) * | 2013-12-26 | 2014-03-19 | 深圳市迪菲特科技股份有限公司 | 一种命令超时的处理方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107256131A (zh) * | 2017-06-15 | 2017-10-17 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟磁盘分布式块存储系统的性能优化方法 |
CN107256131B (zh) * | 2017-06-15 | 2019-10-01 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟磁盘分布式块存储系统的性能优化方法 |
CN114047874A (zh) * | 2021-10-20 | 2022-02-15 | 北京天融信网络安全技术有限公司 | 一种基于tcmu虚拟设备的数据存储系统和方法 |
CN114047874B (zh) * | 2021-10-20 | 2024-05-07 | 北京天融信网络安全技术有限公司 | 一种基于tcmu虚拟设备的数据存储系统和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7640378B2 (en) | Method and apparatus for improving the performance of USB mass storage devices in the presence of long transmission delays | |
CN109412914B (zh) | 流数据与axi接口通信装置 | |
CN103178872B (zh) | 通过以太网延长usb系统传输距离的方法及装置 | |
CN104021107A (zh) | 一种支持NVMe PCIE SSD系统设计方法 | |
CN101488878A (zh) | 一种智能平台接口管理装置及服务器 | |
CN111090603B (zh) | 一种lvds转usb3.0适配器 | |
CN106598889A (zh) | 一种基于fpga夹层板的sata主控器 | |
CN108932207A (zh) | 带有缓存区的sdio-wifi数据传输方法及系统 | |
CN103678211A (zh) | Usb接口的信号传输方法及其装置 | |
WO2017032137A1 (zh) | 一种数据访问装置及方法 | |
CN106341488A (zh) | 一种基于tcmu虚拟块设备的网络存储后端超时处理方法 | |
WO2012171304A1 (zh) | 移动终端的tty测试方法及系统 | |
CN107908587A (zh) | 基于usb3.0的实时数据采集传输装置 | |
CN104571942B (zh) | 数据存储系统和非信号分析方法 | |
CN110209605A (zh) | Pcie总线网卡的寄存器读写方法和计算设备 | |
CN104796652A (zh) | 一种基于srio传输视频帧的数据传输方法和装置 | |
WO2022141250A1 (zh) | 数据传输方法和相关装置 | |
WO2024037076A1 (zh) | 数据交互方法、装置、系统、电子设备和存储介质 | |
WO2024113990A1 (zh) | 一种光模块的信息查询方法及其相关组件 | |
CN112947156A (zh) | 一种基于fpga的分布式数据传输系统及方法 | |
CN101998135A (zh) | 移动电视信号采集及播放系统、控制方法 | |
US7757016B2 (en) | Data transfer device, semiconductor integrated circuit, and processing status notification method | |
CN116340217A (zh) | 数据处理方法及相关装置 | |
CN215006296U (zh) | 一种基于fpga的分布式数据传输系统 | |
CN209435332U (zh) | 一种cml视频记录仪 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170118 |
|
WD01 | Invention patent application deemed withdrawn after publication |