生成内容地址以指示即将写入存储系统的数据单元的方法和设备的制作方法

文档序号:6442944阅读:157来源:国知局
专利名称:生成内容地址以指示即将写入存储系统的数据单元的方法和设备的制作方法
技术领域
本发明涉及访问存储系统中的内容的方法和设备。
2.相关技术描述内容寻址存储技术(CAS)一种数据访问技术,该技术借助于由数据单元内容导出的地址对存储系统进行访问。比如,将数据单元作为散列函数的输入信号就能够生成可以用作数据单元内容地址的散列值。信息提取5(MD5)散列算法就是一种适用于生成内容地址的散列函数。当主机可内容寻址的存储系统发送访问数据单元的申请时,主机提供数据单元的内容地址(比如散列值)。然后存储系统根据内容地址确定数据单元在存储系统中的物理位置,在确定的物理地址读取数据单元后,并将读取的内容返回主机。
确定数据单元的物理位置通常涉及到方方面面的问题,特别是在采用分布式存储结构的存储系统中。分布式存储系统由许多分离的节点构成,每一节点可能是一由许多独立资源(比如处理器、存储器和磁盘)构成的独立设备。节点之间可以相互通讯(比如通过网络)以处理来自一或多台主机发出的数据访问请求。在基于数据单元内容地址访问的存储系统中确定数据单元的物理地址,系统首先要确定数据单元存储在那个节点上,然后确定数据单元存储在该节点的哪块磁盘上(如果该节点有多块磁盘),同时还要确定数据单元在磁盘中的物理位置(比如柱面、磁头和扇区)。
图1所示为分布式存储系统的实例,该分布式存储系统中包括许多访问节点(AN)101a,101a......101n,许多存储节点(SN)105a,105a......105n,及连接访问节点和存储节点的网络103。访问节点101可以用于处理来自主机的访问请求(比如读/写请求),而存储节点105则可以用于存储数据。在接收到主机读取数据单元的请求时,访问节点确定出数据单元存储在那个存储节点中,并向该节点发出读取数据单元的请求。
这里提到的确定特定数据单元在存储节点中位置的方法是广为人知的多点传送位置查询法(MLQ)。在多点传送位置查询法中,访问节点101接收来自主机的请求访问数据单元。访问节点然后向网络中的存储节点105广播信息,查询是否有存储节点存储了该数据单元。每一存储节点105确定本节点上是否存储了所请求的数据单元。每一存储节点105中包含了一数据集(如数据库或数据表),在该数据集中列出了存储在该节点中数据单元的内容地址,以及在存储节点中存储数据单元的磁盘。也就是说,如果存储节点中有4块磁盘,数据表能够指出是其中的哪一块磁盘上存储了数据单元。这样,当一存储节点105接收到来自访问节点101的MLQ网络信息后,就会扫描其数据集以确定请求的数据单元是否存储在该节点上。
一旦存储节点105确定在该节点上存储了所请求的数据单元,它就会利用相通的数据集确定在哪一块物理磁盘上存储了数据。然后存储节点就能够确定出数据单元在该磁盘上的物理位置。数据单元可能是以文件的形式存储在存储节点的文件系统中。因此,为了确定数据单元在磁盘上的位置,存储节点可以利用其操作系统在文件系统中查找对应的文件,并文件系统的定位映射到物理磁盘的定位。比如,在存储数据单元时,存储节点可以创建一以数据单元内容地址为文件名的文件,并将数据单元存储到该文件中。
图2为用于在分布式内容可寻址存储系统中存储数据单元的文件系统的说明。图2中的文件系统中包含了多级目录。最上面的一级目录称为根目录。多级目录中的第二级称为子目录。每一子目录所表示的都是数据单元内容地址的第一字母。也就是说,内容地址以字母“A”开头的数据单元将被存储在子目录“A.”中。而内容地址的第二个字母将决定数据单元存储在哪个字目录中,如果存储系统以后要访问数据单元(如,相应一读取请求),存储系统可以通过遍历文件系统的各级目录查找和数据单元内容地址的前两个字母相同的子目录名称定位数据单元,存储系统可以打开包含数据单元的文件以验证该存储节点中确实存储了数据单元。然后,存储节点可以将数据单元返回至发布多路传送请求的访问节点。访问节点然后将数据返回至请求数据的主机。
MLQ是一种昂贵的的计算过程,因为对于每一请求的数据单元,它都需要在每一存储节点上进行数据库的穷举搜索。并且,如果数据单元仅存储在特定的一或几个存储节点中(假设数据单元被复制在一或几个存储节点中),许多穷举搜索必将失败。
为了减少使用MLQ在存储系统中定位数据单元时的计算开销,人们开发了另一种利用索引查询数据单元的技术。这里所说的所引被称为点定位索引(BLI),而“点”则特指数据单元。BLI是一可以将数据单元的内容地址映射到存储目录的存储节点上的数据库。BLI和MLQ的体制大致相同,在BLI中,数据单元也是根据其内容地址存储在被选择的文件系统中。只不过BLI的控制权在存储节点之间进行了分配,每一存储节点只能控制一部分的BLI。因此,一数据单元的访问请求就不会被广播至所有的存储节点,而只能传播到含有请求数据单元的BLI所对应的存储节点上。
BLI的结构图如图3所示。BLI的控制权被存储节点301、303、305和307均分。存储节点301管理BLI中包含以字符“A”-“F”开头的内容地址的部分,存储节点303管理BLI中包含以字符“G”-“L”开头的内容地址的部分,存储节点305管理BLI中包含以字符“M”-“R”开头的内容地址的部分,存储节点307管理BLI中包含以字符“S”-“Z”开头的内容地址的部分。BLI的每一部分都包含了存储系统中存储的规定范围内容地址的记录,并指明了存储相应的数据单元的存储节点。存储节点中的本地数据库309,311,313和315中存储了本存储节点存储的数据单元的内容地址,并指明了这些内容地址存储在存储节点中的哪一块物理磁盘上。
访问节点中维护着关于存储节点管理BLI的记录。这样,当接收到来自主机读取特定数据单元的请求后,访问节点就可以确定哪一存储节点控制的BLI中包含请求的数据单元的内容地址。例如,如果主机想访问节点发送的数据单元请求的内容地址以“S”开头,访问节点就会查询存储节点307以确认那个存储节点中存储了所请求的数据。存储节点307搜索BLI以确定哪一或哪一些存储节点中存储了所请求的数据,并将得到的信息返回值发出请求的访问节点。访问节点可以直接从正确的存储节点中请求数据单元。在这种情况下,其它没存储数据单元的存储节点就不会被查询。和MLQ不同,利用BLI不需要每一存储节点都进行数据库穷举搜索,由于只有一存储节点查询BLI,并且只有一存储节点查询本地数据库,这样就可以大大降低存储系统的计算开销。
如果出现存储节点对请求的数据单元进行BLI定位失败(比如,主机所请求的内容地址在BLI没有发现),存储系统可能就可能继续采用MLQ模式,并且发布MLQ查询信息以确定哪一存储节点中存储了和请求的内容地址对应的数据单元。
通过在存储节点中平均分配BLI的管理权,所有的存储节点均分在存储系统中定位特定数据单元时所产生的计算开销。用于生成内容地址的散列函数的随机性完全可以保证为每一存储节点分配数量大致相同的内容地址。当信的存储节点被引入存储系统中或从存储系统中移除存储节点时,BLI的管理权要在所有存储节点中重新分配以保证所有的存储节点依旧均分管理权。此外,当新的数据单元存储到存储系统中时,存储节点需要更新BLI,存储节点的本地数据库,并将数据单元的内容写入存储系统。这种三级写入模式在进行写操作时会影响存储系统的性能。

