CN104699420A - 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法 - Google Patents

允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法 Download PDF

Info

Publication number
CN104699420A
CN104699420A CN201410675211.5A CN201410675211A CN104699420A CN 104699420 A CN104699420 A CN 104699420A CN 201410675211 A CN201410675211 A CN 201410675211A CN 104699420 A CN104699420 A CN 104699420A
Authority
CN
China
Prior art keywords
data
storage
memory
block
driver
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.)
Pending
Application number
CN201410675211.5A
Other languages
English (en)
Inventor
杰弗里·S·巴拉尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Deluobo Corp
Original Assignee
Deluobo Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Deluobo Corp filed Critical Deluobo Corp
Publication of CN104699420A publication Critical patent/CN104699420A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/325Display of status information by lamps or LED's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/11Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/327Table of contents
    • G11B27/329Table of contents on a disc [VTOC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1004Adaptive RAID, i.e. RAID system adapts to changing circumstances, e.g. RAID1 becomes RAID5 as disks fill up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1023Different size disks, i.e. non uniform size of disks in RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/40Combinations of multiple record carriers
    • G11B2220/41Flat as opposed to hierarchical combination, e.g. library of tapes or discs, CD changer, or groups of record carriers that together store one title
    • G11B2220/415Redundant array of inexpensive disks [RAID] systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/60Solid state media
    • G11B2220/65Solid state media wherein solid state memory is used for storing indexing information or metadata

Abstract

允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法。一种允许各种规模的存储装置的动态地可扩展和可收缩的容错存储系统。如果可能的话,就冗余地跨一个或多个存储装置存储数据。随着存储装置的添加或删除,自动再配置跨一个或多个存储装置的数据布局,以尽可能地为数据提供适当级别的冗余。可以采用基于散列函数的压缩技术,从而降低存储器的消耗。还公开了释放未使用存储块的技术。

Description

允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法
本申请是分案申请,原案申请的国际申请日为2005年11月4日,国际申请号为PCT/US2005/040291,进入中国国家阶段日期为2007年7月4日,国家申请号为200580045895.X。
技术领域
本发明涉及数字数据存储系统和方法,更具体地涉及那些提供容错存储的系统和方法。
背景技术
已知现有技术依照根据各种RAID(独立磁盘冗余阵列)协议的任何一种的模式来提供冗余磁盘存储器。使用RAID模式的典型磁盘阵列是需要由经验丰富的信息技术人员来管理的复杂结构。而且在许多使用RAID模式的阵列设计中,如果所述阵列中的各磁盘驱动器是非均匀容量的,那么该设计可能不能够使用超过该阵列中最小驱动器容量的驱动器上的任何容量。
使用标准RAID系统的一个问题是盘面损坏可能发生在磁盘阵列中不经常使用的区域。在另一个驱动器故障的情况下,并不总是能确定发生了损坏。在这种情况下,当所述RAID阵列重构所述故障驱动器时,损坏的数据可能被传播和保存。
在许多存储系统中,按就绪状态(ready state)维持备用存储设备,使得其可以在另一个存储设备故障时被使用。这种备用存储设备通常被称作“热后备”。所述热后备在存储设备常规操作期间并不用于存储数据。当运行的存储设备故障时,该故障存储设备由该热后备逻辑上替换,而且要移动数据或者通过其他方式在所述热后备上再产生数据。当修复或者更换所述故障存储设备时,典型地要移动数据或者通过其他方式在(重新)运行的存储设备上重新产生这些数据,而且使所述热后备脱机,以准备好在另一个故障事件中使用。热后备的维护通常是复杂的,并因此通常由经验丰富的管理者进行操纵。热后备磁盘同样代表着附加费用。
发明内容
本发明的第一实施例提供了一种方法,用于在包括至少一个存储装置的存储装置组中存储数据。所述方法包括根据多种冗余模式自动确定一种混合冗余模式,用于在该存储装置组中存储数据,以提供容错功能,并在该存储装置组正好包括多个存储容量不同的装置时提供改善存储效率;以及利用混合冗余模式在该存储装置组中存储数据。
在相关实施例中,所述方法还包括,自动再配置利用第一种冗余模式先前存储在第一种布置的各存储装置中的数据,以利用下述之一进行存储:(a)相同布置的各存储装置上的第二种冗余模式,(b)不同布置的各存储装置上的第二种冗余模式,以及(c)不同布置的各存储装置上的相同冗余模式,用于在无数据损失情况下适应空间的扩展和收缩中的至少一个,所述扩展是通过向该组中添加其它存储装置实现的,而所述收缩是通过从该组中移除存储装置实现的。
在本发明的第二实施例中提供了一种方法,用于按允许存储装置组动态扩展和收缩的方式,在包括至少一个存储装置的存储装置组中存储数据。该方法包括利用第一种冗余模式在存储装置组中存储数据,根据存储装置组的构成的变化,利用下述之一自动再配置该存储装置组上的数据:(a)相同布置的存储装置上的第二种冗余模式,(b)不同布置的存储装置的第二种冗余模式,以及(c)不同布置的存储装置上的相同冗余模式。
在本发明的第三实施例中,提供了一种用于存储数据的系统,包括具有至少一个存储装置的存储装置组,以及利用混合冗余模式在该存储装置组中存储数据的存储管理器。存储管理器自动从多个冗余模式中确定所述混合冗余模式,用于在该存储装置组中存储数据,以提供容错功能,并在该存储装置组正好包括多个存储容量不同的装置时提供改善的存储效率。
在相关实施例中,存储管理器自动再配置利用第一种冗余模式先前存储在第一种布置的存储装置中的数据,以利用下述之一进行存储:(a)相同布置的存储装置上的第二种冗余模式,(b)不同布置的存储装置上的第二种冗余模式,以及(c)不同布置的存储装置上的相同冗余模式,用于无数据损失地适应空间的扩展和收缩中的至少一个,所述扩展是通过向组中添加其它存储装置实现的,而所述收缩是通过从组中移除存储装置实现的。
在本发明第四实施例中,提供了一种用于存储数据的系统,包括至少具有一个存储装置的存储装置组,以及在该存储装置组中存储数据的存储管理器。所述存储管理器利用第一冗余模式在该存储装置组中存储数据,根据存储装置组的构成的变化,利用下述之一自动再配置该存储装置组上的数据:(a)相同布置的存储装置上的第二种冗余模式,(b)不同布置的存储装置的第二种冗余模式,以及(c)不同布置的存储装置上的相同冗余模式。
在相关实施例中,可以从包括下述的组中选择所述冗余模式,即,镜像、具有奇偶校验的条带化、RAID6、双奇偶校验、对角线奇偶校验、低密度奇偶校验检测码以及turbo码。
在相关实施例中,通过下述方式可以再配置数据,即,把跨两个存储装置的镜像模式转换为单个存储装置上的镜像模式;把跨第一对存储装置的镜像模式转换为跨第二对存储装置的镜像模式;把跨三个存储装置的条带化模式转换为跨两个存储装置的镜像模式;把跨第一组多个存储装置的第一条带化模式转换为跨第二组多个存储装置的第二条带化模式;把跨一个存储装置的镜像模式转换为跨两个存储装置的镜像模式;把一个存储装置上的镜像模式转换为另一个存储装置上的镜像模式;把跨两个存储装置的镜像模式转换为跨三个存储装置的条带化模式;把跨第一组多个存储装置的第一条带化模式转换为跨包括添加到所述组的存储装置的第二组多个存储装置的第二条带化模式。
在另一个相关实施例中,可以把对象分析为块(chunk),每个块都具有特定的内容,并且在存储系统中只存储具有唯一性内容的块。所述块能够根据预定散列函数被标识为具有唯一性内容。在该实施例中,只存储标识为唯一的块可以涉及为每个块计算散列号,并在存储系统中存储与所存储的块的散列号相联系的对象的唯一标识符及其位置信息。存储用于对象的唯一标识符涉及使用对象表,该对象表列出用于该对象的唯一标识符以及用于所存储块的散列号。存储位置信息可涉及在块表中存储用于每个存于其中的块列表,包括块在存储系统中的物理位置的表示。存储在存储系统中的对象可以被转换为单个存储装置以及文件系统和对象存储系统中的至少一个的表示。可以管理存储系统中块的物理存储分配,从而提供容错存储,甚至在存储系统可能包括各种容量的存储装置时。一旦从存储系统中取出特定的块,就根据所存储的块的散列号检验所取出块的内容。例如,通过计算取出块的散列号;以及对计算出的散列号与为所述块相应存储的散列号进行比较。
在本发明的又一实施例中,提供了一种在存储装置组中存储数据的方法,包括利用至少一种冗余模式在存储装置组中存储数据,检测存储装置从所述组中的移除,利用剩下的存储装置再配置被移除的存储装置中的数据部分,检测被移除的存储装置是否重新插入所述组中,释放对应于所述部分的重新插入的存储装置中的区域,以及刷新所述重新插入的存储装置的所有剩余部分,该部分可能在移除和重新插入时被更改。
在本发明的又一实施例中,提供了一种在存储系统中释放未使用的存储块的方法,该方法包括标识空闲块,为所述空闲块确定逻辑扇区地址,根据所述逻辑扇区地址为所述空闲块标识聚簇存取存取表项,与所述聚簇存取表项相关的引用计数递减,以及如果被递减的引用计数为0的话就释放该块。
在相关实施例中,标识所述空闲块包括标识与主机文件系统关联的空闲块位图,以及分析所述空闲块位图以标识不再被文件系统使用的聚簇。标识与主机文件系统关联的空闲块位图包括维持分区表,分析该分区表以定位操作系统分区,分析操作系统分区以定位超块;以及根据超块标识主机文件系统。可以制作空闲块位图的工作副本,其中所述空闲块位图的工作副本被分析以标识文件系统不再使用的聚簇。
附图说明
通过参考下列附图参照下列详细说明,本发明上述特征将变得更加容易理解,其中:
图1示出本发明的实施例,其中将对象分析为一系列存储块。
图2是说明在相同实施例中块的容错存储模式如何根据附加更多存储器而动态改变。
图3说明本发明另一实施例,在使用不同大小存储设备构造的存储系统上按不同容错模式的块的存储。
图4说明本发明的另一个实施例,其中指示器状态用于警告无效存储使用和低等级容错。
图5是根据本发明实施例的所述数据存储、检索和再布局中使用的功能模块框图。
图6表示在包含两个以上驱动器的阵列中使用镜像的示例。
图7表示使用不同布局模式以存储其数据的一些示例性存储区。
图8表示用于实施后备卷(sparse volume)的查找表。
图9表示根据本发明示例性实施例的状态指示器,其用于具有可用存储空间并按容错方式操作的示例性阵列。
图10表示根据本发明示例性实施例的状态指示器,其用于不具有足够空间以维护冗余数据存储并必须增加更大空间的示例性阵列。
图11表示根据本发明示例性实施例的状态指示器,其不能够维护故障情况下的冗余数据。
图12表示根据本发明示例性实施例的示例性阵列的状态指示器,其中存储设备已经故障。用存储设备填充插槽B、C、和D。
图13示出的模块层次表示示例性实施例的不同软件层以及它们彼此如何相关。
图14表示根据本发明实施例的聚簇存取表如何用于访问存储区中的数据聚簇。
图15表示根据本发明实施例的日志表更新。
图16表示根据本发明实施例的驱动器布局。
图17示出了根据本发明实施例的存储区0的布局和其他存储区如何被参照。
图18说明了根据本发明实施例的读差错处理。
图19说明了根据本发明实施例的写差错处理。
图20是根据本发明实施例的逻辑流程图,其说明了通过差错管理程序的坏区域备份。
图21是根据本发明实施例的示意框图,其表示存储阵列的相关组件。
图22是根据本发明实施例的逻辑流程图,其表示管理虚拟热后备的示例性逻辑。
图23是根据本发明实施例的逻辑流程图,其说明确定每个可能磁盘故障的再布局情况的示例性逻辑,如图22的框2102。
图24是根据本发明实施例的逻辑流程图,其表示调用虚拟热后备功能的示例性逻辑。
图25是根据本发明实施例的逻辑流程图,其表示自动再配置一个或多个剩余驱动器以恢复数据容错的示例性逻辑,如图24的框2306。
图26是根据本发明实施例的逻辑流程图,其用于升级存储设备。
具体实施方式
如在本说明书和权利要求书中使用的,除非上下文另有要求,下面术语具有如下所解释的意思。
对象的“块(chunk)”是对象的提取片,由所使用的物理存储独立地形成,且典型地是对象的固定数量的连续字节。
数据存储的容错“模式”是指在一个或者多个存储设备上冗余地分布数据的特定方式,并且除了其他的,可以是:镜像(mirroring,例如按类似RAID1的方式)、条带化(striping,例如按类似RAID5的方式)、RAID6、双奇偶校验、对角线奇偶校验、低密度奇偶校验码、涡轮式码、或者其他冗余模式或者这些冗余模式的组合。
当给定块所产生的散列号通常与其他任何块的散列号都不同时,除非当其他块具有与该给定块相同的数据内容,该给定块的散列号是“唯一的(unique)”。即,当两个块的内容不相同,通常将具有不同散列号。如下们所要进一步详细描述的,在本上下文中,术语“唯一的”用于覆盖由那些偶尔对不同的块产生相同散列号的散列函数所产生的散列号,因为散列函数通常不能完美地在对不同的块产生不同的数。
“区域(region)”是存储介质(例如硬盘驱动器)上的一组连续物理块。
“存储区(zone)”是由两个或以上的区域组成的。组成存储区的各区域通常不需要连续。如下面示例性实施例所述,存储区存储相当于1GB的数据或者控制信息。
“聚簇(cluster)”是存储区中的单元尺寸,并表示压缩单位(下面论述)。如下面所述的示例性实施例所述,聚簇是4KB(即八个512字节的扇区)并且实质上等同于块。
“冗余集(redundant set)”是对一组数据提供冗余的一组扇区/聚簇。
“备份区域(backing up a region)”涉及将一个区域的内容复制到另一个区域。
存储设备的“第一对”和“第二对”可以包括公共的存储设备。
存储设备的“第一组多个”和“第二组多个”可以包括一个或者多个公共的存储设备。
存储设备的“第一布置”和“第二布置”或者“不同布置”可以包括一个或多个公共的存储设备。
图1是本发明实施例的说明,其中,将对象(object)分析成一系列用于存储的块(chunk),在本例中对象是文件(file)。开始,文件11被传递到存储软件,在其中被指定为对象12并被分配一个唯一对象标识号,在此是#007。在对象表13中形成新项131,用来表示这个新对象的分配。现在该对象被分析成数据“块”121、122、和123,它们是固定长度的对象段。每个块都经过散列算法,该算法返回块的唯一散列号。以后这个算法可以应用于检索块,并且结果与原始散列相比较以确保重试块与存储的相同。所述每个块的散列号按对象132的项行存储在对象表13中,以便于以后所述完成对象可以通过所述各块的集合进行检索。
同样在图1中,所述块散列现在与块表14中现有项进行比较。任何匹配现有项141的散列都已经存储并且因此不采取任何行动(即数据不会再次存储,导致对象的自动压缩)。新散列(在块表14中没有对应项的一个)被输入块表141。然后块中的数据以最有效容错存储方式存储在可用存储设备151、152、和153上。这种方法可例如导致所述块数据按镜像方式存储在包括一个或者两个设备的存储系统上,或者按奇偶校验条带化存储在具有两个以上存储设备的系统。这种数据将在物理位置1511、1521、和1531存储在存储设备上,而且这些位置和位置编号将存储在块表列143和142中,使得以后可以定位和检索块的所有物理部分。
图2说明在相同实施例中块的容错存储模式如何根据增加更多附加存储而动态改变。特别地,图2示出了一旦附加存储被添加到整个系统,块的物理存储如何在所述存储设备上按新模式来布局。在图2(a)中,所述存储系统包括两个存储设备221和222,而块数据在位置2211和2221被物理镜像到所述两个存储设备上以提供容错。在图2(b)中,添加第三存储设备223,以奇偶校验条带化方式存储所述块成为可能,这种模式较之所述镜像模式是更有效的存储。所述块按新模式布局在三个物理位置2311、2321、和2331,占用更少比例的可用存储。更新所述块表21以表现在三个位置212新布局,并且还在213记录新的块物理位置2311、2321、和2331。
图3示出根据本发明实施例的成熟存储系统,其已经运行一段时间。该图说明了各块如何随时间在存储容量变化的存储设备上进行物理存储。该图示出包括40GB的存储设备31、80GB的存储设备32和120GB的存储设备33的存储系统。最初,各块按容错条带化模式34来存储,直到40GB存储设备31变满。然后,由于缺乏存储空间,新数据就按镜像模式存储到80GB32和120GB33存储设备的可用空间上。一旦80GB存储设备32满了,则新数据按单个硬盘容错模式37来布局。尽管存储设备包括用于存储数据的单一存储池(pool),如按块存储的数据本身已经按多种不同模式来存储。
图4说明本发明另一实施例,其中指示器状态用于警告低效的存储使用和低级的容错。在图4A中,全部三个存储设备41、42和43具有空闲空间,而指示灯44是绿色以表示数据以有效和容错方式存储。在图4B中,40GB存储设备41已经变满了,因此新数据可按镜像模式只能存储在具有剩余空闲空间的两个存储设备42和43上。为了表示数据仍然十分冗余但不能有效存储,指示灯44变成黄色。在图4C中,仅120GB存储设备43具有空闲空间剩余,因此全部新数据可以按镜像模式仅存储在这一台设备43上。因为容错性不强并且系统临界地缺乏空间,因此指示灯44变红以指示需要增加更多存储。
在一个替换实施例中,为阵列中每台驱动器/插槽提供指示器,例如,以三色灯形式(例如绿、黄、红)。在一个特定实施例中,所述灯用于照亮具有发光效果的硬盘机柜的整个前面。控制这些灯不仅用于指示该系统的整体状态,还用于指示哪个驱动器/插槽需要加以注意(若有的话)。每个三色灯都可以处于至少四种状态:分别是关闭、绿色、黄色、红色。如果特定插槽为空且系统按充足存储和冗余在运行因此不需要在插槽中安装驱动器,则相应插槽的灯可以处于关闭状态。如果相应驱动器充足并且不需要替换,则特定插槽的灯可以置于绿色状态。如果系统运行在降级,则可以将特定插槽的灯置于黄色状态,以建议用较大驱动器替换相应驱动器。如果相应驱动器必须安装或者替换,则特定插槽的灯可以置于红色状态。如果需要或者期望的话,可以指示附加状态,例如,通过在开启状态和关闭状态之间闪烁灯或者在两种不同颜色(例如在替换驱动器之后并且进行数据重新布局时在红色和绿色之间闪烁灯)。下面说明示例性实施例的附加细节。
当然,可以使用其他指示技术来指示系统状态和驱动器/插槽状态。例如,单个LCD显示器可以用于指示系统状态,并且如果需要的话,可以指示需要注意的插槽号。同样,可以使用其他类型指示器(例如,系统单个状态指示器(例如绿色/黄色/红色),还有每个插槽的插槽指示器或者灯)。
图5是根据本发明实施例的数据存储、检索和重新布局中使用的功能模块框图,如上与图1至3相关的讨论。通信的公共入口和出口点是对象界面511,用于将对象传递给系统用于存储或者从系统检索对象,框界面512,它让存储系统看来像是一个更大的存储设备,以及CIFS接口513,它让存储系统看来像是Windows文件系统。当这些界面需要数据存储时,数据被传递到块分析器52,所述分析器52将数据分析为块,并在对象表512中创建初始项(如上与图1相关的讨论)。这些块被传递散列码生成器53,散列码生成器53产生每个块的相关联散列码,并将其输入到对象表中,这样与每个对象相关联的各块被列出512。块散列号与块表531中的项进行比较。在发现匹配时,该新块被废弃,因为它与已经存储在该存储系统中的某个块相同。如果块是新的,则在块表531中为其建立新项,而且将散列的块传递到物理存储管理器54。该物理存储管理器以可能的最有效模式在可用存储设备571、572、和573上存储该块,并在块表531中制作相应项以表示哪里已经发生该块的物理存储,使得以后可以在512检索该块的内容(如上与图1的相关讨论)。
图5中由对象界面511、框界面512或者CIFS界面513的数据检索通过向检索管理器56请求来执行,检索管理器查询对象表521以确定哪个块包括该对象,然后从物理存储器54请求这些块。所述物理存储管理器54询问块表格531以确定所请求的块存储在哪里,然后检索它们并将完成数据(对象)传递回检索管理器56,检索管理器56向请求界面返回该数据。图5还包括容错管理器(FTL)55,其不断扫描块表以确定块是否以可能的最有效方式存储。(这可能由于添加和去除存储设备571、572、和573而改变。)如果块不是以最有效方式存储,则FTL将请求物理存储管理器创建该块的新布局模式并更新块表531。这样全部数据对构成该阵列的若干存储设备按可能的最有效方式来存储(如上与图2和3相关的讨论)。
下面提供本发明示例性实施例的其他细节。
数据布局模式——存储区(zone)
除了其他,存储区影响隐式冗余和存储在盘上的实际数据的盘再布局。存储区在不影响存储区用户的情况下使得可增加和改变的附加布局方法。
存储阵列在盘上按称作存储区的虚拟分段来布局数据。存储区存储给定的和固定数量的数据(例如1G字节)。存储区驻留在单个盘或者跨越一个或者多个驱动器。存储区的物理布局以特定于该存储区的形式提供冗余。
图6示出在包含两个以上驱动器的阵列中使用镜像的示例。图7示出使用不同布局模式来存储它们的数据的一些示例存储区。该图假定存储区存储1GB数据。注意以下几点:
i)跨多个驱动器的存储区不需要在整个集合中使用到驱动器的相同偏移。
ii)单个驱动器镜像需要2G的存储量来存储1G的数据。
iii)双驱动器镜像需要2G存储量来存储1G的数据。
iv)3驱动器条带化需要1.5GB存储量来存储1G的数据。
v)4驱动器条带化需要1.33GB存储量来存储1G的数据。
vi)存储区A、存储区B等是任意的存储区名。在实际实施例中每个存储区都用唯一编号来标识。
vii)虽然通过该图隐含,存储区不是必须在盘上连续的(见后面所述的区域)。
viii)为什么镜像被限于(不超过)两个驱动器没有技术原因。例如,在三个驱动器的系统1中,数据的副本可存储在1驱动器上,且半数镜像数据可以存储在另外两个驱动器的每个上。同样,数据可跨三个驱动器来镜像,一半数据在两个驱动器的每个上以及一半镜像在其他两个驱动器上。
数据布局模式——区域(region)
每个盘都分割为一组相等尺寸的区域。区域的尺寸比存储区小得多,存储区由来自一个或者多个盘的一个或者多个区域构成。为了有效使用盘空间,区域的尺寸典型地是不同存储区尺寸和阵列所支持的不同盘数量的公因数。在示例性实施例中,区域是存储区数据尺寸的1/12。下面的表列出了根据本发明示例性实施例的各种布局的区域/存储区的数量和区域/盘的数量。
布局方法 区域/存储区的数量 区域/盘的数量
1驱动器镜像 24 24
2驱动器镜像 24 12
3驱动器条带化 18 6
4驱动器条带化 16 4
各区域可以标记为:使用、空闲或者损坏。当创建存储区时,选择来自适当盘的一组空闲区域并登记到表中。这些区域可以是任何任意顺序而且不需要在盘上连续。当从存储区读取或者向其写入数据时,存取被重定向到适当区域。除了其他,这允许以灵活和有效的方式发生数据再布局。随着时间的过去,不同尺寸的存储区将可能发生存储碎片化(fragmentation),使得许多盘区太小而不能保持完整存储区。通过使用适当区域尺寸,所有存储片所遗留的间隙都将至少是一个区域的尺寸,这些小间隙易于重用,而不必重新分段整个盘。
数据布局模式——再布局
为了便于实施,可以强制扩展和收缩的固定顺序。例如,如果突然增加两个驱动器,存储区的扩展可以经过中间扩展,就像增加一个驱动器一样,然后执行第二扩展以结合第二个驱动器。或者,包含多个驱动器的扩展和收缩可以自动处理,不需要中间步骤。
在任何再布局之前,所需空间都必须是可用的。这应当在开始再布局之前计算,以确保不会发生不必要的再布局。
数据布局模式——驱动器扩展
下面根据本发明示例性实施例描述从单驱动器镜像扩展为双驱动器镜像的一般过程:
i)假定单驱动器镜像具有数据‘A’和镜像‘B’
ii)在驱动器上分配12个区域以扩展存储区到‘C’
iii)复制镜像‘B’到区域集‘C’
iv)任何已经复制的对数据的写都必须镜像到‘C’中的适当位置
v)当完成复制时,使用新布局类型更新存储区表并利用指向‘C’的指针来替换指向‘B’的指针
vi)将构成‘B’的区域标记为空闲的。
下面根据本发明示例性实施例,描述从双驱动器镜像扩展为具有奇偶校验的三驱动器条带化的一般过程:
i)假定一个驱动器具有数据‘A’而第二驱动器具有镜像‘B’
ii)为奇偶校验信息‘C’在第三驱动器上分配6个区域
iii)使用‘A’的第一组6区域和‘B’的第二组6区域计算奇偶校验信息
iv)在‘C’中放置奇偶校验信息
v)任何已经处理的对数据的写都必须奇偶校验到‘C’中适当位置
vi)当复制完成时,用新布局类型点表将存储区表更新为‘A’的前一半,‘B’和‘C’的后一半
vii)标记‘A’的前一半和‘B’的前一半为空闲
下面描述根据本发明示例性实施例的从三驱动器条带化扩展为具有奇偶校验的四驱动器条带化的一般过程:
i)假定一个驱动器具有数据‘A’,第二驱动器具有数据‘B’而第三个具有奇偶校验‘P’
ii)对条带数据‘C’在第四驱动器上分配四个区域
iii)将‘A’的最后两个区域复制到‘C’的最初两个区域
iv)将‘B’的最初两个区域复制到‘C’的最后区域
v)在奇偶校验驱动器‘D’上分配四个区域
vi)使用A、C的最初四个区域和B的最后四个区域计算奇偶校验信息
vii)在‘D’中放置奇偶校验信息
viii)任何已经处理的对数据的写都必须奇偶校验到‘D’中适当位置
ix)用新布局类型和点表更新存储区表为‘A’‘C’的最初四区域、‘B’和‘D’的其次四区域
x)标记‘A’的最后两区域和‘B’的最初两区域为空闲。
数据布局模式——驱动器收缩
驱动器收缩在盘去除或者故障时发生。在这种情况下,如果可能的话,阵列收缩数据使全部存储区返回到冗余状态。驱动器收缩比扩展稍微复杂,由于要做更多选择。但是,在布局方法之间的转换按照与扩展相类似的方式发生,但要反过来。保持要再生的数据量为最小以使得尽快实现冗余。在空间可用时,驱动器收缩通常一次处理一个存储区,直到全部存储区被再布局。
选择如何收缩
下表描述根据本发明示例性实施例的用于需要再布局的每个存储区决策树:
下面描述根据本发明示例性实施例的从双驱动器镜像收缩为单驱动器镜像的一般过程:
i)假定单驱动器镜像具有数据‘A’和缺失的镜像‘B’或者反过来
ii)在包含‘A’的驱动器上分配12个区域作为‘C’
iii)将数据‘A’复制到区域集‘C’
iv)任何已经复制的对数据的写都必须镜像到‘C’中适当位置
v)当复制完成时,用新布局类型更新存储区表并用指向‘C’的指针替换指向‘B’的指针
下面说明根据本发明示例性实施例的从三驱动器条带化收缩为双驱动器镜像(缺失奇偶校验)的一般过程:
i)假定所述条带由不同驱动器上的数据块‘A’、‘B’、‘C’组成。缺失奇偶校验‘C’。
ii)定义‘A’为包括该存储区的前一半,而‘B’为该存储区的后一半。
iii)在‘A’驱动器上分配6个区域的‘D’并在‘B’驱动器上分配6个区域的‘E’。
iv)将‘A’复制到‘E’。
v)将‘B’复制到‘D’。
vi)任何已经复制的对数据的写都必须镜像到‘D’和‘E’中的适当位置
vii)当复制完成时,用新布局类型更新存储区表并将指针设置到指向‘A’/‘D’和‘E’/‘B’
下面说明根据本发明示例性实施例的从三驱动器条带化收缩为双驱动器镜像(缺失数据)的一般过程:
i)假定所述带由不同驱动器上的数据块‘A’‘B’‘C’组成。缺失数据‘C’。
ii)定义‘A’为包括该存储区的前一半,而‘C’为该存储区的后一半。
iii)在‘A’驱动器上分配6个区域的‘D’并在‘B’驱动器上分配12个区域的‘E’。
iv)将‘A’复制到‘E’的前一半。
v)重构从‘A’和‘B’缺失的数据。将数据写入‘D’。
vi)将‘D’复制到‘E’的后一半。
vii)任何已经复制的对数据的写都必须镜像到‘D’和‘E’中的适当位置
viii)当复制完成时,用新布局类型更新存储区表并将指针设置为指向‘A’/‘D’和‘E’
ix)将‘B’区域标记为空闲。
下面说明根据本发明示例性实施例的从四驱动器条带化收缩为三驱动器条带化(缺失奇偶校验)的一般过程:
i)假定所述条带由不同驱动器上的数据块‘A’‘B’‘C’和‘D’组成。缺失奇偶校验‘D’。
ii)定义‘A’为包括存储区的前三分之一,‘B’为第二个三分之一,而‘C’为第三个三分之一。
iii)在‘A’驱动器上分配2个区域的‘G’,在‘C’驱动器上分配2个区域的‘E’并在‘B’驱动器上分配6个区域的‘F’。
iv)将‘B’的前一半复制到‘G’。
v)将‘B’的后一半复制到‘E’。
vi)从‘A’/‘G’和‘E’/‘C’构造奇偶校验并将其写入‘F’。
vii)任何已经复制的对数据的写都必须镜像到‘D’、‘E’和‘F’中的适当位置
viii)当复制完成时,用新布局类型更新存储区表并将指针设置为指向‘A’/‘G’、‘E’/‘C’和‘F’
ix)将‘B’区域标记为空闲。
下面说明根据本发明示例性实施例的从四驱动器条带化收缩为三驱动器条带化(缺失前1/3)的一般过程:
i)假定所述条带由不同驱动器上的数据块‘A’‘B’‘C’和‘D’组成。缺失数据‘A’。
ii)定义‘A’为包括存储区的前三分之一,‘B’为第二个三分之一而‘C’为第三个三分之一以及‘D’为奇偶校验。
iii)在‘B’驱动器上分配4个区域的‘E’,在‘C’驱动器上分配2个区域的‘F’并在‘D’驱动器上分配6个区域的‘G’。
iv)将‘B’的后一半复制到‘F’。
v)根据‘B’、‘C’和‘D’构造缺失数据并写入‘E’
vi)根据‘E’、‘B’的前一半和‘F’/‘C’构造新奇偶校验并写入‘G’
vii)任何已经复制的对数据的写都必须镜像到‘B’、‘E’、‘F’和‘G’中的适当位置
viii)当复制完成时,用新布局类型更新存储区表并将指针设置为指向‘E’、‘B’的前一半和‘F’/‘C’以及‘G’
ix)将‘B’的后一半和‘D’区域标记为空闲。
下面说明根据本发明示例性实施例的从四驱动器条带化收缩为三驱动器条带化(缺失第二个1/3)的一般过程:
i)假定所述条带由不同驱动器上的数据块‘A’‘B’‘C’和‘D’组成。缺失数据‘B’。
ii)定义‘A’为包括存储区的前三分之一,‘B’为第二个三分之一而‘C’为第三个三分之一以及‘D’为奇偶校验。
iii)在‘A’驱动器上分配2个区域的‘E’,在‘C’驱动器上分配2个区域的‘F’并在‘D’驱动器上分配6个区域的‘G’。
iv)根据‘A’的前一半、‘C’的前一半和‘D’的前一半构造缺失数据并写入‘E’
v)从‘A’的后一半、‘C’的后一半和‘D’的后一半构造缺失数据并写入‘F’
vi)从‘A’/‘E’和‘F’/‘C’构造新奇偶校验并写入‘G’
vii)任何已经复制的对数据的写都必须镜像到‘E’、‘F’和‘G’中的适当位置
viii)当复制完成时,用新布局类型更新存储区表并将指针设置为指向‘E’‘F’以及‘G’
ix)将‘D’区域标记为空闲。
下面说明根据本发明示例性实施例的从四驱动器条带化收缩为三驱动器条带化(缺失第三个1/3)的一般过程:
i)假定所述条带由不同驱动器上的数据块‘A’‘B’‘C’和‘D’组成。缺失数据‘C’。
ii)定义‘A’为包括该存储区的前三分之一,‘B’为第二个三分之一而‘C’为第三个三分之一以及‘D’为奇偶校验。
iii)在‘A’驱动器上分配2个区域的‘E’,在‘B’驱动器上分配4个区域的‘F’并在‘D’驱动器上分配6个区域的‘G’。
iv)将‘B’的前一半复制到‘E’
v)根据‘A’、‘B’和‘D’构造缺失数据并写入‘F’
vi)从‘A’/‘E’和‘B’/‘F’的后一半构造新奇偶校验并写入‘G’
vii)任何已经复制的对数据的写都必须镜像到‘E’、‘F’和‘G’中的适当位置
viii)当复制完成时,用新布局类型更新存储区表并将指针设置为指向‘A’/‘E’和‘B’/‘F’的后一半以及‘G’
ix)将‘B’的前一半和‘D’区域标记为空闲。
例如,再次参考图3,如果驱动器0或者驱动器1丢失,只要在驱动器2上有足够的可用空间,就可以在驱动器2上重构双驱动器镜像(存储区B)。类似地,如果损失任何驱动器0至2,只要驱动器3上有足够可用空间,三驱动器镜像(存储区C)就可以利用驱动器3重构。
数据布局模式——存储区重构
当已经去除驱动器并且剩余驱动器上有足够空间用于理想的存储区再布局或者驱动器已经用新的或者更大尺寸驱动器替换,会发生存储区重构。
下面说明根据本发明示例性实施例的双驱动器镜像重构的一般过程:
i)假定单驱动器镜像具有数据‘A’和缺失镜像‘B’
ii)在不同于包含‘A’的驱动器的驱动器上分配12个区域的‘C’
iii)将数据A’复制到‘C’
iv)任何已经复制的对数据的写都必须镜像到‘C’中适当位置
v)当复制完成时用指向‘C’指针更新存储区表指向‘B’的指针
下面说明根据本发明示例性实施例的三驱动器条带化重构的一般过程:
i)假定一个驱动器具有数据‘A’,第二驱动器具有数据‘B’而第三个具有奇偶校验‘P’。缺失‘B’。注意缺失哪片无关紧要,在所有情况下需要的操作都是相同的。
ii)在不同于包含‘A’和‘P’的驱动器的驱动器上分配6个区域的‘D’
iii)从‘A’和‘P’构造缺失数据。向‘D’写数据
iv)任何已经复制的对数据的写都必须奇偶校验到‘D’中的适当位置
v)用指向‘D’的指针替换指向‘B’的指针以更新存储区表
在这个示例性实施例中,四驱动器重构仅当如果去除的驱动器被其他驱动器替换时发生。所述重构包括在新驱动器上分配六个区域并根据其他三个区域集合重构缺失的数据。
数据布局模式——暂时缺失驱动器问题
当去除驱动器而没有用于再布局的空间时,阵列将继续按降级模式来运行,直到其他旧驱动器插回或者用新的替换该驱动器。如果插入新的驱动器,那么将再建驱动器组。在这种情况下,数据将再布局。如果旧的盘放回该阵列,那么其将不再是当前盘组的一部分并且将被视其为新盘。但是,如果该阵列中没有放入新盘而是放回旧的那个,那么旧的那个将仍然被视为该盘组的一员,尽管是被废弃的成员。在这种情况下,任何已经再布局的存储区都将保持其新配置而该旧盘上的区域将空闲。任何没有被再布局的区域仍然指向该旧盘存储区的适当区域。但是,由于已经对降级存储区执行了某些写,因此这些存储区需要刷新。可以标记已经改变的降级区域,而不是记录每个已经发生的写。这样,当替换盘时,仅已经改变的区域需要刷新。
而且,任何已经被写入的存储区可被置于更高的优先表用于再布局。这应当减少了应该替换盘的需要刷新的区域数量。还可以使用超时,在这一点之后,即使该盘被替换也将被擦去。但是,这种超时可能相当大,可能是数小时而非数分钟。
数据布局模式——数据完整性
如上所述,标准RAID系统的一个问题是可能盘面损坏发生在盘阵列的不常使用的区域。在另一个驱动器故障的情况下,经常不能确定损坏已经发生。在这种情况下,当RAID阵列重建该故障驱动器时,会传播并保存该损坏的数据。
上述散列机制提供在RAID下可用的数据破坏检测的附加机制。如在其他地方提及的,当存储某个块(chunk)时,为该块计算并存储散列值。每次读取该块的时候,都可以计算检索块的散列值并与存储的散列值进行比较。如果该散列值不匹配(指示损坏的块),那么块数据可以根据冗余数据恢复。
为了最小化在其中可能发生盘上数据损坏的时间窗口,将执行盘数据常规扫描以尽快发现并校正损坏的数据。也可选地允许执行对阵列读取的检查。
数据布局模式——卷(volume)
在后备卷中,不管阵列中盘上可用存储空间量如何,总是要求阵列是固定尺寸——例如M千兆字节。假定该阵列包含实际存储空间的S字节,其中S<=M,并且可以请求的数据存储在M千兆字节空间的位置L1、L2、L3等。如果所请求的位置Ln>S,那么用于Ln的数据必须存储在位置Pn<S。这通过基于Ln的包括查找表的索引Pn来进行管理,如图8所示。这种特征使得阵列与不支持卷扩展的操作系统共同工作,所述操作系统例如Windows、Linux、和苹果操作系统。另外,该阵列可以提供多个都共享相同物理存储器的后备卷。每个后备卷都将具有专用查找表,但是将共享数据存储器的相同物理空间。
驱动器插槽指示器
如上所述,存储阵列包括一个或者多个驱动器插槽。每个驱动器插槽都可以是空的或者容纳硬盘驱动器。每个驱动器插槽具有能够指示四种状态的专用指示器,所述四种状态是:关闭、正常、降级和故障。该状态通常解释如下:
在这个示例性实施例中,红/黄/绿发光二极管(LED)用作指示器。所述LED通常解释如下:
图9示出了根据本发明示例性实施例的具有可用存储空间并按容错方式运行的示例性阵列。用存储设备填充插槽B、C和D,并且有充足存储空间可用于冗余地存储附加数据。插槽B、C和D的指示器是绿色(指示这些存储设备操作正确,阵列数据冗余,且该阵列具有可用磁盘空间),而插槽A的指示器关闭(指示插槽A中不需要填充存储设备)。
图10示出了根据本发明示例性实施例的示例性阵列,其不具有足够空间用于维持冗余数据存储,并且必须要增加更大空间。插槽C和D中的存储设备是满的。插槽B、C和D的指示器是绿色(指示这些存储设备正确运行),而插槽A的指示器是红色(指示该阵列没有足够空间用来维持冗余数据存储以及插槽A中应当填充存储设备)。
图11示出了根据本发明示例性实施例的在故障情况下不能维持冗余数据的示例性阵列。插槽A、B、C和D用存储设备填充。插槽C和D中的存储设备是满的。插槽A、B、和C的指示器是绿色(指示它们正确运行),而插槽D的指示器是黄色(指示插槽D中的存储设备应当用具有更大存储容量的存储设备来填充)。
图12示出了根据本发明示例性实施例的示例性阵列,其中的存储设备已经故障。用存储设备填充插槽B、C和D。插槽C中的存储设备故障。插槽B和D的指示器是绿色(指示它们正确运行),而插槽C的指示器是红色(指示应当替换插槽C中的存储设备),而插槽A的指示器关闭(指示插槽A中不需要填充存储设备)。
下面说明本发明示例性实施例的软件设计。该软件设计基于六个软件层,其跨越从物理访问该磁盘到与主机计算系统通信的逻辑体系结构。
在这个示例性实施例中,文件系统驻留在主服务器上,例如Windows、Linux、或者苹果服务器,并访问如USB或者iSCSI设备的存储阵列。由主请求管理器(HRM)处理经过主界面到达的物理盘请求。主I/O界面将主USB或者iSCSI界面的表示协调至该主机(host),以及与HRM有接口。HRM协调来自主I/O界面的数据读/写请求,调度读和写请求,并在它们完成时协调这些请求的结果返回该主机。
本存储阵列的主要目的是保证一旦系统接受数据,其按可靠方法来存储,使用系统当前存储的最大量冗余。随着该阵列改变物理配置,而重新组织数据以维持(以及可能最大化)冗余。另外,基于压缩的简单散列用于减少使用的存储量。
最基本的层包括盘驱动器,用来在不同盘上存储数据。可以经由各种接口连接盘,例如经USB接口的ATA隧道。
所述盘上的扇区被组织成区域、存储区和聚簇,其中每个都具有不同逻辑角色。
区域表示盘上的一组连续物理块。在四驱动器系统中,每个区域是1/12GB大小,并表示冗余的最小单位。如果发现区域中的扇区是物理损坏的,那么将放弃整个区域。
存储区表示冗余单位。存储区包括一组区域,可能在不同盘上用来提供适当的冗余量。存储区将提供1GB的数据容量,但是可能需要更多的区域以便于提供冗余。具有冗余的1GB需要12个区域的集合(1GB);1GB镜像存储区需要两组1GB的区域(24个区域);1GB三盘条带化存储区将需要三组0.5GB的区域(18个区域)。不同存储区将具有不同冗余特征。
聚簇表示压缩的基本单位,并且是存储区之内的单元尺寸。它们当前是4KB:8x 512字节扇区大小。许多盘上的聚簇会包含相同数据。聚簇存取表(CAT)用于经由散列函数追踪聚簇的使用。CAT在逻辑主地址和存储区中适当聚簇位置之间转换。
当向盘写入时,散列函数用于发现数据是否已经存在于该盘上。如果是,CAT表中的适当项会被设置为指向现有聚簇。
CAT表驻留在其自己的存储区。如果超过该存储区大小,会使用附加存储区,并且使用表把逻辑地址映射到该存储区用于CAT的部分。换句话说,预分配存储区用于包含该CAT表。
为了减少主写入等待时间并保证数据可靠性,日志管理器将记录全部写请求(或者写入盘或者写入NVRAM)。如果系统重启,在重启时要提交日志项。
磁盘可以添加或者去除,或者如果发现区域已经损坏则可以让该区域退出。在任何这些情况下,布局管理器都可以在存储区中重组区域,以改变其冗余类型,或者改变存储区的区域构成(如果某个区域被损坏)。
由于存储阵列提供虚拟盘阵列因此通过改变物理盘空间的级别来返回,并且由于提供分块级别的接口,当聚簇不再被文件系统使用时就不是显然的。结果,所使用的聚簇空间将继续扩展。垃圾收集器(位于主机或者按固件形式)将分析该文件系统以确定哪个聚簇已经空闲,并且从散列表中删除它们。
下表示出了根据本发明该示例性实施例的六个软件层:
图13示出了模块层次,其表示不同软件层和它们彼此的关系。软件层优选地固定以便于提供清晰的API和描述。
垃圾收集器释放不再由主文件系统使用的聚簇。例如,当删除文件时,优选地释放用于包含该文件的聚簇。
日志管理器提供某种形式的写日志,从而在电源故障或者其他差错条件的情况下不丢失挂起的写操作。
布局管理器提供存储区相对于其区域的运行时再布局。这可能根据盘插入/删除或者故障而发生。
聚簇管理器在一组数据存储区中分配聚簇。盘利用守护程序(diskutilization daemon)周期性检查空闲的盘空间。
加锁表(Lock Table)处理写操作冲突问题后的读操作。
主请求管理器处理来自主机和垃圾收集器的读/写请求。写操作被传递到日志管理器,而读操作经由聚簇存取表(CAT)管理层来处理。
如上所述,在典型文件系统中,一定量的数据通常实质上重复。为了减少盘空间利用,这种数据的多个复制不会写入该盘。而是写入一个实例,相同数据的其他全部实例引用(reference)这一个实例。
在本示例性实施例中,任何时间系统在数据聚簇上操作(例如8个物理扇区),而这是散列的单位。使用SHA1算法来产生160位的散列值。这样具有很多好处,包括好的唯一性,并且被许多处理器在片上支持。全部160位将存储在散列记录中,但是仅最低16位被用作散列表中的索引。其他匹配该最低16位的实例将经由链接表链接。
在这个示例性实施例中,仅一个读/写操作可以同时发生。为了性能的目的,当向磁盘写聚簇时不允许发生散列分析。而散列分析将由散列管理器作为背景活动而发生。
从日志的写队列读取写请求,并处理以完成写操作。为了保证数据一致性,如果已经有写操作在该聚簇上活动,必须延迟该写操作。在其他聚簇上的操作可以不受阻碍的进行。
除非写整个聚簇,否则写入的数据将需要与现有存储在该聚簇中的数据归并。根据逻辑扇区地址(LSA),定位聚簇的CAT项。从这个记录获得散列关键字、存储区和聚簇偏移信息,然后它们可用于搜索散列表以发现匹配。这就是聚簇。
双重散列该散列表可能是必需的;一旦经由SHA1摘取(digest),然后就通过存储区/聚簇偏移用于改进正确散列项的查找速度。如果已经使用了散列记录,引用计数被递减。如果引用计数现在为零,并且没有由散列项快照引用,该散列项和聚簇可被释放回它们各自的空闲表。
现在归并原来的聚簇数据和聚簇的更新扇区,而且数据要被再散列。新的聚簇从空闲表中被剔除,把归并数据写入该聚簇,向散列表中增加新项,CAT表中的项更新为指向该新聚簇。
作为更新散列表的结果,该项同样添加到用于由背景任务处理的内部队列。这个任务将把新添加的聚簇和散列项与匹配该散列表行地址的其他散列项进行比较,如果它们重复,将结合记录,在适当时释放散列项和CAT表项。这保证了写等待时间不由这个活动负担。如果在这个处理期间发生故障(例如掉电),则可以根据丢失数据删除各种表。各个表应当以这种方式管理,最终的提交是原子的(atomic),或者日志项可以再运行,如果它没有全部完成的话。
下面是写逻辑的伪代码:
读请求同样按每次一个聚簇(相对于“扇区”)来处理。读请求不通过上述的习惯于散列的处理。而是,使用主逻辑扇区地址来引用(reference)CAT并获得存储区编号和聚簇到该存储区的偏移。读请求应当在CAT缓存中查找CAT表项,并且必须在设置了写进行位(write-in-progress bit)时延迟。其他读/写可以不受阻止的进行。为了改进数据完整性检查,当读聚簇时,其将被散列,并且该散列值与存储在散列记录中的SHA1散列值进行比较。这将需要使用该散列、存储区和聚簇偏移作为进入散列表的搜索关键字。
分配聚簇用作尽可能少的存储区。这是因为存储区直接对应于盘驱动器利用率。对每个存储区而言,硬驱动器阵列上有两个或者更多区域。通过最小化存储区数量,物理区域的数量最小化,并由此减少硬盘驱动器阵列上的空间消耗。
聚簇管理器分配来自一组数据存储区的聚簇。使用链接列表保持追踪存储区中的空闲聚簇。但是,空闲聚簇信息在磁盘上存储为位图(32KB每存储区)。该链接列表从位图(bit map)动态地构造。最初,在存储器中创建特定量空闲扇区的链接列表。当分配聚簇时,该列表收缩。在预定最低点,从磁盘上的位图提取表示空闲聚簇的新链接列表节点。这样,为了发现用于分配的空闲聚簇,不需要分析位图。
在这个示例性实施例中,散列表是64K记录表(由散列的低16位索引)并且具有下列格式:
全零的聚簇可以相当常见,因此全零的情况可以视作特殊情况,例如,使得永远不被删除(因此覆盖计数将不是问题)。
当多个散列具有相同最低有效散列时,或者当两个散列项指向不同数据聚簇时,使用空闲散列记录的链接列表。在两种情况下,空闲散列记录都将从该列表中取出,并经由pNextHash指针链接。
散列管理器将整理全部添加到散列表中的项并将合并该盘上的相同聚簇。随着新的散列记录增加到该散列表中,消息将被传递到散列管理器。这可由散列管理器自动执行。作为背景活动,散列管理器即将处理其队列上的项。将比较全部散列值以发现其是否匹配任何现有散列记录。如果是,将同样比较完整聚簇数据。如果聚簇匹配,则新散列记录可以被废除回空闲队列,散列记录计数递增,并且重复的聚簇将被返回聚簇空闲队列。当合并记录时,散列管理器必须注意向前传播快照位。
聚簇存取表(CAT)包含间接指针。该指针指向存储区中的数据聚簇(0是第一数据聚簇)。一个CAT项引用单个数据聚簇(暂定4KB大小)。使用CAT(连同散列)使得当存在大量重复的数据时减少盘使用需求。单个CAT通常表示连续存储块。CAT包含在非数据存储区中。每个CAT项是48位。下表示出每个项如何布局(假定每个数据存储区包含1GB数据):
希望CAT适合64位,但这不是必需的。2TB阵列的CAT表当前是至4GB大小。每个CAT项指向包含该数据和存储区编号的存储区。
图14显示CAT如何用于存取存储区中的数据聚簇。冗余数据通过CAT中的一个以上的项来引用。两个逻辑聚簇包含相同数据,因此它们的CAT项指向相同物理聚簇。
散列关键字包含完整聚簇160位SHA1散列值的16位摘取。这个项用于在写操作期间更新该散列表。
CAT中的每个项有足够的位用于引用16TB的数据。但是,如果每个数据聚簇都彼此不同(根据内容),那么只需要3个存储区的CAT项来引用2TB的数据(每个存储区都是1GB大小,并由此可以存储1GB/大小的CAT项。假定6字节CAT项,则178956970项/存储区,即表引用大约682GB/存储区,如果每个聚簇是4K的话)。
主逻辑扇区转换表用于将主逻辑扇区地址转换成存储区编号。相应于主逻辑扇区地址的CAT部分将驻留在这个存储区中。注意每个CAT项表示4096字节的扇区大小。这是八个512字节扇区。下面显示主逻辑扇区转换表的表示:
可以预分配存储区以保持整个CAT。换句话说,存储区可以分配给CAT,如需要更多CAT项。由于CAT把2TB虚拟磁盘映射至主扇区地址空间,因此由主机做硬盘分区或者格式化期间将引用CAT的很大部分。为此,要预分配存储区。
CAT是大的1GB/存储区表。使用的工作聚簇集将是来自这个大表的后备集。为了性能的原因,活动的项(可能暂时)可以在处理器存储器中缓存而不总是从磁盘读取。至少有两个选项用于填充该缓存——来自CAT的个别项,或者来自CAT的整个聚簇。
因为写进行(write-in-progress)与CAT缓存表相组合,所以需要确保该缓存中保持全部未完成的写。因此,需要该缓存至少与未完成写请求的最大数量一样大。
缓存中的项数将是聚簇大小(即4K)。需要知道聚簇上的操作中是否还有写入进行。这个指示可以作为标志存储在该聚簇的缓存项中。下表显示CAT缓存项的格式:
位0-17 位18-31 位32-47 位48-63
存储区中数据聚簇的偏移 包含数据的存储区# 散列关键字 位48:写进行
位49:脏
缓存项中的写进行标志有两种含义。首先,它指出写操作正在进行,并且在这个聚簇上的任何读(或者附加写)必须延迟,直到完成该写操作。其次,当设置该位时,绝不能刷新缓存中的这个项。这部分地保护了该位的状态,同时反映了这个聚簇当前被使用的事实。另外,这意味着缓存的尺寸必须至少与未完成的写操作数量一样大。
在聚簇的缓存项中存储写进行指示符的一个优点是它反映了操作正在进行的事实,省去了使用其他表格,并且省去了另外的基于散列的查找,或用于检查该位的表查找。该缓存可以是写延迟缓存。只需要当写操作完成时,将缓存项写回磁盘,虽然将其更早写回可能更好。散列函数或者其他机制可用于增加可散列的未完成的写项。
一种替换方法是缓存整个CAT聚簇(即各项的4K项)。这通常有助于性能,如果有好的访问空间定位的话。需要注意,因为CAT项是48位宽,因此缓存中没有全部的项。下表显示聚簇CAT缓存项的示例:
该表格尺寸可以是4096+96(4192字节)。假定需要具有250项的缓存大小,该缓冲可以占据大约1MB。
通过逻辑CAT项地址的适当屏蔽可以计算首项和末项是否未完成。缓存查找例程应当在加载项之前执行这个过程并且应当加载需要的CAT聚簇。
当主机发送扇区(或者聚簇)读请求时,其通过逻辑扇区地址发送。该逻辑扇区地址用作到CAT的偏移以获得包含主机所请求的实际数据的存储区中的聚簇的偏移。结果是存储区编号和到该存储区的偏移。该信息传递给层2软件,然后其从(多个)驱动器提取原始(多个)聚簇。
为了处理主机从未写过的聚簇,所有CAT项被初始化为指向包含全零的“默认”聚簇。
日志管理器是两级写(bi-level write)日志系统。该系统的一个目标是保证可以从主机接收写请求并快速向该主机返回指示,数据已经在保证其完整性的同时被接收。另外,该系统需要保证在任何盘写入期间的系统复位的情况下,不会有块级数据或者系统元数据(例如CAT和散列表项)的损坏合丢失。
J1日志管理器尽快缓存所有从主机向磁盘的写请求。一旦写入成功完成(即数据已经被阵列接收),主机就可以发信号指示操作已经完成。日志项允许当从故障恢复时,恢复写请求。日志记录包括要写入磁盘的数据,以及与写事务相关的元数据。
为了减少磁盘读/写,与写入相关的数据将被写入空闲聚簇。这样将自动镜像该数据。将从空闲聚簇列表去除空闲聚簇。一旦写数据,空闲聚簇就必须写回磁盘。
日志记录将被写回非镜像存储区上的日志队列。每个记录都将是扇区大小,并且对齐到扇区边界,以使得减少日志写期间的故障会破坏以前日志项的风险。日志项在记录的末尾包含唯一的、递增的顺序计数,因此可以轻易识别队列的结尾。
日志写操作在主机队列处理线程中同步发生。日志写必须按照它们写入磁盘的次序来排序,因此在任何时候只有一个线程可以写入该日志。J1表中日志项的地址可以用作唯一标识符,因此J1日志项可以与J2日志中的项相关联。一旦写入日志项,将向主完成队列传递事务完成通知。现在可以执行写操作。要保证在完成日志写之前延迟任何后续的对该聚簇的读,这一点很重要。
下表示出了J2日志记录的格式:
大小(位) 名称 细节
32 LBA 逻辑块地址
14 存储区 相关聚簇的存储区#
18 偏移 相关聚簇的聚簇偏移
16 大小 数据大小
16 顺序号 增量顺序号以易于发现队列结束
每个日志记录都对齐到扇区边界。日志记录可以包含存储区/偏移/大小的元组的阵列。
图15示出了根据本发明示例性实施例的日志表更新。尤其是当接收到主机写请求时,更新该日志表,分配一个或多个聚簇,并向(多个)聚簇写入数据。
处理主日志请求。这引起聚簇被写入,并同样引起更新元数据结构,所述结构必须投影回磁盘(例如CAT表)。重要的是保证这些元数据结构正确地写回磁盘,即使当系统发生复位。为此将使用低级磁盘I/O写(J2)日志。
为了处理主界面日志项,应当确定元数据结构的适当的操作。改变应当发生在存储器并且要产生对各磁盘块改变的记录。这种记录包含在磁盘上应该进行的实际改变。更新的每种数据结构都用J2日志管理器来登记。这种记录应当记录到基于磁盘的日志,并用标识符来加印戳。当记录与J1日志项相连接,标识符就应当被链接。一旦存储该记录,就可以进行磁盘的改变(或者可以经由后台任务执行)。
逻辑上J2日志存在于层3。它用于把那些涉及经存储区管理器的写的元数据更新登记到日志。当发生日志项的再现时,将使用存储区管理器方法。日志本身可以存储在专门区域。由于日志项的短生命期,不对其做镜像。
不是所有的元数据更新都需要经过J2日志,尤其是,如果对结构的更新是原子的。区域管理器结构可不使用J2日志。可检测区域管理器位图中的不一致,例如,使用完整性检测后台线程。
用于J2日志的一种简单方法是包含单个记录。一旦该记录提交给磁盘,就被重放,更新磁盘上的结构。可具有多个J2记录,并使后台任务提交磁盘上的更新记录。这种情况下,需要密切注意日志和与各种数据结构相关的任何缓存算法之间的交互作用。
一旦提交给磁盘,初始方法就将运行日志项。原则上,会有J2的多个并发的用户,但是J2日志会在一个时候锁定到一个用户。即使在这种情况下,一旦提交,也会提交日志项。
重要的是保证在任何更高级的日志活动发生前修复元数据结构。在系统重新引导时,分析J2日志,并将重现任何记录。如果日志项与J1日志项相关,则将J1日志项标记为已完成,并可以被删除。一旦完成全部J2日志项,元数据就处于可靠状态,并且可以处理任何剩余J1日志项。
J2日志记录包括下列信息:
·操作号
·每个操作包含:
°J1记录指示符
°待写入存储区/数据偏移
°待写入数据
°数据大小
°到数据聚簇的偏移
·日志记录标识符
·结束标记
这种模式可以按类似于J1日志的模式来操作,例如,使用顺序号用于识别J2日志项的结尾并将J2日志项置于扇区边界处。
如果设置J1数据指针指示符,那么这个特殊操作会指向J1日志记录。主机提供的写数据不必复制到日志项。操作阵列将可以定义为固定大小,因日志记录中操作的最大数量是已知的。
为了允许从低级写操作期间的扇区损坏(例如由于掉电)恢复,J2日志可以存储被写入的整个扇区,使得如果需要该扇区可以根据这个信息来重写。作为替换或附加,为每个改变的扇区计算的CRC可以存储在J2记录中,并与从磁盘扇区(例如由存储区管理器)计算的CRC进行比较,以确定是否需要写操作的重放。
不同日志可以存储在不同位置,因此提供接口层用于写日志记录到备份存储。该位置应当是非易失的。两种候选是硬盘和NVRAM。如果J1日志存储到硬盘,它将存储在J1日志非镜像存储区中。J1日志是存储在NVRAM的候选。J2日志应当存储在磁盘上,尽管它可以存储在专门区域中(即,不冗余,因为它具有短生命期)。将J2日志存储在磁盘的优点是,如果在内部数据结构更新期间存在系统复位,那么该数据结构可以返回到一致状态(即使该单元长时期掉电)。
存储区管理器(ZM)分配更高级软件需要的存储区。向ZM的请求包括:
a.分配存储区
b.解除分配/释放存储区
c.控制数据读/写传递到L1(?)
d.读/写存储区中的聚簇(给出聚簇偏移和存储区号)
ZM管理器管理冗余机制(随驱动器的数量和它们的相关大小而改变)并处理镜像、条带化、以及用于数据读/写的其他冗余模式。
当ZM需要分配存储区时,它将请求两个或者更多区域集合的分配。例如,要为1GB的数据分配存储区,组成这个存储区的区域将可以包含1GB数据,包括冗余数据。对镜像机制,存储区将由各为1GB的两个区域集合构成。另一个示例,3盘条带化机制使用各为1/2GB的3组区域。
ZM使用ZR转换表(6)以发现组成该存储区的每组区域的位置(驱动器号和起始区域号)。假定是1/12GB区域大小,将需要最多24个区域。24个区域组成2x1GB的存储区。因此ZR转换表包含24列,用于提供驱动器/区域数据。
ZM通常工作如下:
a.在SDM的情况下(单个驱动器镜像),使用24列。驱动器号在所有列中都相同。每个项对应于组成该存储区的物理驱动器上的一个物理区域。前12个项指向包含该数据的一个副本的区域。后12个项指向包含该数据的第二个副本的区域。
b.DDM(双驱动器镜像)的情况与SDM的情况相同,只是前12个项的驱动器号与后12个项中的驱动器号不同。
c.在条带化的情况下,可以使用三个或者更多列。例如,如果跨三个驱动器使用条带化,则需要来自三个不同驱动器的六个区域(即使用18个项),前6项包含相同驱动器号,接下来的6项包含另一个驱动器号,以及随后的6项包含第三驱动器号,未使用的项置为0。
下表显示存储区区域转换表的表示法:
当读/写请求到达时,对ZM提供存储区号和到该存储区的偏移。ZM查看ZR转换表中用于解决该存储区的冗余机制,并使用该偏移用于计算哪个驱动器/区域包含必须读/写的扇区。然后该驱动器/区域信息提供给L1层以进行实际的读/写。在“使用(usage)”列中的另外可能项是“空闲”。“空闲”指存储区被定义但当前没有使用。
聚簇管理器分配并再分配数据存储区集合中的聚簇。
布局管理器提供存储区关于其区域的的运行时再布局。这可根据磁盘插入/除去或者故障而发生。
层1(L1)软件知道物理驱动器和物理扇区。除了其他,L1软件分配物理驱动器的区域用于存储区管理器来使用。在这个示例性实施例中,每个区域具有用于四驱动器阵列系统的1/12GB大小(即174762扇区)。具有更大数量驱动器(8,12或16)的系统将具有不同的区域大小。
为了创建包含具有SD3(在三驱动器上条带化;两个数据加奇偶校验)的1GB数据存储区,我们应当使用各在三驱动器中的六个区域(每个驱动器为6x 1/12=1/2GB)。
当存储区被移动或者重配置时,例如根据镜像到条带化,使用这种区域模式允许我们提供更好的磁盘空间利用。L1软件利用区域位图(bitmap)跟踪物理驱动器上的可用空间。每个驱动器都有一个位图。每个区域都用位图中的两位表示,用于跟踪该区域是否空闲、使用、或者损坏。当L2软件(ZM)需要创建存储区时,它从L1层获得一组区域。构成存储区的区域不必在磁盘中连续。
向L1的请求包括:
a.数据读/写(到一组区域中的聚簇)
b.控制数据读/写(表格、数据结构、DIC等)
c.分配区域的物理空间(1驱动器内的实际物理扇区)
d.解除分配区域
e.向物理驱动器的物理聚簇的原始读/写(raw read/write)
f.从一个区域向另一个复制数据
g.将区域标记为损坏。
空闲区域位图可以是大型的,因此查找空闲项(最糟的情况是没有空闲的项)的搜索可能缓慢。为了改进性能,部分位图可以预加载到内存中,而且空闲区域的链接列表可以存储在内存中。每个活动存储区都有列表。如果到达列表上的低水位线,可以从磁盘读取更多的空闲项作为背景活动。
磁盘管理器运行在层0。如下表所示,有两个子层,分别是抽象层和与物理存储阵列通信的设备驱动器。
层0a:抽象
层0b:OS到一个和多个设备驱动器的接口
物理存储阵列硬件
设备驱动器层同样可以包含多个层。例如,对使用USB驱动器的存储阵列,在USB输送层顶端有ATA或者SCSI栈。抽象层提供独立于存储阵列中使用的驱动器种类的基本读/写功能。
可使用一个或者多个磁盘存取队列来对盘存取请求进行排队。在我们的系统中,盘存取速度将是一个关键的性能瓶颈。我们想要保证磁盘接口尽可能在所有时间保持忙碌,从而减少一般的系统延迟并改进性能。请求盘的接口应当具有异步接口,使用回调(callback)处理器用于当已经结束盘操作时来完成操作。一个盘请求的完成将自动启动队列中的下一个请求。每个驱动器有一个队列,或者全部驱动器用一个队列。
层1将按逻辑驱动器号来引用驱动器。层0将逻辑驱动器编号转换为物理驱动器参考(例如/dev/sda或作为open()调用的结果文件设备号)。为灵活起见(经USB扩展),应当每个逻辑驱动器一个队列。
下面是对象定义和数据流的一些示例。
MSG对象:从主机引入
Lba
Length
LUN
Data
REPLY对象:引出到主机
Status
Host
Length
Data
数据读
数据读流程:
数据写
数据写流程:
下面是物理盘布局的说明。如上所述,每个盘都划分为固定尺寸的区域。在这个示例性实施例中,每个区域具有用于四驱动器阵列系统的1/12GB大小(即174763扇区)。具有更大数量驱动器(8,12或16)的系统将具有不同的区域大小。开始,保留区域号0和1用于区域管理器并且不用于分配。区域号1是区域号0的镜像。对给定的硬盘,区域管理器所使用的所有内部数据都存储在这个硬盘的区域号0和1中。这个信息并不重复(或镜像)到其他驱动器。如果区域0或1中有错误,可以分配其他区域来保留该数据。盘信息结构指针指向这些区域。
每个盘将包含识别该盘的DIS、它所属于的盘组和该盘的布局信息。该硬盘上的第一扇区被保留。DIS存储在第一扇区后的第一非损坏聚簇中。DIS包含相当1KB的数据。有两个DIS的副本。DIS的副本将存储在其所属于的盘上。另外,该系统中的每个盘都将包含该系统中盘的全部DIS副本。下表显示DIS格式:
区域管理器在区域信息结构中存储其内部数据。下表显示该区域信息结构格式:
存储区信息结构提供可以发现存储区表的存储区管理器上的信息。下面显示该存储区信息结构格式:
高级信息存储区包含存储区表和其他由高级管理者使用的表。这将使用镜像进行保护。
下表显示该存储区表节点格式:
尺寸 名称 描述
字32 ZtNextEntry 指向链接列表中的下一个项
字32 ZtCount 计数这个项
字64 ZtRegion 区域数
下面描述存储区信息布局。存储区表节点的链接列表以如下方式放置在ZIS后:
这种信息存储在存储区表区域中。
图16示出了根据本发明示例性实施例的驱动器布局。前两个区域是互为副本。第三(可选)存储区表区域包含该存储区表。在具有一个以上驱动器的系统中,只有两个驱动器包含ZTR。在仅具有一个驱动器的系统中,两个区域用于保留该ZTR的两个(镜像)副本。DIS包含有关RIS和ZIS位置的信息。注意RIS的第一副本不必在区域0中(例如,如果区域0包含坏扇区,则可以位于不同区域)。
存储区管理器需要在系统启动时加载该存储区表。为此,其从DIS提取区域号和偏移。这将指向ZIS的开头。
特定模块(例如CAT管理器)在存储区中存储它们的控制结构和数据表。层3和更高层中的模块的所有控制结构由存储在存储区0中的结构来引用。这意味着,例如,实际CAT(聚簇分配表)位置由存储区0中存储的数据结构来引用。
下表显示存储区0信息表格式:
CAT链接列表是描述包含CAT的存储区的节点链接列表。下表显示CAT连接列表节点格式:
尺寸 名称 描述
字32 cat11NextEntry 指向链接列表中的下一个项
字16 cat11Count 这个项的计数
字16 cat11Zone 包含这个CAT部分的存储区数
散列表链接列表是描述保持散列表的存储区的节点的链接列表。下表显示该散列表链接列表节点格式:
尺寸 名称 描述
字32 ht11NextEntry 指向链接列表中的下一个项
字16 ht11Count 这个项的计数
字16 ht11Zone 包含这个散列表部分的存储区数
图17示例存储区0的布局以及其他存储区如何被引用,根据本发明示例性实施例。
如上所述,冗余集是为数据集提供冗余的一组扇区/聚簇。备份某个区域包括将一个区域的内容复制到另一个区域。
在数据读取出错的情况下,较低级软件(盘管理器或者设备驱动器)在最初失败尝试之后再做两次读请求的尝试。故障状态传递回存储区管理器。存储区管理器接着尝试根据盘阵列中冗余聚簇来重构所请求(通过读)数据。该冗余数据可以是镜像的聚簇(用于SDM、DDM)或者一组包括奇偶校验的聚簇(条带化实施)。接着重构数据传递回主机。如果ZM不能重构该数据,则将读报错传递回主机。存储区管理器发送差错通知分组给差错管理器。图18示例根据本发明示例性实施例的读报错处理。
在数据写出错的情况下,较低级软件(盘管理器或者设备驱动器)在最初失败尝试之后再两次尝试写请求。故障状态传递回存储区管理器。存储区管理器发送报错通知分组给差错管理器。
当数据写在这个级别执行时,冗余信息同样写入磁盘。这样,只要仅一个聚簇具有写差错,后续的读可以重构该数据。如果有多个盘差错并且冗余信息不能读或者写,则有至少两种可能途径:
a.向主机返回写差错状态。把与该冗余集相关联的所有区域备份至新分配的不包含坏扇区的区域。
b.延迟写。把与该冗余集相关联的所有区域备份至新分配的不包含坏扇区的区域。随后,在新分配区域中的适当聚簇上写(连同全部冗余部分,例如奇偶校验等)。单独的写队列将用于包含已经被延迟的写。
因为写状态可能已经发送到主机作为日志成功写入的结果,所以方法(a)是有问题的,因此主机不可能知道已经有差错。一种替换的是报告读的故障,但是允许写。CAT中的某个位用于跟踪应当返回坏的读的特别LBA。
图19示例根据本发明示例性实施例写差错处理。
差错管理器(EM)检查聚簇以发现其是否真的损坏。如果是,则认为整个区域损坏。该区域中的内容复制到相同盘的新分配区域上。然后标记当前区域损坏。当在区域上复制时,当遇到坏扇区时,差错管理器将在必要时重构数据。如20是示例根据本发明示例性实施例由差错管理器备份坏区域的逻辑流程图。
如果有数据读差错且差错管理器不能重构给定聚簇的数据(例如,由于在整个冗余集的读差错),那么接着使用零代替不能重构的数据。在这种情况下,将同样必须备份其他包含坏扇区的区域(来自相同冗余集)。再次将使用零代替不能重构的数据。
一旦执行了冗余集复制,EM禁用对应于存储区这部分的聚簇的存取。然后更新存储区表以指向新分配区域。随后存取再启用的聚簇。
这个示例性实施例设计支持八个快照(其允许使用一个字节指示特定快照实例是否使用散列/聚簇项)。有两个表涉及快照:
1.需要存在每个快照的CAT表,以捕获逻辑扇区地址与包含用于LSA的数据的盘上的聚簇之间的关系。最终,每快照CAT必须是在快照发生时CAT的副本。
2.系统散列表,其在散列值和数据聚簇之间映射。散列函数返回相同结果,无论使用哪个快照实例,并且对全部快照结果都是一样的。这样,这个表必须理解唯一聚簇是否由任何快照使用。散列聚簇项不能被释放,或者被新数据替换,除非没有使用该散列项的快照。
总是有当前和被添加的快照。当散列项创建或者更新时,我们将需要把当前快照号应用到散列项。当制作快照时,将递增当前快照号。
通过查找散列表并且发现任何具有退出快照位设置的散列值并清空该位,由此来释放不再被任何快照需要的聚簇/散列项。如果该快照字节现在是零,则散列项可以从该表中删除,并且可以释放该聚簇。
为了预防与添加到散列树的任何新项的冲突(因为新快照数与退出快照数相同),仅允许批准7个快照,退出最后的(第八个)快照。可以按背景活动来查找散列表。
为了创建快照,无论主CAT何时更新都可以写入第二CAT存储区。这种更新可以被排队,并且影子CAT可以按其他任务来更新。为了快照,影子CAT成为快照CAT。
一旦进行快照,可以离开后台处理以将这个快照表复制到新存储区成为新快照CAT。可以使用队列,使得不处理影子CAT队列,直到CAT复制完成。如果在更新影子CAT之前发生故障(队列中的项可能丢失的情况),则在阵列联机之前可以根据最初CAT表执行再投影。
另外,当需要快照时,“增量”的集合加上最初CAT副本可以组成快照。然后后台任务可根据这些信息重建完整快照CAT。这会需要一点或者不需要停机时间来做此快照。其间,可能要为后续的快照收集另一组“增量”。
如上所述,所谓“垃圾收集器”可用于释放不再被主机文件系统使用的聚簇(例如当删除文件时)。一般而言,通过发现空闲块、计算它们的主LSA、并根据该LSA分配它们的CAT项进行垃圾收集。如果没有CAT项用于特定LSA,则该聚簇已经空闲。但是如果CAT项被定位,则递增引用计数,而且如果该计数命中零,该聚簇空闲。
垃圾收集的一个问题是难于将已经由主文件系统使用的块与先前已经使用并且在某个点标记为空闲的一个区分开来。当主文件系统写入块时,存储设备分配聚簇用于数据,以及CAT项来描述它。从这点上,聚簇将一般的表现为在用(in use),即使主文件系统随后停止使用它的块(即,聚簇将仍然通过有效CAT的项处于在用状态)。
例如,特定主文件系统使用位图(bitmap)来追踪它的使用盘块。一开始,位图将指示全部的块为空闲,例如,通过将全部位清空。由于使用文件系统,因此主文件系统将通过使用它的空闲块位图来分配块。存储系统将使用通过上述的分配聚簇和CAT项来把这些文件系统分配与物理存储相关联。当主文件系统把一些块释放回到它的空闲池时,其只需要在其空闲块位图中清空相应的位。在存储系统上,这可以设想成写入恰好包含该主机的空闲块位图的聚簇,就像没有I/O到空闲的实际聚簇本身(虽然可能有到空闲聚簇的I/O,例如,如果主文件系统以某种增强安全模式运行,其中不像把零或者随机数据的强保密散列写入聚簇以使得减少旧聚簇内容可能被攻击者读取的机会)。另外,当满意新分配请求时,不保证主文件系统会重用以前被释放的块。因此,如果主文件系统继续分配那些从存储系统的视点来看是新的、即以前未使用的块,则该存储系统将快速耗尽空闲聚簇,限于无论什么空间都可以经由压缩回收。例如,假定文件系统块是4K,如果主机分配文件系统块100至500,随后释放块300至500,然后接着分配块1000至1100,整个文件系统使用的将是300块,而阵列将有500个聚簇处于在用状态。
在本发明示例性实施例中,存储系统可以通过访问主文件系统布局来检测主文件系统盘资源的释放,分析它的空闲块位图,并使用该信息来识别不再被该文件系统使用的聚簇。为了存储系统能够以这种方式识别未使用的聚簇,存储系统必须能够定位并理解该文件系统的空闲块位图。因而,该存储系统将通常支持文件系统的预定设置,可充分“理解”内部工作以定位并利用这些空闲块位图。对不支持的文件系统,该存储系统可能不能够执行垃圾收集并将由此仅告之该阵列的实际物理尺寸以便于避免被过量使用。
为了确定该文件系统类型(例如NTFS、FAT、ReiserFS、ext3),需要定位该文件系统的超块(superblock,或者等同结构)。为了发现该超块,要分析分区表(partition table)以定位OS分区。假定OS分区被定位,则分析OS分区,以试图定位该超块并由此识别该文件系统类型。一旦该文件系统类型已知,则可以分析布局以查找空闲块位图。
为了便于搜索空闲块,可以保持主文件系统位图的历史数据,例如,通过制作可以存储在私有、非冗余存储区的空闲块位图的副本,并执行使用该副本的搜索。给定位图的尺寸,可以每次为较少数量的聚簇保持信息而不是为整个位图保持信息。当执行垃圾收集时,可以把当前空闲块位图与历史副本逐个聚簇地进行比较。可以识别任何从分配转换成空闲的位图项,使得回收操作可准确地定向到作为可利用的良好候选的聚簇。随着处理每个位图聚簇,可以用当前副本替换历史数据以维持位图操作的滚动式历史数据。空闲块位图的副本将随着时间变成时间上不连贯的聚簇的拼凑体,但是由于当前副本总是用于定位空闲项,因此这并不产生任何问题。
在特定条件下,会有关于空闲块位图的竞争条件,例如,如果主文件系统使用其空闲块位图来分配盘块,接着写入它的数据块,然后将修变的位图刷新回到盘。在这种情况下,垃圾收集器会释放该聚簇,即使该文件系统在使用该聚簇。这会导致文件系统被破坏。可实现存储系统以避免或者处理这样的条件。
由于垃圾收集是相当昂贵的操作,因即是低强度的回收也将占用后端的I/O带宽,因此不应滥用垃圾收集。垃圾收集器能够按多种方式运行,从低强度的后台惰性回收到非常高强度或者甚高优先级的回收。例如,当使用了百分之三十的空间时,可以按低强度方式运行垃圾收集器,或者至少没星期一次,当使用了50%的空间时,按稍微高强度的方式来运行,而当使用了百分之九十或者更多的磁盘空间时,运行全高优先级的回收。在每次进行收集时,可以限制要回收的目标聚簇数量和最大的可容许I/O计数,从而控制垃圾收集器的回收强度。例如,可配置垃圾收集器,通过使用不超过10000次的I/O来回收1GB。回收请求的完成失败可用作对收集器的反馈,从而在下一次运行时按更高强度的方式。还可以是“回收一切”模式,允许垃圾收集器分析整个主文件系统空闲块位图并回收可能的全部块。在阵列(几乎)完全装满时,这可以作为最后的办法来回收聚簇。可以周期性地运行垃圾收集器,对其施加规则,并可决定执行、或者可决定不执行回收操作。还能够明确地从其他模块来请求回收操作,例如区域管理器,当正在寻找用于构建区域的聚簇时,可请求回收操作。
垃圾收集功能可以与状态指示符机制相结合。例如,在某些点,存储系统可以处于“红色”条件,尽管正在运行的垃圾收集操作可以释放足够空间以消除“红色”条件。可采用附加指示器状态以显示相关状态信息(例如红色指示器灯光可以闪烁用来指示垃圾收集操作正在进行)。
图21是根据本发明示例性实施例的存储阵列的相关部件的示意性框图。除了其他,存储阵列包括底盘2502,在其上存储管理器2504与多个存储设备25081-2508N通信,这些存储设备分别通过多个插槽25061-2506N耦合到底盘。每个插槽25061-2506N都可以与一个或者多个指示器25071-2507N相关联。除了其他,存储管理器2504典型包括用于实施上述功能的各种硬件和软件组件。硬件组件典型包括存储器用于存储诸如程序代码、数据结构、以及数据的内存,和用于执行该程序代码的微处理器系统。
虚拟热后备(virtual hot spare)
如上所述,在许多存储系统中,热后备存储设备维持就绪状态,使得在其他存储设备故障的情况下,热后备可以快速被联机。在本发明特定实施例中,不是维持物理上分离的热后备,而是跨多个存储设备由未使用的存储容量来创建虚拟热后备。不同于物理热后备,如果以及当对于根据(多个)其余存储设备恢复的数据的存储发生存储设备故障时,这种未使用存储容量是可用的。
该虚拟热后备特征需要阵列上的足够可用空间,以保证在盘故障情况下,数据可以按冗余方式再布局。因而,根据运行,存储系统典型地确定实现虚拟热后备可能需要的未使用存储容量的量(例如,根据存储设备的数量、各存储设备的容量、数据存储的数量、以及以什么方式存储数据),并且,如果需要附加存储容量用于虚拟热后备的话则产生信号(例如,使用绿色/黄色/红色光指示状态和插槽,如上所述)。随着存储区的分配,按每个盘保持记录,多少个区域需要再布局该存储区。下表示例使用四个驱动器的虚拟热后备:
下表示例具有使用三个驱动器的虚拟热后备:
在这个示例性实施例中,虚拟热后备并非在仅有1个或者2个驱动器的阵列上可用。根据每个存储区的信息和阵列中盘的数量,该阵列确定每个可能盘故障的再布局情况并保证对每种情况每个驱动器上都有足够的可用空间。产生的信息可以反馈回再布局引擎和存储区管理器,使得数据可以在数据存储和热后备特征之间正确平衡。注意,根据这些由存储区布局数据的计算,热后备特征需要足够备用工作空间区域,使得可发生再布局。
图22是示出根据本发明示例性实施例的管理虚拟热后备的示例性逻辑的逻辑流程图。框2102中,该逻辑确定每个可能盘故障的再布局情形。在框2104中,该逻辑确定最坏情况下冗余数据再布局的每个驱动器需要的空间量。框2106中,该逻辑确定在最坏情况下数据冗余再布局需要的后备工作空间区域的数量。框2108中,该逻辑确定每个驱动器上需要的空间总量,以允许在最坏情况下再布局数据冗余(实际上是再布局所需要的空间和备用工作空间区域的和)。框2110中,该逻辑确定存储系统是否包含足够的可用的存储量。如果有足够数量的可用存储(框2112中的是),则该逻辑迭代在框2199终止。但是,如果没有足够量的可用存储(框2112中的否),则该逻辑在框2114中确定哪个驱动器/插槽需要更新。接着在框2116,该逻辑发出信号,指出需要附加存储空间并指示哪个驱动器/插槽需要更新。该逻辑迭代在框2199终止。
图23是示出根据本发明示例性实施例的用于确定每个可能盘故障的布局情形的示例性逻辑的逻辑流程图,如图22的框2102中。框2202中,该逻辑分配存储区。然后,在框2204中,该逻辑确定按每个盘需要多少个存储区用于再布局存储区。该逻辑迭代在框2299终止。
图24是示出根据本发明示例性实施例的包括虚拟热后备功能的示例性逻辑的逻辑流程图。框2302中,该逻辑维持在最坏情况下的充足数量的可用存储以使得可再布局数据冗余。当在框2304确定了驱动器丧失(例如移除或者故障),该逻辑在框2306自动重构一个或者多个其余驱动器,以恢复数据的容错。该逻辑迭代在框2399终止。
图25是示出根据本发明示例性实施例的自动重构一个或者多个其余设备用于恢复数据容错的示例逻辑的逻辑流程图,如图24的框2306。框2402中,该逻辑将跨四个或者更多存储设备的第一条带化模式转换为跨三个或者更多剩余存储设备的第二条带化模式。框2404中,该逻辑可以将跨三个存储设备的条带化模式转换为跨两个剩余存储设备的镜像模式。当然,该逻辑可以按其他方式转换以使得随着驱动器的丧失而再布局数据冗余。该逻辑迭代在框2499终止。
再参考图21,存储管理器2504典型地包括适当部件和逻辑用于实施如上所述的虚拟热后备功能。
动态升级
上述用于处理存储的动态扩展和收缩的逻辑可以被扩充用于提供可动态升级的存储设备,其中,存储设备可根据需要用更大的存储设备来替换,并且现有数据跨各存储设备重新配置,使得冗余得到维持或者增强,并且该更大的存储设备所提供的附加存储空间将包括在跨多个存储空间的可用存储空间的池(pool)中。因而,当用较大存储设备替换较小存储设备时,附加存储空间可用于改进已存储数据和存储附加数据的冗余。无论何时需要更多存储空间,向用户提供适当信号(例如使用如上所述的绿色/黄色/红色灯光),而用户可以简单移除存储设备并用更大存储设备替换它。
图26是示出根据本发明示例性实施例的用于更新存储设备的逻辑流程图。框2602中,该逻辑在第一存储设备上按照存储在其中的数据在其他存储设备上冗余出现的方式来存储数据。框2604中,该逻辑检测用比第一存储设备具有更大存储容量的替换设备来替换第一存储设备的替换。框2606中,该逻辑使用冗余存储在其他设备上的数据将存储在第一设备的数据自动再生到的该替换设备上。框2608中,该逻辑使替换设备上的附加存储空间可用于存储新数据冗余。框2610中,该逻辑可以在替换设备上的附加存储空间中存储新数据冗余,如果没有其他设备具有充足的可用存储容量用于提供新数据的冗余的话。框2612中,如果至少一个其他设备具有充足的可用存储空间用于提供新数据冗余,则该逻辑跨多个存储设备存储新数据冗余。
再参考图21,存储管理器2504典型包括适当部件和逻辑用于实施如上所述的动态更新功能。
其他
本发明的实施例可以用于向主机计算机提供存储容量,例如按美国临时申请第60/625,495所述的方式使用外围连接协议,所述申请以Geoffrey S.Barrall的名义于2004年11月5日提交,通过引用全文结合于此以供参考。
应当注意,散列算法可能不产生严格唯一的散列值。因而,可以想到散列算法对具有不相同内容的两个数据块产生相同散列值。散列函数(其通常结合散列算法)典型包括确认唯一性的机制。例如,在上述本发明的示例性实施例中,如果一个块的散列值与另外块的散列值不同,则认为这些块的内容不相同。但是如果一个块的散列值与另一个块的散列值相同,那么散列函数可以比较这两个块的内容或者利用一些其他机制(例如不同散列函数)以确定内容是否相同。
应当注意,这里使用的该逻辑流程图用于示例本发明的各个方面,而不应解释为将本发明限制在任何特殊逻辑流程或者逻辑工具。在不改变总体结果的前提下,或者不以另外的方式背离本发明范围的情况下,所述逻辑可划分为不同的逻辑块(例如程序、模块、函数、或者子程序)。通常,可以增加、改变、省略逻辑部件,可以按不同顺序执行,或者使用不同逻辑结构来实施(例如逻辑门、循环元语、条件逻辑、和其他逻辑机构),而不改变整体结果或者以其他方式脱离本发明的真实范围。
本发明可以按多种不同形式来实施,包括但不限于:使用处理器(例如微处理器、微控制器、数字信号处理器、或者通用计算机)的计算机程序逻辑、使用可编程逻辑设备(例如现场可编程门阵列(FPGA)或者其他PLD)的可编程逻辑、离散组件、集成电路(例如特定用途集成电路(ASIC))、或者包括其任意组合的其他装置。
实施全部或者部分这里前述功能的计算机编程逻辑可以按多种形式实施,包括但不限于:源代码形式、计算机可执行形式、各种中间形式(例如由汇编程序、编译程序、连接程序、或者定位程序等产生的形式)。源代码可以包括按任何各种编程语言实现的计算机程序指令序列(例如对象代码、汇编语言、或者例如Fortran、C、C++、JAVA、或HTML等高级语言),在各种操作系统或者操作环境下使用。源代码可以定义并使用各种数据结构和通信消息。源代码可以是计算机可执行形式(例如经由解释程序)、或者源代码可以转换(例如经由转换器、汇编器、或者编译器)为计算机可执行形式。
所述计算机程序可以持久地或者暂时地按任何形式(例如源代码形式、计算机可执行形式、或者中间形式)固定在有形存储介质中,例如半导体存储装置(例如RAM、ROM、PROM、EEPROM、或者可编程闪存RAM)、磁存储设备(例如软盘或者硬盘)、光存储设备(例如CD-ROM)、PC卡(例如PCMCIA卡)、或者其他存储器设备。该计算机程序可以按任何形式固定在信号中,该信号传输给使用各种通信技术的计算机,包括但不限于:模拟技术、数字技术、光技术、无线技术(例如蓝牙)、网络技术、以及互联网技术。该计算机程序可以按任何形式来发布,如使用附带有打印的文档或者电子文档的可移动存储介质(例如压缩包软件)、预装入计算机系统(例如在系统ROM或者硬盘上)、或者通过通信系统(例如因特网或者万维网)从服务器或者电子公告板来发布。
实施全部或者部分这里的上述功能的硬件逻辑(包括用于可编程逻辑设备的可编程逻辑)可以使用传统人工方法设计,或者可以使用各种工具来设计、捕获、模拟、或者建立电子文档,例如计算机辅助设计(CAD)、硬件描述语言(例如VHEL或者AHDL)、或者PLD编程语言(例如PALASM、ABEL、或者CUPL)。
所述可编程逻辑可以永久或者暂时固定在有形存储介质中,例如半导体存储设备(例如RAM、ROM、PROM、EEPROM、或者可编程闪存RAM)、磁存储设备(例如软盘或者硬盘)、光存储设备(例如CD-ROM)、或者其他存储器设备。该可编程逻辑可以按任何形式固定在信号中,该信号传输给使用各种通信技术的计算机,包括但不限于:模拟技术、数字技术、光技术、无线技术(例如蓝牙)、网络技术、以及互联网技术)。该可编程逻辑可以按任何形式来发布,如使用带有打印文档或者电子文档的可移动存储介质(例如压缩包软件)、预装入计算机系统(例如在系统ROM或者硬盘上)、或者通过通信系统(例如因特网或者万维网)从服务器或者电子公告板发布。
本发明涉及下列美国专利申请,通过引用全文并入此处:
代理卷号2950103、名称为Dynamically Expandable andContractible Fault-Tolerant Storage System Permitting Variously SizedStorage Devices and Method;
代理卷号2950104、名称为Dynamically Upgradeable Fault-TolerantStorage System Permitting Variously Sized Storage Devices and Method;and Attorney Docket No.2950/105entitled Dynamically Expandable;
代理卷号2950105、名称为Dynamically Expandable andContractible Fault-Tolerant Storage System With Virtual Hot Spare。
在不脱离本发明真实范围下,本发明可以实施为其他特殊形式。所述实施例在所有方面都应当认为作为说明而不是限制。

Claims (2)

1.一种在存储装置组中存储数据的方法,该存储装置组至少有一个存储装置,所述方法包括:
从多种冗余模式中自动选择冗余模式,用于在所述存储装置组中存储数据,以提供容错功能,所述多种冗余模式包括:单个硬盘容错模式、两个存储装置上的镜像模式和容错条带化模式,其中,当没有存储空间可用于利用所述两个存储装置上的镜像模式或容错条带化模式来存储数据,则选择所述单个硬盘容错模式;以及
利用所选择的冗余模式在所述存储装置组中存储数据。
2.一种用于存储数据的系统,所述系统包括:
存储装置组,该存储装置组具有至少一个存储装置;以及
存储管理器,用于在所述存储装置组中存储数据,所述存储管理器从多种冗余模式中自动选择冗余模式,用于在所述存储装置组中存储数据,所述多种冗余模式包括:单个硬盘容错模式、两个存储装置上的镜像模式和容错条带化模式,其中,当没有存储空间可用于利用所述两个存储装置上的镜像模式或容错条带化模式来存储数据,则所述存储管理器选择所述单个硬盘容错模式,并且其中所述存储管理器利用所选择的冗余模式在所述存储装置组中存储数据。
CN201410675211.5A 2004-11-05 2005-11-04 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法 Pending CN104699420A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US62549504P 2004-11-05 2004-11-05
US60/625,495 2004-11-05
US71876805P 2005-09-20 2005-09-20
US60/718,768 2005-09-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN 200580045895 Division CN101095116A (zh) 2004-11-05 2005-11-04 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法

