一种基于弹性块存储的数据写、读方法及装置的制造方法

文档序号:9432224阅读:393来源:国知局
一种基于弹性块存储的数据写、读方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据存储领域,特别涉及一种基于弹性块存储的数据写、读方法及装置。
【背景技术】
[0002]弹性块存储是一种基于存储网络、容量可弹性扩展的、由云主机进行管理和使用的原始块存储卷设备。它独立于主机的生命周期而存在,可以被连接到任意运行中的主机,为主机提供持久化的块存储服务,并可随时解除连接挂载至其他主机,支持硬盘的克隆和快照,因此数据的安全性高,几乎不存在磁盘故障而出现数据丢失的情况,具有容量按需扩展、低成本、稳定可靠等优点。
[0003]目前,将弹性块存储中的数据写入到存储服务器中,存储服务器中存储有每段数据、以及每段数据的逻辑地址和物理地址,存在数据相同的数据段,即数据存在冗余,造成存储空间的浪费。

【发明内容】

[0004]本发明实施例的目的在于提供一种基于弹性块存储的数据写、读方法及装置,以去除冗余数据,避免存储空间的浪费。
[0005]为达到上述目的,本发明实施例公开了一种基于弹性块存储的数据写方法,预先创建至少一个虚拟块设备,所述虚拟块设备为弹性块存储,所述虚拟块设备中存储有待处理数据;所述方法包括:
[0006]从所述至少一个虚拟块设备中,获得待处理数据;
[0007]将所述待处理数据以第一预设值进行分段,并分别计算每段数据的哈希值;
[0008]对计算得到的哈希值对应的段数据去重,以使计算得到的每个哈希值对应的段数据唯一存在;
[0009]将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中,所述第一数据包括:元数据和段数据,其中,所述元数据包括:哈希值、该哈希值对应的数据段的逻辑地址和物理地址及其对应关系;并将去重后的剩余的每个哈希值,确定为该哈希值对应的数据段的索引;
[0010]当写入所述存储介质中的所述第一数据的数据量每达到第二预设值时,通知服务进程,以使所述服务进程将每达到所述第二预设值的数据量对应的所述存储介质中的所述第一数据写入到存储服务器中。
[0011]较佳的,所述存储介质可以为固态硬盘。
[0012]其中,所述通知服务进程,以使所述服务进程将每达到所述第二预设值的数据量对应的所述存储介质中的所述第一数据写入到存储服务器中,可以包括:
[0013]将所述存储介质中存储的、每达到所述第二预设值的数据量对应的所述第一数据对应的列表数据写入预设文件;
[0014]当预设文件中存在列表数据时,唤醒服务进程,以使服务进程将所述列表数据对应的数据写入到存储服务器,其中,所述预设文件中没有列表数据时,所述服务进程处于休眠状态。
[0015]较佳的,在所述从所述至少一个虚拟块设备中,获得待处理数据之前,还可以包括:
[0016]创建具有不同优先级的队列,其中,每个虚拟块设备对应一个队列;
[0017]所述将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中,可以包括:
[0018]将每个所述第一数据写入到所述预先设置的存储介质中对应的写请求,存储到获得相应的待处理数据对应的虚拟块设备对应的队列中;
[0019]根据队列优先级由高至低的顺序,依次将队列中存储的写请求对应的所述第一数据写入到预先设置的存储介质中。
[0020]较佳的,在所述从所述至少一个虚拟块设备中,获得待处理数据之前,还可以包括:
[0021]将预先创建的至少一个虚拟块设备,划分为M个虚拟块设备组,每个虚拟块设备组中包含不同的虚拟块设备;
[0022]在所述将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中之前,还可以包括:
[0023]针对每个虚拟块设备组,对该虚拟块设备组中的去重后的剩余的哈希值对应的段数据再次进行去重,以使每个虚拟块设备组中的每个哈希值对应的段数据唯一存在。
[0024]较佳的,所述将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中,和/或,所述服务进程将每达到所述第二预设值的数据量对应的所述存储介质中的所述第一数据写入到存储服务器中的写入方式,可以包括:
[0025]基于内容存储的写入方式。
[0026]本发明实施例还公开了一种基于弹性块存储的数据读方法,包括:
[0027]接收用户针对不同虚拟块设备的数据读请求;
[0028]针对每个数据读请求,以数据段的哈希值为索引,在存储介质中查找与该数据读请求对应的物理地址;
[0029]如果查找到,则将查找到的物理地址对应的段数据,反馈给用户;
[0030]如果没有查找到,则以数据段的哈希值为索引,在存储服务器中查找与该数据读请求对应的物理地址,如果查找到,则将查找到的物理地址对应的段数据,反馈给用户。
[0031]其中,所述数据读请求中可以包括待读取数据的逻辑地址;
[0032]所述以数据段的哈希值为索引,在存储介质中查找与该数据读请求对应的物理地址,可以包括:
[0033]根据所述数据读请求中包括的待读取数据的逻辑地址,确定所述数据读请求对应的数据段的哈希值;
[0034]以所确定的数据段的哈希值为索引在存储介质中查找与该数据读请求对应的物理地址。
[0035]本发明实施例还公开了一种基于弹性块存储的数据写装置,预先创建至少一个虚拟块设备,所述虚拟块设备为弹性块存储,所述虚拟块设备中存储有待处理数据;所述装置包括:获得模块、分段模块、第一去重模块、第一存储模块和第二存储模块,其中,
[0036]所述获得模块,用于从所述至少一个虚拟块设备中,获得待处理数据;
[0037]所述分段模块,用于将所述获得模块获得的待处理数据以第一预设值进行分段,并分别计算每段数据的哈希值;
[0038]所述第一去重模块,用于对所述分段模块计算得到的哈希值对应的段数据去重,以使计算得到的每个哈希值对应的段数据唯一存在;
[0039]所述第一存储模块,用于将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中,所述第一数据包括:元数据和段数据,其中,所述元数据包括:哈希值、该哈希值对应的数据段的逻辑地址和物理地址及其对应关系;并将去重后的剩余的每个哈希值,确定为该哈希值对应的数据段的索引;
[0040]所述第二存储模块,用于当写入所述存储介质中的所述第一数据的数据量每达到第二预设值时,通知服务进程,以使所述服务进程将每达到所述第二预设值的数据量对应的所述存储介质中的所述第一数据写入到存储服务器中。
[0041]较佳的,所述存储介质可以为固态硬盘。
[0042]较佳的,所述第二存储模块可以包括:写入子模块和唤醒子模块,其中,
[0043]所述写入子模块,用于将所述存储介质中存储的、每达到所述第二预设值的数据量对应的所述第一数据对应的列表数据写入预设文件;
[0044]所述唤醒子模块,用于当预设文件中存在列表数据时,唤醒服务进程,以使服务进程将所述列表数据对应的数据写入到存储服务器,其中,所述预设文件中没有列表数据时,所述服务进程处于休眠状态。
[0045]较佳的,所述基于弹性块存储的数据写装置,还可以包括:
[0046]创建队列模块,用于创建具有不同优先级的队列,其中,每个虚拟块设备对应一个队列;
[0047]所述第一存储模块可以包括:第一存储子模块和第二存储子模块,其中,
[0048]所述第一存储子模块,用于将每个所述第一数据写入到所述预先设置的存储介质中对应的写请求,存储到获得相应的待处理数据对应的虚拟块设备对应的所述创建队列模块创建的队列中;
[0049]所述第二存储子模块,用于根据队列优先级由高至低的顺序,依次将所述创建队列模块创建的队列中存储的写请求对应的所述第一数据写入到预先设置的存储介质中。
[0050]较佳的,所述基于弹性块存储的数据写装置,还可以包括:分组模块和第二去重模块,其中,
[0051]所述分组模块,用于将预先创建的至少一个虚拟块设备,划分为M个虚拟块设备组,每个虚拟块设备组中包含不同的虚拟块
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1