CN101410783A - 内容可寻址存储阵列元件 - Google Patents
内容可寻址存储阵列元件 Download PDFInfo
- Publication number
- CN101410783A CN101410783A CNA2007800110029A CN200780011002A CN101410783A CN 101410783 A CN101410783 A CN 101410783A CN A2007800110029 A CNA2007800110029 A CN A2007800110029A CN 200780011002 A CN200780011002 A CN 200780011002A CN 101410783 A CN101410783 A CN 101410783A
- Authority
- CN
- China
- Prior art keywords
- storage
- data block
- data
- key
- block
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
存储系统的内容可寻址存储阵列元件(CASAE)被配置用于消除存储在其存储资源上的复制数据。所述CASAE独立地确定与写入操作相关联的数据是否已经被写入到其存储资源上的某一位置。为此,所述CASAE对被写入到那些资源的每一个数据块执行内容可寻址存储计算,以便防止存储具有相同数据的两个或更多个块。如果块的数据先前已经被存储在所述资源上,则所述CASAE与在所述系统上执行的文件系统协作,以便提供指向相同数据块的引用(块指针)而不是复制所存储的数据。否则,所述CASAE把数据块存储在所述资源上的新位置处,并且提供指向该位置的块指针。
Description
技术领域
本发明总体上涉及数据存储压缩,更具体来说,本发明涉及被配置用于消除存储在存储资源上的复制数据的存储系统的内容可寻址存储阵列元件。
背景技术
存储系统典型地包括一个或多个存储设备,其中可以将信息输入到所述存储设备中并且可以在需要时从所述存储设备中获得信息。所述存储系统包括存储操作系统,其尤其通过调用存储操作以支持由所述系统实现的存储服务而在功能上组织所述系统。所述存储系统可以根据多种存储体系结构来实现,其中包括(但不限于)网络附属存储环境、存储区域网络以及直接附属于客户端计算机或主计算机的盘组件。所述存储设备典型地是被组织为盘阵列的盘驱动器,其中术语“盘”通常描述独立的旋转式磁介质存储设备。术语“盘”在本上下文中与硬盘驱动器(HDD)或直接访问存储设备(DASD)同义。
在所述盘阵列上的信息存储优选地被实现为一个或多个物理盘存储“卷”,其定义盘空间的总体逻辑布置。卷内的盘典型地被组织为一个或多个群,其中每一个群可以作为独立(或廉价)盘冗余阵列(RAID)来操作。大多数RAID实现方式通过在所述RAID群内的给定数目的物理盘上冗余地写入数据“条带”并且适当地存储关于条带化数据的冗余信息(奇偶校验)来增强数据存储的可靠性/完整性。每一个RAID群的物理盘可以包括被配置用于存储条带化数据的盘(即数据盘)和被配置用于存储所述数据的奇偶校验的盘(即奇偶校验盘)。此后可以检索所述奇偶校验以便允许恢复在盘发生故障时所丢失的数据。术语“RAID”及其各种实现方式是众所周知的,并且在D.A.Patterson、G.A.Gibson和R.H.Katz的“A Case for Redundant Arrays ofInexpensive Disks(RAID)(廉价盘冗余阵列(RAID)的一种情况)”(Proceedings of the International Conference on Management ofData(SIGMOD),1988年6月)中被公开。
所述存储系统的存储操作系统可以实现高级模块(例如文件系统),以便把存储在盘上的信息逻辑地组织为指定数据容器(例如目录、文件和块)的分级结构。例如,每一个“盘上”文件可以被实现为数据结构(即盘块)的集合,其中所述数据结构被配置用于存储信息(例如所述文件的实际数据)。这些数据块被组织在由所述文件系统维持的卷块号(vbn)空间内。所述文件系统把所述数据块作为“逻辑卷”组织在所述vbn空间内;每一个逻辑卷可以(但是不必)与其自身的文件系统相关联。对于尺寸为n-1个块的文件系统来说,所述文件系统典型地包括从0到n的连续vbn范围。
一种已知类型的文件系统是不会在盘上重写数据的任意位置写入(write-anywhere)文件系统。如果把一个数据块从盘上检索(读取)到所述存储系统的存储器中并且用新数据“弄脏”(即更新或修改)该数据块,则此后该数据块被存储(写入)到盘上的新位置处以便优化写入性能。任意位置写入文件系统可以最初采取最优布局,以便所述数据基本上连续地被布置在盘上。特别对于顺序读取操作来说,最优盘布局导致针对盘的高效的访问操作。被配置用于在存储系统上操作的任意位置写入文件系统的一个例子是可以从Network Appliance,Inc.(Sunnyvale,California)获得的Write Anywhere File Layout(WAFLTM)文件系统。
所述存储操作系统可以进一步实现存储模块(例如RAID系统),其根据输入/输出(I/O)操作来管理去往/来自盘的信息的存储和检索。所述RAID系统还负责对所述存储系统中的RAID群执行的奇偶校验操作。所述RAID系统典型地把RAID群组织为一个大“物理”盘(即物理卷),以便跨越所有RAID群的所有盘串连盘块。随后把由所述文件系统维持的所述逻辑卷“设置”(散布)在由所述RAID系统维持的所述物理卷上。
所述存储系统可以被配置用于根据客户端/服务器信息递送模型来操作,从而允许许多客户端访问存储在所述系统上的目录、文件和块。在该模型中,所述客户端可以包括在通过计算机网络“连接”到所述存储系统的计算机上执行的应用(例如数据库应用),所述计算机网络例如是通过公共网络(例如因特网)实现的点对点链路、共享局域网、广域网或者虚拟私有网络。每一个客户端可以以通过所述网络向所述存储系统发出(分组形式的)文件系统协议消息的方式来请求所述文件系统的服务。通过支持多种文件系统协议(例如传统的公共因特网文件系统(CIFS)和网络文件系统(NFS)协议),增强了所述存储系统的效用。
在响应于为客户端请求提供服务而访问文件的块时,所述文件系统指定vbn,该vbn被所述RAID系统翻译为物理卷的RAID群内的特定盘上的物理块号(pbn)位置(盘,pbn)。所述vbn空间和pbn空间内的每一个块典型地在尺寸上是固定的,例如为4k字节(kB);因此,在存储于所述pbn空间内的盘上的信息与由所述文件系统组织在所述vbn空间内的信息之间典型地存在一一映射。由所述RAID系统指定的所述(盘,pbn)位置可以进一步被所述存储操作系统的盘驱动器系统翻译为所指定的盘上的多个扇区。
随后从盘上检索所请求的块并且将其存储在存储器的缓冲存储器(buffer cache)内作为文件的缓冲树(buffer tree)的一部分。所述缓冲树是存储在所述缓冲存储器内并且由所述文件系统维持的文件的块的内部表示。宽泛地说,所述缓冲树在所述文件的根部(顶层)具有索引节点(inode)。索引节点是被用来存储关于文件的信息(例如元数据)的数据结构,而数据块是被用来存储所述文件的实际数据的结构。包含在索引节点内的信息例如可以包括指向所述文件的数据块的盘上位置的引用(reference)。指向文件数据的位置的引用由块指针提供,其可以进一步引用间接块,所述间接块又可以引用数据块,这取决于所述文件中的数据量。
所述RAID系统把关于基础物理盘的几何结构的信息(例如每个盘中的块数目)保存在数据结构(例如存储在盘上的raid标签)中。所述RAID系统把盘几何结构信息提供给所述文件系统,以供在创建并保持vbn到盘、pbn映射时使用,所述映射被用来执行写入分配操作并且被用来把vbn翻译为用于读取操作的盘位置。块分配数据结构(例如活动映射、快照映射、空间映射和概要映射)是描述所述文件系统(例如所述任意位置写入文件系统)内的块使用的数据结构。这些映射数据结构独立于所述几何结构并且被所述文件系统的写入分配器用作所述逻辑卷的现有基础结构。
数据存储是在归档与法规遵从应用环境中操作的许多行业(例如银行、政府机构/承包商和证券经纪公司)的中心部分。在许多这些环境中,有必要以不可改变并且不能变更的方式可能在长的时间段内存储所选数据(例如电子邮件、财务文档以及交易记录)。典型地,执行数据备份操作以确保在发生故障的情况下保护及恢复这种数据。但是备份操作常常导致在备份存储资源(例如盘)上复制数据,从而导致对那些资源上的存储空间的低效消耗。因此,理想的是消除存储资源上的复制数据并且确保仅仅存储数据的单一实例,从而实现存储压缩。
一种提供数据存储压缩的已知方法涉及内容可寻址存储系统,其利用散列来确定将被写入的数据先前是否存在于备份存储资源上。计算所述内容可寻址存储系统中的所述散列的过程典型地在文件级(与逻辑单元或逻辑单元(lun)级相反)上进行并且相对较慢,这是由于需要大量计算来确定所述数据是否已经被存储。因此,写入操作典型地是较慢的过程;这是行业内的内容可寻址存储系统的致命伤。
另一种已知的方法是由CMU Parallel Development实验室开发的卡耐基-梅隆大学(CMU)网络附属安全盘(NASD)系统。所述NASD涉及附属于网络的“智能”盘以作为取代直接附属盘的方式。但是,与在通用系统的情况下一样,该方法因不足以用于主存储器的性能以及对于提供可预测的性能而言不够可靠的公共网络的使用而受损。
发明内容
本发明针对被配置用于防止在存储资源上存储复制数据的存储系统的内容可寻址存储阵列元件(CASAE)。根据本发明,所述CASAE独立地确定与写入操作相关的数据是否已经被写入到其存储资源上的某一位置处。为此,所述CASAE对被写入到那些资源的每一个数据块执行内容可寻址存储计算,以便防止存储具有相同数据的两个或更多个块。如果某一个块的数据先前已经被存储在所述资源上,则所述CASAE与在所述系统上执行的文件系统协作,以便提供指向相同数据块的引用(块指针)而不是复制所存储的数据。否则,所述CASAE把数据块存储在所述资源上的新位置处,并且提供指向该位置的块指针。
在说明性实施例中,所述CASAE是面向块的元件,其特别包括:控制器,其适于执行内容可寻址存储计算;多个盘端口;以及多个网络端口,其适于通过交换结构耦合到所述存储系统。所述盘端口又耦合到所述CASAE的存储资源(例如盘),从而形成“存储砖”。所述CASAE存储砖的盘被作为逻辑单元(lun)导出并且被组织为单个RAID级实现群,其被配置用于提高盘的可靠性。
响应于向所述逻辑单元写入数据的客户端请求,所述文件系统采用特殊的块号(例如块零)来指示所述CASAE对每一个数据块执行所述内容可寻址存储计算,以便确定数据是否已经被写入到所述逻辑单元上的某一位置。作为说明,所述存储计算由于在盘上的数据存储所涉及的大量域空间而涉及散列函数。具体来说,所述CASAE基于数据块的内容计算散列密钥,并且随后确定是否已经为先前存储的数据块生成了该密钥。如果是的话,则执行对具有类似密钥的数据块内容的比较,并且如果所述内容匹配的话,则递增关于所述先前存储的数据块的引用计数。随后把所述先前存储的数据块的块号(位置)返回到所述文件系统。另一方面,如果先前没有生成所述散列密钥或者如果所述数据内容不匹配,则把所述数据写入到所述逻辑单元上的下一个可用块位置处并且把其位置返回到所述文件系统。
附图说明
通过结合附图参照下面的描述可以更好地理解本发明的上述和其他优点,其中相同的参考数字表示相同的或者功能上类似的元件:
图1是可以有利地与本发明一起使用的内容可寻址存储系统(CASS)的示意性方框图;
图2是可以有利地与本发明一起使用的CASS的存储系统的示意性方框图;
图3是可以有利地与本发明一起使用的存储操作系统的示意性方框图;
图4是根据本发明的CASS的内容可寻址存储阵列元件(CASAE)的示意性方框图;
图5是可以有利地与本发明一起使用的索引节点的示意性方框图;
图6是可以有利地与本发明一起使用的文件的缓冲树的示意性方框图;
图7是示出根据本发明的元目录和数据块盘上存储布局的示意性方框图;
图8是示出所述CASS中的存储系统的操作的程序的流程图;
图9是示出由根据本发明的CASAE执行的内容可寻址存储计算的功能方框图;以及
图10是示出所述CASS中的CASAE的操作的程序的流程图。
具体实施方式
本发明针对被配置用于消除存储在存储资源上的复制数据的存储系统的内容可寻址存储阵列元件(CASAE),所述存储系统例如是内容可寻址存储系统(CASS)。根据本发明,所述CASAE独立地确定与写入操作相关联的数据是否已经被写入到其存储资源上的某一位置。为此,所述CASAE对被写入到那些资源的每一个数据块执行内容可寻址存储计算,以便防止存储具有相同数据的两个或更多个块。如果某一个块的数据先前已经被存储在所述资源上,则所述CASAE与在所述系统上执行的文件系统协作,以便提供指向相同数据块的引用(块指针)而不是复制所存储的数据。否则,所述CASAE把数据块存储在所述资源上的新位置处,并且提供指向该位置的块指针。
图1是可以有利地与本发明一起使用的内容可寻址存储系统(CASS)的示意性方框图。所述CASS 100包括存储系统200,其通过交换结构150耦合到一个或多个CASAE 400。所述交换结构150、例如以太网交换机说明性地被用于所述存储系统200与每一个CASAE 400之间的连接,以便提供所述CASS 100的低成本的可热插拔的网络基础结构。客户端110通过计算机网络120连接到所述存储系统200,所述计算机网络可以包括点对点连接或共享介质(例如局域网)。作为说明,所述计算机网络120可以被具体化为以太网或者光纤通道(FC)网络。每一个客户端110可以通过网络120与所述存储系统通信,这是通过根据预定义的协议交换离散的帧或数据分组来实现的,所述预定义的协议例如是传输控制协议/互联网协议(TCP/IP)。
所述客户端110可以是通用计算机,其被配置用于执行应用并且根据客户端/服务器信息递送模型与所述存储系统200进行交互。也就是说,所述客户端可以请求所述存储系统的服务,并且所述系统可以返回由所述客户端所请求的服务的结果,这是通过在所述网络120上交换分组而实现的。所述客户端可以在访问文件和目录形式的信息(例如数据)时通过TCP/IP发出包括基于文件的访问协议的分组,所述协议例如是公共因特网文件系统(CIFS)协议或者网络文件系统(NFS)协议。替代地,所述客户端可以在访问块形式的信息时发出包括基于块的访问协议的分组,所述协议例如是通过TCP封装的小计算机系统接口(SCSI)协议(iSCSI)以及通过光纤通道封装的SCSI(FCP)。
如这里所描述的那样,所述存储系统200耦合到本地存储阵列260的存储资源(例如盘),所述本地存储阵列260被配置用于存储描述由所述CASS 100提供服务的数据容器(例如目录、文件和逻辑单元(lun))的高级元目录。此外,每一个CASAE 400被耦合到远程存储阵列460的盘,所述远程存储阵列460被配置用于存储由所述CASS 100提供服务的数据容器的用户数据(数据块)。值得注意地,所述CASAE与其相关联的远程存储阵列进行交互,从而形成CASAE“存储砖”180。如这里使用的,存储砖表示具有相对小的存储容量的盘的相对非智能的集合。每一块CASAE存储砖180的远程存储阵列460的存储容量与存储系统200的本地存储阵列260的存储容量协作,以便提供所述CASS100的扩展存储空间。
可以把附加的CASAE存储砖180插入到所述CASS 100中,以便允许跨越砖条带化(striping)写入操作。这些多块存储砖180并行地工作,以便允许在砖之间聚集资源,从而实现与所述写入操作相关联的内容可寻址存储计算的快速而高效的性能。因此,一块或多块CASAE存储砖180的组织可以允许CASS 100形成栅格体系结构。此外,CASAE存储砖180的添加允许在不损害数据访问的情况下扩展(增大)存储器并且为盘提供服务。每当把远程存储阵列460添加到所述CASS中时,作为说明,添加所述CASAE砖180的另一个计算元件,其能够在(相对小的)阵列上执行存储计算。由于在砖之间的计算的平衡,这在不降级的情况下实现可扩展系统。也就是说,作为说明,CASAE 400服务于相对较小数目的(例如8个)盘而不是由所述存储系统200提供服务的本地存储阵列260中的典型地更大数目的(例如16、32或64个)盘。如果所述存储计算是由所述存储系统200针对实现在所述本地存储阵列260的盘上的内容可寻址存储所执行的,则性能将受到限制(即变慢),这是由于必须搜索更大的存储容量和相应的更大的域空间以便确定数据的拷贝是否存在。
为了为所述CASS提供增加的可靠性和可用性,所述存储砖180可以被组织为群并且作为独立(或廉价)盘冗余阵列(RAID)来操作。大多数RAID实现方式(例如RAID-4级实现方式)增强数据存储的可靠性/完整性,这是通过在RAID群内的给定数目的物理盘上冗余地写入数据“条带”并且适当地存储关于条带化数据的奇偶校验信息来实现的。这里,RAID第4级实现方式可以被设置在所述CASS 100的存储砖180上,其中所述砖之一被指定为奇偶校验砖。基本上,每一块存储砖180都可以被视为所述RAID群内的盘,其中所述奇偶校验砖上的盘作为传统的RAID 4配置中的奇偶校验盘起作用。对于本领域技术人员来说将显而易见的是,可以把其他RAID实现方式设置在所述存储砖上,其中包括被配置用于检测及校正双重故障的双奇偶校验RAID 6实现方式。在这种说明性的RAID 6实现方式中,两块存储砖180被指定并且配置为奇偶校验砖。如果例如由于故障而丢失了一块或两块存储砖,则所述RAID实现方式允许以类似于重建(多个)故障盘的方式重建(多块)故障砖。虽然可以从所述故障存储砖的盘检索(读取)数据,但是必须修复该砖以便允许处理写入操作。
图2是可以有利地与本发明一起使用的存储系统200的示意性方框图。所述存储系统200是计算机,其提供与存储设备上的信息组织有关的存储服务,其中所述存储设备例如是本地存储(盘)阵列260的盘230。所述存储系统200包括通过系统总线225互联的处理器222、存储器224、一个或多个网络适配器226、一个或多个存储适配器228以及非易失性随机存取存储器(NVRAM 229)。作为说明,所述NVRAM 229是具有备用电池或者其他内建的最后状态保持能力的固态存储器阵列,其中该最后状态保持能力在所述阵列发生任何功率损耗的情况下保持存储器阵列的最后状态。每一个网络适配器226包括把所述存储系统200通过所述计算机网络120连接到客户端110所需要的机械、电气和信令电路。所述存储系统200还包括存储操作系统300,其优选地实现高级模块(例如文件系统)以便把信息在逻辑上组织为盘上的指定数据容器(例如目录、文件以及被称作虚拟盘(vdisk)的特殊类型文件)的分级结构。
在所述说明性实施例中,所述存储器224包括通过所述处理器和适配器可寻址以便存储软件程序代码的存储位置。所述存储器的一部分可以被进一步组织为“缓冲存储器”270,用于存储与本发明相关联的某些数据结构。所述处理器和适配器又可以包括被配置用于执行软件代码并且操纵所述数据结构的处理元件和/或逻辑电路。存储操作系统300的部分典型地驻留在存储器中并且由所述处理元件执行,该存储操作系统300在功能上特别通过调用由所述存储系统执行的存储操作来组织所述系统200。对于本领域技术人员来说将显而易见的是,可以使用其他处理和存储器装置(包括各种计算机可读介质)来存储并且执行与这里描述的本发明技术相关的程序指令。
所述存储适配器228与在所述系统200上执行的存储操作系统300协作,以便访问由用户(或客户端)所请求的信息。所述信息可以被存储在任何类型的可写存储设备介质附属阵列上,所述介质例如是录像带、光学介质、DVD、磁带、磁泡存储器、电子随机存取存储器、微电机械介质以及适于存储信息(包括数据和奇偶校验信息)的任何其他类似介质。但是,如在这里作为说明所描述的那样,所述信息优选地被存储在本地存储阵列260的盘230(例如HDD和/或DASD)上。所述存储适配器包括输入/输出(I/O)接口电路,其通过I/O互联布置(例如传统的高性能FC串行链路拓扑)耦合到盘。
在阵列260上的信息存储被优选地实现为一个或多个存储“卷”,其包括协作以定义(多个)卷上的卷块号(vbn)空间的总体逻辑布置的物理存储盘230的集合。每一个逻辑卷通常(但是不必)与其自身的文件系统相关联。逻辑卷/文件系统内的盘典型地被组织为一个或多个群,其中每一个群可以作为一个RAID群来操作。RAID实现方式的一个说明性实例是RAID-4级实现方式,但是应当理解,根据这里描述的本发明原理可以使用其他类型和等级的RAID实现方式。
为了便于访问盘230,所述存储操作系统300实现任意位置写入文件系统,其与虚拟化模块协作以便“虚拟化”由盘230提供的存储空间。所述文件系统在逻辑上把所述信息组织为盘上的目录和文件的分级结构。每一个“盘上”文件可以被实现为盘块的集合,其中所述盘块被配置用于存储诸如数据之类的信息,而所述目录可以被实现为被特殊地格式化的文件,其中存储其他文件和目录的名称以及到所述其他文件和目录的链接。所述虚拟化模块允许所述文件系统进一步在逻辑上把信息组织为被作为逻辑单元(lun)导出的所述盘上的附加数据结构(例如vdisk)的分级结构。
在所述说明性实施例中,所述存储操作系统优选地是可以从Network Appliance,Inc.(Sunnyvale,California)获得的Data ONTAPTM操作系统,其实现Write Anywhere File Layout(WAFLTM)文件系统。但是明确设想到可以增强任何适当的存储操作系统以便根据这里描述的本发明原理来使用。因此,在采用术语“WAFL”时,应当将其广泛地视为指代以另外的方式适合于本发明的教导的任何存储操作系统。
图3是可以有利地与本发明一起使用的存储操作系统300的示意性方框图。所述存储操作系统包括一系列软件层,所述软件层被组织以形成集成网络协议栈,或者更一般地,形成为客户端提供利用块和文件访问协议来访问存储在所述存储系统上的信息的数据路径的多协议引擎。所述协议栈包括网络驱动器(例如千兆比特以太网驱动器)的介质访问层310,其连接到网络协议层、例如IP层312及其支持传输机制、TCP层314以及用户数据报协议(UDP)层316。文件系统协议层提供多协议文件访问,为此,包括对直接访问文件系统(DAFS)协议318、NFS协议320、CIFS协议322以及超文本传输协议(HTTP)协议324的支持。VI层326实现VI体系结构,以便提供所述DAFS协议318所要求的直接访问传输(DAT)能力(例如RDMA)。
iSCSI驱动器层328通过TCP/IP网络协议层提供块协议访问,而FC驱动器层330向所述存储系统发送块访问请求并且从所述存储系统接收响应。所述FC和iSCSI驱动器提供对块的特定于FC和特定于iSCSI的访问控制,并且因而在访问所述存储系统上的块时管理逻辑单元(lun)到iSCSI或FCP或者替代地到iSCSI和FCP的导出。此外,所述存储操作系统包括:被具体化为RAID系统340的盘存储模块,其根据I/O操作管理去往以及来自卷/盘的信息的存储和检索;以及盘驱动器系统350,其实现诸如所述SCS I协议之类的盘访问协议。
虚拟化系统355桥接盘软件层与集成网络协议栈层,该虚拟化系统355由文件系统365实现,该文件系统365与虚拟化模块进行交互,作为说明,所述虚拟化模块例如被具体化为虚拟盘(vdisk)模块370和SCSI目标模块360。作为说明,所述虚拟盘模块370可以在所述文件系统365上被分层,以便允许响应于用户(系统管理员)向所述存储系统发出命令而通过管理接口(例如没有示出的用户接口)来访问。所述SCSI目标模块360被设置在所述FC和iSCSI驱动器328、330与所述文件系统365之间,以便在所述块(逻辑单元(lun))空间与所述文件系统空间之间提供所述虚拟化系统355的翻译层,其中逻辑单元(lun)被表示为块。
作为说明,所述文件系统是基于消息的系统,其提供逻辑卷管理能力以用于访问存储在所述存储设备(例如盘)上的信息。也就是说,除了提供文件系统语义之外,所述文件系统365还提供通常与卷管理器相关联的功能。这些功能包括:(i)盘的聚集、(ii)盘的存储带宽的聚集以及(iii)诸如镜像和/或奇偶校验(RAID)之类的可靠性保证。作为说明,所述文件系统365利用例如4千字节(kB)的块实现具有基于块的盘上格式表示的所述WAFL文件系统(其在下文中一般称作“任意位置写入文件系统”),并且利用索引节点(“inode”)来标识文件和文件属性(例如创建时间、访问许可、尺寸和块位置)。所述文件系统使用文件来存储描述其文件系统的布局的元数据;这些元数据文件特别包括索引节点文件。文件句柄(即包括索引节点号的标识符)被用来从盘中检索索引节点。
宽泛地说,所述任意位置写入文件系统的所有索引节点被组织成索引节点文件。文件系统(FS)信息块指定所述文件系统中的信息布局并且包括文件的索引节点,该文件包括所述文件系统的所有其他索引节点。每一个逻辑卷(文件系统)具有FS信息块,该信息块优选地被存储在例如RAID群内的固定位置处。根FS信息块的索引节点可以直接引用(指向)所述索引节点文件的块,或者可以引用所述索引节点文件的间接块,所述间接块又引用所述索引节点文件的直接块。在所述索引节点文件的每一个直接块内嵌入了索引节点,其中的每一个都可以引用间接块,所述间接块又引用文件的数据块。
在操作上,通过所述计算机网络120把来自所述客户端110的请求作为分组转发并且转发到所述存储系统200上,其中在所述网络适配器226处接收所述请求。(层310或层330)的网络驱动器处理所述分组,并且在适当情况下将其传递到网络协议和文件访问层以便在转发到所述任意位置写入文件系统365之前进行附加的处理。这里,如果所请求的数据不是驻留在“核内”(即在所述缓冲存储器270内),则所述文件系统生成操作以便从盘中加载(检索)所请求的数据。如果所述信息不在所述缓冲存储器内,则所述文件系统365利用索引节点号索引到所述索引节点文件中,以便访问适当的条目并且检索逻辑vbn。所述文件系统随后把包括所述逻辑vbn的消息结构传递到所述RAID系统340;所述逻辑vbn被映射为盘标识符和物理块号(盘,pbn)并且被发送到所述盘驱动器系统350的适当的驱动器(例如SCSI)。所述盘驱动器从所指定的盘访问pbn并且把所请求的(多个)数据块加载在所述缓冲存储器270内以便由所述存储系统进行处理。在完成所述请求时,所述存储系统(和操作系统)通过所述网络120向所述客户端110返回答复。
应当注意到,针对在所述存储系统处接收到的客户端请求执行数据存储访问所需要的穿过上面描述的存储操作系统层的软件“路径”可以替代地用硬件来实现。也就是说,在本发明的一个替代实施例中,存储访问请求数据路径可以被实现为逻辑电路,所述逻辑电路被具体化在现场可编程门阵列(FPGA)或者专用集成电路(ASIC)内。这种类型的硬件实现方式提高由存储系统200响应于由客户端110发出的请求所提供的存储服务的性能。此外,在本发明的另一个替代实施例中,适配器226、228的处理元件可以被配置用于分别从处理器222卸载分组处理和存储访问操作中的一些或全部,从而提高由所述系统提供的存储服务的性能。明确设想到可以用硬件、固件或软件来实现这里描述的各种过程、体系结构和程序。
如这里使用的,术语“存储操作系统”一般指代可操作用于执行存储系统中的存储功能的计算机可执行代码,其例如管理数据访问并且可以在文件服务器的情况下实现文件系统语义。在此意义上,ONTAP软件是这种存储操作系统的一个例子,其被实现为微核并且包括所述WAFL层以便实现所述WAFL文件系统语义以及管理数据访问。所述存储操作系统还可以被实现为在通用操作系统(例如或Windows)上操作的应用程序,或者被实现为具有可配置的功能的通用操作系统,其被配置用于存储如这里描述的应用。
此外,本领域技术人员应当理解,这里描述的本发明技术可以应用于任何类型的专用(例如文件服务器、文件管理器或者多协议存储设备)或通用计算机,其中包括被具体化为或包括存储系统200的独立计算机或其部分。在2002年8月8日提交的标题为“Multi-ProtocolStorage Appliance that provides Integrated Support for File andBlock Access Protocols(提供对文件和块访问协议的集成支持的多协议存储设备)”的序列号为10/215,917的美国专利申请中描述了可以有利地与本发明一起使用的多协议存储设备的一个例子。此外,本发明的教导可以适于多种存储系统体系结构,包括(但不限于)网络附属存储环境、存储区域网络以及直接附属于客户端计算机或主计算机的盘组件。因此,术语“存储系统”应当被广泛地认为除了被配置用于执行存储功能并且与其他设备或系统相关联的任何子系统之外还包括上述装置。
图4是根据本发明的CASAE 400的示意性方框图。作为说明,所述CASAE被具体化为面向块的ASIC元件,其特别包括控制器(例如处理器410和存储器415),该控制器耦合到具有多个(例如8个)盘端口425的盘端口适配器420和具有多个(例如2个)网络端口435(例如千兆字节以太网端口)的网络端口适配器430。所述处理器410适于执行根据本发明的内容可寻址存储计算。所述网络端口435适于把所述CASAE 400通过所述交换结构150耦合到所述存储系统200。所述盘端口425又适于把所述存储资源(例如盘450)耦合到所述CASAE,从而形成CASAE“存储砖”180。
所述CASAE存储砖180的盘450被作为逻辑单元(lun)470导出,其部分被说明性地分配给固件、说明(accounting)(包括这里描述的映射表)以及用户数据(数据块)。此外,所述逻辑单元(lun)470的盘被组织为单个RAID等级实现方式(例如RAID 6)群,其被配置用于提高盘450的可靠性。如果所述盘中的一个或两个发生故障,则所述存储砖180由于RAID 6实现方式特征而继续操作,并且可以在下一预定的停机时间替换或修复(多张)故障盘。但是,所述处理器410的故障导致紧急情况,因为该组件不受RAID实现方式的保护。虽然仍然可以从所述盘读取数据,但是所述存储砖直到故障组件被替换之后才能处理写入操作。
在所述说明性实施例中,文件在所述任意位置写入文件系统中被表示为适于存储在盘上的索引节点数据结构。图5是索引节点500的示意性方框图,该索引节点优选地包括元数据段510和数据段550。存储在每一个索引节点500的元数据段510中的信息描述文件,并且同样地包括文件类型(例如常规、目录、虚拟盘)512、文件尺寸514、文件的时间戳(例如访问和/或修改)516、以及文件的所有者身份、即用户标识符(UID 518)和群ID(GID 520)。但是每一个索引节点的数据段550的内容可以根据类型字段512内定义的文件类型(索引节点)而被不同地解释。例如,目录索引节点的数据段550包含由所述文件系统控制的元数据,而常规索引节点的数据段包含用户(文件系统)数据。在后一种情况下,所述数据段550包括与所述文件相关联的数据的表示。
具体来说,常规盘上索引节点的数据段550可以包括文件系统数据或指针,后者引用盘上的被用来存储文件系统数据的4kB数据块。在给定所述索引节点的受限制尺寸(例如128字节)的情况下,尺寸小于或等于64字节的文件系统数据被完整地表示在该索引节点的数据段内。然而,如果所述文件系统数据大于64字节但是小于或等于64kB,则所述索引节点(例如第1级索引节点)的数据段包括多达16个块指针,其中每一个块指针引用所述盘上的一个4kB数据块。
此外,如果数据的尺寸大于64kB但是小于或等于64兆字节(MB),则所述索引节点(例如第2级索引节点)的数据段550中的每一个指针引用一个间接块(例如第1级块),该间接块包含1024个指针,其中每一个指针引用盘上的4kB数据块。对于尺寸大于64MB的文件系统数据来说,所述索引节点(例如第3级索引节点)的数据段550中的每一个指针引用一个双重间接块(例如第2级块),该双重间接块包含1024个指针,每一个指针引用一个间接(例如第1级)块。所述间接块又包含1024个指针,其中每一个指针引用盘上的4kB数据块。在访问文件时,可以把该文件的每一个块从盘上加载到所述缓冲存储器270中。
在把盘上索引节点(或块)从盘上加载到缓冲存储器270中时,其相应的核内结构嵌入盘上结构。例如,围绕所述索引节点500的虚线表示盘上索引节点结构的核内表示。所述核内结构是存储盘上结构加上在所述存储器中(而不是在盘上)管理数据所需要的附加信息的存储器块。所述附加信息例如可以包括“脏”比特560。在如例如写入操作所指示的那样更新/修改了所述索引节点(或块)中的数据之后,利用所述脏比特560把所述修改过的数据标记为“脏”,以便可以随后把所述索引节点(块)“冲刷”(存储)到盘上。在1998年10月6日出版的David Hitz等人的标题为“Method for MaintainingConsistent States of a File System and for CreatingUser-Accessible Read-Only Copies of a File System(用于保持文件系统的一致状态并且用于产生文件系统的用户可访问的只读拷贝的方法)”的先前合并的美国专利No.5,819,292中公开并描述了所述WAFL文件系统的核内及盘上格式结构,包括索引节点和索引节点文件。
图6是可以有利地与本发明一起使用的文件的缓冲树的示意性方框图。所述缓冲树是被加载到所述缓冲存储器270中并且由所述任意位置写入文件系统365所维持的文件(例如文件600)的块的内部表示。根(顶级)索引节点602(例如所嵌入的索引节点)引用间接(例如第1级)块604。应当注意,取决于所述文件的尺寸,可以有附加等级的(例如第2级、第3级)间接块。所述间接块(和索引节点)包含指针605,所述指针最终引用被用来存储所述文件的实际数据的数据块606。也就是说,文件600的数据被包含在数据块中,并且这些块的位置被存储在所述文件的间接块中。每一个第1级间接块604可以包含指向多达1024个数据块的块指针。根据所述文件系统的“任意位置写入”特性,这些数据块可以位于所述盘(例如盘450)上的任何位置处。
如上所述,本地存储阵列260的盘230被配置用于存储描述由所述CASS 100提供服务的数据容器(例如目录、文件和逻辑单元(lun))的高级元目录,而远程存储阵列460的盘450被配置用于存储那些容器的实际数据块。图7是示出根据本发明的元目录和数据块盘上存储布局700的示意性方框图。具体来说,所述本地存储阵列260包含目录块710,所述目录块具有一个或多个索引节点712,所述索引节点具有引用(指向)文件索引节点720的指针。所述文件索引节点又具有说明性地指向间接块724的指针,所述间接块又具有引用存储在所述远程存储阵列460上的实际数据块726的块指针。因此,文件(以及虚拟盘)的缓冲树的所有元数据(即索引节点和间接块)驻留在存储系统200的本地存储阵列260的盘230上,而所有数据块驻留在所述CASAE存储砖180的远程存储阵列460的盘450上。换句话说,所述本地存储阵列260上的盘(以及卷)存储所述数据容器的所有索引节点和间接块;所述本地存储阵列没有驻留数据块。那些索引节点或间接块中的所有块指针引用存储在所述远程存储阵列460中的一个或多个上的数据块。
作为说明,所述存储系统200与每一块CASAE存储砖180之间的通信是利用涉及SCSI命令描述符块(CDB)消息的存储协议交换来实现的。响应于由客户端发出并且针对存储在砖的逻辑单元(lun)470上的数据容器(例如文件)的写入请求,所述文件系统365与所述RAID系统340协作,以便生成包括操作(例如读取或写入)、块号、状态和数据(例如写入数据)的消息。所述消息随后被传递到所述盘驱动器系统350并且作为SCSI CDB消息被转发到所述存储砖180的CASAE400,所述CASAE 400调用存储计算过程,以便定位其逻辑单元(lun)470上的任何复制数据块。作为响应,所述CASAE向所述存储系统(文件系统)返回SCSI CDB消息,该消息包括所述写入数据在所述逻辑单元(lun)470中的位置的实际pbn。
根据本发明,所述文件系统365采用特殊块号(例如块零)来指示所述CASAE 400对每一个数据块执行内容可寻址存储计算,以便确定数据是否已经被写入到所述逻辑单元(lun)上的某一位置。作为说明,所述存储计算涉及散列函数(例如MD5),这是由于在所述盘上的数据存储涉及大量域空间。作为说明,这里描述的实施例采用MD5散列算法来计算散列密钥,但是对于本领域技术人员来说将显而易见的是,还可以把诸如奇偶校验或者循环冗余校验(CRC)之类的其他散列算法与本发明一起使用。取决于所使用的特定散列算法,最终所得到的散列密钥的计算可能是耗时的。某些散列算法(例如奇偶校验或CRC)的执行可能没有其他散列算法(例如MD5)那么耗时,但是除非所述域极大,否则后面的算法的使用降低冲突的几率。
具体来说,所述CASAE基于所述数据块的内容计算散列密钥(例如一个128比特地址),并且随后确定是否已经为先前存储的数据块生成了所述密钥。在理论上,每一个唯一的数据块计算得到一个新的128比特散列密钥;但是某些块将是相同的,并且因此将会有冲突。如果所述密钥先前已被生成,则执行对具有类似密钥的数据块内容的比较,并且如果所述内容匹配,则递增关于先前存储的数据块的引用计数。随后把所述先前存储的数据块的块号(位置)返回到所述文件系统。另一方面,如果所述散列密钥先前没有被生成或者如果数据内容不匹配,则把所述数据写入到所述逻辑单元(lun)上的下一个可用块位置并且将其位置返回到所述文件系统。
图8是示出所述CASS 100中的存储系统200的操作的程序的流程图。所述程序开始于步骤800并且继续进行到步骤802,在该步骤中,由客户端110发出基于文件或块的写入请求并且在所述存储系统200的所述网络协议栈处接收到该请求。所述写入请求被传递到所述文件系统365,该文件系统在步骤804中把与该请求相关联的写入数据例如记录在NVRAM 229中。在步骤806中,所述存储系统向所述客户端确认所述请求的完成。此后,在写入分配期间,所述文件系统的写入分配器368搜索块分配数据结构以便识别用于所述写入数据的可用存储空间(步骤808),并且为此构造块布局消息(步骤810),该块布局消息标识将被用于存储与所述写入请求相关联的写入数据的数据块。但是,根据本发明的一个方面,所述文件系统365在步骤812中把特殊块号(例如零)插入到所述消息中,并且在步骤814中把该消息传递到所述RAID系统340。
应当注意,所述RAID系统不具有对所述砖180上的远程存储阵列460的几何结构的认识,也就是说,所述砖不把其存储布局导出到所述RAID系统。因此,所述RAID系统340尝试在所有砖180上均匀地平衡写入分配(写入数据)负荷。作为说明,每一块砖180提供1兆兆字节(TB)的存储,并且所述RAID系统尝试以平衡的方式在所述CASS 100的砖上条带化写入数据。为此,所述RAID系统与所述盘驱动器系统350协作,以便创建SCSI CDB消息(包括写入操作和写入数据)并且将其转发到适当的CASAE(步骤816)。在接收到所述写入数据时,所述CASAE400执行这里描述的内容可寻址存储计算,以便确定把所述写入数据存储在所述逻辑单元(lun)470中的位置(步骤818),也就是说确定是否存在包含该数据的复制数据块,并且在步骤820中返回pbn,该pbn表明该块驻留在所述逻辑单元(lun)中的什么地方。
在接收到所述pbn时,所述文件系统365在步骤822中执行“修补”操作,以便校正初始的写入分配假设。也就是说,所述文件系统最初把所述写入数据分配给所述特殊块号零,但是在所述修补操作期间把该特殊块号改变为所述砖上的实际pbn位置。在步骤824中,所述文件系统把(本地存储阵列260中的)所述逻辑单元(lun)470的缓冲树(例如索引节点和/或间接块)指针更新成引用该数据块的pbn位置。所述程序随后在步骤828中结束。
图9是示出由根据本发明的CASAE执行的内容可寻址存储计算的功能方框图。作为说明,CASAE的处理器410利用散列函数930根据写入数据块940的内容计算散列密钥920。随后在内容可寻址映射数据结构中“查找”所得到的散列密钥920,以便确定是否有复制数据块被存储在所述CASAE存储砖180的远程存储阵列460上。所述映射数据结构可以以多种形式来组织,包括被组织为二进制树(B树);但是为了易于描述及理解,所述映射数据结构以表格形式来描绘,例如被描绘为具有通过散列密钥索引的多个条目910的映射表900。
作为说明,所述映射表900的每一个条目910包含:散列密钥字段912;pbn指针字段914,其被配置用于引用所述远程存储阵列460的盘450上的先前存储的数据块(也就是说,该字段不保存所述数据块的实际内容);以及引用计数字段916。应当注意,可能存在具有与所得到的散列密钥920相匹配的散列密钥912的多个条目910,但是索引用数据块的内容可能不相同。假设在散列密钥920与条目910a的散列密钥912a之间产生匹配。比较器950把写入数据块940的内容与(如通过条目910a中的pbn指针914a引用的)从盘450检索的写入数据块的内容进行比较。如果所述块的内容匹配,则所述数据是复制品,并且递增条目910a中的引用计数916a。如所述的,所述CASAE 400随后把pbn指针914a的拷贝返回到所述文件系统365,就好像其实际上已把所述写入数据块940存储在该位置处一样。
递增后的引用计数916也被反映在存储在所述本地存储阵列260上的适当的索引节点722或间接块724中。利用所述pbn指针914a的所述拷贝,所述文件系统365与所述RAID系统340协作以执行所述修补操作,以便更新所述逻辑单元(lun)470的缓冲树中的适当的索引节点或间接块的引用计数。基本上,在本地存储阵列260中把所述逻辑单元(lun)470的一个或多个缓冲树(例如索引节点和/或间接块)指针更新成引用该数据块的pbn位置。
但是,如果在散列密钥920与条目910的散列密钥912之间不存在匹配或者如果所述密钥匹配但是数据块的内容不匹配,则数据不是复制品,并且把写入数据块940写入到所述逻辑单元(lun)470上的下一个可用pbn块位置并且将其位置返回到所述文件系统。应当注意,如果所述数据块的内容不匹配,则不遍历表900的其他条目910。这里,在绝对数据比较与性能之间进行折衷。即使可能存在其他复制数据块,但是这种复制品存在的几率(特别在使用所述MD5散列函数时)也相当低;因此,到内容可寻址映射表900中的索引在第一次散列密钥“命中”时停止。随后把所述写入数据块940存储在新的pbn位置处,并且在所述表900中创建新条目910b。具体来说,利用所得到的散列密钥920来填充所述新条目的散列密钥字段912b,并且利用下一个可用位置的pbn指针来填充pbn指针字段914b。此外,所述引用计数字段916b被设置为仅仅引用单个写入数据块940(例如被设置为引用计数1)。
图10是示出所述CASS 100中的CASAE 400的操作的程序的流程图。所述程序开始于步骤1000并且继续进行到步骤1002,在该步骤中,所述CASAE接收来自所述存储系统的所述SCSI CDB消息,包括所述写入操作和写入数据。在步骤1004中,所述CASAE处理器执行所述内容可寻址存储计算,以便根据写入数据块的内容计算散列密钥。应当注意,所述散列密钥是在4k字节的基础上计算的,也就是说是对每一个数据块的写入数据内容计算的。随后在所述映射表中“查找”所得到的散列密钥,以便确定在所述CASAE的所述远程存储阵列上是否存在复制块。
具体来说,把所计算的散列密钥与所述表中的条目的散列密钥进行比较,以便确定是否存在匹配(步骤1006)。如果存在匹配(步骤1008),则在步骤1010中把数据块的内容与先前存储的块内容进行比较。如果数据内容比较导致匹配(步骤1012),则写入数据是复制品,并且所述CASAE在步骤1016中(向所述存储系统)返回所述写入数据块的pbn位置,其中所述数据被存储在逻辑单元(lun)中的该pbn位置(其在该情况下是匹配的写入数据块的先前位置)处。否则,所述写入数据不是复制品,并且相应地在步骤1014中把所述写入数据块存储在所述逻辑单元(lun)上的下一个可用pbn块位置中,并且在步骤1016中把所述块的pbn位置返回到所述存储系统,其中所述数据被存储在逻辑单元(lun)中的该pbn位置处。所述程序随后在步骤1018中结束。
在这里描述的说明性实施例中,每一块存储砖180都可以对其自身的存储空间进行数据压缩(去复制),但是无法对另一块砖的空间进行去复制。也就是说,如果被写入到第一块砖的数据块是先前被写入到第二块砖的相同的块,则将存在该块的两个拷贝。通过允许每一块砖仅仅管理其自身的存储空间,冲突域被限制于可以被存储在一块砖上的多个4k块,即1TB的存储。此外,所述存储计算有利地分布在所有存储砖上。例如,假设每一块砖需要花费1毫秒来计算所述MD5散列密钥。利用8块砖,在1毫秒内执行对32k字节的写入数据的计算,而不是在单个砖上顺序地执行所述计算的情况下的8毫秒。
虽然示出并描述了被配置用于消除存储在存储资源上的复制数据的存储系统的CASAE的说明性实施例,但是应当理解,在本发明的精神和范围内可以进行各种其他适配和修改。例如,在一个替代实施例中,可以把本发明扩展到所述存储砖180中的另一个pbn到实际pbn映射层,从而所述砖可以针对被写入到其中的每一个块返回唯一的块号(即使某些块可能在内部指向相同的块也是如此)。以这样的方式,所述文件系统假设所述写入数据块总是新分配的。
前面的描述是针对本发明的特定实施例的。但是将显而易见的是,在获得所描述的实施例的某些或全部优点的情况下可以对所描述的实施例进行其他改变和修改。例如,明确设想到可以把本发明的教导实现为软件(包括具有在计算机上执行的程序指令的计算机可读介质)、硬件、固件或其组合。因此,应当仅仅把本说明书视为举例,而不是将其视为限制本发明的范围。因此,所附权利要求的目的是覆盖落在本发明的真实精神和范围内的所有这种改变和修改。
Claims (21)
1、一种用于管理存储系统的存储资源的方法,该方法包括以下步骤:
执行内容可寻址存储计算,以便根据被写入到所述资源的第一数据块的内容计算密钥;
把所计算的密钥与映射表中的条目的密钥进行比较,以便确定是否存在匹配;
如果存在匹配,则把所述第一数据块的内容与先前存储在所述资源上的第二数据块的内容进行比较;以及
如果对数据块内容的比较导致匹配,则递增关于先前存储的数据块的引用计数,从而防止在所述存储资源上存储复制数据块内容。
2、权利要求1的方法,还包括以下步骤:把所述先前存储的数据块的块号位置提供给所述存储系统。
3、权利要求1的方法,还包括以下步骤:如果所述密钥不匹配或者所述数据块内容不匹配,则
把所述第一数据块写入到所述存储资源上的下一个可用块位置;以及
把下一个可用位置的块号提供给所述存储系统。
4、权利要求1的方法,其中,执行内容可寻址存储计算的步骤包括以下步骤:利用散列函数来计算所述密钥。
5、一种被配置用于管理存储系统的存储资源的系统,该系统包括:
内容可寻址存储阵列元件,被配置用于:(i)基于被写入到所述资源的第一数据块的内容计算密钥;(ii)确定是否已经为先前存储在所述资源上的第二数据块生成了所述密钥;如果是的话,(iii)比较数据块内容;以及如果存在匹配,(iv)递增关于先前存储的数据块的引用计数。
6、权利要求5的系统,其中,所述内容可寻址存储阵列元件被进一步配置用于把所述先前存储的数据块的块号位置返回到与所述元件相耦合的存储系统。
7、权利要求6的系统,其中,所述块号位置是存储在所述存储资源上的逻辑单元的物理块号。
8、权利要求5的系统,其中,如果没有为先前存储在所述资源上的所述第二数据块生成所述密钥或者在所述数据块内容之间不存在匹配,则所述内容可寻址存储阵列元件被进一步配置用于把所述第一数据块写入到所述存储资源上的下一个可用块位置并且把下一个可用位置的块号返回到与所述元件相耦合的存储系统。
9、权利要求5的系统,其中,利用散列函数来计算所述密钥。
10、权利要求9的系统,其中,所述散列函数包括MD5散列算法。
11、权利要求5的系统,还包括映射数据结构,所述映射数据结构被所述内容可寻址存储阵列元件用来确定是否为所述第二数据块生成了所述密钥。
12、权利要求11的系统,其中,所述映射数据结构是具有多个条目的表,其中每一个条目包含散列密钥、被配置用于引用先前存储在所述存储资源上的数据块的指针以及引用计数。
13、权利要求5的系统,其中,所述内容可寻址存储阵列元件被进一步配置用于防止在所述存储资源上存储复制数据块内容。
14、一种适于管理存储系统的存储资源的设备,该设备包括:
用于执行内容可寻址存储计算以便根据被写入到所述资源的第一数据块的内容计算密钥的装置;
用于把所计算的密钥与映射表中的条目的密钥进行比较以便确定是否存在匹配的装置;
如果存在匹配,用于把所述第一数据块的内容与先前存储在所述资源上的第二数据块的内容进行比较的装置;以及
如果对数据块内容的比较导致匹配,用于递增关于先前存储的数据块的引用计数从而防止在所述存储资源上存储复制数据块内容的装置。
15、权利要求14的设备,还包括用于把所述先前存储的数据块的块号位置提供给所述存储系统的装置。
16、权利要求14的设备,还包括:如果所述密钥不匹配或者所述数据块内容不匹配:
用于把所述第一数据块写入到所述存储资源上的下一个可用块位置的装置;以及
用于把下一个可用位置的块号提供给所述存储系统的装置。
17、权利要求14的设备,其中,用于执行内容可寻址存储计算的装置包括用于利用散列函数来计算所述密钥的装置。
18、一种计算机可读介质,包含管理存储系统的存储资源的可执行程序指令,所述可执行指令包括一个或多个程序指令,用于:
执行内容可寻址存储计算,以便根据被写入到所述资源的第一数据块的内容计算密钥;
把所计算的密钥与映射表中的条目的密钥进行比较,以便确定是否存在匹配;
如果存在匹配,则把所述第一数据块的内容与先前存储在所述资源上的第二数据块的内容进行比较;以及
如果对数据块内容的比较导致匹配,则递增关于先前存储的数据块的引用计数,从而防止在所述存储资源上存储复制数据块内容。
19、权利要求18的计算机可读介质,还包括用于把所述先前存储的数据块的块号位置提供给所述存储系统的一个或多个程序指令。
20、权利要求18的计算机可读介质,还包括用于在所述密钥不匹配或者所述数据块内容不匹配的情况下用于执行以下操作的一个或多个程序指令:
把所述第一数据块写入到所述存储资源上的下一个可用块位置;以及
把下一个可用位置的块号提供给所述存储系统。
21、权利要求18的计算机可读介质,其中,用于执行所述内容可寻址存储计算的所述一个或多个程序指令包括用于利用散列函数来计算所述密钥的一个或多个程序指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/340,308 | 2006-01-26 | ||
US11/340,308 US7734603B1 (en) | 2006-01-26 | 2006-01-26 | Content addressable storage array element |
PCT/US2007/001909 WO2007089502A1 (en) | 2006-01-26 | 2007-01-25 | Content addressable storage array element |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101410783A true CN101410783A (zh) | 2009-04-15 |
CN101410783B CN101410783B (zh) | 2011-05-25 |
Family
ID=38048045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800110029A Active CN101410783B (zh) | 2006-01-26 | 2007-01-25 | 内容可寻址存储阵列元件 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7734603B1 (zh) |
EP (1) | EP1977308B1 (zh) |
JP (1) | JP5121731B2 (zh) |
CN (1) | CN101410783B (zh) |
WO (1) | WO2007089502A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102844734A (zh) * | 2010-04-14 | 2012-12-26 | 国际商业机器公司 | 使用动态块大小粒度来为计算群集中的不同类型的应用优化文件系统 |
CN102884502A (zh) * | 2010-05-20 | 2013-01-16 | 国际商业机器公司 | 管理对在存储器件之间迁移的磁道延伸区的写入操作 |
CN104679442A (zh) * | 2013-12-02 | 2015-06-03 | 中兴通讯股份有限公司 | 一种提高磁盘阵列性能的方法及装置 |
CN104778192A (zh) * | 2013-11-21 | 2015-07-15 | 阿普赛尔有限公司 | 表示可内容寻址存储系统的目录结构 |
CN110781160A (zh) * | 2019-10-15 | 2020-02-11 | 北亚企安科技(北京)有限公司 | 基于VMware虚拟化文件系统损坏的数据恢复方法 |
CN111143233A (zh) * | 2018-11-01 | 2020-05-12 | 三星电子株式会社 | 存储设备及操作存储设备的方法 |
Families Citing this family (121)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020046061A1 (en) | 2000-02-11 | 2002-04-18 | Wright Kenneth L. | Personal information system |
US20040133606A1 (en) * | 2003-01-02 | 2004-07-08 | Z-Force Communications, Inc. | Directory aggregation for files distributed over a plurality of servers in a switched file system |
US7512673B2 (en) * | 2001-01-11 | 2009-03-31 | Attune Systems, Inc. | Rule based aggregation of files and transactions in a switched file system |
US8239354B2 (en) | 2005-03-03 | 2012-08-07 | F5 Networks, Inc. | System and method for managing small-size files in an aggregated file system |
US7509322B2 (en) | 2001-01-11 | 2009-03-24 | F5 Networks, Inc. | Aggregated lock management for locking aggregated files in a switched file system |
US8195760B2 (en) | 2001-01-11 | 2012-06-05 | F5 Networks, Inc. | File aggregation in a switched file system |
US7562110B2 (en) | 2001-01-11 | 2009-07-14 | F5 Networks, Inc. | File switch and switched file system |
US7685126B2 (en) | 2001-08-03 | 2010-03-23 | Isilon Systems, Inc. | System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system |
US8051425B2 (en) | 2004-10-29 | 2011-11-01 | Emc Corporation | Distributed system with asynchronous execution systems and methods |
US8238350B2 (en) | 2004-10-29 | 2012-08-07 | Emc Corporation | Message batching with checkpoints systems and methods |
US8055711B2 (en) | 2004-10-29 | 2011-11-08 | Emc Corporation | Non-blocking commit protocol systems and methods |
US7885970B2 (en) | 2005-01-20 | 2011-02-08 | F5 Networks, Inc. | Scalable system for partitioning and accessing metadata over multiple servers |
US7958347B1 (en) | 2005-02-04 | 2011-06-07 | F5 Networks, Inc. | Methods and apparatus for implementing authentication |
US7797283B2 (en) * | 2005-10-21 | 2010-09-14 | Isilon Systems, Inc. | Systems and methods for maintaining distributed data |
US7788303B2 (en) * | 2005-10-21 | 2010-08-31 | Isilon Systems, Inc. | Systems and methods for distributed system scanning |
US7917474B2 (en) | 2005-10-21 | 2011-03-29 | Isilon Systems, Inc. | Systems and methods for accessing and updating distributed data |
US7551572B2 (en) | 2005-10-21 | 2009-06-23 | Isilon Systems, Inc. | Systems and methods for providing variable protection |
US7848261B2 (en) | 2006-02-17 | 2010-12-07 | Isilon Systems, Inc. | Systems and methods for providing a quiescing protocol |
US7756898B2 (en) | 2006-03-31 | 2010-07-13 | Isilon Systems, Inc. | Systems and methods for notifying listeners of events |
US8417746B1 (en) | 2006-04-03 | 2013-04-09 | F5 Networks, Inc. | File system management with enhanced searchability |
AU2007247939B2 (en) | 2006-05-05 | 2012-02-09 | Hybir Inc. | Group based complete and incremental computer file backup system, process and apparatus |
JP4676378B2 (ja) * | 2006-05-18 | 2011-04-27 | 株式会社バッファロー | データ記憶装置およびデータ記憶方法 |
US8185751B2 (en) * | 2006-06-27 | 2012-05-22 | Emc Corporation | Achieving strong cryptographic correlation between higher level semantic units and lower level components in a secure data storage system |
US7822932B2 (en) | 2006-08-18 | 2010-10-26 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7680842B2 (en) | 2006-08-18 | 2010-03-16 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7590652B2 (en) * | 2006-08-18 | 2009-09-15 | Isilon Systems, Inc. | Systems and methods of reverse lookup |
US7899800B2 (en) | 2006-08-18 | 2011-03-01 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7680836B2 (en) | 2006-08-18 | 2010-03-16 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7882071B2 (en) | 2006-08-18 | 2011-02-01 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US8286029B2 (en) | 2006-12-21 | 2012-10-09 | Emc Corporation | Systems and methods for managing unavailable storage devices |
US20080155191A1 (en) * | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
US7593938B2 (en) | 2006-12-22 | 2009-09-22 | Isilon Systems, Inc. | Systems and methods of directory entry encodings |
US7509448B2 (en) | 2007-01-05 | 2009-03-24 | Isilon Systems, Inc. | Systems and methods for managing semantic locks |
US8966080B2 (en) | 2007-04-13 | 2015-02-24 | Emc Corporation | Systems and methods of managing resource utilization on a threaded computer system |
US7779048B2 (en) | 2007-04-13 | 2010-08-17 | Isilon Systems, Inc. | Systems and methods of providing possible value ranges |
US7900015B2 (en) | 2007-04-13 | 2011-03-01 | Isilon Systems, Inc. | Systems and methods of quota accounting |
US8682916B2 (en) | 2007-05-25 | 2014-03-25 | F5 Networks, Inc. | Remote file virtualization in a switched file system |
US8028106B2 (en) | 2007-07-06 | 2011-09-27 | Proster Systems, Inc. | Hardware acceleration of commonality factoring with removable media |
US7882068B2 (en) * | 2007-08-21 | 2011-02-01 | Isilon Systems, Inc. | Systems and methods for adaptive copy on write |
JP5060876B2 (ja) * | 2007-08-30 | 2012-10-31 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの消費電力低減方法 |
US7870409B2 (en) * | 2007-09-26 | 2011-01-11 | Hitachi, Ltd. | Power efficient data storage with data de-duplication |
JP5331323B2 (ja) | 2007-09-26 | 2013-10-30 | 株式会社日立製作所 | ストレージサブシステム及びその制御方法 |
US8548953B2 (en) * | 2007-11-12 | 2013-10-01 | F5 Networks, Inc. | File deduplication using storage tiers |
US8180747B2 (en) | 2007-11-12 | 2012-05-15 | F5 Networks, Inc. | Load sharing cluster file systems |
US8117244B2 (en) * | 2007-11-12 | 2012-02-14 | F5 Networks, Inc. | Non-disruptive file migration |
US20090204650A1 (en) * | 2007-11-15 | 2009-08-13 | Attune Systems, Inc. | File Deduplication using Copy-on-Write Storage Tiers |
US8352785B1 (en) | 2007-12-13 | 2013-01-08 | F5 Networks, Inc. | Methods for generating a unified virtual snapshot and systems thereof |
US8447938B2 (en) * | 2008-01-04 | 2013-05-21 | International Business Machines Corporation | Backing up a deduplicated filesystem to disjoint media |
US20090196425A1 (en) * | 2008-02-06 | 2009-08-06 | Dean Boland | Method for Authenticating Electronically Stored Information |
US20090259617A1 (en) * | 2008-04-15 | 2009-10-15 | Richard Charles Cownie | Method And System For Data Management |
US8266114B2 (en) | 2008-09-22 | 2012-09-11 | Riverbed Technology, Inc. | Log structured content addressable deduplicating storage |
US9098495B2 (en) * | 2008-06-24 | 2015-08-04 | Commvault Systems, Inc. | Application-aware and remote single instance data management |
US8549582B1 (en) | 2008-07-11 | 2013-10-01 | F5 Networks, Inc. | Methods for handling a multi-protocol content name and systems thereof |
EP2329424B1 (en) | 2008-08-22 | 2016-12-07 | Datcard Systems, Inc. | System and method of encryption for dicom volumes |
US8316064B2 (en) | 2008-08-25 | 2012-11-20 | Emc Corporation | Method and apparatus for managing data objects of a data storage system |
US8074049B2 (en) * | 2008-08-26 | 2011-12-06 | Nine Technology, Llc | Online backup system with global two staged deduplication without using an indexing database |
US10642794B2 (en) * | 2008-09-11 | 2020-05-05 | Vmware, Inc. | Computer storage deduplication |
JP5313600B2 (ja) * | 2008-09-16 | 2013-10-09 | 株式会社日立製作所 | ストレージシステム、及びストレージシステムの運用方法 |
US8788519B2 (en) | 2008-10-24 | 2014-07-22 | John C. Canessa | System and methods for metadata management in content addressable storage |
US8315992B1 (en) * | 2008-11-26 | 2012-11-20 | Symantec Corporation | Affinity based allocation for storage implementations employing deduplicated data stores |
JP5321029B2 (ja) * | 2008-12-10 | 2013-10-23 | 日本電気株式会社 | 負荷軽減装置および負荷軽減方法 |
JP4962483B2 (ja) * | 2008-12-19 | 2012-06-27 | 日本電気株式会社 | 情報処理装置 |
JP5413948B2 (ja) * | 2009-01-27 | 2014-02-12 | 日本電気株式会社 | ストレージシステム |
JP5391705B2 (ja) * | 2009-01-27 | 2014-01-15 | 日本電気株式会社 | ストレージシステム |
US8375182B2 (en) * | 2009-02-10 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | System and method for segmenting a data stream |
JP5216915B2 (ja) * | 2009-02-25 | 2013-06-19 | 株式会社日立製作所 | ストレージ装置 |
US20110307457A1 (en) * | 2009-03-05 | 2011-12-15 | Hitachi Solutions, Ltd. | Integrated duplicate elimination system, data storage device, and server device |
JP4900850B2 (ja) * | 2009-04-01 | 2012-03-21 | 日本電気株式会社 | ディスクアレイ装置、ディスクアレイ装置の管理方法及びプログラム |
US20100281207A1 (en) * | 2009-04-30 | 2010-11-04 | Miller Steven C | Flash-based data archive storage system |
WO2010135430A1 (en) | 2009-05-19 | 2010-11-25 | Vmware, Inc. | Shortcut input/output in virtual machine systems |
US10721269B1 (en) | 2009-11-06 | 2020-07-21 | F5 Networks, Inc. | Methods and system for returning requests with javascript for clients before passing a request to a server |
US8458233B2 (en) * | 2009-11-25 | 2013-06-04 | Cleversafe, Inc. | Data de-duplication in a dispersed storage network utilizing data characterization |
US9195500B1 (en) | 2010-02-09 | 2015-11-24 | F5 Networks, Inc. | Methods for seamless storage importing and devices thereof |
US8204860B1 (en) | 2010-02-09 | 2012-06-19 | F5 Networks, Inc. | Methods and systems for snapshot reconstitution |
JP5585116B2 (ja) * | 2010-02-19 | 2014-09-10 | 日本電気株式会社 | ストレージシステム |
US8407244B2 (en) | 2010-04-23 | 2013-03-26 | Datcard Systems, Inc. | Management of virtual packages of medical data in interconnected content-addressable storage systems |
US10025734B1 (en) * | 2010-06-29 | 2018-07-17 | EMC IP Holding Company LLC | Managing I/O operations based on application awareness |
US8347100B1 (en) | 2010-07-14 | 2013-01-01 | F5 Networks, Inc. | Methods for DNSSEC proxying and deployment amelioration and systems thereof |
US9286298B1 (en) | 2010-10-14 | 2016-03-15 | F5 Networks, Inc. | Methods for enhancing management of backup data sets and devices thereof |
JP2013543198A (ja) * | 2010-11-16 | 2013-11-28 | アクティフィオ インコーポレイテッド | データ管理仮想化のためのシステムおよび方法 |
WO2012078898A2 (en) | 2010-12-10 | 2012-06-14 | Datcard Systems, Inc. | Secure portable medical information access systems and methods related thereto |
KR101252375B1 (ko) * | 2010-12-28 | 2013-04-08 | 한양대학교 산학협력단 | 저장 장치의 중복 제거 성능 향상을 위한 맵핑 관리 시스템 및 방법 |
JP5673232B2 (ja) * | 2011-03-09 | 2015-02-18 | 日本電気株式会社 | ストレージシステム |
US9383928B2 (en) * | 2011-06-13 | 2016-07-05 | Emc Corporation | Replication techniques with content addressable storage |
US9639591B2 (en) * | 2011-06-13 | 2017-05-02 | EMC IP Holding Company LLC | Low latency replication techniques with content addressable storage |
US8396836B1 (en) | 2011-06-30 | 2013-03-12 | F5 Networks, Inc. | System for mitigating file virtualization storage import latency |
US9501421B1 (en) * | 2011-07-05 | 2016-11-22 | Intel Corporation | Memory sharing and page deduplication using indirect lines |
US8463850B1 (en) | 2011-10-26 | 2013-06-11 | F5 Networks, Inc. | System and method of algorithmically generating a server side transaction identifier |
US9020912B1 (en) | 2012-02-20 | 2015-04-28 | F5 Networks, Inc. | Methods for accessing data in a compressed file system and devices thereof |
US9141631B2 (en) | 2012-04-16 | 2015-09-22 | International Business Machines Corporation | Table boundary detection in data blocks for compression |
US20130282672A1 (en) * | 2012-04-18 | 2013-10-24 | Hitachi Computer Peripherals Co., Ltd. | Storage apparatus and storage control method |
US8799746B2 (en) | 2012-06-13 | 2014-08-05 | Caringo, Inc. | Erasure coding and replication in storage clusters |
US9104560B2 (en) | 2012-06-13 | 2015-08-11 | Caringo, Inc. | Two level addressing in storage clusters |
US8762353B2 (en) | 2012-06-13 | 2014-06-24 | Caringo, Inc. | Elimination of duplicate objects in storage clusters |
US9519501B1 (en) | 2012-09-30 | 2016-12-13 | F5 Networks, Inc. | Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system |
US9317218B1 (en) | 2013-02-08 | 2016-04-19 | Emc Corporation | Memory efficient sanitization of a deduplicated storage system using a perfect hash function |
US9430164B1 (en) | 2013-02-08 | 2016-08-30 | Emc Corporation | Memory efficient sanitization of a deduplicated storage system |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
US9554418B1 (en) | 2013-02-28 | 2017-01-24 | F5 Networks, Inc. | Device for topology hiding of a visited network |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US10061514B2 (en) | 2015-04-15 | 2018-08-28 | Formulus Black Corporation | Method and apparatus for dense hyper IO digital retention |
US20170031940A1 (en) * | 2015-07-31 | 2017-02-02 | Netapp, Inc. | Compression file structure |
JP6419662B2 (ja) * | 2015-08-25 | 2018-11-07 | 株式会社東芝 | ストレージシステム及びデータ重複検出方法 |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US10797888B1 (en) | 2016-01-20 | 2020-10-06 | F5 Networks, Inc. | Methods for secured SCEP enrollment for client devices and devices thereof |
US10412198B1 (en) | 2016-10-27 | 2019-09-10 | F5 Networks, Inc. | Methods for improved transmission control protocol (TCP) performance visibility and devices thereof |
US10567492B1 (en) | 2017-05-11 | 2020-02-18 | F5 Networks, Inc. | Methods for load balancing in a federated identity environment and devices thereof |
US10700711B1 (en) | 2017-11-03 | 2020-06-30 | Caringo Inc. | Multi-part upload and editing of erasure-coded objects |
WO2019126072A1 (en) | 2017-12-18 | 2019-06-27 | Formulus Black Corporation | Random access memory (ram)-based computer systems, devices, and methods |
US11223689B1 (en) | 2018-01-05 | 2022-01-11 | F5 Networks, Inc. | Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof |
US10833943B1 (en) | 2018-03-01 | 2020-11-10 | F5 Networks, Inc. | Methods for service chaining and devices thereof |
WO2019231761A1 (en) * | 2018-05-31 | 2019-12-05 | Secturion Systems, Inc. | Locally-stored remote block data integrity |
US12003422B1 (en) | 2018-09-28 | 2024-06-04 | F5, Inc. | Methods for switching network packets based on packet data and devices |
US10725853B2 (en) | 2019-01-02 | 2020-07-28 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
CN113448499A (zh) * | 2020-03-25 | 2021-09-28 | 华为技术有限公司 | 存储系统、数据处理方法、装置、节点以及存储介质 |
US11704035B2 (en) | 2020-03-30 | 2023-07-18 | Pure Storage, Inc. | Unified storage on block containers |
US11934893B2 (en) | 2021-07-06 | 2024-03-19 | Pure Storage, Inc. | Storage system that drives an orchestrator based on events in the storage system |
US11816356B2 (en) | 2021-07-06 | 2023-11-14 | Pure Storage, Inc. | Container orchestrator-aware storage system |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4156907A (en) | 1977-03-02 | 1979-05-29 | Burroughs Corporation | Data communications subsystem |
US4399503A (en) | 1978-06-30 | 1983-08-16 | Bunker Ramo Corporation | Dynamic disk buffer control unit |
US4598357A (en) | 1980-11-14 | 1986-07-01 | Sperry Corporation | Cache/disk subsystem with file number for recovery of cached data |
US4837675A (en) | 1981-10-05 | 1989-06-06 | Digital Equipment Corporation | Secondary storage facility empolying serial communications between drive and controller |
JPS60142418A (ja) | 1983-12-28 | 1985-07-27 | Hitachi Ltd | 入出力エラ−回復方式 |
US4775932A (en) * | 1984-07-31 | 1988-10-04 | Texas Instruments Incorporated | Computer memory system with parallel garbage collection independent from an associated user processor |
US4896259A (en) | 1984-09-07 | 1990-01-23 | International Business Machines Corporation | Apparatus for storing modifying data prior to selectively storing data to be modified into a register |
JPS61141056A (ja) | 1984-12-14 | 1986-06-28 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 揮発性メモリの間欠エラ−検出方法 |
US4805090A (en) | 1985-09-27 | 1989-02-14 | Unisys Corporation | Peripheral-controller for multiple disk drive modules having different protocols and operating conditions |
US4761785B1 (en) | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
USRE34100E (en) | 1987-01-12 | 1992-10-13 | Seagate Technology, Inc. | Data error correction system |
US4899342A (en) | 1988-02-01 | 1990-02-06 | Thinking Machines Corporation | Method and apparatus for operating multi-unit array of memories |
US4864497A (en) | 1988-04-13 | 1989-09-05 | Digital Equipment Corporation | Method of integrating software application programs using an attributive data model database |
US4993030A (en) | 1988-04-22 | 1991-02-12 | Amdahl Corporation | File system for a plurality of storage classes |
US4989206A (en) | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US5124987A (en) | 1990-04-16 | 1992-06-23 | Storage Technology Corporation | Logical track write scheduling system for a parallel disk drive array data storage subsystem |
US5155835A (en) | 1990-11-19 | 1992-10-13 | Storage Technology Corporation | Multilevel, hierarchical, dynamically mapped data storage subsystem |
US5426747A (en) | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
JP3160106B2 (ja) | 1991-12-23 | 2001-04-23 | ヒュンダイ エレクトロニクス アメリカ | ディスクアレーの区分け方法 |
US5581724A (en) | 1992-10-19 | 1996-12-03 | Storage Technology Corporation | Dynamically mapped data storage subsystem having multiple open destage cylinders and method of managing that subsystem |
JP3751018B2 (ja) | 1993-06-03 | 2006-03-01 | ネットワーク・アプライアンス・インコーポレイテッド | ライトエニウエアファイルシステムレイアウト |
US5446888A (en) * | 1994-01-14 | 1995-08-29 | Pyne; Charles F. | Remote file transfer method and apparatus |
US5990810A (en) * | 1995-02-17 | 1999-11-23 | Williams; Ross Neil | Method for partitioning a block of data into subblocks and for storing and communcating such subblocks |
US5732265A (en) | 1995-11-02 | 1998-03-24 | Microsoft Corporation | Storage optimizing encoder and method |
JP2944496B2 (ja) * | 1996-01-29 | 1999-09-06 | 日本電気ソフトウェア株式会社 | 画像データ格納制御装置 |
US6073209A (en) * | 1997-03-31 | 2000-06-06 | Ark Research Corporation | Data storage controller providing multiple hosts with access to multiple storage subsystems |
GB2341715A (en) | 1998-09-17 | 2000-03-22 | Springtek Limited | Magnetic disk redundant array |
US6421767B1 (en) * | 2000-02-23 | 2002-07-16 | Storage Technology Corporation | Method and apparatus for managing a storage system using snapshot copy operations with snap groups |
JP2001309219A (ja) * | 2000-04-20 | 2001-11-02 | Fuji Photo Film Co Ltd | 画像転送システム |
US6636879B1 (en) | 2000-08-18 | 2003-10-21 | Network Appliance, Inc. | Space allocation in a write anywhere file system |
JP3899795B2 (ja) * | 2000-09-21 | 2007-03-28 | 日本電気株式会社 | ファイル管理システムおよび方法 |
US6516380B2 (en) | 2001-02-05 | 2003-02-04 | International Business Machines Corporation | System and method for a log-based non-volatile write cache in a storage controller |
US7073044B2 (en) | 2001-03-30 | 2006-07-04 | Intel Corporation | Method and apparatus for sharing TLB entries |
US7593972B2 (en) * | 2001-04-13 | 2009-09-22 | Ge Medical Systems Information Technologies, Inc. | Application service provider based redundant archive services for medical archives and/or imaging systems |
US6643654B1 (en) | 2001-06-25 | 2003-11-04 | Network Appliance, Inc. | System and method for representing named data streams within an on-disk structure of a file system |
US7200715B2 (en) * | 2002-03-21 | 2007-04-03 | Network Appliance, Inc. | Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes |
US6862674B2 (en) * | 2002-06-06 | 2005-03-01 | Sun Microsystems | Methods and apparatus for performing a memory management technique |
US7873700B2 (en) | 2002-08-09 | 2011-01-18 | Netapp, Inc. | Multi-protocol storage appliance that provides integrated support for file and block access protocols |
KR100490723B1 (ko) * | 2002-11-29 | 2005-05-24 | 한국전자통신연구원 | 파일 레벨 스트라이핑 장치 및 방법 |
US7373345B2 (en) * | 2003-02-21 | 2008-05-13 | Caringo, Inc. | Additional hash functions in content-based addressing |
US7092759B2 (en) | 2003-07-30 | 2006-08-15 | Medtronic, Inc. | Method of optimizing cardiac resynchronization therapy using sensor signals of septal wall motion |
US7076622B2 (en) * | 2003-09-30 | 2006-07-11 | International Business Machines Corporation | System and method for detecting and sharing common blocks in an object storage system |
US7281006B2 (en) | 2003-10-23 | 2007-10-09 | International Business Machines Corporation | System and method for dividing data into predominantly fixed-sized chunks so that duplicate data chunks may be identified |
US7117204B2 (en) | 2003-12-03 | 2006-10-03 | International Business Machines Corporation | Transparent content addressable data storage and compression for a file system |
JP2005295151A (ja) * | 2004-03-31 | 2005-10-20 | Canon Inc | 文書管理装置及びその制御方法、プログラム |
US7213022B2 (en) | 2004-04-29 | 2007-05-01 | Filenet Corporation | Enterprise content management network-attached system |
US7409494B2 (en) | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Extension of write anywhere file system layout |
US7430571B2 (en) * | 2004-04-30 | 2008-09-30 | Network Appliance, Inc. | Extension of write anywhere file layout write allocation |
JP4315876B2 (ja) * | 2004-08-17 | 2009-08-19 | 富士通株式会社 | ファイル管理プログラム、ファイル管理方法、及びファイル管理装置 |
US20070088702A1 (en) | 2005-10-03 | 2007-04-19 | Fridella Stephen A | Intelligent network client for multi-protocol namespace redirection |
-
2006
- 2006-01-26 US US11/340,308 patent/US7734603B1/en active Active
-
2007
- 2007-01-25 CN CN2007800110029A patent/CN101410783B/zh active Active
- 2007-01-25 JP JP2008552386A patent/JP5121731B2/ja active Active
- 2007-01-25 EP EP07709813.5A patent/EP1977308B1/en active Active
- 2007-01-25 WO PCT/US2007/001909 patent/WO2007089502A1/en active Application Filing
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102844734A (zh) * | 2010-04-14 | 2012-12-26 | 国际商业机器公司 | 使用动态块大小粒度来为计算群集中的不同类型的应用优化文件系统 |
CN102844734B (zh) * | 2010-04-14 | 2016-02-10 | 国际商业机器公司 | 用于为计算群集中的不同类型的应用优化文件系统的方法和系统 |
CN102884502A (zh) * | 2010-05-20 | 2013-01-16 | 国际商业机器公司 | 管理对在存储器件之间迁移的磁道延伸区的写入操作 |
CN102884502B (zh) * | 2010-05-20 | 2015-01-14 | 国际商业机器公司 | 管理对在存储器件之间迁移的磁道延伸区的写入操作 |
US9218141B2 (en) | 2010-05-20 | 2015-12-22 | International Business Machines Corporation | Managing write operations to an extent of tracks migrated between storage devices |
CN104778192A (zh) * | 2013-11-21 | 2015-07-15 | 阿普赛尔有限公司 | 表示可内容寻址存储系统的目录结构 |
CN104679442A (zh) * | 2013-12-02 | 2015-06-03 | 中兴通讯股份有限公司 | 一种提高磁盘阵列性能的方法及装置 |
CN111143233A (zh) * | 2018-11-01 | 2020-05-12 | 三星电子株式会社 | 存储设备及操作存储设备的方法 |
CN110781160A (zh) * | 2019-10-15 | 2020-02-11 | 北亚企安科技(北京)有限公司 | 基于VMware虚拟化文件系统损坏的数据恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2007089502A1 (en) | 2007-08-09 |
US7734603B1 (en) | 2010-06-08 |
CN101410783B (zh) | 2011-05-25 |
JP2009524882A (ja) | 2009-07-02 |
JP5121731B2 (ja) | 2013-01-16 |
EP1977308B1 (en) | 2013-12-25 |
EP1977308A1 (en) | 2008-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101410783B (zh) | 内容可寻址存储阵列元件 | |
US10248660B2 (en) | Mechanism for converting one type of mirror to another type of mirror on a storage system without transferring data | |
US8495417B2 (en) | System and method for redundancy-protected aggregates | |
US8560503B1 (en) | Content addressable storage system | |
US8832363B1 (en) | Clustered RAID data organization | |
CN102460439B (zh) | 通过条带式文件系统中的容量平衡进行数据分布 | |
CN105659213B (zh) | 无共享分布式存储系统中的目标驱动独立数据完整性和冗余恢复 | |
CN102667727B (zh) | 用于实现从多达n个存储设备失效恢复的n路奇偶校验技术 | |
US11063601B1 (en) | File system format for persistent memory | |
US8601214B1 (en) | System and method for write-back cache in sparse volumes | |
WO2021216491A1 (en) | Persistent memory architecture | |
US11740822B2 (en) | Methods and systems for error detection and correction in a distributed storage system | |
US11669259B2 (en) | Methods and systems for methods and systems for in-line deduplication in a distributed storage system | |
US12066897B2 (en) | Persistent memory file system reconciliation | |
US20220318188A1 (en) | Coordinating snapshot operations across multiple file systems | |
JP2008539521A (ja) | 瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法 | |
US6976146B1 (en) | System and method for emulating block appended checksums on storage devices by sector stealing | |
US11762682B2 (en) | Methods and systems for storing data in a distributed system using offload components with advanced data services | |
US11892983B2 (en) | Methods and systems for seamless tiering in a distributed storage system | |
US11579976B2 (en) | Methods and systems parallel raid rebuild in a distributed storage system | |
US11922071B2 (en) | Methods and systems for storing data in a distributed system using offload components and a GPU module | |
US20220350933A1 (en) | Methods and systems for securing data in a distributed storage system |
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 | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: NETAPP incorporated company Address before: American California Patentee before: Network Appliance Inc. |