CN104965793B - 一种云存储数据节点装置 - Google Patents
一种云存储数据节点装置 Download PDFInfo
- Publication number
- CN104965793B CN104965793B CN201410503789.2A CN201410503789A CN104965793B CN 104965793 B CN104965793 B CN 104965793B CN 201410503789 A CN201410503789 A CN 201410503789A CN 104965793 B CN104965793 B CN 104965793B
- Authority
- CN
- China
- Prior art keywords
- memory management
- management unit
- data
- disk
- memory
- 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.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种云存储数据节点装置,涉及云存储技术领域,用以提高基于云存储系统的数据写入性能。本发明实施例提供一种云存储数据节点装置,包括:服务模块、虚拟内存盘、包括多个内存管理单元的内存管理模块、监测器以及至少一个存储磁盘;内存管理模块用于通过各内存管理单元分别记录虚拟内存盘中对应的缓存空间的使用状态,并为客户端发送的数据分配内存管理单元;服务模块用于接收客户端发送的数据,并根据内存管理模块分配的内存管理单元,将数据写入对应的缓存空间中;监测器用于监测内存管理模块中的各内存管理单元的使用状态,并在满足预设条件时指示存储磁盘从所述虚拟内存盘中获取并存储数据。
Description
技术领域
本发明涉及云存储技术领域,尤其涉及一种云存储数据节点装置。
背景技术
客户端向云存储数据节点写入数据的过程,其实质是客户端向某一个硬盘写入数据的过程。现有的云存储数据写入主要是基于操作系统的缓存,直接使用系统接口进行数据写入操作,利用操作系统的缓存实现数据缓存管理与数据刷入磁盘的操作。当客户端需要向云存储数据节点写入的数据增多,那么就会发生在同一时刻有很多的请求发送给这个数据节点的磁盘,以请求写入数据,这就形成在单个磁盘上发生大量随机写入操作的现象,而大量的随机写入操作会使得磁盘对外提供的写入性能急剧下降。
综上,现有技术中,当存在海量客户端持续向云存储数据节点进行写入操作时,会导致云存储系统写入性能降低,同时会产生大量的文件碎片,继而导致云存储集群性能变差。
发明内容
本发明实施例提供了一种云存储数据节点装置,用以提高基于云存储系统的数据写入性能。
本发明实施例提供的一种云存储数据节点装置,包括服务模块、用于缓存客户端写入的数据的虚拟内存盘、包括多个内存管理单元的内存管理模块、监测器以及至少一个存储磁盘;其中,
所述内存管理模块用于通过各内存管理单元分别记录虚拟内存盘中对应的缓存空间的使用状态,生成各内存管理单元的记录信息,每一内存管理单元的记录信息至少包括:该内存管理单元是否处于使用状态;并根据各内存管理单元的记录信息,为客户端发送的数据分配内存管理单元;
所述服务模块用于接收客户端发送的数据,并根据所述内存管理模块分配的内存管理单元,将所述数据写入对应的缓存空间中;
所述监测器用于监测所述内存管理模块中的各内存管理单元的使用状态,并在满足预设条件时指示所述存储磁盘从所述虚拟内存盘中获取并存储数据。
本发明实施例提供的云存储数据节点装置,通过服务模块接收客户端发送的数据,通过虚拟内存盘缓存客户端写入的数据,通过内存管理模块为数据分配虚拟内存盘的内存管理单元,以及通过监测器检测内存管理模块的使用状态,并在满足预设条件时指示存储磁盘从所述虚拟内存盘中获取并存储数据,从而,提高了数据的写入性能。
较佳的,所述服务模块包括分配单元和多个会话处理单元,其中,
所述分配单元用于:接收客户端发送的建立会话链路的请求并为该请求分配会话处理单元,建立该会话处理单元与该客户端之间的会话链路;
所述会话处理单元用于:通过该会话处理单元与客户端之间的会话链路,接收该客户端发送的数据,并根据所述内存管理模块分配的内存管理单元将该客户端发送的数据写入对应的缓存空间中。
较佳的,
所述会话处理单元还用于:在接收客户端发送的数据之前,通过该会话处理单元与该客户端之间的会话链路接收该客户端发送的写入数据请求,并根据该客户端发送的写入数据请求向内存管理模块申请内存管理单元;
所述内存管理模块根据内存管理单元的记录信息,为客户端发送的数据分配内存管理单元时,具体用于:收到会话处理单元的申请时,根据内存管理单元的记录信息,为客户端发送的数据分配内存管理单元。
较佳的,所述内存管理模块还用于:根据内存管理单元的记录信息将内存管理单元分为已分配队列和未分配队列,其中,
若内存管理单元处于使用状态,则该内存管理单元属于已分配队列;
若内存管理单元不处于使用状态,则该内存管理单元处于未分配队列;
所述会话处理单元根据该客户端发送的写入数据请求,向内存管理模块申请内存管理单元时,具体用于:
判断当前接收到的客户端发送的写入数据请求,是否为该待写入数据的第一次写入请求;
若是,则申请内存管理模块的未分配队列中的内存管理单元;并在申请到未分配队列中的内存管理单元后,建立与该申请到的内存管理单元之间的绑定关系;
若否,则申请内存管理模块的已分配队列中的内存管理单元。
较佳的,所述会话处理单元申请内存管理模块中的已分配队列中的内存管理单元时,具体用于:
判断已分配队列中已与该会话处理单元建立绑定关系的内存管理单元对应的虚拟内存盘中的缓存空间是否具有可用的空闲空间,如果是,则将该客户端发送的数据写入该空闲空间;否则,申请内存管理模块的未分配队列中的内存管理单元。
较佳的,
所述会话处理单元还用于:若当前用于写入客户端发送的数据的内存管理单元对应的虚拟内存盘中的缓存空间容量小于该客户端发送的数据的需求容量,则再次向内存管理模块申请未分配队列的内存管理单元。
较佳的,
在所述会话处理单元将所述数据写入所述虚拟内存盘中的缓存空间之后,所述会话处理单元还用于向客户端发送写入完成消息;所述内存管理模块还用于更新该缓存空间对应的内存管理单元的记录信息。
较佳的,
所述内存管理单元的记录信息还包括:该内存管理单元是否处于锁住状态以及该内存管理单元的最后访问时间;在内存管理模块的已分配队列中,若内存管理单元不处于锁住状态,则该内存管理单元为使用结束的内存管理单元;
所述监测器在满足预设条件指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据时,具体用于:
当接收到会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号时;或,当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例大于预设值,且小于百分之百时,在已分配队列中查找最后访问时间最早的使用结束的内存管理单元;
根据该最后访问时间最早的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表对应的缓存空间的数据写入的存储磁盘;其中,所述最终操作信息包括:该会话处理单元是否存在关联的存储磁盘的信息;
将所述内存管理单元列表的记录信息发送给所述存储磁盘;
所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据;
在所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据之后,
所述会话处理单元还用于:记录关联的存储磁盘的信息。
较佳的,
所述监测器根据该最后访问时间最早的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表写入的存储磁盘时,具体用于:
若所述会话处理单元不存在关联的存储磁盘的信息,则确定该最后访问时间最晚的使用结束的内存管理单元为当前使用结束的内存管理单元列表,并根据负载均衡策略确定当前使用结束的内存管理单元列表对应的缓存空间的数据写入的存储磁盘;
若所述会话处理单元存在关联的存储磁盘的信息,则将存在该同一关联存储磁盘的信息的所有使用结束的内存管理单元确定为当前使用结束的内存管理单元列表,并将该关联存储磁盘的信息对应的存储磁盘确定为所述列表对应的数据写入的存储磁盘。
较佳的,所述监测器在满足预设条件指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据时,具体还用于:
当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例等于百分之百时,遍历内存管理模块中的所有内存管理单元,查找当前使用结束的内存管理单元;
根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一内存管理单元对应的数据写入的存储磁盘;
将对应同一存储磁盘的当前使用结束的内存管理单元确定为一个内存管理单元列表;
对于每一内存管理单元列表,将该内存管理单元列表的记录信息发送给该内存管理单元列表对应的存储磁盘;
所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据。
较佳的,
所述监测器根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一当前使用结束的内存管理单元对应的数据写入的存储磁盘时,具体用于:
若所述会话处理单元不存在关联存储磁盘的信息,则根据负载均衡策略确定当前使用结束的内存管理单元对应的数据写入的存储磁盘;
若所述会话处理单元存在关联存储磁盘的信息,则确定该关联存储磁盘的信息对应的存储磁盘为当前使用结束的内存管理单元对应的数据写入的存储磁盘。
较佳的,在所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据之后,
所述内存管理模块还用于:将该内存管理单元列表中的内存管理单元更新到未分配队列。
较佳的,所述数据节点装置还包括闪存盘,其中,所述闪存盘包括预先设置的与所述虚拟内存盘对应的闪存单元,所述闪存单元用于:在所述数据节点装置处于断电保护状态时,接收并存储所述虚拟内存盘写入的数据;在所述数据节点装置断电重启后,将存储的所述虚拟内存盘写入的数据写入至所述虚拟内存盘。
附图说明
图1为本发明实施例提供的一种云存储数据节点装置的结构示意图;
图2为本发明实施例提供的一种数据存储方法的流程示意图;
图3为实现图2中步骤S201的方法的流程示意图;
图4为本发明实施例提供的一种监测器指示存储磁盘从虚拟内存盘中获取并存储数据的流程示意图;
图5为本发明实施例提供的另一种监测器指示存储磁盘从虚拟内存盘中获取并存储数据的流程示意图。
具体实施方式
本发明实施例提供了一种云存储数据节点装置及数据存储方法,用以提高基于云存储系统的数据写入性能。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供的一种云存储数据节点装置,包括服务模块1、用于缓存客户端写入的数据的虚拟内存盘2、包括多个内存管理单元的内存管理模块3、监测器4以及至少一个存储磁盘5;其中,
所述内存管理模块3用于通过各内存管理单元分别记录虚拟内存盘2中对应的缓存空间的使用状态,生成各内存管理单元的记录信息,每一内存管理单元的记录信息至少包括:该内存管理单元是否处于使用状态;并根据各内存管理单元的记录信息,为客户端发送的数据分配内存管理单元;
所述服务模块1用于接收客户端发送的数据,并根据所述内存管理模块3分配的内存管理单元,将所述数据写入对应的缓存空间中;
所述监测器4用于监测所述内存管理模块3中的各内存管理单元的使用状态,并在满足预设条件时指示所述存储磁盘5从所述虚拟内存盘2中获取并存储数据。
其中,虚拟内存盘2包括多个缓存空间,每一缓存空间对应所述内存管理模块3中的一个内存管理单元,每一内存管理单元用于记录与该内存管理单元对应的缓存空间的使用状态,其中:
每一内存管理单元的记录信息包括:该内存管理单元是否处于使用状态。
具体的,内存管理单元的记录信息,包括:
{文件名,
虚拟文件标识,
起始位置,
最终写入的长度,
该内存管理单元是否处于使用状态}。
其中,若该内存管理单元已经被分配,则记录信息中的文件名信息、起始位置信息和最终写入长度信息均从客户端发送的写入数据请求中获取,当然,若该内存管理单元未被分配出去,此处没有文件名信息、起始位置信息和最终写入长度信息。记录信息中的文件名为客户端发送的数据所属的文件名;虚拟文件标识为内存管理单元对应的虚拟内存盘中的缓存空间的标识;起始位置为写入该内存管理单元对应的缓存空间的数据的起始位置;最终写入的长度为当前数据写入该内存管理单元对应的缓存空间的总长度;该内存管理单元是否处于使用状态,若该内存管理单元处于使用状态,说明该内存管理单元已经被分配出去,若该内存管理单元不处于使用状态,则说明该内存管理单元没有被分配出去。
本发明实施例提供的云存储数据节点装置,通过服务模块接收客户端发送的数据,通过虚拟内存盘缓存客户端写入的数据,通过内存管理模块为数据分配虚拟内存盘的内存管理单元,以及通过监测器检测内存管理模块的使用状态,并在满足预设条件时指示存储磁盘从所述虚拟内存盘中获取并存储数据,从而,提高了数据的写入性能。
较佳的,所述服务模块包括分配单元和多个会话处理单元,其中,
所述分配单元用于:接收客户端发送的建立会话链路的请求并为该请求分配会话处理单元,建立该会话处理单元与该客户端之间的会话链路;
所述会话处理单元用于:通过该会话处理单元与客户端之间的会话链路,接收该客户端发送的数据,并根据所述内存管理模块分配的内存管理单元将该客户端发送的数据写入对应的缓存空间中。
此处,由于每一客户端会包括多个需要写入的文件,因此不同的文件在写入时会由不同的会话处理单元处理,同一文件由同一会话处理单元处理。
较佳的,
所述会话处理单元还用于:在接收客户端发送的数据之前,通过该会话处理单元与该客户端之间的会话链路接收该客户端发送的写入数据请求,并根据该客户端发送的写入数据请求向内存管理模块申请内存管理单元;其中写入数据请求中包括待写入数据的文件名信息;
所述内存管理模块根据内存管理单元的记录信息,为客户端发送的数据分配内存管理单元时,具体用于:收到会话处理单元的申请时,根据内存管理单元的记录信息,为客户端发送的数据分配内存管理单元。
较佳的,所述内存管理模块还用于:根据内存管理单元的记录信息将内存管理单元分为已分配队列和未分配队列,其中,
若内存管理单元处于使用状态,则该内存管理单元属于已分配队列;
若内存管理单元不处于使用状态,则该内存管理单元处于未分配队列;
所述会话处理单元根据该客户端发送的写入数据请求,向内存管理模块申请内存管理单元时,具体用于:
根据当前接收到的客户端发送的写入数据请求中的文件名信息,判断是否为该待写入数据所属的文件的第一次写入请求;
若是,则申请内存管理模块的未分配队列中的内存管理单元;并在申请到未分配队列中的内存管理单元后,建立与该申请到的内存管理单元之间的绑定关系;
若否,则申请内存管理模块的已分配队列中的内存管理单元。
较佳的,所述会话处理单元申请内存管理模块中的已分配队列中的内存管理单元时,具体用于:
判断已分配队列中已与该会话处理单元建立绑定关系的内存管理单元对应的虚拟内存盘中的缓存空间是否具有可用的空闲空间,如果是,则将该客户端发送的数据写入该空闲空间;否则,申请内存管理模块的未分配队列中的内存管理单元。
较佳的,所述会话处理单元申请内存管理模块的未分配队列中的内存管理单元时,具体用于:
判断内存管理模块的未分配队列中是否有空闲的内存管理单元,如果是,则申请一空闲的内存管理单元。
在本发明中,会话链路建立好之后,一旦客户端确定要发送数据,则通过该会话链路向对应的会话处理单元发送写入数据请求,如果该会话处理单元中记录有与内存管理单元的绑定关系,说明该会话链路在接收该次客户端发送的写入数据请求之前已经接收过同属于同一文件的数据,则说明该请求不是该文件的第一次请求;如果该会话处理单元中不存在与内存管理单元的绑定关系,则说明该会话链路在接收该次客户端发送的写入数据请求之前并没有接收过同属于同一文件的数据,则说明该次请求是第一次请求。
较佳的,
所述会话处理单元还用于:若当前用于写入客户端发送的数据的内存管理单元对应的虚拟内存盘中的缓存空间容量小于该客户端发送的数据的需求容量,则再次向内存管理模块申请未分配队列的内存管理单元。
较佳的,
在所述会话处理单元将所述数据写入所述虚拟内存盘中的缓存空间之后,所述会话处理单元还用于向客户端发送写入完成消息;所述内存管理模块还用于更新该缓存空间对应的内存管理单元的记录信息。此处,内存管理模块更新该缓存空间对应的内存管理单元的记录信息,例如,每次都采用覆盖上次记录的形式更新,比如最终写入的长度这一项记录信息,每次更新之后,该项记录信息中保存的都是当前总的最终写入长度,例如,如果客户端需要写入的文件为文件A,第一次写入10个字节的数据,第二次再写入10个字节的数据,则第二次将该数据写入虚拟内存盘对应的缓存空间之后,该缓存空间对应的内存管理单元的记录信息中最终写入长度这一项由第一次写入后的10字节更新为20字节。
较佳的,
所述内存管理单元的记录信息还包括:该内存管理单元是否处于锁住状态以及该内存管理单元的最后访问时间;也就是说,内存管理单元包括的完整的记录信息,如下:
{文件名,
虚拟文件标识,
起始位置,
最终写入的长度,
最后访问时间,
该内存管理单元是否处于使用状态,
该内存管理单元是否处于锁住状态}。
在内存管理模块的已分配队列中,若内存管理单元不处于锁住状态,则该内存管理单元为使用结束的内存管理单元;在此,通过将内存管理单元标记为使用结束的内存管理单元,当后续需要将虚拟内存盘上的数据刷入存储磁盘时,可以方便的找到这些使用结束的内存管理单元并将这些数据刷入存储磁盘。
所述监测器在满足预设条件时指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据时,具体用于:
当接收到会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号时;或,当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例大于预设值,且小于百分之百时,在已分配队列中查找最后访问时间最早的使用结束的内存管理单元;
根据该最后访问时间最早的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表对应的缓存空间的数据写入的存储磁盘;其中,所述最终操作信息包括:该会话处理单元是否存在关联的存储磁盘的信息;
将所述内存管理单元列表的记录信息发送给所述存储磁盘;
所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据;
在所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据之后,
所述会话处理单元还用于:记录关联的存储磁盘的信息。
在具体实施过程中,在已分配队列中查找最后访问时间最晚的使用结束的内存管理单元,例如可以采用近期最少使用(Least Recently Used,LRU)算法,查找到最后访问时间最早的使用结束的内存管理单元。
另外,接收到会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号,为:当会话处理单元接收到写入数据请求并为根据该写入数据请求申请内存管理模块的未分配队列的内存管理单元时,判断出未分配队列已经没有空闲的内存管理单元,说明所有的内存管理单元均已经被分配出去,同时虚拟内存盘已经没有空闲的缓存空间,这时需要将已经被分配出去的内存管理单元中部分内存管理单元换出,也就是将部分已分配队列中的内存管理单元对应的缓存空间中的数据存储到磁盘中,从而将内存管理单元以及相应的缓存空间清空,进一步等待会话处理单元的再次申请。
较佳的,
所述监测器根据该最后访问时间最早的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表写入的存储磁盘时,具体用于:
若所述会话处理单元不存在关联的存储磁盘的信息,则确定该最后访问时间最晚的使用结束的内存管理单元为当前使用结束的内存管理单元列表,并根据负载均衡策略确定当前使用结束的内存管理单元列表对应的缓存空间的数据写入的存储磁盘;
若所述会话处理单元存在关联的存储磁盘的信息,则将存在该同一关联存储磁盘的信息的所有使用结束的内存管理单元确定为当前使用结束的内存管理单元列表,并将该关联存储磁盘的信息对应的存储磁盘确定为所述列表对应的数据写入的存储磁盘。
较佳的,所述监测器在满足预设条件指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据时,具体还用于:
当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例等于百分之百时,遍历内存管理模块中的所有内存管理单元,查找当前使用结束的内存管理单元;
根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一内存管理单元对应的数据写入的存储磁盘;
将对应同一存储磁盘的当前使用结束的内存管理单元确定为一个内存管理单元列表;
对于每一内存管理单元列表,将该内存管理单元列表的记录信息发送给该内存管理单元列表对应的存储磁盘;
所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据。
较佳的,
所述监测器根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一当前使用结束的内存管理单元对应的数据写入的存储磁盘时,具体用于:
若所述会话处理单元不存在关联存储磁盘的信息,则根据负载均衡策略确定当前使用结束的内存管理单元对应的数据写入的存储磁盘;
若所述会话处理单元存在关联存储磁盘的信息,则确定该关联存储磁盘的信息对应的存储磁盘为当前使用结束的内存管理单元对应的数据写入的存储磁盘。
在本发明中,通过将属于同一存储磁盘的内存管理单元确定为一个内存管理单元列表,从而能够使存储磁盘发挥出其顺序输入输出的能力,从而可以提高磁盘的输入输出性能,同时可以减少磁盘碎片的数量。
较佳的,在所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据之后,
所述内存管理模块还用于:将该内存管理单元列表中的内存管理单元更新到未分配队列。
具体实施时,更新该内存管理单元的记录信息,将其中该内存管理单元处于使用状态一项修改为该内存管理单元不处于使用状态,同时,清空文件名等信息。
较佳的,继续参见图1,所述数据节点装置还包括闪存盘6,其中,所述闪存盘6包括预先设置的与所述虚拟内存盘对应的闪存单元61,所述闪存单元61用于:在所述数据节点装置处于断电保护状态时,接收并存储所述虚拟内存盘写入的数据;在所述数据节点装置断电重启后,将存储的所述虚拟内存盘写入的数据写入至所述虚拟内存盘。
具体的,在现有技术中,数据节点装置一般设置有断电保护功能,例如通过内置电池,该内置电池用于在紧急断电时给数据节点供电,并可在该断电保护的时间段内,将内存中缓存的数据进行存储,例如存储至闪存盘中。但是,由于内存中的数据是无序且随机的,在将内存中的数据写入到闪存盘中时并不能连续有序的将数据写入到闪存盘中,同时,由于内存盘中的数据包括了大量不需要进行保护的数据(例如应用程序),因此在将内存中的数据写进闪存盘的过程中系统开销很大。而在本发明中,由于闪存盘中预先设置有与所述虚拟内存盘对应的闪存单元(例如通过预先建立虚拟内存盘的物理地址与闪存单元的映射关系的方式建立虚拟内存盘和闪存单元的对应关系,但并不限于此),因此在数据节点处于断电保护状态时,所述闪存单元接收并存储所述虚拟内存盘写入的数据;在所述数据节点装置断电重启后,将存储的所述虚拟内存盘写入的数据写入至所述虚拟内存盘。如此,能够保证虚拟内存盘中的数据不会丢失,同时由于在数据节点装置处于断电保护状态时仅将虚拟内存盘中的数据写入闪存单元中,从而能够降低系统开销。
以上详细说明了本发明实施例提供的一种云存储数据节点装置,下面结合附图对本发明实施例提供的数据存储方法进行详细说明。
本发明实施例提供的一种数据存储方法,应用于一种数据节点装置,该数据节点装置包括服务模块、用于缓存客户端写入的数据的虚拟内存盘、包括多个内存管理单元的内存管理模块、监测器以及至少一个存储磁盘,如图2所示,该数据存储方法包括:
步骤S201:服务模块接收客户端发送的数据,并根据所述内存管理模块分配的内存管理单元,将所述数据写入对应的缓存空间中;
步骤S202:监测器监测所述内存管理模块中的各内存管理单元的使用状态,并在满足预设条件时指示所述存储磁盘从所述虚拟内存盘中获取并存储数据;
其中,内存管理模块通过各内存管理单元分别记录虚拟内存盘中对应的缓存空间的使用状态,生成各内存管理单元的记录信息,每一内存管理单元的记录信息至少包括:该内存管理单元是否处于使用状态;并根据各内存管理单元的记录信息,为客户端发送的数据分配内存管理单元。
本发明实施例提供的数据存储方法,通过服务模块接收客户端发送的数据,并根据所述内存管理模块分配的内存管理单元将所述数据写入对应的缓存空间,监测器监测内存管理模块中的各内存管理单元的使用状态,并在满足预设条件时指示所述存储磁盘从所述虚拟内存盘中获取并存储数据,从而,提高了数据的写入性能。
其中,虚拟内存盘包括多个缓存空间,每一缓存空间对应所述内存管理模块中的一个内存管理单元,每一内存管理单元用于记录与该内存管理单元对应的缓存空间的使用状态,其中:
每一内存管理单元的记录信息包括:该内存管理单元是否处于使用状态。
具体的,内存管理单元的记录信息,包括:
{文件名,
虚拟文件标识,
起始位置,
最终写入的长度,
该内存管理单元是否处于使用状态}。
其中,若该内存管理单元已经被分配,则记录信息中的文件名信息、起始位置信息和最终写入长度信息均从客户端发送的写入数据请求中获取,当然,若该内存管理单元未被分配出去,此处没有文件名信息、起始位置信息和最终写入长度信息。记录信息中的文件名为客户端发送的数据所属的文件名;虚拟文件标识为内存管理单元对应的虚拟内存盘中的缓存空间的标识;起始位置为写入该内存管理单元对应的缓存空间的数据的起始位置;最终写入的长度为当前数据写入该内存管理单元对应的缓存空间的总长度;该内存管理单元是否处于使用状态,若该内存管理单元处于使用状态,说明该内存管理单元已经被分配出去,若该内存管理单元不处于使用状态,则说明该内存管理单元没有被分配出去。
较佳的,所述内存管理模块根据内存管理单元的记录信息将内存管理单元分为已分配队列和未分配队列,其中,
若内存管理单元处于使用状态,则该内存管理单元属于已分配队列;
若内存管理单元不处于使用状态,则该内存管理单元处于未分配队列。
较佳的,所述服务模块包括分配单元和多个会话处理单元,
所述服务模块接收客户端发送的数据,具体包括:
所述分配单元接收客户端发送的建立会话链路的请求并为该请求分配会话处理单元,建立该会话处理单元与该客户端之间的会话链路;
会话处理单元通过所述会话链路接收客户端发送的数据。
此处,由于每一客户端会包括多个需要写入的文件,因此不同的文件在写入时会由不同的会话处理单元处理,同一文件由同一会话处理单元处理。
较佳的,
所述会话处理单元通过所述会话链路接收客户端发送的数据之前,该方法还包括:
会话处理单元通过该会话处理单元与该客户端之间的会话链路接收该客户端发送的写入数据请求,并根据该客户端发送的写入数据请求向内存管理模块申请内存管理单元;其中写入数据请求中包括待写入数据的文件名信息;
较佳的,所述会话处理单元根据该客户端发送的写入数据请求向内存管理模块申请内存管理单元,具体包括:
根据当前接收到的客户端发送的写入数据请求中的文件名信息,判断是否为该待写入数据所属的文件的第一次写入请求;
若是,则申请内存管理模块的未分配队列中的内存管理单元;
若否,则申请内存管理模块的已分配队列中的内存管理单元;并在申请到未分配队列中的内存管理单元后,建立与该申请到的内存管理单元之间的绑定关系;
较佳的,所述会话处理单元申请内存管理模块中的已分配队列中的内存管理单元,具体包括:
判断已分配队列中已与该会话处理单元建立绑定关系的内存管理单元对应的虚拟内存盘中的缓存空间是否具有可用的空闲空间,如果是,则将该客户端发送的数据写入该空闲空间;否则,申请内存管理模块的未分配队列中的内存管理单元。
较佳的,所述会话处理单元申请内存管理模块的未分配队列中的内存管理单元,具体包括:
判断内存管理模块的未分配队列中是否有空闲的内存管理单元;
若是,则申请一空闲的内存管理单元;若否,则触发监测器。
在本发明中,会话链路建立好之后,一旦客户端确定要发送数据,则通过该会话链路向对应的会话处理单元发送写入数据请求,如果该会话处理单元中记录有与内存管理单元的绑定关系,说明该会话链路在接收该次客户端发送的写入数据请求之前已经接收过同属于同一文件的数据,则说明该请求不是第一次请求;如果该会话处理单元中不存在与内存管理单元的绑定关系,则说明该会话链路在接收该次客户端发送的写入数据请求之前并没有接收过同属于同一文件的数据,则说明该次请求是第一次请求。
较佳的,该方法还包括:若当前用于写入客户端发送的数据的内存管理单元对应的虚拟内存盘中的缓存空间容量小于该客户端发送的数据的需求容量,会话处理单元再次向内存管理模块申请未分配队列的内存管理单元。
较佳的,该方法还包括:
在所述会话处理单元将所述数据写入所述虚拟内存盘中的缓存空间之后,所述会话处理单元向客户端发送写入完成消息;所述内存管理模块更新该缓存空间对应的内存管理单元的记录信息。此处,内存管理模块更新该缓存空间对应的内存管理单元的记录信息,例如,每次都采用覆盖上次记录的形式更新,比如最终写入的长度这一项记录信息,每次更新之后,该项记录信息中保存的都是当前总的最终写入长度,例如,如果客户端需要写入的文件为文件A,第一次写入10个字节的数据,第二次再写入10个字节的数据,则第二次将该数据写入虚拟内存盘对应的缓存空间之后,该缓存空间对应的内存管理单元的记录信息中最终写入长度这一项由第一次写入后的10字节更新为20字节。
较佳的,所述内存管理单元的记录信息还包括:该内存管理单元是否处于锁住状态以及该内存管理单元的最后访问时间;也就是说,内存管理单元包括的完整的记录信息,如下:
{文件名,
虚拟文件标识,
起始位置,
最终写入的长度,
最后访问时间,
该内存管理单元是否处于使用状态,
该内存管理单元是否处于锁住状态}。
在内存管理模块的已分配队列中,若内存管理单元不处于锁住状态,则该内存管理单元为使用结束的内存管理单元;在此,通过将内存管理单元标记为使用结束的内存管理单元,当后续需要将虚拟内存盘上的数据刷入存储磁盘时,可以方便的找到这些使用结束的内存管理单元并将这些数据刷入存储磁盘。
所述监测器在满足预设条件时指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据,具体包括:
当接收到会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号时;或,当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例大于预设值,且小于百分之百时,在已分配队列中查找最后访问时间最早的使用结束的内存管理单元;
根据该最后访问时间最早的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表对应的缓存空间的数据写入的存储磁盘;其中,所述最终操作信息包括:该会话处理单元是否存在关联的存储磁盘的信息;
将所述内存管理单元列表的记录信息发送给所述存储磁盘;以指示存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据。
具体实施过程中,在已分配队列中查找最后访问时间最晚的使用结束的内存管理单元,例如可以采用近期最少使用LRU算法,查找到最后访问时间最早的使用结束的内存管理单元。
另外,接收到会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号,为:当会话处理单元接收到写入数据请求并为根据该写入数据请求申请内存管理模块的未分配队列的内存管理单元时,判断出未分配队列已经没有空闲的内存管理单元,说明所有的内存管理单元均已经被分配出去,同时虚拟内存盘已经没有空闲的缓存空间,这时需要将已经被分配出去的内存管理单元中部分内存管理单元换出,也就是将部分已分配队列中的内存管理单元对应的缓存空间中的数据存储到磁盘中,从而将内存管理单元以及相应的缓存空间清空,进一步等待会话处理单元的再次申请。
较佳的,所述监测器根据该最后访问时间最晚的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表写入的存储磁盘,具体包括:
若所述会话处理单元不存在关联的存储磁盘的信息,则确定该最后访问时间最晚的使用结束的内存管理单元为当前使用结束的内存管理单元列表,并根据负载均衡策略确定当前使用结束的内存管理单元列表对应的缓存空间的数据写入的存储磁盘;
若所述会话处理单元存在关联的存储磁盘的信息,则将存在该同一关联存储磁盘的信息的所有使用结束的内存管理单元确定为当前使用结束的内存管理单元列表,并将该关联存储磁盘的信息对应的存储磁盘确定为所述列表对应的数据写入的存储磁盘。
较佳的,所述监测器在满足预设条件时指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据,具体还包括:
当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例等于百分之百时,遍历内存管理模块中的所有内存管理单元,查找当前使用结束的内存管理单元;
根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一内存管理单元对应的数据写入的存储磁盘;
将对应同一存储磁盘的当前使用结束的内存管理单元确定为一个内存管理单元列表;
对于每一内存管理单元列表,将该内存管理单元列表的记录信息发送给该内存管理单元列表对应的存储磁盘;以指示存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据。
较佳的,所述监测器根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一当前使用结束的内存管理单元对应的数据写入的存储磁盘时,具体包括:
若所述会话处理单元不存在关联存储磁盘的信息,则根据负载均衡策略确定当前使用结束的内存管理单元对应的数据写入的存储磁盘;
若所述会话处理单元存在关联存储磁盘的信息,则确定该关联存储磁盘的信息对应的存储磁盘为当前使用结束的内存管理单元对应的数据写入的存储磁盘。
在本发明中,通过将属于同一存储磁盘的内存管理单元确定为一个内存管理单元列表,从而能够使存储磁盘发挥出其顺序输入输出的能力,从而可以提高磁盘的输入输出性能,同时可以减少磁盘碎片的数量。
较佳的,在所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据之后,该方法还包括:
所述会话处理单元记录关联的存储磁盘的信息;
所述内存管理模块将该内存管理单元列表中的内存管理单元更新到未分配队列。
具体实施时,更新该内存管理单元的记录信息,将其中该内存管理单元处于使用状态一项修改为该内存管理单元不处于使用状态,同时,清空文件名等信息。
下面,结合详细的流程图,对本发明提供的数据存储方法的具体流程进行进一步说明。
如图3所示,为图2所示的数据存储方法中步骤S201的详细流程图,包括:
步骤S301:接收客户端发送的写入数据请求;
步骤S302:判断该请求是否为新的请求;若是,则继续步骤S303;若否,则继续步骤S304;
步骤S303:判断未分配队列是否有空闲的内存管理单元;若是,则继续步骤S306;若否,则继续步骤S307;
步骤S304:申请已分配队列的内存管理单元;并继续步骤S305;
步骤S305:判断该内存管理单元对应的缓存空间是否有可用的空闲空间;若是,则继续步骤S308;若否,则继续步骤S03;
步骤S306:申请未分配队列的内存管理单元;并继续步骤S308;
步骤S307:触发监测器,并等待监测器指示存储磁盘从虚拟内存盘中获取并存储数据完成后,继续步骤S306;对于该步骤S307中具体的监测器如何指示存储磁盘从虚拟内存盘中获取并存储数据,在后面的说明中将详细介绍;
步骤S308:接收客户端发送的数据,并将该数据写入申请的内存管理单元对应的缓存空间;并继续步骤S309;
步骤S309:判断当前缓存空间的容量是否满足数据需求容量;若是,则继续步骤S311;若否,则继续步骤S310;
步骤S310:将部分数据写入当前缓存空间,并更新当前缓存空间对应的内存管理单元的记录信息;在此,例如,将该内存管理单元的记录信息中该内存管理单元是否处于锁住状态这一项更改为不处于锁住状态,则该内存管理单元更新为使用结束的内存管理单元,后续监测器就可以通过查找到该使用结束的内存管理单元,并指示存储磁盘从该内存管理单元对应的缓存空间中获取并存储数据;并继续步骤S303;
步骤S311:向客户端返回写入完成消息。
当然,在步骤S311中,若写入不成功,则向客户端返回写入失败消息,该消息中包括写入失败的原因。
下面,针对监测器在满足预设条件时指示存储磁盘从虚拟内存盘中获取并存储数据的方法进行详细说明。
由于在满足预设条件时,具体包括:
当接收到会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号时;或,当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例大于预设值,且小于百分之百时,指示存储磁盘从虚拟内存盘中获取并存储数据;
以及还包括:当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例等于百分之百时,指示存储磁盘从虚拟内存盘中获取并存储数据。
也就是说,监测器根据当前内存管理模块的使用状态,或者,
根据接收到的会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号时,也就是步骤S307对应的情况下,指示存储磁盘从虚拟内存盘中获取并存储数据。
下面针对以上两种情况分别说明。
下面以监测器根据内存管理模块的使用状态指示存储磁盘从虚拟内存盘中获取并存储数据的方法流程进行说明。如图4所示,包括:
开始:监测器运行;
步骤S401:判断是否达到监测周期;
步骤S402:判断已分配队列中的内存管理单元占所有内存管理单元的比例是否大于预设值;若是,则继续步骤S403;若否,则继续步骤S401;
步骤S403:判断已分配队列中的内存管理单元占所有内存管理单元的比例是否为百分之百;若是,则继续步骤S404;若否,则继续步骤S405;
步骤S404:遍历内存管理模块中的内存管理单元,确定所有的当前使用结束的内存管理单元列表;并继续步骤S406;
步骤S405:在分配队列中确定当前使用结束的内存管理单元列表;
步骤S406:将内存管理单元列表的记录信息发送给存储磁盘,用于指示存储磁盘从虚拟内存盘中获取并存储内存管理单元列表对应缓存空间的数据。
下面以监测器接收到的会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号时,指示存储磁盘从虚拟内存盘中获取并存储数据的方法流程进行说明。如图5所示,包括:
开始:监测器运行;
步骤S501:接收会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号;
步骤S502:在已分配队列中确定当前使用结束的内存管理单元列表;
步骤S503:将内存管理单元列表的记录信息发送给存储磁盘,用于存储磁盘从虚拟内存盘中获取并存储内存管理单元列表对应缓存空间的数据。
在具体实施过程中,存储磁盘获取到内存管理单元列表的记录信息之后,从虚拟内存盘中获取并存储内存管理单元列表对应的缓存空间的数据时,存储磁盘利用该存储磁盘的输入输出线程进行写入操作,具体的,输入输出线程包括缓存单元和写入单元;缓存单元根据该当前使用结束的内存管理单元列表的记录信息,从所述虚拟内存盘中获取数据并缓存内存管理单元列表的数据;写入单元通过数据输出流将缓存的数据写入到对应的存储磁盘中。写入单元在通过所述数据输出流将缓存的数据写入到对应的存储磁盘中时,根据当前数据对应的文件名,判断该文件名是否存在于预先建立的文件名和数据输出流的映射表;若存在,则根据所述映射表,确定该当前使用结束的内存管理单元的记录信息中的文件名对应的数据输出流,并通过该数据输出流将缓存的数据写入到对应的存储磁盘中;若不存在,则建立一数据输出流并通过该数据输出流将缓存的数据写入到对应的存储磁盘中,同时,将该文件名和数据输出流的对应关系更新到所述映射表中。
需要说明的是,上述存储磁盘利用该存储磁盘的输入输出线程进行写入操作的方法采用现有技术,不再赘述。
进一步,在本发明实施例提供的上述数据存储方法的执行过程中,如果发生数据节点装置断电的情况,本发明实施例提供的虚拟内存盘能够将存储在该虚拟内存盘中的数据写入到闪存单元中,并在数据节点装置断电重启后,闪存单元能够将存储的虚拟内存盘中的数据再次写入虚拟内存盘中,如此,能够保证虚拟内存盘中的数据不会丢失。当然,断电重启后,该数据节点装置将继续按照图2-5以及上述的相应步骤对客户端发送的数据进行存储。
综上所述,本发明实施例提供的云存储数据节点装置以及数据存储方法,通过服务模块接收客户端发送的数据,通过虚拟内存盘缓存客户端写入的数据,通过内存管理模块为数据分配虚拟内存盘的内存管理单元,以及通过监测器检测内存管理模块的使用状态,并在满足预设条件时指示存储磁盘从所述虚拟内存盘中获取并存储数据,从而,提高了数据的写入性能。进一步,由于闪存盘设置有与所述虚拟内存盘对应的闪存单元,因此在数据节点处于断电保护状态时,所述闪存单元接收并存储所述虚拟内存盘写入的数据;在所述数据节点装置断电重启后,将存储的所述虚拟内存盘写入的数据写入至所述虚拟内存盘。如此,能够保证虚拟内存盘中的数据不会丢失,同时由于在数据节点装置处于断电保护状态时仅将虚拟内存盘中的数据写入闪存单元中,在保证不丢失数据的情况下降低了系统开销。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种云存储数据节点装置,其特征在于,所述装置包括服务模块、用于缓存客户端写入的数据的虚拟内存盘、包括多个内存管理单元的内存管理模块、监测器以及至少一个存储磁盘;其中,
所述内存管理模块用于通过各内存管理单元分别记录虚拟内存盘中对应的缓存空间的使用状态,生成各内存管理单元的记录信息,每一内存管理单元的记录信息至少包括:该内存管理单元是否处于使用状态;并根据各内存管理单元的记录信息,为客户端发送的数据分配内存管理单元;
所述服务模块用于接收客户端发送的数据,并根据所述内存管理模块分配的内存管理单元,将所述数据写入对应的缓存空间中;
所述监测器用于监测所述内存管理模块中的各内存管理单元的使用状态,并在满足预设条件时指示所述存储磁盘从所述虚拟内存盘中获取并存储数据。
2.根据权利要求1所述的云存储数据节点装置,其特征在于,所述服务模块包括分配单元和多个会话处理单元,其中,
所述分配单元用于:接收客户端发送的建立会话链路的请求并为该请求分配会话处理单元,建立该会话处理单元与该客户端之间的会话链路;
所述会话处理单元用于:通过该会话处理单元与客户端之间的会话链路,接收该客户端发送的数据,并根据所述内存管理模块分配的内存管理单元将该客户端发送的数据写入对应的缓存空间中。
3.根据权利要求2所述的云存储数据节点装置,其特征在于,
所述会话处理单元还用于:在接收客户端发送的数据之前,通过该会话处理单元与该客户端之间的会话链路接收该客户端发送的写入数据请求,并根据该客户端发送的写入数据请求向内存管理模块申请内存管理单元;其中写入数据请求中包括待写入数据的文件名信息;
所述内存管理模块根据内存管理单元的记录信息,为客户端发送的数据分配内存管理单元时,具体用于:收到会话处理单元的申请时,根据内存管理单元的记录信息,为客户端发送的数据分配内存管理单元。
4.根据权利要求3所述的云存储数据节点装置,其特征在于,
所述内存管理模块还用于:根据内存管理单元的记录信息将内存管理单元分为已分配队列和未分配队列,其中,
若内存管理单元处于使用状态,则该内存管理单元属于已分配队列;
若内存管理单元不处于使用状态,则该内存管理单元处于未分配队列;
所述会话处理单元根据该客户端发送的写入数据请求,向内存管理模块申请内存管理单元时,具体用于:
根据当前接收到的客户端发送的写入数据请求中的文件名信息,判断该请求是否为该待写入数据所属的文件的第一次写入请求;
若是,则申请内存管理模块的未分配队列中的内存管理单元;并在申请到未分配队列中的内存管理单元后,建立与该申请到的内存管理单元之间的绑定关系;
若否,则申请内存管理模块的已分配队列中的内存管理单元。
5.根据权利要求4所述的云存储数据节点装置,其特征在于,所述会话处理单元申请内存管理模块中的已分配队列中的内存管理单元时,具体用于:
判断已分配队列中已与该会话处理单元建立绑定关系的内存管理单元对应的虚拟内存盘中的缓存空间是否具有可用的空闲空间,如果是,则将该客户端发送的数据写入该空闲空间;否则,申请内存管理模块的未分配队列中的内存管理单元。
6.根据权利要求5所述的云存储数据节点装置,其特征在于,所述会话处理单元申请内存管理模块中的未分配队列中的内存管理单元时,具体还用于:
判断内存管理模块的未分配队列中是否有空闲的内存管理单元,如果是,则申请一空闲的内存管理单元。
7.根据权利要求6所述的云存储数据节点装置,其特征在于,
所述会话处理单元还用于:若当前用于写入客户端发送的数据的内存管理单元对应的虚拟内存盘中的缓存空间容量小于该客户端发送的数据的需求容量,则再次向内存管理模块申请未分配队列的内存管理单元。
8.根据权利要求7所述的云存储数据节点装置,其特征在于,
在所述会话处理单元将所述数据写入所述虚拟内存盘中的缓存空间之后,所述会话处理单元还用于向客户端发送写入完成消息;所述内存管理模块还用于更新该缓存空间对应的内存管理单元的记录信息。
9.根据权利要求8所述的云存储数据节点装置,其特征在于,
所述内存管理单元的记录信息还包括:该内存管理单元是否处于锁住状态以及该内存管理单元的最后访问时间;在内存管理模块的已分配队列中,若内存管理单元不处于锁住状态,则该内存管理单元为使用结束的内存管理单元;
所述监测器在满足预设条件指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据时,具体用于:
当接收到会话处理单元在内存管理模块的未分配队列中没有空闲的内存管理单元时发送的触发信号时;或,当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例大于预设值,且小于百分之百时,在已分配队列中查找最后访问时间最早的使用结束的内存管理单元;
根据该最后访问时间最早的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表对应的缓存空间的数据写入的存储磁盘;其中,所述最终操作信息包括:该会话处理单元是否存在关联的存储磁盘的信息;
将所述内存管理单元列表的记录信息发送给所述存储磁盘;
所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据;
在所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据之后,
所述会话处理单元还用于:记录关联的存储磁盘的信息。
10.根据权利要求9所述的云存储数据节点装置,其特征在于,
所述监测器根据该最后访问时间最早的使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定当前使用结束的内存管理单元列表以及该内存管理单元列表写入的存储磁盘时,具体用于:
若所述会话处理单元不存在关联的存储磁盘的信息,则确定该最后访问时间最晚的使用结束的内存管理单元为当前使用结束的内存管理单元列表,并根据负载均衡策略确定当前使用结束的内存管理单元列表对应的缓存空间的数据写入的存储磁盘;
若所述会话处理单元存在关联的存储磁盘的信息,则将存在该同一关联存储磁盘的信息的所有使用结束的内存管理单元确定为当前使用结束的内存管理单元列表,并将该关联存储磁盘的信息对应的存储磁盘确定为所述列表对应的数据写入的存储磁盘。
11.根据权利要求9所述的云存储数据节点装置,其特征在于,所述监测器在满足预设条件指示所述存储磁盘从所述虚拟内存盘中获取并存储所述数据时,具体还用于:
当所述内存管理模块中的已分配队列中的内存管理单元占所有内存管理单元的比例等于百分之百时,遍历内存管理模块中的所有内存管理单元,查找当前使用结束的内存管理单元;
根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一内存管理单元对应的数据写入的存储磁盘;
将对应同一存储磁盘的当前使用结束的内存管理单元确定为一个内存管理单元列表;
对于每一内存管理单元列表,将该内存管理单元列表的记录信息发送给该内存管理单元列表对应的存储磁盘;
所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据。
12.根据权利要求11所述的云存储数据节点装置,其特征在于,
所述监测器根据每一当前使用结束的内存管理单元绑定的会话处理单元记录的最终操作信息,确定每一当前使用结束的内存管理单元对应的数据写入的存储磁盘时,具体用于:
若所述会话处理单元不存在关联存储磁盘的信息,则根据负载均衡策略确定当前使用结束的内存管理单元对应的数据写入的存储磁盘;
若所述会话处理单元存在关联存储磁盘的信息,则确定该关联存储磁盘的信息对应的存储磁盘为当前使用结束的内存管理单元对应的数据写入的存储磁盘。
13.根据权利要求10或12所述的云存储数据节点装置,其特征在于,在所述存储磁盘根据该存储磁盘对应的内存管理单元列表的记录信息获取并存储该内存管理单元列表对应的缓存空间的数据之后,
所述内存管理模块还用于:将该内存管理单元列表中的内存管理单元更新到未分配队列。
14.根据权利要求13所述的云存储数据节点装置,其特征在于,所述数据节点装置还包括闪存盘,其中,所述闪存盘包括预先设置的与所述虚拟内存盘对应的闪存单元,所述闪存单元用于:在所述数据节点装置处于断电保护状态时,接收并存储所述虚拟内存盘写入的数据;在所述数据节点装置断电重启后,将存储的所述虚拟内存盘写入的数据写入至所述虚拟内存盘。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410503789.2A CN104965793B (zh) | 2014-09-26 | 2014-09-26 | 一种云存储数据节点装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410503789.2A CN104965793B (zh) | 2014-09-26 | 2014-09-26 | 一种云存储数据节点装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104965793A CN104965793A (zh) | 2015-10-07 |
CN104965793B true CN104965793B (zh) | 2016-10-12 |
Family
ID=54219829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410503789.2A Active CN104965793B (zh) | 2014-09-26 | 2014-09-26 | 一种云存储数据节点装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104965793B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287793B (zh) * | 2018-01-09 | 2020-12-25 | 网宿科技股份有限公司 | 响应消息的缓冲方法及服务器 |
CN109284236B (zh) * | 2018-08-28 | 2020-04-17 | 北京三快在线科技有限公司 | 数据预热方法、装置、电子设备及存储介质 |
CN110442556A (zh) * | 2019-07-29 | 2019-11-12 | 浙江大华技术股份有限公司 | 缓存预加载方法、移动终端以及计算机存储介质 |
CN113485822A (zh) * | 2020-06-19 | 2021-10-08 | 中兴通讯股份有限公司 | 内存管理方法、系统、客户端、服务器及存储介质 |
CN112162818B (zh) * | 2020-09-16 | 2023-04-07 | Oppo(重庆)智能科技有限公司 | 一种虚拟内存分配方法、装置、电子设备及存储介质 |
CN113655963B (zh) * | 2021-08-19 | 2024-03-01 | 东集技术股份有限公司 | 基于内存桥接的数据存储系统、方法及计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8140478B2 (en) * | 2009-01-29 | 2012-03-20 | Microsoft Corporation | Commit rate management with decoupled commit operations |
US8452932B2 (en) * | 2010-01-06 | 2013-05-28 | Storsimple, Inc. | System and method for efficiently creating off-site data volume back-ups |
CN103475724A (zh) * | 2013-09-16 | 2013-12-25 | 张世龙 | 基于云端实现智能安防的方法及系统 |
CN103516812A (zh) * | 2013-10-22 | 2014-01-15 | 浪潮电子信息产业股份有限公司 | 一种加速云存储内部数据传输的方法 |
-
2014
- 2014-09-26 CN CN201410503789.2A patent/CN104965793B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104965793A (zh) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104965793B (zh) | 一种云存储数据节点装置 | |
KR102352257B1 (ko) | 분산 스토리지 시스템 노드 및 그것의 동작 방법 | |
US9665493B2 (en) | Increased cache performance with multi-level queues of complete tracks | |
US10725878B2 (en) | Storage apparatus, storage system, and control method of storage system for dynamically securing free space when a storage apparatus is disused | |
US10649890B2 (en) | Information processing system, storage control apparatus, storage control method, and storage control program | |
CN105245912B (zh) | 一种缓存视频数据及读取视频数据的方法及装置 | |
CN104090806B (zh) | 升级包、升级请求的处理方法及装置 | |
JP6263596B2 (ja) | 分散キャッシュメモリにおける適応分割用のシステム及び方法 | |
US20170255392A1 (en) | Storage control device, storage control method, and recording medium | |
US10073649B2 (en) | Storing metadata | |
EP3306477B1 (en) | Storage device and block storage method based on the storage device | |
CA2978927C (en) | Data check method and storage system | |
EP3153987A1 (en) | Duplicate data deletion method and device | |
CN107632791A (zh) | 一种存储空间的分配方法及系统 | |
EP2851810A1 (en) | Management of a memory | |
US10592148B2 (en) | Information processing system, storage control apparatus, storage control method, and storage control program for evaluating access performance to a storage medium | |
US20130297969A1 (en) | File management method and apparatus for hybrid storage system | |
US20190012083A1 (en) | System and method for managing a non-volatile storage resource as a shared resource in a distributed system | |
CN104461777B (zh) | 一种存储阵列中数据镜像方法及存储阵列 | |
CN109756566B (zh) | 基于区块链的数据存储方法、相关设备及存储介质 | |
EP2624141A1 (en) | Information processing device, memory management method, and memory management program | |
WO2019000423A1 (zh) | 一种数据存储方法及设备 | |
CN104917788A (zh) | 一种数据存储方法及装置 | |
US9342463B2 (en) | Management of destage tasks with large number of ranks | |
CN104679684A (zh) | 半导体器件及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |