CN114047874A - 一种基于tcmu虚拟设备的数据存储系统和方法 - Google Patents
一种基于tcmu虚拟设备的数据存储系统和方法 Download PDFInfo
- Publication number
- CN114047874A CN114047874A CN202111223183.XA CN202111223183A CN114047874A CN 114047874 A CN114047874 A CN 114047874A CN 202111223183 A CN202111223183 A CN 202111223183A CN 114047874 A CN114047874 A CN 114047874A
- Authority
- CN
- China
- Prior art keywords
- module
- read
- write
- data processing
- partition
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000013500 data storage Methods 0.000 title claims abstract description 51
- 238000005192 partition Methods 0.000 claims abstract description 120
- 230000001960 triggered effect Effects 0.000 claims abstract description 23
- 238000004891 communication Methods 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000003139 buffering effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 241001391944 Commicarpus scandens Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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/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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- G06F3/0656—Data buffering arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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]
-
- 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)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种基于TCMU虚拟设备的数据存储系统和方法,包括:内核模块、数据处理模块和分区并行模块;内核模块的第一端与数据处理模块的第一端通信连接,内核模块的第二端与数据处理模块的第二端通信连接,数据处理模块的第三端与分区并行模块通信连接;内核模块在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至数据处理模块,数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至分区并行模块,分区并行模块将各读写指令分布式下发至分布式存储模块,保证存储系统的性能。
Description
技术领域
本公开涉及智能终端技术领域,尤其涉及一种基于TCMU虚拟设备的数据存储系统和方法。
背景技术
超融合架构将计算虚拟化、存储虚拟化以及网络虚拟化软件融合到通用物理服务器上,避免各种专用的硬件设备,对外提供计算、存储和网络服务。在云计算场景下,存储服务通常包含三种类型:块存储服务、文件存储服务和对象存储服务,其中块存储服务最常使用SCSI或者iSCSI提供的服务,SCSI表示直接在客户端生成一个虚拟磁盘,应用程序当作普通磁盘使用,iSCSI表示提供标准iSCSI协议,客户端可以使用iSCSI Initiator生成虚拟磁盘或者libiscsi库直接通过协议访问。
TCMU是Linux内核模块,实现了SCSI子系统的低层驱动,并且通过UIO机制(用户态机制)与用户态共享内存,将数据通过共享内存暴露给用户态,于是用户可以编写用户态程序处理共享内存中的数据。
现有技术中,TCMU是通过写入RingBuffer的顺序保证串行处理每个IO请求,数据处理模块获取命令的顺序需要和TCMU内核模块的写入顺序一致,但随着高速存储设备的普及,数据存储系统按顺序处理IO请求的过程会影响存储系统的性能。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于TCMU虚拟设备的数据存储系统和方法。
第一方面,本公开实施例提供了一种基于TCMU虚拟设备的数据存储系统,包括:内核模块、数据处理模块和分区并行模块;
所述内核模块的第一端与所述数据处理模块的第一端通信连接,所述内核模块的第二端与所述数据处理模块的第二端通信连接,所述数据处理模块的第三端与所述分区并行模块通信连接;
所述内核模块在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至所述数据处理模块,所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块,所述分区并行模块将各所述读写指令分布式下发至分布式存储模块。
可选的,还包括缓冲模块,所述缓冲模块分别与所述内核模块和所述数据处理模块通信连接;
所述内核模块在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至所述数据处理模块,并将所述读写指令写入所述缓冲模块,所述数据处理模块在接收到所述控制指令后,从所述缓冲模块中获取所述读写指令。
可选的,还包括网络收发模块,所述网络收发模块分别与所述分区并行模块和所述分布式存储模块通信连接;
所述分区并行模块通过所述网络收发模块将各所述读写指令分布式下发至分布式存储模块。
可选的,所述分区并行模块包括N个分区存储单元,其中,N≥1,且为整数;
所述分布式存储模块包括M个分布式存储单元,其中,M≥1,且为整数;
所述N个分布式存储单元分别与对应的分区存储单元通信连接;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至各所述分区存储单元,所述分区存储单元将该分区存储单元的所述读写指令通过所述网络收发模块下发至与该分区存储单元对应的分布式存储单元中。
可选的,还包括:L个缓存模块,其中,L≥1,且为整数;
各所述缓存模块分别与所述数据处理模块和所述分区并行模块通信连接;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并根据各所述读写指令所属的虚拟磁盘将所述读写指令依次下发至对应的所述缓存模块,所述缓存模块将接收到所述读写指令进行排队合并后发送至分区并行模块。
第二方面,本公开实施例提供一种基于TCMU虚拟设备的数据存储方法,应用于第一方面任一项所述的系统,包括:
所述内核模块在接收用户在虚拟磁盘触发的读写指令后,发送控制指令至所述数据处理模块;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块;
所述分区并行模块将各所述读写指令分布式下发至分布式存储模块。
可选的,所述方法还包括:
所述内核模块在接收用户在虚拟磁盘触发的读写指令后,将所述读写指令写入缓冲模块;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块,包括:
数据处理模块在接收到所述控制指令后,从所述缓冲模块中获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块。
可选的,所述分区并行模块将各所述读写指令分布式下发至分布式存储模块,包括:
所述分区并行模块通过网络收发模块将各所述读写指令分布式下发至分布式存储模块。
可选的,所述分区并行模块通过网络收发模块将各所述读写指令分布式下发至分布式存储模块,包括:
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至各所述分区存储单元;
所述分区并行模块将各所述读写指令分布式下发至分布式存储模块,包括:
所述分区存储单元将该分区存储单元的所述读写指令通过所述网络收发模块下发至与该分区存储单元对应的分布式存储单元中。
可选的,所述方法还包括:
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并根据各所述读写指令所属的虚拟磁盘将所述读写指令依次下发至对应的缓存模块;
所述缓存模块将接收到所述读写指令进行排队合并后发送至分区并行模块。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的数据存储系统和方法,内核模块在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至数据处理模块,数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至分区并行模块,分区并行模块将各读写指令分布式下发至分布式存储模块。由于分区并行模块将各读写指令分布式下发至分布式存储模块,进行分区并行处理,最大优化数据存储系统处理多个IO请求的进程,进而保证存储系统的性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种数据存储系统的结构示意图;
图2是本公开实施例提供的另一种数据存储系统的结构示意图;
图3是本公开实施例提供的又一种数据存储系统的结构示意图;
图4是本公开实施例提供的又一种数据存储系统的结构示意图;
图5是本公开实施例提供的又一种数据存储系统的结构示意图;
图6是本公开实施例提供的又一种数据存储系统的结构示意图;
图7是本公开实施例提供的一种数据存储方法的流程示意图;
图8是本公开实施例提供的另一种数据存储方法的流程示意图;
图9是本公开实施例提供的又一种数据存储方法的流程示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1是本公开实施例提供的一种基于TCMU虚拟设备的数据存储系统的结构示意图,如图1所示,该系统包括:内核模块10、数据处理模块20和分区并行模块30,内核模块10的第一端与数据处理模块20的第一端通信连接,内核模块10的第二端与数据处理模块20的第二端通信连接,数据处理模块20的第三端与分区并行模块30通信连接,内核模块10在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至数据处理模块20,数据处理模块20在接收到控制指令后,获取内核模块10接收的读写指令,并将读写指令下发至分区并行模块30,分区并行模块30将各读写指令分布式下发至分布式存储模块40。
如图1所示,基于TCMU虚拟设备的数据存储系统包括内核模块10、数据处理模块20和分区并行模块30,其中内核模块10位于数据存储系统的内核空间,数据处理模块20和分区并行模块30位于数据存储系统的用户空间,内核模块10负责从Linux内核的SCSI子系统接收数据/命令,即用户在虚拟磁盘触发的读写指令,内核模块10在接收到用户在虚拟磁盘触发的读写指令后,通过字符设备uioX通知用户态进程,进而通过用户态进程发送控制指令至数据处理模块20,其中控制指令例如可以为事件通知消息,示例性的,如唤醒消息。当数据处理模块20接收到控制指令后,从内核模块10获取读写指令,并将读写指令下发至分区并行模块30,分区并行模块30将各读写指令分布式下发至分布式存储模块40。
其中,数据处理模块20负责如何存储数据,例如将数据存储到一个文件,也可以对接分布式存储系统,将数据保存到分布式存储系统中,本公开实施例将具体介绍数据处理模块如何对接分布式存储系统。
本公开实施例提供的数据存储系统,数据存储系统包括内核模块、数据处理模块和分区并行模块,内核模块在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至数据处理模块,数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至分区并行模块,分区并行模块将各读写指令分布式下发至分布式存储模块。由于分区并行模块将各读写指令分布式下发至分布式存储模块,进行分区并行处理,最大优化数据存储系统处理多个IO请求的进程,进而保证存储系统的性能。
图2是本公开实施例提供的另一种数据存储系统的结构示意图,本公开实施例是在上述实施例的基础上,如图2所示,数据存储系统还包括缓冲模块50,缓冲模块50分别与内核模块10和数据处理模块20通信连接,内核模块10在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至数据处理模块20,并将读写指令写入缓冲模块50,数据处理模块20在接收到控制指令后,从缓冲模块50中获取读写指令。
如图2所示,数据存储系统还包括缓冲模块50,其中,缓冲模块50位于数据存储系统的内核空间,缓冲模块50作为内核空间的一部分,即在内核空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲模块50,通过在数据存储系统设置缓冲模块50,避免高速设备与低速设备不匹配时,造成高速设备花时间等待低速设备,保证数据传输效率。此外,通过在数据存储系统中设置缓冲模块50,可以减少数据的读写次数,如果每次数据只传输一点数据,就需要传送很多次,这样会浪费很多时间,因为开始读写与终止读写所需要的时间很长,如果将数据送往缓冲模块,待缓冲模块满后再进行传送会大大减少读写次数,这样就可以节省很多时间。例如:我们想将数据写入到磁盘中,不是立马将数据写到磁盘中,而是先输入缓冲模块50中,当缓冲模块满了以后,再将数据写入到磁盘中,这样就可以减少磁盘的读写次数,不然磁盘很容易坏掉。
缓冲模块50就是一块内存区,它用在输入输出设备和CPU之间,用来存储数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。
具体的,当数据处理模块20收到控制指令后,从缓冲模块50(通过Linux UIO机制映射到用户态)获取读写指令。
图3是本公开实施例提供的又一种数据存储系统的结构示意图,本公开实施例是在上述实施例的基础上,如图3所示,数据存储系统还包括网络收发模块60,网络收发模块60分别与分区并行模块30和分布式存储模块40通信连接,分区并行模块30通过网络收发模块60将各读写指令分布式下发至分布式存储模块40。
如图3所示,通过设置网络收发模块60,分区并行模块30通过网络收发模块60分别与分布式存储模块40中的每个分布式存储单元建立TCP连接,每个TCP连接负责与该分布式存储单元对应的读写指令。
可选的,分区并行模块30包括N个分区存储单元31,其中,N≥1,且为整数,分布式存储模块40包括M个分布式存储单元41,其中,M≥1,且为整数,分布式存储单元41分别与对应的分区存储单元31通信连接,数据处理模块20在接收到控制指令后,获取内核模块10接收的读写指令,并将读写指令下发至各分区存储单元31,分区存储单元31将该分区存储单元31的读写指令通过网络收发模块60下发至与该分区存储单元31对应的分布式存储单元41中。
示例性的,如图4所示,分区并行模块30划分的五个分区存储单元31分别为:虚拟磁盘A、虚拟磁盘C、虚拟磁盘F、虚拟磁盘G和虚拟磁盘K,分布式存储模块40的分布式存储单元41包括磁盘A、磁盘B、磁盘C、磁盘D、磁盘E、磁盘F、磁盘G、磁盘H、磁盘I、磁盘J、磁盘K和磁盘L,其中,磁盘A、磁盘B、磁盘C和磁盘D属于同一数据存储主机,磁盘E、磁盘F、磁盘G和磁盘H属于同一数据存储主机,磁盘I、磁盘J、磁盘K和磁盘L属于同一数据存储主机,虚拟磁盘A与磁盘A之间建立TCP连接,虚拟磁盘C与磁盘C之间建立TCP连接,虚拟磁盘F与磁盘F之间建立TCP连接,虚拟磁盘G与磁盘G之间建立TCP连接,虚拟磁盘K与磁盘K之间建立TCP连接。其中,虚拟磁盘的容量大小是用户自行设置的,通过对虚拟磁盘按照固定的分区大小进行分区切割(图中的表格为分区表,分区表的每一列代表一个分区存储单元,每个分区存储单元的容量大小固定为64×1024×512),这些分区存储单元经过分布式存储系统的调度算法,将分布到分布式存储模块的不同的磁盘中,每个磁盘负责存储一个分区存储单元对应的数据。分区并行模块中的各分区存储单元分别与每一个磁盘建立一条TCP连接,每个TCP连接负责写入该磁盘对应的读写指令。
若数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至虚拟磁盘A、虚拟磁盘C、虚拟磁盘F、虚拟磁盘G和虚拟磁盘K后,虚拟磁盘A将虚拟磁盘A中存储的读写指令通过网络收发模块下发至与虚拟磁盘A对应的分布式存储单元中,即磁盘A;虚拟磁盘C将虚拟磁盘C中存储的读写指令通过网络收发模块下发至与虚拟磁盘C对应的分布式存储单元中,即磁盘C;虚拟磁盘F将虚拟磁盘F中存储的读写指令通过网络收发模块下发至与虚拟磁盘F对应的分布式存储单元中,即磁盘F;虚拟磁盘G将虚拟磁盘G中存储的读写指令通过网络收发模块下发至与虚拟磁盘G对应的分布式存储单元中,即磁盘G;虚拟磁盘K将虚拟磁盘K中存储的读写指令通过网络收发模块下发至与虚拟磁盘K对应的分布式存储单元中,即磁盘K。
需要说明的是,无论是磁盘还是虚拟磁盘,其容量空间都使用LBA描述(LBA是非负整数),即以扇区(512字节)为单位,对磁盘空间进行编号。如LBA等于0,表示磁盘中0~512字节的数据,等于1,表示磁盘中512~1024字节的数据。因为目前的磁盘的存储空间较大,为了减少管理所需的元数据,设置数据块的大小为512KB,对应图中的1024*LBA为单位。图中虚拟磁盘A存储了0~32MB(64*512KB)的数据,虚拟磁盘B存储了32MB~64MB的数据。当从TCMU获取或缓存淘汰的数据的IO访问的位置,根据上述分区表的记录,进行分区并行处理,最大化并行所有磁盘的能力。
此外,若用户划分各虚拟磁盘存储空间为0~32MB(64*512KB),数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至虚拟磁盘A、虚拟磁盘C、虚拟磁盘F、虚拟磁盘G和虚拟磁盘K的具体过程为:首先数据处理模块按照获取的控制指令的顺序将各控制指令存储至虚拟磁盘A,在虚拟磁盘A中存储的控制指令满足32MB时,数据处理模块按照获取的控制指令的顺序将各控制指令存储至虚拟磁盘B,以此类推。
图5是本公开实施例提供的又一种数据存储系统的结构示意图,本公开实施例是在上述实施例的基础上,如图5所示,数据存储系统还包括L个缓存模块70,其中,L≥1,且为整数,各缓存模块70分别与数据处理模块40和分区并行模块30通信连接,数据处理模块20在接收到控制指令后,获取内核模块10接收的读写指令,并根据各读写指令所属的虚拟磁盘将读写指令依次下发至对应的缓存模块70,缓存模块70将接收到读写指令进行排队合并后发送至分区并行模块30。
具体的,每个虚拟磁盘由一个缓存模块70负责其读写指令,缓存模块70中的缓存数据文件采用稀疏文件格式,即该文件不立刻分配空间,在使用的过程中按实际的使用量进行分配。可以手动或自动分配每个虚拟磁盘的缓存空间大小(缓存阈值),缓存模块根据缓存中的数据量和缓存阈值进行淘汰。
示例性的,如图6所示,按照用户实际的使用情况将缓存模块70划分为固定的大小,图6中,每个小方块表示一个缓存模块(通常缓存模块大小设置为512KB~4MB),缓存算法根据具体的应用场景自行配置,默认是LRU,可选FIFO,LFU等。示例性的,图6中以LRU为例,通过最小堆,记录最近访问的缓存块,通过缓存阈值可以计算最小堆树节点的数量。
通过在数据存储系统中设置多个缓存模块,可以解决两个问题:1、IO覆盖写,多个IO在一个时间段内,重复写同一个位置,达到数据去重的效果,在这个时间段,这个数据只会传输一次;2、数据排队和合并的问题,大量小IO通过本地的固态硬盘完成排队和合并,大大减轻了CPU和网络的负载。
在上述实施例的基础上,图7是本公开实施例提供的一种数据存储方法的流程示意图,本公开实施例提供的数据存储方法应用于数据存储系统中,如图7所示,数据存储方法包括:
S10、内核模块在接收用户在虚拟磁盘触发的读写指令后,发送控制指令至数据处理模块。
内核模块负责从Linux内核的SCSI子系统接收数据/命令,即用户在虚拟磁盘触发的读写指令,内核模块在接收到用户在虚拟磁盘触发的读写指令后,通过字符设备uioX通知用户态进程,进而通过用户态进程发送控制指令至数据处理模块,其中控制指令例如可以为事件通知消息,示例性的,如唤醒消息。
S20、数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至分区并行模块。
当事件处理模块接收到控制指令后,从内核模块获取读写指令,并将读写指令下发至分区并行模块,然后通过分区并行模块将各读写指令分布式下发至分布式存储模块。
其中,数据处理模块负责如何存储数据,例如将数据存储到一个文件,也可以对接分布式存储系统,将数据保存到分布式存储系统中,本公开实施例将具体介绍数据处理模块如何对接分布式存储系统。
S30、分区并行模块将各读写指令分布式下发至分布式存储模块。
本公开实施例提供的数据存储方法,内核模块在接收用户在虚拟磁盘触发的读写指令后,发送控制指令至数据处理模块,数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至分区并行模块,分区并行模块将各读写指令分布式下发至分布式存储模块,通过分区并行模块实现将各读写指令分布式下发至分布式存储模块,进行分区并行处理,最大优化数据存储系统处理多个IO请求的进程,进而保证存储系统的性能。
图8是本公开实施例提供的另一种数据存储方法的流程示意图,本公开实施例是在上述实施例的基础上,如图8所示,所述方法还包括:
S11、内核模块在接收用户在虚拟磁盘触发的读写指令后,将读写指令写入缓冲模块。
通过在数据存储系统设置缓冲模块,避免高速设备与低速设备不匹配时,造成高速设备花时间等待低速设备,保证数据传输效率。此外,通过在数据存储系统中设置缓冲模块,可以减少数据的读写次数,如果每次数据只传输一点数据,就需要传送很多次,这样会浪费很多时间,因为开始读写与终止读写所需要的时间很长,如果将数据送往缓冲模块,待缓冲模块满后再进行传送会大大减少读写次数,这样就可以节省很多时间。例如:我们想将数据写入到磁盘中,不是立马将数据写到磁盘中,而是先输入缓冲模块中,当缓冲模块满了以后,再将数据写入到磁盘中,这样就可以减少磁盘的读写次数,不然磁盘很容易坏掉。
因此,内核模块在接收用户在虚拟磁盘触发的读写指令后,将读写指令写入缓冲模块。
当所述方法包括步骤S11时,步骤S20的一种可实现方式包括:
S21、数据处理模块在接收到控制指令后,从缓冲模块中获取内核模块接收的读写指令,并将读写指令下发至分区并行模块。
当内核模块将接收的用户在虚拟磁盘触发的读写指令写入缓冲模块后,若数据处理模块收到控制指令,则从缓冲模块(通过Linux UIO机制映射到用户态)获取读写指令,并将读写指令下发至分区并行模块。
本公开实施例提供的数据存储方法,内核模块在接收用户在虚拟磁盘触发的读写指令后,将读写指令写入缓冲模块,数据处理模块在接收到控制指令后,从缓冲模块中获取内核模块接收的读写指令,并将读写指令下发至分区并行模块,减少读写指令的读写次数,提高数据存储效率。
图9是本公开实施例提供的又一种数据存储方法的流程示意图,本公开实施例是在上述实施例的基础上,如图9所示,步骤S20的另一种可实现方式包括:
S22、数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至各分区存储单元。
结合图4,分区并行模块划分的五个分区存储单元分别为:虚拟磁盘A、虚拟磁盘C、虚拟磁盘F、虚拟磁盘G和虚拟磁盘K,数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至虚拟磁盘A、虚拟磁盘C、虚拟磁盘F、虚拟磁盘G和虚拟磁盘K。
需要说明的是,若用户划分各虚拟磁盘存储空间为0~32MB(64*512KB),数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至虚拟磁盘A、虚拟磁盘C、虚拟磁盘F、虚拟磁盘G和虚拟磁盘K的具体过程为:首先数据处理模块按照获取的控制指令的顺序将各控制指令存储至虚拟磁盘A,在虚拟磁盘A中存储的控制指令满足32MB时,数据处理模块按照获取的控制指令的顺序将各控制指令存储至虚拟磁盘B,以此类推。
对应步骤S22,步骤S30的可实现方式包括:
S31、分区存储单元将该分区存储单元的读写指令通过网络收发模块下发至与该分区存储单元对应的分布式存储单元中。
若数据处理模块在接收到控制指令后,获取内核模块接收的读写指令,并将读写指令下发至虚拟磁盘A、虚拟磁盘C、虚拟磁盘F、虚拟磁盘G和虚拟磁盘K后,虚拟磁盘A将虚拟磁盘A中存储的读写指令通过网络收发模块下发至与虚拟磁盘A对应的分布式存储单元中,即磁盘A;虚拟磁盘C将虚拟磁盘C中存储的读写指令通过网络收发模块下发至与虚拟磁盘C对应的分布式存储单元中,即磁盘C;虚拟磁盘F将虚拟磁盘F中存储的读写指令通过网络收发模块下发至与虚拟磁盘F对应的分布式存储单元中,即磁盘F;虚拟磁盘G将虚拟磁盘G中存储的读写指令通过网络收发模块下发至与虚拟磁盘G对应的分布式存储单元中,即磁盘G;虚拟磁盘K将虚拟磁盘K中存储的读写指令通过网络收发模块下发至与虚拟磁盘K对应的分布式存储单元中,即磁盘K。
可选的,所述方法还包括:数据处理模块在接收到控制指令后,获取内核模块接收的所述读写指令,并根据各读写指令所属的虚拟磁盘将读写指令依次下发至对应的缓存模块;
缓存模块将接收到读写指令进行排队合并后发送至分区并行模块。
具体的,每个虚拟磁盘由一个缓存模块负责其读写指令,缓存模块中的缓存数据文件采用稀疏文件格式,即该文件不立刻分配空间,在使用的过程中按实际的使用量进行分配。可以手动或自动分配每个虚拟磁盘的缓存空间大小(缓存阈值),缓存模块根据缓存中的数据量和缓存阈值进行淘汰。
通过在数据存储系统中设置多个缓存模块,一方面可以避免IO覆盖写,多个IO在一个时间段内,重复写同一个位置,达到数据去重的效果,另一方面,缓存模块通过将大量小IO通过本地的固态硬盘完成排队和合并,大大减轻了CPU和网络的负载。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于TCMU虚拟设备的数据存储系统,其特征在于,包括:内核模块、数据处理模块和分区并行模块;
所述内核模块的第一端与所述数据处理模块的第一端通信连接,所述内核模块的第二端与所述数据处理模块的第二端通信连接,所述数据处理模块的第三端与所述分区并行模块通信连接;
所述内核模块在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至所述数据处理模块,所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块,所述分区并行模块将各所述读写指令分布式下发至分布式存储模块。
2.根据权利要求1所述的系统,其特征在于,还包括缓冲模块,所述缓冲模块分别与所述内核模块和所述数据处理模块通信连接;
所述内核模块在接收到用户在虚拟磁盘触发的读写指令后,发送控制指令至所述数据处理模块,并将所述读写指令写入所述缓冲模块,所述数据处理模块在接收到所述控制指令后,从所述缓冲模块中获取所述读写指令。
3.根据权利要求1所述的系统,其特征在于,还包括网络收发模块,所述网络收发模块分别与所述分区并行模块和所述分布式存储模块通信连接;
所述分区并行模块通过所述网络收发模块将各所述读写指令分布式下发至分布式存储模块。
4.根据权利要求3所述的系统,其特征在于,所述分区并行模块包括N个分区存储单元,其中,N≥1,且为整数;
所述分布式存储模块包括M个分布式存储单元,其中,M≥1,且为整数;
所述分布式存储单元分别与对应的分区存储单元通信连接;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至各所述分区存储单元,所述分区存储单元将该分区存储单元的所述读写指令通过所述网络收发模块下发至与该分区存储单元对应的分布式存储单元中。
5.根据权利要求1所述的系统,其特征在于,还包括:L个缓存模块,其中,L≥1,且为整数;
各所述缓存模块分别与所述数据处理模块和所述分区并行模块通信连接;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并根据各所述读写指令所属的虚拟磁盘将所述读写指令依次下发至对应的所述缓存模块,所述缓存模块将接收到所述读写指令进行排队合并后发送至分区并行模块。
6.一种基于TCMU虚拟设备的数据存储方法,应用于权利要求1-5任一项所述的系统,其特征在于,包括:
所述内核模块在接收用户在虚拟磁盘触发的读写指令后,发送控制指令至所述数据处理模块;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块;
所述分区并行模块将各所述读写指令分布式下发至分布式存储模块。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述内核模块在接收用户在虚拟磁盘触发的读写指令后,将所述读写指令写入缓冲模块;
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块,包括:
数据处理模块在接收到所述控制指令后,从所述缓冲模块中获取所述内核模块接收的所述读写指令,并将所述读写指令下发至所述分区并行模块。
8.根据权利要求6所述的方法,其特征在于,所述分区并行模块将各所述读写指令分布式下发至分布式存储模块,包括:
所述分区并行模块通过网络收发模块将各所述读写指令分布式下发至分布式存储模块。
9.根据权利要求8所述的方法,其特征在于,所述分区并行模块通过网络收发模块将各所述读写指令分布式下发至分布式存储模块,包括:
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并将所述读写指令下发至各所述分区存储单元;
所述分区并行模块将各所述读写指令分布式下发至分布式存储模块,包括:
所述分区存储单元将该分区存储单元的所述读写指令通过所述网络收发模块下发至与该分区存储单元对应的分布式存储单元中。
10.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述数据处理模块在接收到所述控制指令后,获取所述内核模块接收的所述读写指令,并根据各所述读写指令所属的虚拟磁盘将所述读写指令依次下发至对应的缓存模块;
所述缓存模块将接收到所述读写指令进行排队合并后发送至分区并行模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111223183.XA CN114047874B (zh) | 2021-10-20 | 2021-10-20 | 一种基于tcmu虚拟设备的数据存储系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111223183.XA CN114047874B (zh) | 2021-10-20 | 2021-10-20 | 一种基于tcmu虚拟设备的数据存储系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114047874A true CN114047874A (zh) | 2022-02-15 |
CN114047874B CN114047874B (zh) | 2024-05-07 |
Family
ID=80205377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111223183.XA Active CN114047874B (zh) | 2021-10-20 | 2021-10-20 | 一种基于tcmu虚拟设备的数据存储系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114047874B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106508056B (zh) * | 2009-06-29 | 2013-12-11 | 上海航天测控通信研究所 | 一种存储装置 |
CN106341488A (zh) * | 2016-10-08 | 2017-01-18 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟块设备的网络存储后端超时处理方法 |
CN106991119A (zh) * | 2017-02-21 | 2017-07-28 | 深圳市中博睿存信息技术有限公司 | 基于分布式文件系统的处理数据方法及装置 |
CN107133183A (zh) * | 2017-04-11 | 2017-09-05 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟块设备的缓存数据访问方法及系统 |
CN107256131A (zh) * | 2017-06-15 | 2017-10-17 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟磁盘分布式块存储系统的性能优化方法 |
CN107577543A (zh) * | 2017-09-18 | 2018-01-12 | 郑州云海信息技术有限公司 | 数据读写方法、装置、存储系统及计算机可读存储介质 |
CN108228099A (zh) * | 2017-12-27 | 2018-06-29 | 中国银联股份有限公司 | 一种数据存储的方法及装置 |
CN112052291A (zh) * | 2020-09-03 | 2020-12-08 | 苏宁云计算有限公司 | 一种用户态访问分布式块存储系统的方法及系统 |
CN113220795A (zh) * | 2021-02-19 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 基于分布式存储的数据处理方法、装置、设备以及介质 |
-
2021
- 2021-10-20 CN CN202111223183.XA patent/CN114047874B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106508056B (zh) * | 2009-06-29 | 2013-12-11 | 上海航天测控通信研究所 | 一种存储装置 |
CN106341488A (zh) * | 2016-10-08 | 2017-01-18 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟块设备的网络存储后端超时处理方法 |
CN106991119A (zh) * | 2017-02-21 | 2017-07-28 | 深圳市中博睿存信息技术有限公司 | 基于分布式文件系统的处理数据方法及装置 |
CN107133183A (zh) * | 2017-04-11 | 2017-09-05 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟块设备的缓存数据访问方法及系统 |
CN107256131A (zh) * | 2017-06-15 | 2017-10-17 | 深圳市云舒网络技术有限公司 | 一种基于tcmu虚拟磁盘分布式块存储系统的性能优化方法 |
CN107577543A (zh) * | 2017-09-18 | 2018-01-12 | 郑州云海信息技术有限公司 | 数据读写方法、装置、存储系统及计算机可读存储介质 |
CN108228099A (zh) * | 2017-12-27 | 2018-06-29 | 中国银联股份有限公司 | 一种数据存储的方法及装置 |
CN112052291A (zh) * | 2020-09-03 | 2020-12-08 | 苏宁云计算有限公司 | 一种用户态访问分布式块存储系统的方法及系统 |
CN113220795A (zh) * | 2021-02-19 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 基于分布式存储的数据处理方法、装置、设备以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114047874B (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669277B2 (en) | Latency-based scheduling of command processing in data storage devices | |
US9798655B2 (en) | Managing a cache on storage devices supporting compression | |
US7321955B2 (en) | Control device, control method and storage medium recording a control program for controlling write-back schedule of data from cache memory to a plurality of storage devices | |
US7305537B1 (en) | Method and system for I/O scheduler activations | |
WO2015121912A1 (ja) | データ記憶装置 | |
US20080005481A1 (en) | Read ahead storage control | |
US6954839B2 (en) | Computer system | |
JP6901427B2 (ja) | ストレージ装置、コンピュータシステムおよびストレージ装置の動作方法 | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US8656119B2 (en) | Storage system, control program and storage system control method | |
US11698757B2 (en) | Memory system and method of controlling nonvolatile memory | |
CN110688062B (zh) | 一种缓存空间的管理方法及装置 | |
US11188229B2 (en) | Adaptive storage reclamation | |
US11740812B2 (en) | Data storage device idle time processing | |
WO2019062202A1 (zh) | 硬盘操作命令的执行方法、硬盘及存储介质 | |
US20070061509A1 (en) | Power management in a distributed file system | |
CN113360098A (zh) | 一种数据写入方法、装置、系统、电子设备及存储介质 | |
WO2014153931A1 (zh) | 文件存储方法、装置、访问客户端及元数据服务器系统 | |
US20210263668A1 (en) | Information processing device and computer-readable recording medium recording storage control program | |
US10733118B2 (en) | Computer system, communication device, and storage control method with DMA transfer of data | |
US20240028530A1 (en) | Systems and methods for data prefetching for low latency data read from a remote server | |
WO2017054714A1 (zh) | 磁盘阵列的读方法及装置 | |
CN114047874B (zh) | 一种基于tcmu虚拟设备的数据存储系统和方法 | |
CN114265791A (zh) | 一种数据调度方法、芯片以及电子设备 | |
JP2015184883A (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 |