发明内容
一说明性的实施例介绍计算机系统中数据处理的方法,计算机系统包含至少一主机、一用于存储至少一主机的数据的存储系统。本方法包括(a)存储系统接收来自至少一主机的对存储在至少一存储系统中的数据单元的访问请求;和(b)为了响应请求,向至少一主机返回和数据单元在至少一存储系统中的物理存储位置相关的信息。另一说明性的实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了用于包含至少一主机的存储系统,这里所说的存储系统存储了至少一主机的数据。存储系统包括至少一存储设备用于存储来自至少一主机的数据;和至少一控制器可以接收来自至少一主机发出的访问存储在可内容寻址的存储系统中的数据的请求,该请求利用内容地址对数据单元进行识别,和为了响应请求而接收而向至少一主机返回和数据单元在可内容寻址的存储系统中的物理存储位置相关的信息。
另一关于本发明的说明性的实施例介绍了在计算机系统中处理数据的方法,该计算机系统包含至少一主机和至少一用于存储至少一主机的数据的存储系统。本方法包括以下几个方面(a)向至少一存储系统发送访问存储在存储系统中数据单元的请求;和(b)接收来自于至少一存储系统的关于存储在至少一存储系统中的数据单元的物理位置信息。另一说明性的实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例还介绍了在计算机系统中使用的计算机主机,该计算机系统包括至少一计算机主机和至少一存储设备,这里所说的计算机主机可以访问存储在至少一存储系统中的数据。计算机主机包括至少一存储设备;和至少一控制器可以向至少一存储系统发送访问存储在至少一存储系统中的数据单元的访问请求;和为了响应请求而接收来自至少一存储系统的关于数据单元在至少一存储系统中的物理位置的信息并能在至少一存储设备中存储该信息。
另一说明性实施例介绍了在计算机系统中处理数据的方法,该计算机系统包括至少一主机和至少一存储系统。本方法包括(a)至少一存储系统接收来自至少一主机的数据单元访问请求,该请求具有可以访问数据单元的标识符;和(b)为了响应请求而向至少一主机返回可以用于数据单元访问的标识符,以及和标志符无关的,关于数据单元在至少一存储系统的物理位置的附加信息。另一说明性实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了计算机系统使用的存储系统,该计算机系统包括存储系统和至少一主机。存储系统包括至少一存储设备用于存储来在至少一主机的数据;和至少一控制器可以使得至少一存储系统接收来自至少一主机的数据单元访问请求,该请求有可以用于数据单元访问的标识符;和为了响应请求向至少一主机返回可以用于访问数据单元的标识符,以及和标志符无关的,关于数据单元在至少一存储系统的物理位置的附加信息。
另一说明性的实施例介绍了计算机系统的数据处理方法,该计算机系统包括至少一主机和至少一存储设备。本方法包括以下几个方面(a)向至少一存储系统发送来自至少一主机的数据单元访问请求,该请求有可以用于数据单元访问的标识符;和(b)从至少一存储设备接收可以用于数据单元访问的标识符,以及和标志符无关的,关于数据单元在至少一存储系统的物理位置的附加信息。另一说明性实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了计算机系统中使用的主机,该计算机系统包括至少一主机和至少一存储设备。计算机主机包括至少一存储设备;和至少一控制器可以向至少一存储系统发送来自至少一主机的数据单元访问请求,该请求有可以用于数据单元访问的标识符;和为了响应请求接收来自至少一存储系统返回的可以用于访问数据单元的标识符,以及和标志符无关的,关于数据单元在至少一存储系统的物理位置的附加信息,并能将附加信息存储到至少一存储设备中。
另一说明性的实施例介绍了计算机系统中的数据处理方法,该计算机系统包括至少一主机和至少一用于存储来自至少一主机数据的可内容寻址的存储系统,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。本方法包括(a)维护至少一条索引,该索引可以将至少一数据单元的内容地址映射到至少一存有数据单元的存储系统的存储位置上;和(b)维护定位索引的高速缓冲存储器。另一说明性的实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了计算机系统的可内容寻址的存储系统,该计算机系统包括可内容寻址的存储系统和至少一主机,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。可内容寻址的存储系统包括至少一可以存储接收到的来自主机的数据的存储设备;和至少一控制器可以维护至少一条索引,该索引可以将至少一数据单元的内容地址映射到至少一存有数据单元的可内容寻址的存储系统的存储位置上;和维护定位索引的高速缓冲存储器。
另一说明性的实施例介绍了计算机系统中数据处理的方法,该计算机系统包括至少一主机和至少一用于存储来自至少一主机数据的可内容寻址的存储系统,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。本方法包括以下几个方面(a)响应来自至少一主机的对可以通过内容地址识别的数据单元的访问请求,解析内容地址以确定数据单元在至少一存储系统中的至少一物理存储地址。另一说明性的实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了计算机系统中的可内容寻址的存储系统,该计算机系统包括可内容寻址的存储系统和至少一主机,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。可内容寻址的存储系统包括至少一用于存储接收到的来自至少一主机的数据的存储设备;至少一控制器可以响应来自至少一主机的对可以通过内容地址识别的数据单元的访问请求,并解析内容地址以确定数据单元在至少一存储系统中的至少一物理存储地址。
另一说明性的实施例介绍了计算机系统中的数据处理方法,该计算机系统包括至少一主机和至少一可以存储来自至少一主机的数据的可内容寻址的存储系统,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。本方法包括以下几个方面(a)接收来自主机的在存储系统中存储数据的请求,所存储的数据单元有根据数据单元内容生成的内容地址;(b)根据内容地址确定出在内容地址所映射的存储系统中的第一存储位置;(c)在第一存储位置为第一数据单元存储一指向第二个存储位置的指针;和(d)在存储系统中的第二存储位置存储单元数据。另一说明性的实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了计算机系统中的可内容寻址的存储系统,该计算机系统包括可内容寻址的存储系统和至少一主机,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。可内容寻址的存储系统包括至少一用于存储接收到的来自至少一主机的数据的存储设备;至少一控制器可以接收来自主机的在存储系统中存储数据单元的请求,所存储的数据单元有根据数据单元内容生成的内容地址;根据内容地址确定出在内容地址所映射的存储系统中的第一存储位置;在第一存储位置为第一数据单元存储一指向第二个存储位置的指针;以及在存储系统中的第二存储位置存储单元数据。
另一说明性的实施例介绍了计算机系统中的数据处理方法,该计算机系统包括至少一主机和至少一可以存储来自至少一主机的数据的可内容寻址的存储系统,这里所说的至少一主机可以利用至少是部分基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。本方法包括以下几个方面(a)创建数据单元的内容地址以构成第一信息,该信息可以指出哪些数据单元即将写入到存储系统中。另一说明性的实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了计算机系统中的主机,该计算机系统包括可内容寻址的存储系统和至少一主机,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。主机包括至少一可以生成数据单元的处理器;和至少一控制器,该控制器可以生成数据单元的内容地址以构成可以指出哪些数据单元即将写入到存储系统中的第一信息。
另一说明性的实施例介绍了计算机系统中的数据处理方法,该计算机系统包括至少一主机和至少一可以存储来自至少一主机的数据的可内容寻址的存储系统,这里所说的至少一主机可以利用至少是部分基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。这里所说的至少一存储系统中包含索引,该索引可以将数据单元内容地址映射到存储数据单元的至少一存储系统中的存储位置上。本方法包括以下几个方面(a)接收来自至少一主机的存储数据单元的请求,存储请求利用数据单元的内容地址对数据单元进行识别;和(b)在选定的存储位置存储数据单元,这样存储地址的索引记录和即将写入的另一数据单元的存储地址的索引记录就是前后紧接的。另一说明性的实施例介绍了至少一有编码指令的计算机可读介质,当指令在计算机系统上运行时,可以实现上述方法。
此外的说明性实施例介绍了计算机系统中的可内容寻址的存储系统,该计算机系统包括可内容寻址的存储系统和至少一主机,这里所说的至少一主机可以利用基于数据单元内容生成的内容地址访问存储在至少一存储系统上的数据单元。可内容寻址的的存储系统包括至少一用于存储来自至少一主机的接收数据的存储设备;和至少一控制器,该控制器维护用于将数据单元的内容地址映射到至少一存储数据单元的存储系统的存储位置上,并能保证即将在至少一存储系统中写入的数据单元在索引中的记录是前后紧接的。