Publications (1)

Publication Number Publication Date
CN104699420A true CN104699420A (zh) 2015-06-10

Family

ID=36203290

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201010118886A Pending CN101872319A (zh) 2004-11-05 2005-11-04 存储系统条件指示器及其使用方法
CN201410675211.5A Pending CN104699420A (zh) 2004-11-05 2005-11-04 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201010118886A Pending CN101872319A (zh) 2004-11-05 2005-11-04 存储系统条件指示器及其使用方法

Country Status (8)

Country Link
US (5) US7814272B2 (zh)
EP (4) EP1815337B1 (zh)
JP (5) JP4950897B2 (zh)
KR (1) KR101146484B1 (zh)
CN (2) CN101872319A (zh)
AU (2) AU2005304792B2 (zh)
CA (2) CA2590361C (zh)
WO (4) WO2006052830A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783398A (zh) * 2019-01-18 2019-05-21 上海海事大学 一种基于相关感知页面级ftl固态硬盘性能优化方法
CN111610932A (zh) * 2019-02-25 2020-09-01 三星电子株式会社 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统

Families Citing this family (313)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100611109B1 (ko) * 2000-01-14 2006-08-09 삼성전자주식회사 반도체 장치의 콘택홀 검사 방법
US8892878B2 (en) * 2003-05-09 2014-11-18 Oracle America, Inc. Fine-grained privileges in operating system partitions
US7966333B1 (en) 2003-06-17 2011-06-21 AudienceScience Inc. User segment population techniques
US8112458B1 (en) 2003-06-17 2012-02-07 AudienceScience Inc. User segmentation user interface
AU2005304792B2 (en) 2004-11-05 2010-07-08 Drobo, Inc. Storage system condition indicator and method
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US8296271B1 (en) 2005-03-28 2012-10-23 Federal Home Loan Mortgage Corporation System and method for optimizing data recovery in a parallel database
US7809752B1 (en) 2005-04-14 2010-10-05 AudienceScience Inc. Representing user behavior information
US7676467B1 (en) 2005-04-14 2010-03-09 AudienceScience Inc. User segment population techniques
JP4723921B2 (ja) * 2005-06-13 2011-07-13 株式会社日立製作所 記憶制御装置及びその制御方法
US8838466B2 (en) * 2005-12-02 2014-09-16 Guard Insurance Group System and method to track the status, physical location, and logical location of workflow objects in a workflow cycle
US7620710B2 (en) * 2005-12-19 2009-11-17 Commvault Systems, Inc. System and method for performing multi-path storage operations
KR100725410B1 (ko) * 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
JP4577242B2 (ja) * 2006-03-10 2010-11-10 日本電気株式会社 データバックアップシステム、データバックアップ方法、及びその動作制御プログラム
US7617361B2 (en) * 2006-03-29 2009-11-10 International Business Machines Corporation Configureable redundant array of independent disks
JP5167243B2 (ja) * 2006-04-04 2013-03-21 パーマビット テクノロジー コーポレイション 拡張性及び耐障害性を有する記憶システムのための記憶領域割当て及び消去符号化技法
JP2008009767A (ja) 2006-06-29 2008-01-17 Hitachi Ltd データ処理システム及びその方法並びにストレージ装置
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
CN101622594B (zh) 2006-12-06 2013-03-13 弗森-艾奥公司 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US20080162915A1 (en) * 2006-12-29 2008-07-03 Price Mark H Self-healing computing system
US20080228828A1 (en) * 2007-03-16 2008-09-18 Microsoft Corporation Management of collections within a data storage system
US8086652B1 (en) * 2007-04-27 2011-12-27 Netapp, Inc. Storage system-based hole punching for reclaiming unused space from a data container
US7797489B1 (en) * 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
US8201018B2 (en) * 2007-09-18 2012-06-12 Hewlett-Packard Development Company, L.P. Control of sparing in storage systems
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US7979635B2 (en) * 2008-02-14 2011-07-12 International Business Machines Corporation Apparatus and method to allocate resources in a data storage library
US20090228823A1 (en) * 2008-03-07 2009-09-10 Microsoft Corporation User interface for portable storage devices
US20090240717A1 (en) * 2008-03-20 2009-09-24 Hitachi, Ltd. Method and apparatus for verifying archived data integrity in integrated storage systems
KR20110050404A (ko) 2008-05-16 2011-05-13 퓨전-아이오, 인크. 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품
US8219524B2 (en) * 2008-06-24 2012-07-10 Commvault Systems, Inc. Application-aware and remote single instance data management
JP2010009442A (ja) * 2008-06-30 2010-01-14 Fujitsu Ltd ディスクアレイシステム、ディスク制御装置及びその再構築処理方法
US8239623B2 (en) 2008-07-03 2012-08-07 Oracle America, Inc. Scheduling read operations during drive reconstruction in an array of redundant disk drives
GB2463078B (en) * 2008-09-02 2013-04-17 Extas Global Ltd Distributed storage
AU2009296695B2 (en) 2008-09-26 2013-08-01 Commvault Systems, Inc. Systems and methods for managing single instancing data
US9015181B2 (en) * 2008-09-26 2015-04-21 Commvault Systems, Inc. Systems and methods for managing single instancing data
US8412677B2 (en) 2008-11-26 2013-04-02 Commvault Systems, Inc. Systems and methods for byte-level or quasi byte-level single instancing
JP5637552B2 (ja) * 2009-02-17 2014-12-10 日本電気株式会社 ストレージシステム
JP5407430B2 (ja) * 2009-03-04 2014-02-05 日本電気株式会社 ストレージシステム
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8171202B2 (en) * 2009-04-21 2012-05-01 Google Inc. Asynchronous distributed object uploading for replicated content addressable storage clusters
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US9009363B2 (en) * 2009-06-12 2015-04-14 Rasilient Systems, Inc. Methods for providing and indicating storage load indexes
CN101923441B (zh) * 2009-06-17 2012-08-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统
KR101674015B1 (ko) 2009-06-23 2016-11-08 시게이트 테크놀로지 엘엘씨 데이터 저장 매체 액세스 방법과 그와 같은 기능을 갖는 데이터 저장 장치 및 기록 매체
US8225135B2 (en) * 2009-07-07 2012-07-17 Drobo, Inc. System and method for protecting users of data storage systems against known problems
JP5040970B2 (ja) * 2009-07-24 2012-10-03 富士通株式会社 システム制御サーバ、ストレージシステム、設定方法および設定プログラム
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
WO2011053274A1 (en) * 2009-10-26 2011-05-05 Hewlett-Packard Development Company, L.P. Sparse index bidding and auction based storage
KR101656102B1 (ko) 2010-01-21 2016-09-23 삼성전자주식회사 컨텐츠 파일 생성/제공 장치 및 방법
US8751738B2 (en) * 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
US8271731B2 (en) * 2010-02-26 2012-09-18 Red Hat, Inc. Non blocking rehashing
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US10649799B2 (en) 2010-03-17 2020-05-12 Zerto Ltd. Hypervisor virtual server system, and method for providing data services within a hypervisor virtual server system
US9710294B2 (en) 2010-03-17 2017-07-18 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US9389892B2 (en) 2010-03-17 2016-07-12 Zerto Ltd. Multiple points in time disk images for disaster recovery
US9442748B2 (en) 2010-03-17 2016-09-13 Zerto, Ltd. Multi-RPO data protection
US11256529B2 (en) 2010-03-17 2022-02-22 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US8719307B2 (en) * 2010-04-23 2014-05-06 Red Hat, Inc. Concurrent linked hashed maps
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8515915B2 (en) * 2010-09-24 2013-08-20 Hitachi Data Systems Corporation System and method for enhancing availability of a distributed object storage system during a partial database outage
JP5170794B2 (ja) * 2010-09-28 2013-03-27 株式会社バッファロー 記憶システム及びフェイルオーバ制御方法
US8935492B2 (en) 2010-09-30 2015-01-13 Commvault Systems, Inc. Archiving data objects using secondary copies
US8583599B2 (en) * 2010-11-29 2013-11-12 Ca, Inc. Reducing data duplication in cloud storage
US8849758B1 (en) 2010-12-28 2014-09-30 Amazon Technologies, Inc. Dynamic data set replica management
US10922225B2 (en) 2011-02-01 2021-02-16 Drobo, Inc. Fast cache reheat
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
WO2013070273A1 (en) * 2011-04-01 2013-05-16 Nexsan Corporation Journaling raid system
JP5494556B2 (ja) * 2011-04-19 2014-05-14 コニカミノルタ株式会社 画像形成方法および画像形成装置
CN102819480A (zh) * 2011-06-08 2012-12-12 联想(北京)有限公司 一种监控计算机存储器的方法和计算机
US20130024723A1 (en) * 2011-07-19 2013-01-24 Promise Technology, Inc. Disk storage system with two disks per slot and method of operation thereof
US8488779B2 (en) * 2011-07-25 2013-07-16 Grey Heron Technologies, Llc Method and system for conducting high speed, symmetric stream cipher encryption
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
KR101695991B1 (ko) * 2011-09-06 2017-01-12 한국전자통신연구원 파일 데이터 분산 저장 장치 및 방법
US10223375B2 (en) * 2011-09-20 2019-03-05 Netapp, Inc. Handling data extent size asymmetry during logical replication in a storage system
US9460110B2 (en) 2011-09-21 2016-10-04 Kevin Mark Klughart File system extension system and method
US8799523B2 (en) 2011-09-21 2014-08-05 Kevin Mark Klughart Data storage architecture extension system and method
US9870373B2 (en) 2011-09-21 2018-01-16 Kevin Mark Klughart Daisy-chain storage synchronization system and method
US8943227B2 (en) 2011-09-21 2015-01-27 Kevin Mark Klughart Data storage architecture extension system and method
US9652343B2 (en) 2011-09-21 2017-05-16 Kevin Mark Klughart Raid hot spare system and method
US8813165B2 (en) 2011-09-25 2014-08-19 Kevin Mark Klughart Audio/video storage/retrieval system and method
US8959389B2 (en) 2011-11-23 2015-02-17 International Business Machines Corporation Use of a virtual drive as a hot spare for a raid group
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9304912B1 (en) * 2012-01-06 2016-04-05 Marvell International Ltd. Systems and methods for building redundancy data in a RAID system
WO2013108746A1 (ja) * 2012-01-16 2013-07-25 日本電気株式会社 検索システム、その制御方法、及びプログラム
JPWO2013108745A1 (ja) * 2012-01-16 2015-05-11 日本電気株式会社 ストレージ装置、その制御方法、及びプログラム
US8782375B2 (en) * 2012-01-17 2014-07-15 International Business Machines Corporation Hash-based managing of storage identifiers
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
CN103226518B (zh) * 2012-01-31 2016-06-22 国际商业机器公司 一种在存储管理系统中进行卷扩展的方法和装置
CN104067239B (zh) 2012-02-02 2017-05-10 慧与发展有限责任合伙企业 用于数据组块去复制的系统和方法
US10402393B2 (en) * 2012-03-02 2019-09-03 Pure Storage, Inc. Slice migration in a dispersed storage network
US11232093B2 (en) 2012-03-02 2022-01-25 Pure Storage, Inc. Slice migration in a dispersed storage network
GB2500597B (en) * 2012-03-26 2014-06-18 Streetcloud Ltd Data server
US8719320B1 (en) 2012-03-29 2014-05-06 Amazon Technologies, Inc. Server-side, variable drive health determination
US9792192B1 (en) * 2012-03-29 2017-10-17 Amazon Technologies, Inc. Client-side, variable drive health determination
US9037921B1 (en) * 2012-03-29 2015-05-19 Amazon Technologies, Inc. Variable drive health determination and data placement
US8972799B1 (en) 2012-03-29 2015-03-03 Amazon Technologies, Inc. Variable drive diagnostics
US9513845B2 (en) * 2012-03-30 2016-12-06 Violin Memory Inc. Memory module virtualization
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
JP5857849B2 (ja) * 2012-03-30 2016-02-10 富士通株式会社 ストレージ装置、起動装置決定方法およびプログラム
KR102133316B1 (ko) * 2012-06-07 2020-07-21 바이올린 메모리 인코포레이티드 메모리 시스템 관리
JP2014056445A (ja) * 2012-09-12 2014-03-27 Fujitsu Ltd ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法
US9936020B2 (en) * 2012-10-30 2018-04-03 International Business Machines Corporation Access control of data in a dispersed storage network
US9836492B1 (en) * 2012-11-01 2017-12-05 Amazon Technologies, Inc. Variable sized partitioning for distributed hash tables
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US9703794B2 (en) * 2013-01-02 2017-07-11 International Business Machines Corporation Reducing fragmentation in compressed journal storage
CN103942112B (zh) * 2013-01-22 2018-06-15 深圳市腾讯计算机系统有限公司 磁盘容错方法、装置及系统
KR20150111937A (ko) 2013-01-30 2015-10-06 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 비휘발성 메모리 기록 메커니즘
US9411736B2 (en) 2013-03-13 2016-08-09 Drobo, Inc. System and method for an accelerator cache based on memory availability and usage
US9417822B1 (en) 2013-03-15 2016-08-16 Western Digital Technologies, Inc. Internal storage manager for RAID devices
US9542126B2 (en) * 2013-04-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Redundant array of independent disks systems that utilize spans with different storage device counts for a logical volume
JP6212934B2 (ja) * 2013-05-07 2017-10-18 富士通株式会社 ストレージシステム、情報処理装置の制御プログラム、およびストレージシステムの制御方法
US9760596B2 (en) 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
EP2997496B1 (en) 2013-05-16 2022-01-19 Hewlett Packard Enterprise Development LP Selecting a store for deduplicated data
WO2014185918A1 (en) 2013-05-16 2014-11-20 Hewlett-Packard Development Company, L.P. Selecting a store for deduplicated data
US9213611B2 (en) 2013-07-24 2015-12-15 Western Digital Technologies, Inc. Automatic raid mirroring when adding a second boot drive
US9514002B2 (en) * 2013-09-13 2016-12-06 Vmware, Inc. Incremental backups using retired snapshots
US9772907B2 (en) 2013-09-13 2017-09-26 Vmware, Inc. Incremental backups using retired snapshots
CN104572656B (zh) * 2013-10-12 2019-02-19 华为技术有限公司 一种磁盘镜像空间回收的方法及装置
US9495292B1 (en) * 2013-12-31 2016-11-15 EMC IP Holding Company, LLC Cache management
JP5954338B2 (ja) * 2014-01-14 2016-07-20 横河電機株式会社 計装システム及びその保守方法
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
JP6244974B2 (ja) * 2014-02-24 2017-12-13 富士通株式会社 ストレージ装置、及びストレージ装置の制御方法
US9817721B1 (en) * 2014-03-14 2017-11-14 Sanmina Corporation High availability management techniques for cluster resources
US9495293B1 (en) * 2014-05-05 2016-11-15 EMC IP Holding Company, LLC Zone consistency
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
GB2527529B (en) * 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10303570B2 (en) * 2014-10-17 2019-05-28 Hitachi, Ltd. Method and apparatus for managing data recovery of distributed storage system
CN107111627B (zh) * 2014-11-10 2021-04-09 慧与发展有限责任合伙企业 在线文件系统检查
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10013359B2 (en) * 2014-12-24 2018-07-03 University Of New Hampshire Redundant disk array storage system and method using heterogeneous disks and a lookup table
WO2016101283A1 (zh) * 2014-12-27 2016-06-30 华为技术有限公司 一种数据处理方法装置及系统
WO2016115737A1 (en) 2015-01-23 2016-07-28 Hewlett-Packard Development Company, L.P. Aligned variable reclamation
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US9690660B1 (en) * 2015-06-03 2017-06-27 EMC IP Holding Company LLC Spare selection in a declustered RAID system
US10097636B1 (en) 2015-06-15 2018-10-09 Western Digital Technologies, Inc. Data storage device docking station
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10289326B2 (en) 2015-09-14 2019-05-14 HGST Netherlands, B.V. Optimized data layout for object store system
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10073625B2 (en) * 2016-01-06 2018-09-11 HGST Netherlands B.V. Variable-RPM hard disk drive control
US10545681B2 (en) 2016-02-08 2020-01-28 International Business Machines Corporation Asymmetric storage data distribution
US10152497B2 (en) * 2016-02-24 2018-12-11 Salesforce.Com, Inc. Bulk deduplication detection
US10901996B2 (en) 2016-02-24 2021-01-26 Salesforce.Com, Inc. Optimized subset processing for de-duplication
US10956450B2 (en) 2016-03-28 2021-03-23 Salesforce.Com, Inc. Dense subset clustering
US10949395B2 (en) 2016-03-30 2021-03-16 Salesforce.Com, Inc. Cross objects de-duplication
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10635344B2 (en) 2016-04-27 2020-04-28 International Business Machines Corporation Dynamic spare storage allocation by creating logical volumes from unused space allocated for user data of a raid storage
KR101734160B1 (ko) * 2016-04-28 2017-05-11 주식회사 디에이아이오 작업부하 편중을 완화하는 저장 장치
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US10296498B2 (en) * 2016-08-23 2019-05-21 Oracle International Corporation Coordinated hash table indexes to facilitate reducing database reconfiguration time
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10387077B2 (en) * 2016-11-23 2019-08-20 Netflix, Inc. Techniques for efficiently accessing values spanning slabs of memory
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10331902B2 (en) 2016-12-29 2019-06-25 Noblis, Inc. Data loss prevention
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
CN106934014B (zh) * 2017-03-10 2021-03-19 山东省科学院情报研究所 一种基于Hadoop的网络数据挖掘与分析平台及其方法
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
JP2018181213A (ja) * 2017-04-20 2018-11-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
CN107180018B (zh) * 2017-05-17 2018-11-20 上海兆芯集成电路有限公司 基于散列的加速压缩方法以及使用此方法的装置
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10459809B2 (en) * 2017-06-30 2019-10-29 Intel Corporation Stacked memory chip device with enhanced data protection capability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10592478B1 (en) 2017-10-23 2020-03-17 EMC IP Holding Company LLC System and method for reverse replication
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
CN110413216B (zh) * 2018-04-28 2023-07-18 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US11120046B2 (en) 2018-05-04 2021-09-14 Microsoft Technology Licensing Llc Data replication in a distributed storage system
US10817197B2 (en) * 2018-05-04 2020-10-27 Microsoft Technology Licensing, Llc Data partitioning in a distributed storage system
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11093444B2 (en) * 2018-07-02 2021-08-17 Weka.IO Ltd. Access redirection in a distributive file system
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
KR20210041655A (ko) 2019-10-07 2021-04-16 삼성전자주식회사 메모리 칩, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11775378B2 (en) * 2019-12-16 2023-10-03 Micron Technology, Inc. Memory health status reporting
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11481593B2 (en) * 2020-06-22 2022-10-25 Western Digital Technologies, Inc. Color changing storage device housing
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11474900B2 (en) * 2020-08-04 2022-10-18 International Business Machines Corporation Dynamic rebuild capability in redundant array of independent disks (RAID) arrays using compressing drives
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11907068B2 (en) 2021-02-16 2024-02-20 Nyriad, Inc. Read request response for reconstructed data in a degraded drive
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11726879B2 (en) * 2021-07-12 2023-08-15 Dell Products L.P. Multiple block error correction in an information handling system
CN113284039B (zh) * 2021-07-16 2021-10-08 杭州安恒信息技术股份有限公司 一种位图管理方法、装置、设备及可读存储介质
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
CN115562595B (zh) * 2022-12-06 2023-02-28 苏州浪潮智能科技有限公司 一种卷创建方法及装置、卷读写方法及装置、电子设备

Family Cites Families (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3370604A (en) * 1964-12-16 1968-02-27 Hudson Eugineering Company Self-priming liquid pumping system and primer valve
US3766534A (en) 1972-11-15 1973-10-16 Ibm Shift register storage unit with multi-dimensional dynamic ordering
US4221003A (en) 1978-05-04 1980-09-02 International Business Machines Corporation Bubble domain relational data base system
US4288860A (en) * 1979-08-02 1981-09-08 Sperry Corporation Dynamic storage synchronizer using variable oscillator and FIFO buffer
US4607346A (en) * 1983-03-28 1986-08-19 International Business Machines Corporation Apparatus and method for placing data on a partitioned direct access storage device
JP2569010B2 (ja) * 1986-05-21 1997-01-08 株式会社日立製作所 半導体メモリ
US4864511A (en) 1987-01-27 1989-09-05 Storage Technology Corporation Automated cartridge system
US4833554A (en) 1987-02-25 1989-05-23 Tandon Corporation Hard disk drive module and receptacle therefor
US4989205A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US4989206A (en) * 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US4914656A (en) * 1988-06-28 1990-04-03 Storage Technology Corporation Disk drive memory
US5077736A (en) 1988-06-28 1991-12-31 Storage Technology Corporation Disk drive memory
US4989506A (en) * 1988-11-09 1991-02-05 Whirlpool Corporation Charcoal filter system for a trash compactor
DE3911806A1 (de) 1989-04-11 1990-10-18 Mayer Fa Karl Spulmaschine mit mehreren spulstellen
US5144692A (en) 1989-05-17 1992-09-01 International Business Machines Corporation System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5101492A (en) 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
JPH03266039A (ja) 1990-03-16 1991-11-27 Fujitsu Ltd フリーフォーマットデータリンク処理方式
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
JPH0495121A (ja) * 1990-08-08 1992-03-27 Nec Corp ファイル二重化方式
US5317728A (en) * 1990-09-07 1994-05-31 International Business Machines Corporation Storage management of a first file system using a second file system containing surrogate files and catalog management information
US5210866A (en) 1990-09-12 1993-05-11 Storage Technology Corporation Incremental disk backup system for a dynamically mapped data storage subsystem
US5269011A (en) 1990-09-24 1993-12-07 Emc Corporation Dynamically reconfigurable data storage system with storage system controllers selectively operable as channel adapters on storage device adapters
US5390313A (en) 1990-09-24 1995-02-14 Emc Corporation Data storage system with data mirroring and reduced access time data retrieval
JP3098584B2 (ja) * 1990-09-28 2000-10-16 ゼロックス コーポレイション 電子複写システムにおける障害除去及び回復方法及び装置
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5345584A (en) 1991-03-11 1994-09-06 Laclead Enterprises System for managing data storage based on vector-summed size-frequency vectors for data sets, devices, and residual storage on devices
US5239659A (en) 1991-06-19 1993-08-24 Storage Technology Corporation Phantom duplex copy group apparatus for a disk drive array data storge subsystem
JPH0512104A (ja) 1991-07-04 1993-01-22 Seikosha Co Ltd データ記憶制御装置
DE69232814T2 (de) 1991-08-19 2003-08-07 Energy Conversion Devices Inc Elektronisch löschbare, direkt überschreibbare multibit-einzelzellen-speicherelemente und aus diesen hergestellte anordnungen
US5325505A (en) 1991-09-04 1994-06-28 Storage Technology Corporation Intelligent storage manager for data storage apparatus having simulation capability
US5257379A (en) * 1991-09-04 1993-10-26 International Business Machines Corporation Establishing synchronization of hardware and software I/O configuration definitions
US5139184A (en) * 1991-10-31 1992-08-18 Product Development Partners Garment hanger shoulder guard
US5323489A (en) 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
JP3160106B2 (ja) 1991-12-23 2001-04-23 ヒュンダイ エレクトロニクス アメリカ ディスクアレーの区分け方法
US5454080A (en) * 1992-02-10 1995-09-26 International Business Machines Corporation Removable hard disk drive system with circuit for hot insertion and removal responsive to contacts of zero-insertion-force connector on the lateral side of the drive
US5410737A (en) 1992-04-27 1995-04-25 American Pcs L.P. Frequency agile sharing technology (FAST) for a personal communications service system
US5381539A (en) 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5535335A (en) 1992-12-22 1996-07-09 International Business Machines Corporation Method and system for reporting the status of an aggregate resource residing in a network of interconnected real resources
JPH06230903A (ja) * 1993-01-31 1994-08-19 Hitachi Ltd ディスクアレイ装置の障害回復方法、およびディスクアレイ装置
EP0612015A1 (en) 1993-02-16 1994-08-24 International Business Machines Corporation Improved disk array system having special parity groups for data blocks with high update activity
US5463772A (en) 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5392244A (en) 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
JP2912802B2 (ja) * 1993-10-14 1999-06-28 富士通株式会社 ディスクアレイ装置の故障対処方法および装置
JPH07130139A (ja) 1993-11-01 1995-05-19 Fuji Electric Co Ltd ディスク記憶装置とそのデータ記録,再生方法
US5546558A (en) * 1994-06-07 1996-08-13 Hewlett-Packard Company Memory system with hierarchic disk array and memory map store for persistent storage of virtual mapping information
DE69533764T2 (de) 1994-06-22 2005-12-01 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
US5479653A (en) * 1994-07-14 1995-12-26 Dellusa, L.P. Disk array apparatus and method which supports compound raid configurations and spareless hot sparing
JPH0863298A (ja) * 1994-08-18 1996-03-08 Hitachi Ltd ディスクアレイ装置
US5987528A (en) * 1994-09-09 1999-11-16 Compaq Computer Corporation Controlling the flow of electronic information through computer hardware
JP2953960B2 (ja) 1994-09-14 1999-09-27 株式会社ピーエフユー ディスクアレイ装置
US5463776A (en) 1994-09-22 1995-10-31 Hewlett-Packard Company Storage management system for concurrent generation and fair allocation of disk space among competing requests
US5615352A (en) 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US5664187A (en) * 1994-10-26 1997-09-02 Hewlett-Packard Company Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US5524204A (en) * 1994-11-03 1996-06-04 International Business Machines Corporation Method and apparatus for dynamically expanding a redundant array of disk drives
JPH08190461A (ja) * 1995-01-10 1996-07-23 Hitachi Ltd ディスクアレイシステム
JP3547877B2 (ja) 1995-01-11 2004-07-28 株式会社東芝 磁気記録再生装置
US5548712A (en) * 1995-01-19 1996-08-20 Hewlett-Packard Company Data storage system and method for managing asynchronous attachment and detachment of storage disks
US5666512A (en) 1995-02-10 1997-09-09 Hewlett-Packard Company Disk array having hot spare resources and methods for using hot spare resources to store user data
US5537534A (en) 1995-02-10 1996-07-16 Hewlett-Packard Company Disk array having redundant storage and methods for incrementally generating redundancy as data is written to the disk array
US5542065A (en) * 1995-02-10 1996-07-30 Hewlett-Packard Company Methods for using non-contiguously reserved storage space for data migration in a redundant hierarchic data storage system
US5604902A (en) 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
JP3358687B2 (ja) * 1995-03-13 2002-12-24 株式会社日立製作所 ディスクアレイ装置
US5875456A (en) * 1995-08-17 1999-02-23 Nstor Corporation Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array
JPH0962460A (ja) * 1995-08-23 1997-03-07 Hitachi Ltd 情報処理システム
JP4095121B2 (ja) 1995-08-31 2008-06-04 キヤノン株式会社 図形処理装置及び図形処理方法
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
JPH09219003A (ja) 1996-02-13 1997-08-19 Toshiba Corp ディスク記録再生装置及びそれに適用するマルチヘッド方式の磁気ヘッド装置
JPH09269871A (ja) 1996-03-29 1997-10-14 Mitsubishi Electric Corp ディスクアレイ装置におけるデータ再冗長化方式
JPH09288547A (ja) * 1996-04-22 1997-11-04 Hitachi Inf Technol:Kk アレイ型記憶装置
US5881311A (en) * 1996-06-05 1999-03-09 Fastor Technologies, Inc. Data storage subsystem with block based data management
JPH1011906A (ja) 1996-06-24 1998-01-16 Hitachi Ltd 磁気ディスク装置
US5864655A (en) 1996-09-09 1999-01-26 International Business Machines Corporation Managing removable media in raid and rail environments
US5896256A (en) * 1997-01-06 1999-04-20 Sony Corporation Visual capacity indicator for data recording systems
US5825616A (en) 1997-01-21 1998-10-20 Dell Usa, L.P. Media module locking and ejecting mechanism
JPH10260788A (ja) * 1997-03-19 1998-09-29 Toshiba Corp ディスクアレイシステム
US5832235A (en) 1997-03-26 1998-11-03 Hewlett-Packard Co. System and method for pattern matching using checksums
US7389312B2 (en) 1997-04-28 2008-06-17 Emc Corporation Mirroring network data to establish virtual storage area network
JPH1139102A (ja) 1997-07-24 1999-02-12 Nec Eng Ltd 磁気ディスク装置
GB2341466B (en) * 1997-08-15 2002-10-02 Seagate Technology Redundancy implementation on object oriented data storage device
WO1999009513A2 (en) 1997-08-20 1999-02-25 Powerquest Corporation Computer partition manipulation during imaging
US6016553A (en) * 1997-09-05 2000-01-18 Wild File, Inc. Method, software and apparatus for saving, using and recovering data
JPH1186452A (ja) 1997-09-09 1999-03-30 Toshiba Corp ディスク記憶装置
US6032148A (en) 1997-09-15 2000-02-29 Hewlett-Packard Company Multilevel storage system with hybrid data compression
EP1020860B1 (en) * 1997-09-17 2002-11-13 Matsushita Electric Industrial Co., Ltd. Optical disc recording apparatus, computer-readable recording medium recording a file management program, and optical disc
US6219693B1 (en) 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
JP3618529B2 (ja) * 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
US6009478A (en) 1997-11-04 1999-12-28 Adaptec, Inc. File array communications interface for communicating between a host computer and an adapter
US5986881A (en) 1997-11-17 1999-11-16 Hon Hai Precision Ind. Co., Ltd. Disk driver cage assembly with locking device
US5953729A (en) 1997-12-23 1999-09-14 Microsoft Corporation Using sparse file technology to stage data that will then be stored in remote storage
JP3649011B2 (ja) * 1998-01-09 2005-05-18 株式会社日立製作所 コンピュータシステム
US6151685A (en) 1998-05-15 2000-11-21 International Business Machines Corporation System and method for recovering a segment directory for a log structured array
JP4293648B2 (ja) * 1998-06-26 2009-07-08 株式会社日本デジタル研究所 ディスク装置におけるデータ保護方法、ディスク装置、およびプログラムを記録したコンピュータに読み取り可能な記録媒体
JP2000020248A (ja) 1998-06-26 2000-01-21 Nippon Digital Kenkyusho:Kk ディスクの障害回復方法、ディスクドライバおよび記録媒体
EP2200032A3 (en) 1998-09-18 2010-09-22 Kabushiki Kaisha Toshiba Information recording method, information recording device, and information recording medium
US6606585B1 (en) 1998-10-13 2003-08-12 Hewlett-Packard Development Company, L.P. Acceptability testing for capacity planning of data storage system
US6119174A (en) 1998-10-13 2000-09-12 Hewlett-Packard Company Methods and apparatus for implementing quality-of-service guarantees in data storage systems
US6321317B1 (en) 1998-12-16 2001-11-20 Hewlett-Packard Co Apparatus for and method of multi-dimensional constraint optimization in storage system configuration
US6542961B1 (en) * 1998-12-22 2003-04-01 Hitachi, Ltd. Disk storage system including a switch
EP1081596A4 (en) * 1999-03-26 2008-04-23 Sony Corp FILE MANAGEMENT, DATA RECORDING / REPRODUCTION AND DEVICES THEREFOR
US6484235B1 (en) * 1999-05-03 2002-11-19 3Ware, Inc. Methods and systems for dynamically distributing disk array data accesses
US6370604B1 (en) 1999-05-07 2002-04-09 Intel Corporation Hot replacement of storage device in serial array of storage devices
US6754664B1 (en) * 1999-07-02 2004-06-22 Microsoft Corporation Schema-based computer system health monitoring
US6477544B1 (en) 1999-07-16 2002-11-05 Microsoft Corporation Single instance store for file systems
JP4040797B2 (ja) * 1999-07-19 2008-01-30 株式会社東芝 ディスク制御装置および記録媒体
JP2001043117A (ja) 1999-07-28 2001-02-16 Sharp Corp ディスク媒体管理方法
US6546499B1 (en) 1999-10-14 2003-04-08 International Business Machines Corporation Redundant array of inexpensive platters (RAIP)
WO2001040925A1 (fr) * 1999-12-02 2001-06-07 Fujitsu Limited Batterie de disques et procede d'extension de sa capacite
US6418449B1 (en) * 2000-01-06 2002-07-09 Inventec Corporation Method of cloning the file system of a window web operating system by using a bitmap file
JP2001206098A (ja) * 2000-01-21 2001-07-31 Toyota Motor Corp 車両走行制御装置
US7216251B2 (en) 2000-02-19 2007-05-08 Powerquest Corporation Computer imaging recovery without a working partition or a secondary medium
US6615365B1 (en) 2000-03-11 2003-09-02 Powerquest Corporation Storing a computer disk image within an imaged partition
TW512318B (en) * 2000-03-01 2002-12-01 Matsushita Electric Ind Co Ltd AV data recorder and its method, disk recorded by AV data recorder and the method
US6606651B1 (en) * 2000-05-03 2003-08-12 Datacore Software Corporation Apparatus and method for providing direct local access to file level data in client disk images within storage area networks
US6606561B2 (en) * 2000-05-17 2003-08-12 Omega Patents, L.L.C. Vehicle tracker including input/output features and related methods
US6892221B2 (en) * 2000-05-19 2005-05-10 Centerbeam Data backup
US6711572B2 (en) 2000-06-14 2004-03-23 Xosoft Inc. File system for distributing content in a data network and related methods
US6779094B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6851024B1 (en) 2000-08-17 2005-02-01 Hewlett-Packard Development Company, L.P. Exclusive caching in computer systems
US20040236798A1 (en) * 2001-09-11 2004-11-25 Sudhir Srinivasan Migration of control in a distributed segmented file system
US6693766B1 (en) 2000-09-21 2004-02-17 Hewlett-Packard Development Company, L.P. Disk drive system with hybrid surface-based data mapping and method of operation thereof
JP2002100128A (ja) * 2000-09-26 2002-04-05 Minebea Co Ltd 磁気ディスク装置
US6745284B1 (en) * 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
GB0025226D0 (en) * 2000-10-14 2000-11-29 Ibm Data storage system and method of storing data
US6862151B2 (en) 2000-11-15 2005-03-01 Seagate Technologies Llc Method and apparatus for read error recovery
JP2002175157A (ja) 2000-12-08 2002-06-21 Toshiba Corp ディスクアレイ装置
US6865527B2 (en) 2000-12-18 2005-03-08 Hewlett-Packard Development Company, L.P. Method and apparatus for computing data storage assignments
KR100388498B1 (ko) * 2000-12-30 2003-06-25 한국전자통신연구원 복수 개의 레이드를 구비한 계층적 레이드 시스템
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020156973A1 (en) * 2001-01-29 2002-10-24 Ulrich Thomas R. Enhanced disk array
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
GB2371886B (en) * 2001-01-31 2005-06-22 Hewlett Packard Co Storage apparatus
US6795895B2 (en) 2001-03-07 2004-09-21 Canopy Group Dual axis RAID systems for enhanced bandwidth and reliability
JP2002288014A (ja) * 2001-03-27 2002-10-04 Fujitsu Ltd ファイル管理システム及びファイルデータ書込方法
US6865640B2 (en) * 2001-04-26 2005-03-08 International Business Machines Corporation Hard disk drive library
US6934673B2 (en) 2001-05-25 2005-08-23 Hewlett-Packard Development Company, L.P. Method and apparatus for predicting multi-part performability
US20020194427A1 (en) * 2001-06-18 2002-12-19 Ebrahim Hashemi System and method for storing data and redundancy information in independent slices of a storage device
KR100392382B1 (ko) * 2001-07-27 2003-07-23 한국전자통신연구원 동적 크기 변경 및 메타 데이터 양의 최소화를 위한 논리볼륨 관리 방법
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US6996668B2 (en) 2001-08-06 2006-02-07 Seagate Technology Llc Synchronized mirrored data in a data storage device
US6978259B1 (en) 2001-10-23 2005-12-20 Hewlett-Packard Development Company, L.P. Automated system adaptation technique particularly for data storage systems
US6728837B2 (en) 2001-11-02 2004-04-27 Hewlett-Packard Development Company, L.P. Adaptive data insertion for caching
JP2003150323A (ja) * 2001-11-13 2003-05-23 Hitachi Ltd 情報記憶装置
US7111117B2 (en) 2001-12-19 2006-09-19 Broadcom Corporation Expansion of RAID subsystems using spare space with immediate access to new space
US6644556B2 (en) * 2002-01-18 2003-11-11 Hewlett-Packard Development Company, L.P. Storage device including storage space indication
JP4259800B2 (ja) 2002-01-31 2009-04-30 三菱電機株式会社 データ格納装置、データ管理方法及びプログラム
JP3590390B2 (ja) * 2002-03-13 2004-11-17 株式会社東芝 ディスク記憶装置における自己ミラーリング方法及び同方法を適用するディスク記憶装置
US6875011B2 (en) * 2002-03-20 2005-04-05 Masasuke Soeda Lighter and flint holder
US7072910B2 (en) * 2002-03-22 2006-07-04 Network Appliance, Inc. File folding technique
JP2003316525A (ja) 2002-04-26 2003-11-07 Seiko Epson Corp ディスクアレイ制御装置
CN1203433C (zh) 2002-06-26 2005-05-25 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
JP4246979B2 (ja) * 2002-09-05 2009-04-02 株式会社日立製作所 装置管理システム
US20040078641A1 (en) * 2002-09-23 2004-04-22 Hewlett-Packard Company Operating system-independent file restore from disk image
JP2004118946A (ja) * 2002-09-26 2004-04-15 Hitachi Ltd ディスクアレイ装置、記憶デバイスユニット、ディスクアレイ装置の制御方法、及びプログラム
US6711676B1 (en) * 2002-10-15 2004-03-23 Zomaya Group, Inc. System and method for providing computer upgrade information
US6857011B2 (en) * 2002-10-31 2005-02-15 Paragon Development Systems, Inc. Method of remote imaging
JP2004213064A (ja) 2002-12-26 2004-07-29 Fujitsu Ltd Raid装置及びその論理デバイス拡張方法
WO2004075175A1 (ja) * 2003-02-19 2004-09-02 Fujitsu Limited 磁気ディスク装置、そのアクセス制御方法、記録媒体
US20040173544A1 (en) 2003-03-04 2004-09-09 Feng-Ming Chen Hard disc piling/assembling member of rack mount
JP4267353B2 (ja) * 2003-03-28 2009-05-27 株式会社日立製作所 データ移行支援システム、および、データ移行支援方法
US6912482B2 (en) * 2003-09-11 2005-06-28 Veritas Operating Corporation Data storage analysis mechanism
US7266638B2 (en) * 2003-10-06 2007-09-04 Dell Products L.P. System, method and software for reporting logical volume information on network attached storage appliances
JP4493321B2 (ja) * 2003-11-19 2010-06-30 株式会社日立製作所 ディスクアレイ装置及びデータ退避方法
JP4634049B2 (ja) 2004-02-04 2011-02-16 株式会社日立製作所 ディスクアレイ装置における異常通知制御
US7334156B2 (en) 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US7523140B2 (en) 2004-03-01 2009-04-21 Sandisk Il Ltd. File system that manages files according to content
US7188212B2 (en) 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US7536701B2 (en) 2004-10-13 2009-05-19 Certance Llc Lockable ejection system and method
AU2005304792B2 (en) 2004-11-05 2010-07-08 Drobo, Inc. Storage system condition indicator and method
JP4690783B2 (ja) * 2005-06-08 2011-06-01 株式会社日立製作所 ボリューム管理システムおよびその方法
EP2143105B1 (en) 2007-04-13 2015-02-25 Data Robotics, Inc. Carrierless storage system enclosure with ejection mechanism

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783398A (zh) * 2019-01-18 2019-05-21 上海海事大学 一种基于相关感知页面级ftl固态硬盘性能优化方法
CN111610932A (zh) * 2019-02-25 2020-09-01 三星电子株式会社 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统
CN111610932B (zh) * 2019-02-25 2022-04-26 三星电子株式会社 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统

Also Published As

Publication number Publication date
WO2006052888A3 (en) 2006-11-09
JP2008519359A (ja) 2008-06-05
JP5055125B2 (ja) 2012-10-24
CA2590875A1 (en) 2006-05-18
JP2011198383A (ja) 2011-10-06
US20060174157A1 (en) 2006-08-03
CN101872319A (zh) 2010-10-27
JP5116151B2 (ja) 2013-01-09
KR20070111450A (ko) 2007-11-21
US20060143380A1 (en) 2006-06-29
JP2008521074A (ja) 2008-06-19
US7818531B2 (en) 2010-10-19
EP1815337B1 (en) 2013-05-15
WO2006050455A3 (en) 2006-09-21
WO2006052830A2 (en) 2006-05-18
AU2005304759A2 (en) 2008-04-17
CA2590361C (en) 2012-01-03
EP1825373A2 (en) 2007-08-29
WO2006050455A9 (en) 2006-07-27
CA2590361A1 (en) 2006-05-18
US7814272B2 (en) 2010-10-12
CA2590875C (en) 2011-09-13
US8156303B2 (en) 2012-04-10
AU2005304792B2 (en) 2010-07-08
WO2006052829A3 (en) 2006-10-19
US20110035565A1 (en) 2011-02-10
EP1825372A2 (en) 2007-08-29
US7814273B2 (en) 2010-10-12
JP4950897B2 (ja) 2012-06-13
WO2006052888A2 (en) 2006-05-18
WO2006050455A8 (en) 2006-12-28
WO2006050455A2 (en) 2006-05-11
AU2005304759B2 (en) 2012-05-17
JP2008519350A (ja) 2008-06-05
WO2006052888A8 (en) 2006-12-28
JP2008519356A (ja) 2008-06-05
AU2005304792A1 (en) 2006-05-18
JP4870678B2 (ja) 2012-02-08
EP1815337A2 (en) 2007-08-08
US9043639B2 (en) 2015-05-26
WO2006052830A3 (en) 2006-09-21
AU2005304759A1 (en) 2006-05-18
EP1815340A2 (en) 2007-08-08
WO2006052829A2 (en) 2006-05-18
KR101146484B1 (ko) 2012-07-05
US20060129875A1 (en) 2006-06-15
US20060112222A1 (en) 2006-05-25

Similar Documents

Publication Publication Date Title
CN104699420A (zh) 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法
CN101501623B (zh) 感知文件系统的块存储系统、装置和方法
US7873782B2 (en) Filesystem-aware block storage system, apparatus, and method
CN101095115A (zh) 存储系统条件指示器和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150610

WD01 Invention patent application deemed withdrawn after publication