首页 / 专利库 / 资料储存系统 / 根哈希 / 用于在存储系统上存取文件的方法和系统

用于在存储系统上存取文件的方法和系统

阅读:947发布:2020-05-12

专利汇可以提供用于在存储系统上存取文件的方法和系统专利检索,专利查询,专利分析的服务。并且本公开提供一种用于在存储系统上存取文件的方法和系统。本方法包括建构哈希 存储器 表,其中哈希存储器表包含分别对应于多个索引哈希码的多个哈希存储桶,每一哈希存储桶具有指向至少一个存储盒的 指针 ,每一存储盒具有物理地址栏位和哈希码栏位。物理地址栏位分别记录存储文件的物理地址,且哈希码栏位分别记录对应于文件的验证哈希码。其中索引哈希码是通过将文件的金钥输入到索引哈希函数来产生的,且验证哈希码是通过将文件的金钥输入到验证哈希函数来产生的。本方法包括还包括使用以存储桶为 基础 的替代策略将哈希存储器表载入到 缓冲器 中,使得文件能够根据哈希存储器表来进行存取。,下面是用于在存储系统上存取文件的方法和系统专利的具体信息内容。

1.一种用于在具有缓冲器和磁盘的存储系统上存取文件的方法,所述方法包括:
建构一哈希存储器表,其中所述哈希存储器表包括多个哈希存储桶,所述多个哈希存储桶分别对应于多个索引哈希码,每一所述哈希存储桶具有一指针,每一所述指针指向至少一个存储盒,每一所述存储盒具有一物理地址栏位和一哈希码栏位,所述物理地址栏位分别记录存储所述文件的物理地址,所述哈希码栏位分别记录对应于所述文件的验证哈希码,所述索引哈希码是通过将所述文件的金钥输入到一索引哈希函数来产生,且所述验证哈希码是通过将所述文件的所述金钥输入到一验证哈希函数来产生;
使用一以存储桶为基础的替代策略将所述哈希存储器表载入到所述缓冲器中;以及根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件。
2.如权利要求1所述的方法,其中所述根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件的步骤包括:
将一新文件写入到所述磁盘中且从所述磁盘的一文件系统获得存储所述新文件的一物理地址;
将一新哈希存储桶插入在所述哈希存储器表中;
通过将所述新文件的一金钥输入到所述索引哈希函数中来产生对应于所述新哈希存储桶的一索引哈希码;
在所述新哈希存储桶中加入对应于所述新文件的一存储盒且设置所述新哈希存储桶的一指针,其中所述指针指向对应于所述新文件的所述存储盒;
通过将所述新文件的所述金钥输入到所述验证哈希函数中来产生对应于所述新文件的一验证哈希码;
将存储所述新文件的物理地址记录到对应于所述新文件的所述存储盒的所述物理地址栏位中;以及
将对应于所述新文件的所述验证哈希码记录到对应于所述新文件的所述存储盒的所述哈希码栏位中。
3.如权利要求2所述的方法,其中所述根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件的步骤还包括:
在将所述新文件写入到所述磁盘中的同时,将所述新文件的逻辑文件名嵌入到存储所述新文件的所述物理地址中。
4.如权利要求2所述的方法,其中所述根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件的步骤还包括:
接收用于读取所述新文件的一指令;
通过将所述新文件的所述金钥输入到所述索引哈希函数中来产生一第一搜索哈希码;
通过将所述第一搜索哈希码与所述索引哈希码进行比较来从所述哈希存储桶中识别所述新哈希存储桶;
根据对应于所述第一搜索哈希码的所述新哈希存储桶的所述指针来读取至少一个搜索存储盒;
通过将所述新文件的所述金钥输入到所述验证哈希函数中来产生一第二搜索哈希码;
通过将所述第二搜索哈希码与所述至少一个搜索存储盒的至少一个哈希码栏位中所记录的至少一个验证哈希码进行比较来在所述至少一个搜索存储盒当中识别对应于所述新文件的所述存储盒;以及
根据对应于所述新文件的所述存储盒的所述物理地址栏位中所记录的所述物理地址来从所述磁盘读取所述新文件的内容。
5.如权利要求3所述的方法,其中所述根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件的步骤还包括:
接收用于读取所述新文件的一指令;
通过将所述新文件的所述金钥输入到所述索引哈希函数中来产生一第一搜索哈希码;
通过将所述第一搜索哈希码与所述索引哈希码进行比较来从所述哈希存储桶中识别所述新哈希存储桶;
根据对应于所述第一搜索哈希码的所述新哈希存储桶的所述指针来读取至少一个搜索存储盒;
通过将所述新文件的所述金钥输入到所述验证哈希函数中来产生第二搜索哈希码;
通过将所述第二搜索哈希码与所述至少一个搜索存储盒的至少一个哈希码栏位中所记录的至少一个验证哈希码进行比较且将所述新文件的所述逻辑文件名与嵌入到存储对应于至少一个搜索存储盒的至少一个文件的至少一个物理地址中的至少一个逻辑文件名进行比较来在所述至少一个搜索存储盒当中识别对应于所述新文件的所述存储盒;以及根据对应于所述新文件的所述存储盒的所述物理地址栏位中所记录的所述物理地址来从所述磁盘读取所述新文件的内容。
6.如权利要求2所述的方法,其中所述根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件的步骤还包括:
当所述磁盘的所述文件系统将所述新文件从存储所述新文件的所述物理地址移动到另一物理地址时,将所述另一物理地址更新到所述哈希存储器表中的对应于所述新文件的所述存储盒的所述物理地址栏位中。
7.如权利要求2所述的方法,其中所述根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件的步骤还包括:
当所述磁盘的所述文件系统将所述新文件从存储所述新文件的所述物理地址删除时,删除所述哈希存储器表中对应于所述新文件的所述存储盒。
8.如权利要求1所述的方法,还包括:
建构一元数据数据库;以及
将所述哈希存储器表中所记录的信息存储到所述元数据数据库中。
9.如权利要求8所述的方法,还包括:
将所述元数据数据库的一副本备份到备用服务器中;以及
根据所述备用服务器中所存储的所述元数据数据库的所述副本来恢复所述哈希存储器表。
10.一种用于在具有缓冲器和磁盘的存储系统上存取文件的方法,所述方法包括:
建构用于记录所述文件的一元数据的一哈希存储器表;
在将所述文件写入到所述磁盘中的同时,将所述文件的逻辑文件名嵌入到所述磁盘中的存储所述文件的一物理地址中;
将所述哈希存储器表载入到所述缓冲器中;以及
根据载入到所述缓冲器中的所述哈希存储器表和嵌入到所述磁盘的所述物理地址中的所述逻辑文件名来存取所述文件。
11.一种存储系统,包括:
微处理器
一缓冲器,耦接至所述微处理器;
一磁盘,耦接至所述微处理器;
一元数据管理单元,耦接至所述微处理器且用以建构一哈希存储器表,其中所述哈希存储器表包含多个哈希存储桶,所述多个哈希存储桶分别对应于多个索引哈希码,每一所述哈希存储桶具有指针,每一所述指针指向至少一个存储盒,每一所述存储盒具有一物理地址栏位和一哈希码栏位,所述物理地址栏位分别记录存储文件的物理地址,所述哈希码栏位分别记录对应于所述文件的验证哈希码,所述索引哈希码是通过将所述文件的金钥输入到一索引哈希函数来产生,且所述验证哈希码是通过将所述文件的所述金钥输入到一验证哈希函数来产生,
所述元数据管理单元还用以使用一以存储桶为基础的替代策略将所述哈希存储器表载入到所述缓冲器中且根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件。
12.如权利要求11所述的存储系统,其中所述元数据管理单元将一新文件写入到所述磁盘中且从所述磁盘的一文件系统中获得存储所述新文件的一物理地址,其中所述元数据管理单元通过将所述新文件的一金钥输入到所述索引哈希函数中来产生对应于一新哈希存储桶的索引哈希码且通过将所述新文件的所述金钥输入到所述验证哈希函数中来产生对应于所述新文件的一验证哈希码,
其中所述元数据管理单元将一新哈希存储桶插入在所述哈希存储器表中,将对应于所述新文件的一存储盒加入在所述新哈希存储桶中,且设定所述新哈希存储桶的一指针,其中所述指针指向对应于所述新文件的所述存储盒,
其中所述元数据管理单元将存储所述新文件的所述物理地址记录到对应于所述新文件的所述存储盒的物理地址栏位中且将对应于所述新文件的所述验证哈希码记录到对应于所述新文件的所述存储盒的所述哈希码栏位中。
13.如权利要求12所述的存储系统,其中所述元数据管理单元还用以在将所述新文件写入到所述磁盘中的同时,将所述新文件的逻辑文件名嵌入到存储所述新文件的所述物理地址中。
14.如权利要求12所述的存储系统,其中所述元数据管理单元还用以接收用于读取所述新文件的一指令,通过将所述新文件的所述金钥输入到所述索引哈希函数中来产生一第一搜索哈希码,通过将所述第一搜索哈希码与所述索引哈希码进行比较来从所述哈希存储桶中识别所述新哈希存储桶;根据对应于所述第一搜索哈希码的所述新哈希存储桶的所述指针来读取至少一个搜索存储盒;以及通过将所述新文件的所述金钥输入到所述验证哈希函数中来产生一第二搜索哈希码,
其中所述元数据管理单元还用以通过将所述第二搜索哈希码与所述至少一个搜索存储盒的至少一个哈希码栏位中所记录的至少一个验证哈希码进行比较来在所述至少一个搜索存储盒当中识别对应于所述新文件的所述存储盒,且根据对应于所述新文件的所述存储盒的所述物理地址栏位中所记录的所述物理地址来从所述磁盘读取所述新文件的内容。
15.如权利要求13所述的存储系统,其中所述元数据管理单元还用以接收用于读取所述新文件的一指令,通过将所述新文件的所述金钥输入到所述索引哈希函数中来产生一第一搜索哈希码,通过将所述第一搜索哈希码与所述索引哈希码进行比较来从所述哈希存储桶中识别所述新哈希存储桶;根据对应于所述第一搜索哈希码的所述新哈希存储桶的所述指针来读取至少一个搜索存储盒;以及通过将所述新文件的所述金钥输入到所述验证哈希函数中来产生一第二搜索哈希码,
其中所述元数据管理单元还用以通过将所述第二搜索哈希码与所述至少一个搜索存储盒的至少一个哈希码栏位中所记录的至少一个验证哈希码进行比较及将所述新文件的所述逻辑文件名与嵌入到存储对应于至少一个搜索存储盒的至少一个文件的至少一个物理地址中的至少一个逻辑文件名进行比较来在所述至少一个搜索存储盒当中识别对应于所述新文件的所述存储盒,且根据对应于所述新文件的所述存储盒的所述物理地址栏位中所记录的所述物理地址来从所述磁盘读取所述新文件的内容。
16.如权利要求12所述的存储系统,其中当所述磁盘的所述文件系统将所述新文件从存储所述新文件的所述物理地址移动到另一物理地址时,所述元数据管理单元还用以将所述另一物理地址更新到所述哈希存储器表中的对应于所述新文件的所述存储盒的所述物理地址栏位中。
17.如权利要求12所述的存储系统,其中当所述磁盘的所述文件系统将所述新文件从存储所述新文件的所述物理地址删除时,所述元数据管理单元还用以删除所述哈希存储器表中对应于所述新文件的所述存储盒。
18.如权利要求11所述的存储系统,其中所述元数据管理单元还包括一元数据数据库且将所述哈希存储器表中所记录的信息存储到所述元数据数据库中。
19.如权利要求18所述的存储系统,还包括:
一备用服务器,
其中所述元数据管理单元还用以将所述元数据数据库的一副本备份到所述备用服务器中,
其中所述元数据管理单元还用以根据所述备用服务器中所存储的所述元数据数据库的所述副本来恢复所述哈希存储器表。
20.一种存储系统,包括:
一微处理器;
一缓冲器,耦接至所述微处理器;
一磁盘,耦接至所述微处理器;以及
一元数据管理单元,耦接至所述微处理器且用以建构用于记录所述文件的一元数据的一哈希存储器表,
其中所述元数据管理单元还用以在将所述文件写入到所述磁盘中的同时,将所述文件的逻辑文件名嵌入到所述磁盘中的存储所述文件的物理地址中,
其中所述元数据管理单元还用以使用一以存储桶为基础的替代策略将所述哈希存储器表载入到所述缓冲器中,
其中所述元数据管理单元还用以根据载入到所述缓冲器中的所述哈希存储器表和嵌入到所述磁盘的所述物理地址中的所述逻辑文件名来存取所述文件。