在附图中图1是分布式存储系统前期技术的说明性结构图;图2是一文件系统的层次图,借助于该文件系统数据单元存储在采用前期技术的可内容寻址的存储系统中;图3所示的结构图说明了在采用前期技术的可内容寻址的存储系统中,多个存储节点如何分配点定位索引;图4是可以实施本发明的存储系统和主机的配置的结构图;图5是依照本发明的一实施例分配给许多存储节点的内部地址的结构图;图6是依照本发明的一实施例,在一存储节点中分配给许多存储设备的内部地址的结构图;图7说明的是依照本发明的一实施例在一数据单元的内容地址中加入的位置信息。
具体实施例方式
本发明涉及改进存储系统中的内容访问技术。
依照本发明的一实施例,存储系统可以为主机提供数据单元在存储系统中的位置线索。在随后的数据访问请求中,主机可以向存储系统提供位置线索,帮助存储系统定位数据单元,从而提高存储系统定位数据单元的效率。
在本发明的一可选实施例中,向可内容寻址的存储系统提供了可以将至少一存储单元的内容地址映射到其存储位置上的索引。存储系统维护定位索引高速缓冲存储器,提高访问包含索引信息内容的性能。
在本发明的另外的实施例中采用的技术可以使在可内容寻址的存储系统中对来自主机的访问数据单元请求的处理更加容易。该技术包括解析内容地址以确定数据单元的至少一处物理存储地址。借助于内容地址至少一方面就可以确定出至少一处的物理存储地址,这样就可以存储这里所说的数据单元。如下所述,作为访问请求响应的数据定位也可以高效实现。
在本发明的另一实施例中,采用的技术可以为数据单元创建内容地址,这些内容地址中包含了哪些数据单元被按照时间顺寻写入存储系统中的信息。如同下面将要讨论的一样,为那些按照时间顺寻写入的数据单元提供至少是部分相似的内容地址可以提高在响应来自主机的访问请求时存储系统定位数据单元的效率。
如同前面所述,本发明的几个方面特别介绍了可内容寻址的存储系统。然而这并不是本发明的全部,本发明还有着更为广泛的应用。这样,应当注意的是,尽管下面讨论的特定的技术实现主要涉及的是可内容寻址的存储系统,本发明不仅仅限定于这一方面,而是同样适用于其他类型的存储系统。
本发明适用的所有说明性的计算机系统配置方面的问题可参考附图4,该图介绍了和存储系统407相连接的计算机主机401。
主机401执行读写数据单元的应用程序403,应用程序接口405的作用是实现和存储系统405的连接。主机401可以是,比如,提供资源(比如,数据存储,email和其他服务)的服务器,客户机(比如由用户操作的通用计算机系统),网络组件(比如转换器)或者其他类型的计算机。主机401通过通讯链路404和存储系统407相连接,这样主机401可以利用存储系统407存储和读取数据。链路404可以是包括各种网络或直联在内的任意类型的通讯链路。
应用程序403可以是主机401的用户或管理者使用的用于从存储系统407中存储数据和/或读取数据的任意计算机应用程序。应用程序403和API405的连接时的应用程序403可以通过API405和存储系统407通讯。
API405可以包括,比如,提供给应用程序403程序员的计算机目标代码,计算机目标代码中包括可以用于和存储系统通讯的程序。当和API405链接后,应用程序就可以调用这些程序实现和存储系统407的通讯。API405可以和任意数量的应用程序链接,并且时的应用程序403的程序员不需要了解和存储系统407通讯时所需的内部协议。应当指出的是由于主机/存储系统接口特性可以通过多种方法实现,这里描述的本发明的特性的应用范围并不仅限于在系统中的主机使用API以简化主机401和存储系统407的通讯,本发明也不能限定于任何一种特定的技术实现。如同一可选的实现方案中所描述的那样,应用程序403可以定制为和存储系统407直接相连。
在本发明的一实施例中,存储系统407可以是一可内容寻址的存储系统(CAS),该系统形式的描述可参考已有专利申请号但尚处于专利申请期的以下专利文献编号09/236,336,专利名称“可内容寻址的信息的封装、表现和传输”,申请日期2/21/1999;编号09/235,146,专利名称“通过网路访问可内容寻址的数据”,申请日期2/21/1999;编号09/391,360,专利名称“可安全存储,传输和获取可内容寻址信息的系统和方法”,申请日期9/7/1999;以及同时申请的“存储系统中数据保存的方法和设备”,该专利尚未获得专利申请号。这里将以上所列各专利作为参考。这些申请均涉及可内容寻址存储,统称为“CAS申请”。
如上所述,在可内容寻址系统中,数据的存储需要利用根据数据内容本身生成的内容地址。内容地址可以通过对存储的数据进行散列运算获得。在主机和存储系统之间关于数据的通讯中,散列函数的输出至少可以部分用作内容地址。内容地址可被映射到(比如,在存储系统407)存储系统中的一或多个物理地址上。
可以用于生成内容地址的散列函数的一示例是信息提取5(MD5)函数。信息内容的散列结果可以直接用作内容地址,或者在散列结果中加入附加信息构成地址。可以理解的是任何类型的散列函数都可以用于内容地址的生成,因此这里描述的发明不能限定于使用任一特定类型的散列函数,并且在某些方面上甚至不能限定于仅在可内容寻址的系统中的应用。
在本发明的一实施例中,在一或多个散列结果中可以加入一担保的唯一标识符(GUID),以保证数据但与内容地址的唯一性。比如,GUID可以根据生成内容地址、时间标识,任意数字或其他任意适合类别的计算机主机的MAC地址生成。在本发明的实施例中应用的生成GUID的另一示例可参考国际标准组织(ISO)说明书ISO/IEC 115781996。
当主机向存储系统发送要存储的数据时,主机和存储系统可以独立计算数据的内容地址。主机可以保留内容地址以备将来从存储系统读取数据使用。另一种可选的方案是,仅有存储系统计算内容地址,并将计算出的内容地址返回至主机以备以后访问数据。还有一种可选方案是,存储系统和主机都计算内容地址,存储系统将它计算出的内容地址返送到主机。主机将它独立计算出内容地址和从存储系统处接收到的内容地址相比较以验证是否匹配。
在图4所示的说明性的配置中,存储系统407是一分布式存储系统,该存储系统包括大量的访问节点409a,409b,409c和409d,及大量的存储节点411a,411b,411c和411d,访问节点409和存储节点409可以通过适合的方法加以连接,比如通过基于TCP/IP网络协议的通讯网络(图中未标出)。每一访问节点409和存储节点411可以是,比如,拥有独立硬件和软件资源(比如,处理器或处理器组,内存,磁盘资源,操作系统,存储系统软件)的独立计算机,在这一点上,本发明未加以限定。
如同上面提及的,主机401向访问节点409如,读,写或其他请求)。如果是写请求,访问节点可以接收来自主机的写请求(和要写入的数据),选择一存储数据的存储节点401,并且将数据发送到存储节点进行储存。在一些实施例中,访问节点409可以以任意适合的方式选择存储节点411。比如,访问节点可以根据负载平衡的方案在存储节点之间平均分布数据,访问节点409也可以使用其他不同的选择方法。以上提及的连同图2,在存储数据单元的时候,存储节点可以创建一以数据单元内容地址命名的文件,并将数据单元存储到该文件中。
如果是读请求,访问节点409可以接收来自主机的请求,确定请求的数据存储在那个存储节点411上,从正确的存储节点411中获取请求的数据,并将请求的数据返回至主机。由于存储系统的任意适合的配置都可以使用,因此在此描述的本发明不仅限于上面叙述中的或其他任意特定的配置。比如,出了利用访问节点从存储节点获取要求的数据并将数据传送到主机401外,存储系统也可以选择配置成为访问节点仅是简单地通知存储节点直接向主机401返回数据。
存储节点411可以接收来自访问节点409的读和写请求,并且作为响应读取或存储数据。同样,存储节点411可以包括一或多个用于保存数据单元的存储设备(比如磁盘驱动器或其他任意类型的存储设备)。应当指出的是访问节点409也可以包括一或多个存储设备,这样访问节点409和存储节点411可能具有相同的(或大体相同)或不同的硬件配置。
图4所示的存储系统中有4个访问节点和4个存储节点,但是,由于存储系统可以包含任意适合数量的访问节点和任意适合数量(可以和访问节点的数量不同)的存储节点,因此应当指出的是这一配置仅是说明性的,本发明也不应限定于仅在特定配置的存储系统中使用。
此外,图4所示的示例中,主机通过访问节点和存储系统及存储数据的存储节点进行通讯及访问,应当指出的是,本发明不限于仅在此方面的应用。比如,存储系统中可以包含可以和主机通讯及存储数据单元的节点,也就是说,一或多个节点可以同时作为(至少是部分)存储节点和访问节点。
定位线索在本发明的一实施例中,存储系统可以向主机提供定位线索以提高对存储系统访问的效率,定位线索是由存储系统向主机提供的关于特定的数据单元在存储系统中的存储位置的信息。以定位线索形式提供的信息能够和后来对数据的访问请求一起由主机返送至存储系统,存储系统利用该信息提高访问数据单元的效率。特定数据单元的定位线索可以包含关于存储数据单元的数据节点的信息,在该数据节点中存储数据的物理存储设备的信息,在该物理存储设备中保存数据单元的文件所在的文件系统的定位信息,保存数据单元的物理设备的定位,或者是以上信息的任意组合。与那些可以直接确定一或多个数据单元物理存储位置信息不同,定位线索以另外的方式提供了和数据单元的物理存储位置有关的信息。比如,存储系统可以包含一条数据单元物理存储位置的索引,提供给主机的定位线索使得主机可以使用该索引。这样,以定位线索提供的信息可以和任意适合方式存储的数据单元的物理位置建立联系。
存储系统可以以任何一种方式向主机提供定位线索,在这一点上,本发明没有任何限制。比如,作为对来自主机写入数据单元的写请求的响应,存储系统可以返回数据单元的定位线索信息(比如作为标志或其他任意的形式)。作为对写请求的响应,定位线索可以单独,也可以和其它信息一同返回主机。比如,在一实施例中,存储系统以返回和数据单元对应的内容地址(比如MD5散列值)的形式响应一写请求,这样主机就可以验证存储系统计算的内容地址的正确性。在一实施例中,在响应写请求而向主机返和内容地址时,存储系统也可能发送定位线索,图4中406表达了这样的思想。
作为对读请求的响应,存储系统也可以向主机提供定位线索。比如,当存储系统向主机返回请求数据时,同样可以发送所请求数据的定位线索。
作为对查询请求或其他形式的请求的响应,存储系统也可以向主机提供定位线索。查询请求是主机向存储系统发出关于数据单元信息的请求。比如,这些信息可以是数据单元在存储系统中存储的时间,CDF中的部分元数据,部分内容地址,或者是其他任意适合的信息。
比如,主机可以不向存储系统提供内容地址(在一典型的读请求中),而是提供一时间范围(比如开始时间和结束时间)。作为响应,存储系统向主机返回给定的时间段内在系统中存储的数据单元的内容地址的列表。作为对查询请求的响应,存储系统可以向主机发送每一符合条件的单元的定位信息。因为主机很可能会对存储系统在响应查询请求时返回的至少部分内容地址发出读请求,因此在响应查询请求时提供定位信息就比较有用。如果主机能够告知存储系统这些内容地址所对应的数据单元的位置(比如根据定位线索),就可以降低存储系统消耗在定位数据单元上计算资源(和时间)。
如同上面提到的,在查询请求中提供给存储系统的信息不仅限定于时间范围。信息可以附加或仅包括部分采用CDF格式存储的元数据,部分内容地址或其他适合的信息。比如,如果查询信息中包括存储在CDF中的元数据或部分内容地址,存储系统可能返回包含制定的元数据或部分内容地址的任一CDF文件。
主机可以以任一种方式使用来自存储系统的定位线索信息,在这一方面,本发明没有任何限定。如同上面提及的,在主机上执行的应用程序403(图4)可以通过API405和存储系统进行通讯。当API接收到来自存储系统的定位线索时(比如响应读、写、查询请求,或其他的访问请求),API可以向应用程序提供定位线索。然后应用程序将该线索和对应的内容地址相联系并加以保存。这样,当应用程序下一次请求访问内容地址对应的数据单元时(比如,通过API),应用程序就可以同时提供内容地址和定位线索。
可供选择的方法还有由API保存定位线索以代替将定位线索发送到应用程序。这样,API可以接收应用程序访问保存在存储系统的数据单元的请求,该请求中包含需要的数据单元的内容地址。API可以确定它是否保存了请求的内容地址所对应的位置线索。如果是的话,API就可以向存储系统同时提供位置线索和访问请求。
主机(比如,API或应用程序)可以以任何适合的方式存储定位线索。在一实施例中,主机(比如,API)维护保存定位线索及其对应的内容地址的缓存器以提高系统的性能。当缓存器。一旦缓存器充满,API或应用程序可以根据最早使用内容更新方案、最近使用内容更新方案或其他适合的缓存更新方案更新缓存器中的内容。
应当指出的是由于主机维护并访问定位线索记录,因此定位线索的应用可以将在存储系统中定位数据的部分计算工作从存储系统转移至主机。主机在向存储系统发送访问请求时,如果可能的话,可以搜索其维护的记录并向存储系统提供定位线索。这使得存储系统至少可以避免部分为确定存储的数据单元的物理位置而在存储系统进行的记录搜索。
在另一实施例中,主机可以简单地忽略任何来自存储系统的定位线索。也就是说,主机可以选择不承担任何计算工作,而完全由存储系统定位内容。
在另一实施例中,定位线索的使用是主机的一可选特性,因此该特性可以根据需要开或关。
应当指出的是定位线索可以由存储系统通过很多方法确定,因此本发明不能限定与某一特定的实施方案。依照本发明在具有如图4所示配置的存储系统中使用的实施例,定位信息可以通过访问节点409生成,也可能通过存储节点411实现,而这是由所提供的定位信息的粒度决定的。如上所述,定位信息可以在任意粒度水平上提供,因此在这一问题上,本发明没有加以限定。比如定位信息可以仅仅提供关于那个访问节点控制对物理存储位置的访问的信息,或者提供关于存储数据单元的特定存储节点的附加信息。同样的,关于存储数据单元的特定存储节点的信息也可以任意粒度水平上提供,其原因是该信息可以仅仅确定存储节点,也可以选择描述更多的信息以确定文件系统或者存储数据单元的特定存储设备(如磁盘驱动器)的定位。应当指出的是,作为对访问请求的响应,存储系统生成定位信息的过程相当的简单,这是因为作为访问数据单元的结果,存储系统需要经历定位物理存储位置的过程,并将该信息以有效线索的形式提供给主机。比如,在本发明的一实施例中,在访问数据单元时,保存数据单元的存储节点识别正确的访问节点、文件系统和存储数据的磁盘驱动器,然后访问节点将该信息以上述定位线索的形式传送给主机。应当指出的是粒度的水平和定位信息的生成方式不能限定此处描述的示例,由于本发明可以在多种类型的存储系统配置中使用,也包括那些不适用访问节点和存储节点结构的系统,因此图4中所示的存储系统的配置同样不能限定本发明的应用范围。
如果没有使用定位线索(比如,关闭该特性),或者主机没有关于一特定数据单元的定位信息,存储系统可以利用传送定位查询、BLI查表法或其他任意适合的技术定位数据。此外,在某些情况下,定位线索也可能无法正确识别存储系统中内容的位置。比如,在主机接收到定位线索后,存储系统将内容移支新的位置时就会发生这种问题。如果以定位线索无法正确识别存储系统中内容的位置,存储系统将使用其他的方法定位内容,比如MLQ,BLI查表或者其他适合的技术。
BLI缓存在本发明的一实施例中,存储系统维护一称为点定位索引(BLI)的数据集(比如,数据库)该数据集和一已知的系统一起按照前面描述的BLI模式工作。在一实施例中,BLI的管理权在存储节点411(图4)中均分,每个存储节点指定了管理的地址(比如内容地址)范围,和该范围地址的索引,以确定对应的数据单元的存储位置。BLI本身(除管理权之外)也可以在存储系统的节点中分配。为了提高访问BLI的效率,在本发明的一实施例中,缓存了部分的BLI。
点定位所以可以是一可以将数据单元对应的内容地址映射到存储数据单元的存储节点的数据库(或者是其它的数据集)。BLI可以完全存储在一存储节点上(也可以选择在其它的一或多个存储节点上建立镜像),也可以如上所述在两个或多个存储节点之间分配。为了响应对一特定地址的访问请求,接受请求的访问节点409将请求直接传送给管理包含该地址的那部分BLI的存储节点411,适当的存储节点读取存储节点以确定所请求的数据单元在存储系统上的位置。
应当指出的是一部分BLI的控制权可由多个存储节点共享,在这种情况下,访问节点409可以直接将此类请求发送到管理这部分BLI的一或所有存储节点上。
应当指出的是在本发明的一些实施例中,BLI的存储或BLI的管理既可以通过访问节点也可以通过存储节点,或者完全由访问节点实现,本发明在这一点上没有作出限定。此外还应当指出的是,下面将要讨论的BLI缓存技术对于访问节点和存储节点都适用。
在以前的技术中,BLI存储在二级存储器中(比如,磁盘),而二级缓存的速度要比主存储器慢。当访问请求是一在BLI中没有记录的写入新数据的写请求时,BLI需要更新新存储数据的内容地址和存储节点位置。存储系统要等到BLI完成更新后才能通知主机写入成功。如果存储节点的主存储器中需要更新的BLI部分没有准备好,更新BLI的存储节点就会执行磁盘读操作,将BLI读入主存储器(比如RAM)中,在主存储器中更新BLI,然后通过磁盘写操作将更新后的BLI写入磁盘中。这样,按照应用程序的观点,从发送写请求到存储系统确认写入成功之间就会存在时间延迟,如果一直等到BLI更新完成后才返回确认信号,延迟时间还会增加。
根据本发明的一实施例,存储系统维护主存储器(比如RAM)中BLI缓存,以提高访问性能。比如,为了响应写请求,存储系统可以向主存储器中的BLI缓存写入新的记录,并通知发出请求的主机写入成功。在稍后的时间里再将缓存中的BLI内容写入磁盘中。这样由于更新BLI而导致的时间延迟就会大大降低。
BLI缓存同样可以提高存储系统读访问的效率。当接收到一读请求时,存储系统可以搜索BLI缓存以确定所请求的数据单元的位置是否保存在BLI缓存中,如果是,就不再需要执行磁盘读操作。
BLI缓存可以以任意适合的方式整理和存储,因此本发明不能限定于任何特定的实现技术。比如,当BLI全部存储在一存储节点上时,BLI缓存可以完全由一存储节点维护,也可以有多个存储节点共同维护。类似的,如果BLI分布在许多存储节点上,可以利用一存储节点存储BLI缓存,也可以让每一存储节点存储该节点保存的部分BLI所对应的BLI缓存(图4中的412a-d)。
应当指出的是以上叙述中BLI缓存的位置仅仅是作为示例给出的,BLI缓存可以位于存储系统中的任何位置和/或在存储系统中以任意形式分布,而BLI的地址及其对应的分布式BLI缓存的记录也没有必要限定在同一设备上。此外应当指出的是,BLI缓存可以以任意适合的形式写入BLI中。在这一方面,本发明没有限定。比如,BLI缓存的记录可以根据任意适合的更新算法在BLI缓存满的时候写入BLI中。而在另一可选的实施例中,BLI缓存记录在经过一固定时间后被写入BLI中。
在一实施例中,访问节点可以缓存BLI记录,包括替代和增加存储节点中BLI的缓存记录。当访问节点处理来自主机的写请求时,访问节点选择要写入数据的存储节点,这样访问节点就掌握了存储节点和新写入数据的内容地址的信息,并将它们写入BLI缓存。在一实施例中,存储节点在存储了新写入的数据后,能够向访问节点返回关于文件系统和数据在存储节点上的存储位置的信息,这样这些信息也可以被追加到访问节点的缓存记录中。应当指出的是,本发明没有限定于这一方面,这是因为BLI缓存记录可以选择仅仅识别存储数据单元的存储节点。
当访问节点接收到读请求时,可以在它的BLI缓存中搜索所请求的内容。如果有缓存被选中(比如在缓存中发现了内容地址),访问节点就会根据自身的BLI缓存确定请求的数据单元的存储位置,而不再需要查询存储系统中的BLI。这样返回请求数据单元的响应时间就被大大降低。
应当指出的是访问节点上的BLI缓存可以与/不与存储节点中其它层次的BLI缓存共同使用。如同上面所述,可以理解的是,BLI将内容地址映射到存储和这些内容地址相应的数据单元的存储节点上。然而,BLI也可以包含关于特定物理磁盘设备和/或数据单元的文件系统定位的信息。本发明在这一方面没有限定。
在一实施例中,BLI缓存是作为存储系统用户的一可选项提供的,因此该特性可以被启用或禁止。
如上所述,当新的数据单元被写入存储系统中时,除了向存储节点写入新数据和更新与存储数据单元相关的存储系统中的元数据外,在使用了BLI缓存的实施例中,还需要更新BLI缓存。此外如同前面提到的,当存储系统向主机发送写请求被处理的确认信息时,由于需要大量更新存储系统中的数据,因此会产生一定的时间延迟。根据本发明的一实施例,由于在BLI缓存中确定某一数据单元记录的失败,只会影响将来对该数据单元的访问,而不会妨碍存储系统对该数据单元的访问,因此向BLI缓存中写入记录可以在向主机发送确认信息后完成。
在本发明的另一实施例中,甚至可以在正确的记录写入BLI前就发送确认信息,以在更大程度上提高写入性能。在这一方面,应当指出的是,根据本发明的一实施例,如果接收到读数据的访问请求并且没有向BLI提供对应的记录,存储系统可以发布对数据单元的多点传送位置查询请求以确定该数据是否存储在某一存储节点上。这样,依据本发明的这个实施例中,存储系统即使没有数据单元对应的BLI记录,也可以完成对数据单元的定位。
应当指出的是,以上讨论的关于采用图4所示配置的可内容寻址的存储系统中定位索引缓存的实现仅仅是说明性的,本发明不限定于这一方面。本发明中关于内容寻址的存储系统中定位索引缓存的应用范围不能仅仅限定于采用如图4所示的访问/存储节点的存储系统。
此外,还应当指出,本发明中关于缓存定位索引和可以发送给主机的定位线索的使用的内容并非相互排斥,这两个特性可以同时使用也可以独立使用。
内部地址一可选的实施例中采用了一项技术(即这里所说的内部地址),它可以利用至少一部分内容地址确定存储系统中的数据单元的至少一部分的存储位置。图5中所示的存储系统507就使用了内部地址。存储系统507中有这许多的访问节点503a,503b和503c以及许多的存储节点505a,505b,505c,505d,505e和505f。存储节点可以分成几组,这样每一组存储节点就可以指定一定范围的内容地址。在图5所示的示例中,存储节点505a和505b指定的内容地址以字母“A″-“I″开头,存储节点505c和505d指定的内容地址以字母“J″-“R″开头,存储节点505e和505f指定的内容地址以字母“S″-“Z″开头。在图5中,每一组存储节点包含两个存储节点。然而,可以理解的是,一组存储节点可以只包含一存储节点,也可以包括三个或多个存储节点。此外,并不需要每一组存储节点中包含相同数量的存储节点。
在一实施例中,每一组存储节点存储和他们指定内容地址相对应的数据单元。访问节点503维护关于每一组存储节点指定的内容地址范围的信息,同样,访问节点在响应对数据单元的访问请求时就可以选择正确的存储节点。
比如,如果访问节点503接收到来自主机501的写入数据单元的请求,该数据单元的内容地址以字母“J″开头,访问节点就会选择存储节点505c或505d存储数据。在另一实施例中,访问节点503a根据内容地址的其他部分从两个存储节点中选择一存储数据。比如,访问节点503a可以根据内容地址的第二个字母在所选的组中选择合适的存储节点。比如,存储节点505c可以存储内容地址的第二个字母为“A″-″M″的数据单元,而存储节点505d可以存储内容地址的第二个字母为“N″-″Z″的数据单元。应当指出的是,内容地址中的任何一字母都可用于在一组存储节点中选择合适的存储节点,本发明在这一方面没有限定。
一旦访问节点503a选择了一存储节点存储数据单元,被选中的存储单元将选择物理存储设备(比如磁盘)来存储数据单元。图6所示的存储节点601中有4个物理存储设备603a,603b,603c和603d。存储节点601可以根据内容地址中的一或几个字母选择其中的一存储设备来存储数据单元。比如,存储节点601可以根据内容地址的第三个字母选择存储设备603。如果内容地址的第三个字母为“A″-″F″,选中存储设备603b存储数据。如果内容地址的第三个字母为“G″-″L″,选中存储设备603a存储数据。如果内容地址的第三个字母为“M″-″R″,选中存储设备603c存储数据。如果内容地址的第三个字母为“S″-″Z″,选中存储设备603d存储数据。
依据数据单元的内容地址选择数据单元的物理存储位置(比如存储节点和存储设备)使得访问节点在以后确定物理位置时不再需要借助于多点传送位置查询和数据库查表。也就是说,访问节点仅简单地检查数据单元的内容地址就可以确定其位置。
上述利用内部地址定位技术的说明性示例不仅可以确定依据内容地址存储数据单元的存储节点,也可以确定该节点中的文件系统和存储设备,应当指出的是,由于内部地址定位也可以仅仅用于确定数据单元物理存储地址,因此在该技术的应用范围方面,本发明没有限定。比如内部地址技术可以选择用于选择存储数据单元的的存储节点,这样既可以不需要通过查表或广播查询的方法而确定出存储节点。不过存储数据单元的文件系统和/或物理存储设备可以通过其他的方法实现,比如前面提到的的索引技术。
发明人注意到,对于某些数据单元,可能不希望将它们存储到根据内部地址技术指定的特定的物理存储位置中。本发明提供了一种处理这类数据单元的技术。很多原因都可以导致上面提到的情形,比如需要存储的数据单元比较大。对于较大的数据单元,根据内部地址技术指定的物理存储单元的容量可能不够;或者为了平衡负载而希望将只存储到其它的存储位置中。并且,某些需要将大量特定的数据单元写入存储系统中的应用程序可能希望在生成基于全部的数据单元的内容地址前开始写操作,这样的话,如果使用内部地址定位技术的话,再向存储系统传送数据单元时,可能还没有可以用于确定向何处存储数据的单元的内容地址。依据本发明的一实施例,上面提到的问题可以通过内部地址定位技术和指针加以解决。比如,如果希望在一不是由内部地址映射技术指定的位置存储数据单元(相对较大的数据单元),可以将一指针存储在数据单元的内容地址制定的存储位置上,该指针指向另一物理存储地址,由该地址存储需要保存的数据单元。这样当以后接收到访问该数据单元的请求时,内部地址定位技术就会将数据单元映射到该指针,利用该指针就可以读取需要数据。
指针技术也可以用于处理对那些还没有生成内容地址的数据单元的写请求。当接收到数据单元时,存储系统可以将它们放置在任意适合的位置,然后,一旦确定和/或提供了数据单元的内容地址,就可以将指针放置在一根据新提供的内容地址由内部地址定位技术确定的适合的位置。当然,应当指出的是,一旦提供了内容地址,也可以选择将该指针数据从由内部地址定位技术确定的存储位置中移走。
此外,在一实施例中,可以利用指针技术存储数据,存储系统可以执行一后台程序,该后台程序可以周期性地在存储系统中搜索只向其他存储数据单元的存储系统的指针。如果发现了这类指针,程序就会把数据单元从由指针指向的存储位置转移到由内部地址映射表(比如指针的位置)指定的存储位置,从而实现以对应的数据单元替换指针。这样,由于存储系统不需要既访问指针的存储位置又访问数据单元的存储位置,其访问数据单元(比如,响应来自主机的读请求)的效率就会得以提高。
可以理解的是,可以将指针替换为相应的数据单元的后台程序可以在任意存储系统中以任意适合的方式运行。比如,程序可以只在存储节点空闲的时候运行,也可以选择在每一存储节点上每经历一预定时间后运行,由于有很多其他可行的方案可以选择,因此本发明在这一点上没有限定。
根据本发明的一实施例,如果利用内部地址定位技术没有发现数据单元,也可以选择查表技术,比如实施多点传送定位查询。
临时访问地址如上所示,在一实施例中,数据单元存储在一相应的存储节点文件系统的文件中。该文件的文件名至少部分上和存储的数据单元的内容地址相对应,文件系统可以以目录和子目录的形式根据存储特定数据单元的子目录的名称加以组织,在这些子目录中存储的数据单元至少部分和数据单元的名称相对应。然而,应当指出的是,本发明不限定于这一方面。这是因为文件系统可以利用内容地址的任一部分,包括但不限定于第一字母或位,中间部分后末尾部分加以组织。用于生成内容地址的散列算法可以生成比较随机的值(比如MD5散列算法的输出值)。发明人注意到在写入时间上大体相同的数据单元可能会被存储在分级文件系统中的不同位置。也就是说,尽管写入的数据单元在时间上前后相连,但这些数据却可能分散在整个文件系统中,这样的话,散列算法的随机性就会阻止文件系统中的任何访问地址。
通常操作系统维护用于将文件系统位置映射到物理磁盘位置上的文件系统映射表。如果文件系统比较大(比如一很大的分级目录和子目录)并且在文件系统中存储了大量的文件,操作系统维护的文件系统映射表也会非常大。因此,操作系统仅将一小部分的文件系统映射表存储到主存储器(比如,RAM)中,而将其它的文件系统映射表继续保存在二级存储器(比如,磁盘)中。当需要其他部分的文件系统映射表时(比如,访问文件时),这部分的映射表就会被移至主存储器中,而另外的映射表则会被保存到磁盘中。应当指出的是,在存储器中访问文件系统的访问性能要优于在磁盘上的访问。
如果两个在写入时间上相连的数据单元存储在文件系统映射表中的不同位置,操作系统首先要从磁盘加载有第一数据单元文件系统定位的部分文件系统映射表(比如,确定该数据单元的物理存储位置),然后,从磁盘中再加载第二个数据单元文件系统定位的部分文件系统映射表。这些重复的磁盘访问存储系统的写响应时间变长。并且,由于即将写入的数据单元通常会按照时间顺序读取,因此在读数据单元时也会产生同样的访问延迟。
发明人已经注意到,在采用文件系统的存储系统中,希望存储时间大体相同的数据单元在文件系统中的存储位置也大体相同,这样就可以减少操作系统在连续访问数据单元时必须从磁盘上加在不同部分的文件系统的可能性。如上所示,在本发明的一实施例中,文件系统中文件的定位是由文件的名称决定的。这样,依据本发明的一实施例,在文件的名称加入附加信息,对于写入时间大体相同的文件其附加信息是相同的。这样,就位写入时间大体相同的文件提供了临时访问地址,并且有助于在文件系统中连续存储这些字段。
应当指出的是,在使用可内容寻址的存储器的本发明的一实施例中,在文件名称中附加的信息也可以附加到以文件形式存储的数据的内容地址中。比如,可以将该信息附加到文件内容的散列值中,以生成基于散列值和附加信息的内容地址。比如信息也可以附加到散列值的开始,结尾或其他的位置。主机可以利用该内容地址按照上面提到的方式访问文件。
在本发明的一实施例中,用于建立临时访问地址的附加信息可以附加到存储系统的内容地址中。也就是说,比如,在存储系统中存储数据单元时,存储系统可以生成临时访问地址信息,同时也会生成散列值,并将生成的内容返送给发出存储请求的主机。
在一可选的实施例中,主机生成了临时访问地址信息,并将该信息附加到散列值中生成内容地址。主机可以将内容地址发送给存储系统或者可以仅仅将临时访问地址信息发送给存储系统,并且允许存储系统将该信息附加到散列值中以确定内容地址。由于是在机上计算的时访问地址信息,如果主机出于备份或复制的目的,同时(或大体同时)在多个存储系统中存储数据单元,那么再没一存储系统中存储的数据单元的内容地址都是相同的。
在另一实施例中,临时访问地址信息可以通过存储系统和主机生成,并且生成的两套信息都可以附加到散列值任意适合的位置上,以生成数据单元的内容地址。
上面描述的示例为存储在文件系统中的文件提供临时访问地址的。但是应当指出的是,该技术也适用于其它形式的逻辑数据存储结构。比如,在内容地址(或其他存储在数据库中的信息)中增加临时访问地址信息可以提高以内容地址(或其他信息)作为关键词访问的数据库的访问效率,也可以利用其它的逻辑结构。
对那些写入时间大体相同的数据单元,在文件名中附件的可以是任意相同的信息。比如,可以在文件名中附加时间标识,文件系统可以通过检查该时间标识确定数据单元的存储位置。也可以选择在文件名中附加一计数值。该计数值在存储系统中写入新的数据单元时就会递增。由于本发明没有限定,因此可以使用任意适合的信息。
应当指出的是,本发明中关于在内容地址中附加信息以为在存储系统中按时间写入的数据单元提供指示的内容不仅限定于所述的具有特定存储节点和访问节点的存储系统,或者是上述的存储节点中文件系统。在这一方面,本发明适用于许多具有不同配置的存储系统。
图7概念性地阐述了本发明中的临时访问地址的内容,该图说明了在内容地址701中附加地址信息703。应当指出的是本发明者方面的内容不仅限定于如图7中所示的在内容地址的开始部分附加地址信息。地址信息可以以任意适合的方式附加到内容地址中,包括附加在内容地址的尾部,或者在内容地址范围之内添加,也包括象图7所示的那样将地址信息作为一毗邻的块提供,或者将信息分散在内容地址信息701之中。
以上讨论的本发明的实施例可以通过许多方式实现,比如,实施例可以通过硬件、软件或它们的组合来实现。当通过软件实现时,无论是在单台计算机中还是分布在多台计算机中,软件代码都可以在任意适合的处理器或处理器组上运行。应当指出的是,任何执行上述功能的设备或设备组一般都可看成一或多个控制前面讨论的功能的控制器。该控制器可以以多种形式实现,比如通过特定的硬件,或利用以微代码或软件编程的通用硬件(比如一或多个处理器)实现前面讨论的功能。
在这一点上应当指出的是,本发明的一实施例的实现中包含至少一计算机可读的介质(比如,计算机存储器,软盘,光盘,磁带等等),其中存储有计算机程序(比如大量的指令),该程序在处理器上运行时,可以实现本发明实施例中讨论的功能。计算机可读介质应该是可以移动的,这样其中存储的程序可以安装到任意的计算机系统资源中,以实现此处讨论的本发明的内容。并且,应当指出的是这里提到的在运行时可以实现此处讨论的功能的计算机程序,并不仅仅限定于可在主机中运行的应用程序。更恰当的说,这里所用的术语”计算机程序”是普通意义上的任意类型的计算机代码(比如,代码或微代码),该代码可用于对处理器编程以实现上面讨论的本发明的内容。
应当指出的是,根据本发明的几个实施例中的过程是通过计算机可读介质实现的,计算机实施过程可以在程序执行的过程中接收手动输入(比如,来自用户的输入)。
在上面讨论的不同的示例中,所讨论的内容地址中包含字母“A”-“Z”。可以理解的是,这些内容地址仅仅是作为示例提供的,并且这些内容地址可以包含任意的字母,位序列,或其他任意适合的字符,本发明在这一点上没有限定。
这里所用的措辞和术语均是出于说明的目的,而不应当当作限定范围。“包括”,或者“包含”和“涉及”等词及其变形的使用,是指包括此后所列的项目及附加项目。
由于在此详细地讨论了本发明的几个实施例,本领域的技术人员可很容易在此基础上作出修改和改进。此类修改和改进应当归于本发明的精神和范围之中。因此,前面的讨论仅作为示例,而不能作为范围的限定。下面的权利要求限定了本发明的范围。
权利要求
1.编码有指令的至少一计算机可读介质,该指令在计算机系统上运行时可以执行一种处理数据的方法,其中计算机系统包含至少一主机和至少一为至少一主机存储数据单元的可内容寻址的存储系统,且其中至少一主机利用至少部分基于数据单元内容的内容地址访问数据单元,该方法包括以下行为(a)为数据单元创建内容地址,以包含可以指示哪些数据单元即将被写入存储系统中的第一信息。
2.根据权利要求1所述的至少一计算机可读介质,其中该方法还包括以下行为(b)通过向存储系统提供数据单元之一的内容地址而访问数据单元之一。(c)根据数据单元之一的内容地址及第一信息确定数据单元之一将被保存在存储系统中的位置。
3.根据权利要求1所述的至少一计算机可读介质,对于数据单元之一,其中行为(a)包括创建至少部分数据单元的散列值;和在散列值中插入第一信息以为数据单元之一创建内容地址。
4.根据权利要求3所述的至少一计算机可读介质,其中第一信息包括关于数据单元之一是何时被写入至少一存储系统的时间戳的至少一部分。
5.根据权利要求2所述的至少一计算机可读介质,其中行为(b)包括利用至少部分第一信息在至少一存储系统中选择用于存储数据单元之一的存储位置的行为,及其中该方法还包括在选定的存储位置存储数据单元之一的行为。
6.至少一编码有指令的计算机可读介质,当在计算机系统上执行时,其执行一处理数据方法,其中计算机系统包含至少一主机和至少一为至少一主机存储数据单元的可内容寻址的存储系统,其中至少一主机利用至少部分基于数据单元内容的内容地址访问数据单元,且其中至少一存储系统中包含索引,该索引可将数据单元的内容地址映射到至少一存储数据单元的存储系统内的存储位置,该方法包含以下行为(a)来自至少一主机接收存储数据单元之一的请求,该请求用其关联的内容地址识别数据单元之一;(b)在选定的存储位置中存储数据单元,使得索引中的存储位置记录是最接近于索引中相对于数据单元之一的、即将被写到至少一存储系统的其它数据单元的记录。
7.根据权利要求6所述的至少一计算机可读介质,其中数据单元之一的内容地址被创建,其至少部分通过散列数据单元的至少一部分实现。
8.根据权利要求7所述至少一计算机可读介质,其中内容地址包含第一信息,其可用于确定哪些数据单元即将写入存储系统,且其中该方法还包括来自至少一主机接收第一信息的行为。
9.根据权利要求7所述的至少一计算机可读介质,其中内容地址包含第一信息,其可用于确定哪些数据单元即将写入存储系统,且其中该方法还包含以下行为在至少一存储系统上生成第一信息的第一部分;从至少一主机上接收第一信息的第二部分;以及将第一、第二部分添加到内容地址中。
10.用于计算机系统中的可内容寻址的存储系统,其包含可内容寻址的存储系统和至少一主机,其中至少一主机根据基于数据单元内容生成的内容地址访问存储在可内容寻址的存储系统上的数据单元,可内容寻址的存储系统包括至少一存储设备,用于存储自至少一主机接收的数据;和至少一控制器,用于维护索引,该索引将数据单元的内容地址映射到至少一用于存储数据单元的存储系统内的存储位置,使得即将写入至少一存储系统的数据单元在索引中具有最接近的记录。
全文摘要
用于在存储系统中定位内容的系统的实施例,在该系统中,存储系统向主机提供数据物理存储位置的定位线索,系统中的主机可以重新提交以后的访问请求。在另一实施例中,可以将存储地址映射到物理存储位置上的索引在存储系统上缓存。仍是在另一实施例中,内部地址根据数据的地址选定新写入数据的存储位置。在此外的一实施例中,存储时间大体相同的数据单元的定位索引记录是相连的。
文档编号G06F3/06GK1629823SQ20041009853
公开日2005年6月22日 申请日期2004年12月9日 优先权日2003年12月9日
发明者迈克尔·基利恩, 斯蒂芬·托德, 汤姆·特格尔斯, 简·范里尔, 卡尔·达哈鲁因 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1