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

文档序号:9432224阅读:来源:国知局
设备;
[0052]所述第二去重模块,用于针对每个虚拟块设备组,对该虚拟块设备组中的去重后的剩余的哈希值对应的段数据再次进行去重,以使每个虚拟块设备组中的每个哈希值对应的段数据唯一存在。
[0053]较佳的,所述将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中,和/或,所述服务进程将每达到所述第二预设值的数据量对应的所述存储介质中的所述第一数据写入到存储服务器中的写入方式,可以包括:
[0054]基于内容存储的写入方式。
[0055]本发明实施例还公开了一种基于弹性块存储的数据读装置,包括:接收模块、第一查找模块、第一反馈模块、第二查找模块和第二反馈模块,其中:
[0056]所述接收模块,用于接收用户针对不同虚拟块设备的数据读请求;
[0057]所述第一查找模块,用于针对所述接收模块接收到的每个数据读请求,以数据段的哈希值为索引,在存储介质中查找与该数据读请求对应的物理地址;
[0058]所述第一反馈模块,用于在所述第一查找模块在存储介质中查找到与该数据读请求对应的物理地址的情况下,将查找到的物理地址对应的段数据,反馈给用户;
[0059]所述第二查找模块,用于在所述第一查找模块在存储介质中没有查找到与该数据读请求对应的物理地址的情况下,以数据段的哈希值为索引,在存储服务器中查找与该数据读请求对应的物理地址;
[0060]所述第二反馈模块,用于在所述第二查找模块在存储服务器中查找到与该数据读请求对应的物理地址的情况下,将查找到的物理地址对应的段数据,反馈给用户。
[0061]其中,所述数据读请求中可以包括待读取数据的逻辑地址;
[0062]所述第一查找模块,具体可以用于:
[0063]针对所述接收模块接收到的每个数据读请求,根据所述数据读请求中包括的待读取数据的逻辑地址,确定所述数据读请求对应的数据段的哈希值;以所确定的数据段的哈希值为索引在存储介质中查找与该数据读请求对应的物理地址。
[0064]由上述的技术方案可见,本发明实施例通过将虚拟块设备中的数据分段,计算各数据段的哈希值,根据哈希值将数据进行去重,然后把去重后的数据及数据对应的哈希值、逻辑地址和物理地址进行存储,通过哈希值访问数据,实现了去除冗余数据,节省了存储空间的占用,同时也提高了数据的查找效率。
[0065]当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
【附图说明】
[0066]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0067]图1为本发明实施例提供的基于弹性块存储的数据写方法的第一种流程示意图;
[0068]图2为本发明实施例提供的基于弹性块存储的数据写方法的第二种流程示意图;
[0069]图3为本发明实施例提供的基于弹性块存储的数据写方法的第三种流程示意图;
[0070]图4为本发明实施例提供的一种基于弹性块存储的数据读方法的流程示意图;
[0071]图5为本发明实施例提供的基于弹性块存储的数据写装置的第一种结构示意图;
[0072]图6为本发明实施例提供的基于弹性块存储的数据写装置的第二种结构示意图;
[0073]图7为本发明实施例提供的基于弹性块存储的数据写装置的第三种结构示意图;
[0074]图8为本发明实施例提供的一种基于弹性块存储的数据读装置的结构示意图。
【具体实施方式】
[0075]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0076]为了解决现有技术问题,本发明实施例提供了一种基于弹性块存储的数据写、读方法及装置。下面首先对本发明实施例提供的基于弹性块存储的数据写方法进行详细说明。
[0077]预先创建至少一个虚拟块设备,所述虚拟块设备为弹性块存储,所述虚拟块设备中存储有待处理数据。具体的,预先创建虚拟块设备为现有技术,本发明实施例对此不再进行赘述。
[0078]图1为本发明实施例提供的基于弹性块存储的数据写方法的第一种流程示意图,可以包括:
[0079]步骤101:从至少一个虚拟块设备中,获得待处理数据。
[0080]其中,虚拟块设备为上述预先创建的虚拟块设备。
[0081]步骤102:将待处理数据以第一预设值进行分段,并分别计算每段数据的哈希值。
[0082]步骤103:对计算得到的哈希值对应的段数据去重。
[0083]具体地,假设上述待处理数据为TXT格式的、大小为430K的数据,可以将上述TXT格式的430K的待处理数据以4K为单位进行分段,分成108段,并计算分段后的各个数据段的哈希值,得到108个哈希值。这108个哈希值中可能有相同的,删除哈希值相同的段数据,以使相同的哈希值对应的段数据唯一存在,从而节省存储空间的占用。
[0084]步骤104:将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中;并将去重后的剩余的每个哈希值,确定为该哈希值对应的数据段的索引。
[0085]其中,第一数据包括:元数据和段数据,其中,元数据包括:哈希值、该哈希值对应的数据段的逻辑地址和物理地址及其对应关系。
[0086]在实际应用中,上述的存储介质可以为固态硬盘(Solid State Drives,简称为SSD),固态硬盘读写速度非常快,通过将固态硬盘作为缓存,极大的提升了基于弹性块存储的读写性能。上述的固态硬盘可以为基于闪存的固态硬盘或基于DRAM的固态硬盘。
[0087]步骤105:当写入存储介质中的第一数据的数据量每达到第二预设值时,通知服务进程,以使服务进程将每达到第二预设值的数据量对应的存储介质中的第一数据写入到存储服务器中。
[0088]具体地,第二预设值可以为4M,每当存储介质中的数据量达到4M时,就通知服务进程,将存储介质中存储的第一数据写入到存储服务器中。
[0089]上述存储介质存储空间有限,只是作为缓存。可以定期清理存储介质中存储的数据,也可以当存储介质的空间被占满时,清理掉最初的部分数据。上述存储服务器可以认为存储空间非常大,最终将所有第一数据都写入存储服务器中。
[0090]具体地,在实际应用中,通知服务进程,以使服务进程将每达到第二预设值的数据量对应的存储介质中的第一数据写入到存储服务器中,可以将存储介质中存储的、每达到第二预设值的数据量对应的第一数据对应的列表数据写入预设文件;当预设文件中存在列表数据时,唤醒服务进程,以使服务进程将列表数据对应的数据写入到存储服务器,其中,预设文件中没有列表数据时,服务进程处于休眠状态。在这种情况下,预设文件中没有列表数据时,服务进程处于休眠状态不占用系统资源,仅在预设文件中存在列表数据时,服务进程才被唤醒,对数据进行处理。
[0091]在实际应用中,预设文件可以为socket文件。
[0092]每当存储介质中的数据量达到4M时,就将存储介质中存储的、4M的数据量对应的第一数据对应的列表数据写入socket文件。当socket文件中存在列表数据时,服务进程被唤醒,服务进程将所述列表数据对应的数据写入到存储服务器。其中,所述预设文件中没有列表数据时,所述服务进程处于休眠状态。相当于socket文件给服务进程发了一个任务清单,服务进程根据这个清单将存储介质中中数据写入到存储服务器中。
[0093]当然服务进程也可以一直处于工作状态,实时地将存储介质中中数据写入到存储服务器中。
[0094]在实际应用中,将去重后的剩余的每个哈希值对应的第一数据写入到预先设置的存储介质中,和/或,服务进程将每达到所述第二预设值的数据量对应的存储介质中的第一数据写入到存储服务
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1