说明书全文

用于在存储系统上存取文件的方法和系统

技术领域

[0001] 本公开涉及一种用于在存储系统上存取文件的方法和系统。

背景技术

[0002] 元数据(字面上称为“关于数据的数据”)已被广泛用于组织信息。元数据的建立和管理主要是从事编目录、分类和编索引的信息专业人员的职责。随着信息已变得越来越计算机化和数字化,元数据已包含在数据管理系统和管理功能的管理和互通性中。举例来说,文件的元数据指定描述文件的一系列属性,例如按字节计的大小、路径、最后修改时间、拥有者、可存取性等等。
[0003] 当今,例如端存储服务(cloud storage service)等许多网络服务需要在数据库系统对文件执行各种操作时管理并维护元数据。由于大多数数据库系统未在操作随机性方面得到优化,因此具有密集低空间和时间局部性要求(intensive low spatial and temporal locality request)的操作(例如在云端系统(cloud system)上读取、写入、删除或更新文件)限制了磁盘调度灵活性且导致缓冲存储器(buffer memory)的低效使用。随着元数据的数目不断增加,输入/输出(input/output,I/O)速度相应地减小且整体性能进而受到显着限制。一般的元数据存取方法在面对具有低存取局部性的更新密集型输入工作负荷时受到严重挑战。因此,如何减少磁盘I/O操作以云端存储系统或其它网络服务的效能是此领域技术人员所致的目标。发明内容
[0004] 本公开实施例提供一种用于在具有缓冲器和磁盘的存储系统上存取文件的方法。所述方法包括建构哈希存储器表,其中所述哈希存储器表具有分别对应于多个索引哈希码的多个哈希存储桶,每一哈希存储桶具有指向至少一个存储盒的指针,每一存储盒具有物理地址栏位和哈希码栏位,所述物理地址栏位分别记录存储所述文件的物理地址,且所述哈希码栏位分别记录对应于所述文件的验证哈希码。所述索引哈希码是通过将所述文件的金钥输入到索引哈希函数来产生的,且所述验证哈希码是通过将所述文件的所述金钥输入到验证哈希函数来产生的。所述方法还包含使用以存储桶为基础的替代策略将所述哈希存储器表载入到所述缓冲器中,且根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件。
[0005] 本公开实施例亦提供另一种用于在具有缓冲器和磁盘的存储系统上存取文件的方法。所述方法包括:建构用于记录所述文件的元数据的哈希存储器表;在将所述文件写入到所述磁盘中的同时,将所述文件的逻辑文件名嵌入到所述磁盘中的存储所述文件的物理地址中;使用以存储桶为基础的替代策略将所述哈希存储器表载入到所述缓冲器中;以及根据载入到所述缓冲器中的所述哈希存储器表和嵌入到所述磁盘的物理地址中的所述逻辑文件名来存取所述文件。
[0006] 本公开实施例提供一种存储系统,其包括微处理器、缓冲器、磁盘和元数据管理单元。所述缓冲器和所述磁盘分别耦接至所述微处理器。所述元数据管理单元耦接至所述微处理器且用以建构哈希存储器表,所述哈希存储器表包含分别对应于多个索引哈希码的多个哈希存储桶。每一哈希存储桶具有指向至少一个存储盒的指针,每一存储盒具有物理地址栏位和哈希码栏位,物理地址栏位分别记录存储文件的物理地址,且所述哈希码栏位分别记录对应于所述文件的验证哈希码。所述索引哈希码是通过将所述文件的金钥输入到索引哈希函数来产生的,且所述验证哈希码是通过将所述文件的所述金钥输入到验证哈希函数来产生的。所述元数据管理单元还用以使用以存储桶为基础的替代策略将所述哈希存储器表载入到所述缓冲器中且根据载入到所述缓冲器中的所述哈希存储器表来存取所述文件。
[0007] 本公开实施例提供另一种存储系统,其包含微处理器、缓冲器、磁盘和元数据管理单元。所述缓冲器和所述磁盘分别耦接至所述微处理器。所述元数据管理单元耦接至所述微处理器且用以建构用于记录所述文件的元数据的哈希存储器表。所述元数据管理单元还用以在将所述文件写入到所述磁盘中的同时,将所述文件的逻辑文件名嵌入到所述磁盘中的存储所述文件的物理地址中。所述元数据管理单元还用以使用以存储桶为基础的替代策略将所述哈希存储器表载入到所述缓冲器中,且根据载入到所述缓冲器中的所述哈希存储器表和嵌入到所述磁盘的物理地址中的所述逻辑文件名来存取所述文件。
[0008] 为让本公开的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

附图说明

[0009] 图1为根据本公开一实施例的存储系统的方图。
[0010] 图2为根据图1实施例中的哈希存储器表(hash memory table)的示意性方块图。
[0011] 图3为说明根据本公开一实施例的用于存取磁盘中的文件的方法的流程图
[0012] 图4为说明根据本公开一实施例的用于当将新文件写入到磁盘中时更新哈希存储器表的方法的流程图。
[0013] 图5为说明根据本公开一实施例的用于当执行文件读取请求时更新哈希存储器表的方法的流程图。
[0014] 图6为说明根据本公开一实施例的用于当从磁盘删除文件时更新哈希存储器表的方法的流程图。
[0015] 图7为说明根据本公开一实施例的用于当将文件移动到另一物理地址时更新哈希存储器表的方法的流程图。
[0016] 图8为说明根据本公开一实施例的用于当将当机恢复请求(crash-recovery request)发送到元数据管理单元时恢复哈希存储器表的方法的流程图。
[0017] 【主要元件符号说明】
[0018] 50:用户端计算机
[0019] 100:存储系统
[0020] 105:主要服务器
[0021] 110:微处理器
[0022] 120:缓冲器
[0023] 130:磁盘
[0024] 132:文件系统
[0025] 140:元数据管理单元
[0026] 142:哈希存储器表
[0027] 144:元数据数据库
[0028] 146:控制模
[0029] 150:备用服务器
[0030] 152:副本
[0031] 201:金钥
[0032] 202:索引哈希函数
[0033] 203:第一搜索哈希码
[0034] 204:验证哈希函数
[0035] 205:第二搜索哈希码
[0036] 210:哈希存储桶
[0037] 211:索引哈希码
[0038] 212:存储盒数目
[0039] 213:指针
[0040] 220:存储盒
[0041] 221:物理地址栏位
[0042] 222:哈希码栏位
[0043] 230:阵列
[0044] S301、S302、S303:存取磁盘中的文件的步骤
[0045] S401、S402、S403、S404、S405、S406、S407、S408、S409、S410:当将新文件写入到磁盘中时更新哈希存储器表的步骤
[0046] S510、S502、S503、S504、S505、S506、S507、S508、S509、S510、S511、S512:当执行文件读取请求时更新哈希存储器表的步骤
[0047] S601、S602、S603、S604、S605、S606、S607、S608、S609、S610、S611、S612、S613、S614、S615、S616:当从磁盘删除文件时更新哈希存储器表的步骤
[0048] S701、S702、S703、S704、S705、S706、S707、S708、S709、S710、S711、S712、S713:当将文件更新到另一物理地址时更新哈希存储器表的步骤
[0049] S801、S802、S803、S804、S805、S806:当向元数据管理单元发送当机恢复请求时恢复哈希存储器表的步骤

具体实施方式

[0050] 为让本公开的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。范例实施例范例实施例在任何可能之处,将相同的参考标号用于图式和描述中来指代相同或相似的部分。
[0051] 图1为根据本公开一实施例的存储系统的方块图。
[0052] 请参照图1,存储系统100包含主要服务器(main server)105和备用服务器(backup serer)150。存储系统100可被实作为云端系统的一部分,但本公开并不限于此。客户可通过例如键盘等输入装置或例如鼠标轨迹球或触摸垫等指向装置将命令输入到用户端计算机50中,进而将文件存储到存储系统100中或从存储系统100中读取文件。
[0053] 主要服务器105包括微处理器110、缓冲器120、磁盘130和元数据管理单元140。缓冲器120、磁盘130和元数据管理单元140分别耦接至微处理器110,且备用服务器150耦接至元数据管理单元140。
[0054] 微处理器110可为专用或专的微处理器,其用以通过执行机器可读软件码语言来执行特定任务,其中所述机器可读软件码语言定义与用以通过与存储系统100的其它元件通信来实行例如文件读取、文件写入、文件删除、文件更新或元数据数据库恢复等功能操作的操作有关的功能。
[0055] 缓冲器120用以暂存频繁存储和检索的数据。例如,缓冲器120可为随机存取存储器(random access memory,RAM)、静态随机存取存储器(static random access memory,SRAM)或动态随机存取存储器(dynamic random access memory,DRAM)等较快速的存储器,其用以存储暂时数据以获得快速得多的存取时间。
[0056] 磁盘130用于存储和检索文件。举例来说,磁盘130可为硬盘驱动器(hard disk drive,HDD)或固态驱动器(solid state drive,SSD)。磁盘130包括用以存储和组织计算机文件及其所含有的数据的抽象物(abstraction)的文件系统132,,且用以将多个文件组织为单个字节流、阵列、连结清单或其它数据结构。
[0057] 元数据管理单元140用以将存储在磁盘130中的文件的所有元数据记录于缓冲器120中且根据所记录的元数据存取所述文件。举例来说,元数据管理单元140包含哈希存储器表142、元数据数据库144和控制模块146。在范例实施例中,控制模块146由多个模块组成且用以建构或维护哈希存储器表142以用于记录文件的元数据,且还将哈希存储器表142载入到缓冲器120中以及将哈希存储器表142中所记录的信息存储到元数据数据库
144中。在另一范例实施例中,元数据管理单元140(或控制模块146)还用以将元数据数据库的副本152备份到备用服务器150中。
[0058] 哈希技术(hashing technique)广泛用于计算机硬件和软件系统中,例如,其适于允许元数据等大量元素的动态成长和缩小,因此仅对所存储元素的数目有极少的限制。举例来说,对应于一个文件的元数据的大小可高达256字节,其中元数据可含有文件的用户名、完整路径和文件名。如果在存储系统100上存在10亿个文件,则所有元数据将需要多达256GB存储空间来存储且其可能致使存储器不足。哈希是涉及从金钥(key)计算哈希码(hash code)且使用哈希码来在表中查找匹配。计算哈希码的函数被称为哈希函数(hash function)并且非常适合于在元数据存储和检索中加速查表或数据比对工作且因此在文件存储和检索中加速工作。哈希存储器表实施方案的效率取决于所使用的哈希函数。
[0059] 图2为根据本公开图1实施例中的哈希存储器表142的示意性方块图。
[0060] 请参照图2,哈希存储器表142包括多个哈希存储桶(hash bucket)210。每一个哈希存储桶210包括多则信息,每一信息是由索引哈希码(index hash code)211、存储盒数目212和指针(pointer)213组成。
[0061] 索引哈希码211为用于在磁盘130中识别文件以管理文件的信息。例如,索引哈希码211为4个字节。指针213指向至少一个存储盒220,其中同一指针所参考的存储盒220形成阵列230。例如,每一指针213为8个字节。存储盒数目212记录对应阵列230内的存储盒220的数目。
[0062] 每一存储盒220包括物理地址栏位(physical address field)221和哈希码栏位(hash code field)222。每一物理地址栏位221分别记录存储文件的物理地址。物理地址栏位221中的物理地址可为索引节编号(inode number),其包含指向其中存储所述文件的块的指针。此外,物理地址还可为以二进位数字字或十六进位数字的形式表示的块编号。例如,每一物理地址栏位221为6个字节。哈希码栏位222分别记录对应于所述文件的验证哈希码(verification hash code)。例如,哈希码栏位222为4个字节。此外,每一还可包括例如最近修改日期、版本、存取权、目录旗标等其它信息。
[0063] 索引哈希码211和哈希码栏位222中的验证哈希码是通过使用哈希函数来计算。在本范例实施例中,索引哈希码211和记录在哈希码栏位222中的验证哈希码是通过将金钥201分别输入到索引哈希函数202和验证哈希函数204中来产生,其中金钥201是对应于欲存储到磁盘130中的文件。举例来说,每一金钥可含有对应于文件的逻辑文件名的文字串。当进行文件存取操作时,对应于欲存取的文件的金钥201会被输入至索引哈希函数
202和验证哈希函数204以分别产生第一搜索哈希码(search hash code)203和第二搜索哈希码205。接着分别将第一搜索哈希码203和第二搜索哈希码205与索引哈希码211和哈希码栏位222中所记录的验证哈希码进行比较以进行文件识别。
[0064] 此外,索引哈希函数202和验证哈希函数204为不同的哈希函数,这可减小在产生哈希码时发生碰撞(collosion)的机率。具体来说,当实作内容可定址存储的系统含有两个具有不同内容但具有相同哈希码的文件时会发生哈希碰撞。哈希存储器表的原理是将可能无限大的元素集合分割为有限数目的哈希码。不同金钥的哈希码的相依性在较佳的情况下应为非明显。在使用良好的哈希函数下,金钥中的所有位会影响所产生的哈希码。例如,索引哈希函数202为Murmur3哈希函数,其能够有效地产生32位哈希值且实现具有最小重复频率的较好分布。例如,验证哈希函数204可为FNV1A哈希函数,其以32、64、128、256、512和1024位格式来呈现且易于实施。可理解的是,当全部存储桶的数目为10亿时,发生四次以上碰撞的机率小于0.30%。虽然与全部存储桶的大小相比所述机率相对较低,但稍后将解释范例实施例如何解决此问题。
[0065] 此外,需注意的是,当将额外存储盒插入到哈希存储器表中时,其可能导致整个存储器耗尽。在本范例实施例中,缓冲器会使用以存储桶为基础的替代策略(bucket-based replacement policy)来选择最少存取的存储桶中的至少一个来收回,直到缓冲器的存储器足以用于所述额外存储盒为止。所述替代策略为以存储桶为基础,且可不为以存储盒为基础,由此保证用于比较第二搜索哈希码的正确性。例如,此程序还可在存储器使用率大于(例如)90%时进行。
[0066] 图3为说明根据本公开一实施例的用于存取磁盘中的文件的方法的流程图。
[0067] 请参照图3,在本范例实施例中,元数据管理单元140(或控制模块146)会建构哈希存储器表142(步骤S301)。接着,元数据管理单元140(或控制模块146)将哈希存储器表142载入到缓冲器120中(步骤S302)。并且,元数据管理单元140(或控制模块146)会根据载入在缓冲器120中的哈希存储器表142存取所请求的文件(步骤S303)。具体地说,当接受文件写入请求、文件更新请求、文件删除请求或文件更新请求时,元数据管理单元140(或控制模块146)会使用以存储桶为基础的替代策略维护载入到缓冲器120中的哈希存储器表142,使得可用较少磁盘I/O操作来存取磁盘130中所存储的文件。
[0068] 图4为说明根据本公开一实施例的用于当将新文件写入到磁盘中时更新哈希存储器表的方法的流程图。
[0069] 请参照图4,在此范例实施例中,从用户端计算机50将新文件写入到磁盘130中(步骤S401)。如前所述,当全部存储桶的数目为10亿时,发生四次以上碰撞的机率小于0.30%。为了解决此问题,在一范例实施例中,当用户端计算机50写入或上载文件时,将新文件的金钥(即,逻辑地址)写入在物理地址的第一区段中,使得如果有一个以上文件在哈希码匹配程序之后被识别,那么第一区段可确认所搜索的文件是否确实为所匹配的文件。
因此,新文件的物理地址会从磁盘130的文件系统132被获取(步骤S402)。新文件的金钥
201会被嵌入到存储新文件所在的物理地址中(步骤S403)。接下来,索引哈希函数202会被输入新文件的金钥201以产生对应于新文件的索引哈希码211(步骤S404)。接着,对应于新文件的新产生的索引哈希码211是否已经存在于哈希存储器表142中会被确认(步骤S405)。
[0070] 如果对应于新文件的新产生的索引哈希码211已经存在于哈希存储器表142中,则具有物理地址栏位221和哈希码栏位222的新存储盒220会被加入至指针213所指向的阵列230,且对应哈希存储桶210的存储盒数目212会被加一(步骤S406)。如果对应于新文件的新产生的索引哈希码211并不存在于哈希存储器表142中,则新哈希存储桶210会被插入到哈希存储器表142中(步骤S407)。对应于新文件的存储盒220会被加入并通过哈希存储桶210的新设置的指针213来指向所加入的存储盒220,同时对应于新文件的存储盒数目212会被记录为一(步骤S408)。验证哈希函数204会被输入新文件的金钥201以产生对应于新文件的验证哈希码(步骤S409)。存储新文件的物理地址和对应于新文件的验证哈希码会分别被记录到对应于新文件的存储盒220的物理地址栏位221和哈希码栏位222中(步骤S410),由此完成哈希存储器表142的更新。
[0071] 图5为说明根据本公开一实施例的用于当执行文件读取请求时更新哈希存储器表的方法的流程图。
[0072] 请参照图5,在此范例实施例中,当由用户端计算机50选择欲读取的特定文件(步骤S501)时,对应于所述特定文件的金钥201会被产生(步骤S502)。之后,对应于所述特定文件的金钥201会被输入至索引哈希函数202以产生对应于特定文件的第一搜索哈希码203(步骤S503)。然后,对应于特定文件的第一搜索哈希码203会与每一哈希存储桶210中中的索引哈希码211进行比较。接着,具有相同于对应于特定文件的第一搜索哈希码203的索引哈希码211的哈希存储桶210会被识别(步骤S504),其中所识别的哈希存储桶210会包括指向阵列230的指针213。接下来,对应于特定文件的金钥201会被输入至验证哈希函数204以产生对应于特定文件的第二搜索哈希码205(步骤S505)。接着,从第一存储盒开始以反复运算型式将第二搜索哈希码205会与由指针213指向的阵列230内的记录在每一存储盒220的哈希码栏位222中的验证哈希码进行比较(步骤S506)。接着,判断是否找到至少一个匹配(步骤S507)。如果没有找到任何匹配时,则向用户端计算机50发出错误异常(步骤S508)。如果找到至少一个匹配时,则判断是否正好找到一个匹配(步骤S509)。如果正好找到一个匹配时,则立即通过指向对应于同一存储盒220内的验证哈希码的物理地址栏位221中的物理地址来识别所匹配的文件的实际位置(步骤S510)。如果找到多个匹配时,则将金钥201与嵌入在所匹配存储盒220内的物理地址中的逻辑文件名进行比较,而无须开启所有所识别的文件来进行验证(步骤S511)。最后,可通过使用例如Linux系统上的Debugfs等指令来读取文件(S512)。
[0073] 图6为说明根据本公开一实施例的用于当从磁盘删除文件时更新哈希存储器表的方法的流程图。
[0074] 参看图6,在本范例实施例中,当由用户端计算机50选择欲删除的特定文件(步骤S601)时,产生对应于所述特定文件的金钥201(步骤S602)。接下来,在步骤S603到步骤S611中识别对应于所述特定文件的存储盒220,其中步骤S603到S611可参考图5中的步骤S503到S511,且下文中将不再详细解释。在识别对应于特定文件的存储盒220之后,特定文件会从磁盘130中被删除(步骤S612),并且对应于特定文件的存储盒220会被删除(步骤S613)。接着,判断对应哈希存储桶210中的存储盒数目212是否为一(步骤S614)。如果对应哈希存储桶210中的存储盒数目212为一时,则哈希存储桶210会被相应地删除(步骤S615)。如果对应哈希存储桶210中的存储盒数目212大于一时,则存储盒数目212会被减去一(步骤S616),由此完成哈希存储器表142的更新。
[0075] 图7为说明根据本公开一实施例的用于当将文件更新到另一物理地址时更新哈希存储器表的方法的流程图。
[0076] 请参照图7,在此范例实施例中,当由用户端计算机50选择欲更新的特定文件(步骤S701)时,对应于特定文件的金钥201会被产生(步骤S702)。接下来,在步骤S703到步骤S711中识别对应于特定文件的存储盒220,其中步骤S703到S711可参考图5中的步骤S503到S511,且下文中将不再详细解释。在识别对应于特定文件的存储盒220之后,特定文件会从物理地址221中被更新到另一物理地址221(步骤S712)。接着,在对应于特定文件的存储盒220的物理地址栏位221中存储此特定文件的物理地址会被更新为此另一物理地址(步骤S713),由此完成哈希存储器表142的更新。值得注意的是,为了确保哈希存储器表142正常的运作,可周期性地对文件系统132进行磁盘重组,使得以紧邻方式存储文件。磁盘重组涉及将各区块移动到新位置。当因磁盘重组目的(尤其是清理自由空间且优化持久性)而移动某些块,元数据管理单元140(或控制模块146)需被告知物理地址的任何改变。
[0077] 请再次参照图1,应注意的是,包括元数据的哈希存储器表142会存储在元数据数据库144中,并且元数据数据库144会以载入在缓冲器120中的哈希存储器表142以及磁盘130的文件系统132来同步地更新。在范例实施例中,元数据数据库的副本152会被建立在备用服务器150中。在元数据数据库的副本152中,在哈希存储器表142中找到的元数据会被备份且会被用于恢复程序。此程序还可持续修改副本且局部地存储此副本在暂时目录中。所改变的数据的副本还可以预定义的时间间隔来使用。当备用服务器150被连接时,未存于备用服务器150上的所有暂时数据会被传送。当复原元数据数据库144时,其可复原到在特定时间处存在或在一段时间周期内已经存在的内容,使得元数据数据库144可复原到其最近版本。通常当主要服务器105关机时,其会维持一致状态。也就是说,元数据数据库144内的所有内容和所有文件系统132的内容会被同步。在发生当机之后,有可能造成存储系统100处于不一致状态。也就是说,在主要服务器105中的文件系统132与元数据数据库144的内容之间可能存在不一致。
[0078] 图8为说明根据本公开一实施例的用于当向元数据管理单元发送当机恢复请求时恢复哈希存储器表的方法的流程图。
[0079] 参看图8,在主要服务器105当机之后,在下一次启动时可执行恢复程序。每当主要服务器105启动时,确定先前关机是否有不一致状态(步骤S801)。如果主要服务器105从先前关机中存有一致状态时,则根据元数据数据库144来初始化并建构哈希存储器表142(步骤S802)。如果主要服务器105从先前关机中存有不一致状态(即,主要服务器105归因于当机而关机)时,则向备用服务器150发送当机恢复请求(步骤S803)。备用服务器检查元数据数据库的副本152与元数据数据库144中的哈希存储器表之间的不一致(步骤S804)。接着,从元数据数据库的副本152发送欲在元数据数据库144中恢复的内容(步骤S805)。
最后,将所恢复的哈希存储器表142载入到缓冲器120以准备好用于处理元数据查询(步骤S806)。
[0080] 在范例实施例中,元数据管理单元的上述控制模块可以软件形式来实施且存储在包含CD-ROM、磁带、软盘或光学数据存储装置在内的计算机可读记录媒体中。
[0081] 综合上述,本公开提供用于元数据的方法和系统,其具有高更新效率和长系统使用持久性。所述方法和系统以哈希型式进行元数据管理且通过减少用以识别文件匹配或文件匹配不存在的磁盘I/O操作的数目来显着地改善例如文件写入请求、读取请求、更新请求和删除请求等物理磁盘存取效率。因此,与常规的数据库管理系统相比,效率得以改善,且执行时间成本得以降低。本公开合适地适用于例如具有密集工作负荷和更新的云存储服务等网络服务。
[0082] 虽然本公开已以实施例公开如上,然其并非用以限定本公开,本领域技术人员,在不脱离本公开的精神和范围内,当可作些许的更动与润饰,故本公开的保护范围当视所附权利要求书界定范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