Búsqueda Imágenes Maps Play YouTube Noticias Gmail Drive Más »
Iniciar sesión
Usuarios de lectores de pantalla: deben hacer clic en este enlace para utilizar el modo de accesibilidad. Este modo tiene las mismas funciones esenciales pero funciona mejor con el lector.

Patentes

  1. Búsqueda avanzada de patentes
Número de publicaciónUS8176013 B2
Tipo de publicaciónConcesión
Número de solicitudUS 12/965,748
Fecha de publicación8 May 2012
Fecha de prioridad21 Oct 2005
TarifaPagadas
También publicado comoUS7917474, US20070094310, US20110145195
Número de publicación12965748, 965748, US 8176013 B2, US 8176013B2, US-B2-8176013, US8176013 B2, US8176013B2
InventoresAaron J. Passey, Darren P. Schack, Peter J. Godman, Robert J. Anderson, Neal T. Fachan
Cesionario originalEmc Corporation
Exportar citaBiBTeX, EndNote, RefMan
Enlaces externos: USPTO, Cesión de USPTO, Espacenet
Systems and methods for accessing and updating distributed data
US 8176013 B2
Resumen
Systems and methods are disclosed that provide an indexing data structure. In one embodiment, the indexing data structure is mirrored index tree where the copies of the nodes of the tree are stored across devices in a distributed system. In one embodiment, nodes that are stored on an offline device are restored, and an offline device that comes back online is merged into the distributed system and given access to the current indexing data structure. In one embodiment, the indexing data structure is traversed to locate and restore nodes that are stored on offline devices of the distributed system.
Imágenes(21)
Previous page
Next page
Reclamaciones(20)
1. A method of merging a first storage device into a plurality of storage devices, the method comprising:
querying, by a processor of a first storage device of a plurality of storage devices, the other storage devices for an indication as to the current version of one or more portions of a mirrored index data structure, the mirrored index data structure stored across the storage devices and comprising:
a plurality of nodes comprising:
a root node;
at least one copy of the root node, wherein the root node and the copy of the root node are stored on different storage devices of the plurality of distributed storage devices;
a plurality of child nodes beneath the root node in the hierarchy referencing one or more index nodes or indexed data; and
at least one copy of each child node of the plurality of child nodes, wherein each child node of the plurality of child nodes and its respective copy are stored on different storage devices of the plurality of storage devices, wherein the root node and the plurality of child nodes form a first index tree and the at least one copy of the root node and the at least one copy of each child node form at least one mirror copy of the first index tree;
determining, by a processor of the first storage device and based on the indication as to the current version, whether the first storage device is storing the current version of the one or more portions;
if the first storage device is not storing the current version of the one or more portions, updating the first storage device to store the current version of the one or more portions; and
removing from the first storage device one or more nodes of the plurality of nodes which are not referenced by the current version of the one or more portions but are stored on the first storage device.
2. The method of claim 1, further comprising, before the querying, determining that the first storage device has become available, wherein the first storage device was previously unavailable.
3. The method of claim 1, wherein the one or more portions comprise references to one or more of the root node and the at least one copy of the root node.
4. The method of claim 1, wherein the indication as to the current version comprises version values for each of the plurality of queried storage devices, the version values representing versions of the one or more portions of the mirrored index data structure stored on the respective queried storage devices.
5. The method of claim 4, wherein the determining further comprises determining a highest version value of the version values of the queried storage devices and determining whether the version value of the first storage device is lower than the highest version value.
6. The method of claim 5, wherein determining a highest version includes calculating the highest version value for which there is a quorum of the plurality of storage devices with that version value.
7. The method of claim 5, further comprising, if the first storage device is not storing the current version of the one or more portions of the mirrored index data structure, updating the version value of the first storage device to the highest version value.
8. The method of claim 1, wherein the mirrored index data structure is implemented as at least one of a balanced tree, a hash table, and a linked list.
9. The method of claim 1, further comprising, by a processor of at least one of the other storage devices:
receiving a request to modify a target node of the plurality of nodes;
determining that a copy of the target node is stored on the first storage device and that the first storage device is currently unavailable;
modifying the target node;
creating a new copy of the target node; and
storing the new copy of the target node on at least one of the plurality of storage devices that is available.
10. The method of claim 1, wherein the mirrored index data structure stores addresses of metadata data structures of files and directories in a distributed file system and maps identifiers for the files and directories to their respective addresses.
11. A storage system comprising:
a plurality of storage devices each comprising storage and at least one processor;
a mirrored index data structure stored across the storage devices and comprising:
a plurality of nodes comprising:
a root node;
at least one copy of the root node, wherein the root node and the copy of the root node are stored on different storage devices of the plurality of storage devices;
a plurality of child nodes beneath the root node in the hierarchy referencing one or more index nodes or indexed data; and
at least one copy of each child node of the plurality of child nodes, wherein each child node of the plurality of nodes and its respective copy are stored on different storage devices of the plurality of storage devices, wherein the root node and the plurality of child nodes form a first index tree and the at least one copy of the root node and the at least one copy of each child node form at least one mirror copy of the first index tree;
wherein at least a first storage device of the storage devices comprises a merge module executable by the at least one processor of the respective storage device and configured to:
query the other storage devices for an indication as to the current version of one or more portions of a mirrored index data structure;
determine, based on the indication as to the current version, whether the first storage device is storing the current version of the one or more portions;
if the first storage device is not storing the current version of the one or more portions, update the first storage device to store the current version of the one or more portions; and
remove from the first storage device one or more nodes of the plurality of nodes which are not referenced by the current version of the one or more portions but are stored on the first storage device.
12. The storage system of claim 11, wherein the merge module is further configured to, before querying the other storage devices, determine that the first storage device has become available, wherein the first storage device was previously unavailable.
13. The storage system of claim 11, wherein the one or more portions comprise references to one or more of the root node and the at least one copy of the root node.
14. The storage system of claim 11, wherein the indication as to the current version comprises version values for each of the plurality of queried storage devices, the version values representing versions of the one or more portions of the mirrored index data structure stored on the respective queried storage devices.
15. The storage system of claim 14, wherein the merge module determines whether the first storage device is storing the current version at least in part by determining a highest version value of the version values of the queried storage devices and determining whether the version value of the first storage device is lower than the highest version value.
16. The storage system of claim 15, wherein the merge module determines the highest version value at least in part by calculating the highest version value for which there is a quorum of the plurality of storage devices with that version value.
17. The storage system of claim 15, wherein, if the first storage device is not storing the current version of the one or more portions, the merge module is further configured to update the version value of the first storage device to the highest version value.
18. The storage system of claim 11, wherein the mirrored index data structure is implemented as at least one of a balanced tree, a hash table, and a linked list.
19. The storage system of claim 11, wherein each of the storage devices is further configured to:
receive a request to modify a target node of the plurality of nodes;
determine that a copy of the target node is stored on the first storage device and that the first storage device is currently unavailable;
modify the target node;
create a new copy of the target node; and
store the new copy of the target node on at least one of the plurality of storage devices that is available.
20. The method of claim 11, wherein the mirrored index data structure stores addresses of metadata data structures of files and directories in a distributed file system and maps identifiers for the files and directories to their respective addresses.
Descripción
REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent application Ser. No. 11/255,337, filed on Oct. 21, 2005, entitled “Systems and Methods for Accessing And Updating Distributed Data,” the disclosure of which is hereby incorporated by reference herein in its entirety. The present disclosure relates to U.S. patent application Ser. No. 11/255,817, titled “Systems and Methods for Distributed System Scanning,” U.S. patent application Ser. No. 11/256,410, titled “Systems and Methods for Providing Variable Protection,” U.S. patent application Ser. No. 11/255,346, titled “Systems and Methods for Managing Concurrent Access Requests to a Shared Resource,” U.S. patent application Ser. No. 11/255,818, titled “Systems and Methods for Maintaining Distributed Data,” and U.S. patent application Ser. No. 11/256,317, titled “Systems and Methods for Using Excitement Values to Predict Future Access to Resources,” each filed on Oct. 21, 2005 and each hereby incorporated by reference herein in their entirety.

FIELD OF THE INVENTION

The present disclosure generally relates to the field of distributed data management, and more particularly, to systems and methods for maintaining a copies of index data.

BACKGROUND

The increase in processing power of computer systems has ushered in a new era in which information is accessed on a constant basis. One response has been to store and maintain data in a distributed manner across multiple nodes or devices. A distributed architecture allows for more flexible configurations with respect to factors such as access speed, bandwidth management, and other performance and reliability parameters. The distributed architecture also allows multiple copies of data to be stored across the system. According, if one copy of the data is not available, then other copies of the data may be retrieved. One type of data that may be stored across a distributed system is indexing data.

The indexing data is desirably protected in the event that one or more of the devices of the distributed system fail. In addition, when a device fails, the offline indexing data is desirably restored in case of a failure by other devices. Moreover, additional problems occur when one or more of the failed devices come back online and try to reintegrate into the system.

Because of the foregoing challenges and limitations, there is an ongoing need to improve the manner in which indexing data, stored across a distributed system, is managed especially in the event of device failure.

SUMMARY

Systems and methods are disclosed that provide an indexing data structure. The indexing data structure is stored as nodes across a distributed system and copies of the nodes are also stored across the system. In some embodiments, the systems and methods restore nodes that are stored on an inaccessible portion of the distributed system. In some embodiments, portions of the system that become accessible are merged into the distributed system and given access to the current indexing data structure. In addition, in some embodiments, the indexing data structure is traversed to locate and restore nodes that are stored on inaccessible portions of the distributed system.

One embodiment of the present disclosure relates to an indexing system that includes a plurality of storage devices configured to communicate with each other. The system further includes a set of database records each record with a distinct index. The system further includes a balanced index tree structure. The balanced index tree structure includes a first and second copy of a set of leaf nodes stored among the plurality of storage devices configured to store the set of database records based on the indexes. The balanced index tree structure further includes a first and second copy of a set of parent nodes of the leaf nodes stored among the plurality of storage devices and configured to store references to the first and second copy of the set of leaf nodes. The balanced index tree structure further includes a first and second copy of a set of grandparent nodes of the leaf nodes stored among the plurality of storage devices, configured to store references to the first and second copy of the parent nodes. The balanced index tree structure further includes a first and second copy of a root node configured to store references to the first and second copy of the grandparent nodes. The set of parent nodes, set of grandparent nodes, and the root node are configured to index the first and second copy of the set of leaf nodes based on the indexes in the form of a balanced tree.

Another embodiment of the present disclosure relates to an indexing system that includes a plurality of storage devices configured to communicate with each other. The system further includes a set of data units. The set of data units includes an index value for each data unit. The system further includes an index data structure. The indexing data structure includes a first and second copy of a set of first nodes stored among the plurality of storage devices. The indexing data structure further includes a first and second copy of a set of second nodes stored among the plurality of storage devices. The first and second copy of the set of second nodes configured to store the set of data units based on the index values of each data unit. The first and second copy of the set of first nodes configured to index the first and second copy of the set of second nodes based on the index values of the data units stored in the second nodes.

Yet another embodiment of the present disclosure relates to a method for indexing data in an index tree. The method includes providing an index tree with inner nodes, leaf nodes, redundant copies of the inner nodes, and redundant copies of the leaf nodes. The method further includes receiving a first data with a first index. The method further includes traversing the index tree to select one of the leaf nodes on which to store first data based at least on the first index. The method further includes storing the first data on the selected leaf node. The method further includes storing the first data on the redundant copy of the selected leaf node. The method further includes traversing the inner nodes and redundant copies of the inner nodes that are parents of the selected leaf node to update metadata related to the inner nodes and the redundant copies of the inner nodes to reflect the stored first data.

Yet another embodiment of the present disclosure relates to a method of modifying nodes stored on distributed indexed tree. The method includes receiving a target node. The target node and a copy of the target node are stored among a plurality of devices. The method further includes accessing a parent node of the target node. The method further includes determining that the copy of the target node is stored on a failed device of the plurality of devices. The method further includes modifying the target node. The method further includes creating a new copy of the target node. The method further includes storing the new copy of the target node on at least one of the plurality of devices that is not a failed device. The method further includes recursively updating the parent node.

Yet another embodiment of the present disclosure relates to a method of restoring mirrored nodes of a distributed indexed tree. The method includes receiving a parent node. The method further includes, for each child of the parent node, determining that at least one copy of the child is located on a failed drive; retrieving a copy of the child from a non-failed drive; creating a new copy of the child; storing the new copy of the child on a non-failed drive; updating the parent and copies of the parent to reference the new copy of the child; and recursively restoring the child.

Yet another embodiment of the present disclosure relates to a method of merging a first device into a plurality of devices. The method includes providing a first device configured to store a version value. The method further includes providing a plurality of devices, with each of the plurality of devices being configured to reference at least two copies of a mirrored index data structure and to store a version value. The method further includes receiving the first version value. The method further includes querying the plurality of devices for their corresponding version values. The method further includes determining a highest version value from the version values. The method further includes determining whether the first version value is lower than the highest version value. The method further includes, if the first version value is lower than the highest version value, updating the version value of the first device to the highest version value; and updating the first device to reference the at least two copies of the mirrored index data structure.

Yet another embodiment of the present disclosure relates to a distributed system that includes a plurality of storage units. The system further includes a balanced index tree configured to be organized by index values comprising a root node, a copy of the root node, a plurality of nodes, and a copy of the plurality of nodes. The system further includes a storage module configured to store the root node, the copy of the root node, the plurality of nodes, and the copy of the plurality of nodes stored among the plurality of storage units. The system further includes index tree data stored on each of the plurality of storage units referencing the root node and the copy of the root node.

For purposes of this summary, certain aspects, advantages, and novel features of the invention are described herein. It is to be understood that not necessarily all such advantages may be achieved in accordance with any particular embodiment of the invention. Thus, for example, those skilled in the art will recognize that the invention may be embodied or carried out in a manner that achieves one advantage or group of advantages as taught herein without necessarily achieving other advantages as may be taught or suggested herein.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates one embodiment of a high-level block diagram of one embodiment of an index tree.

FIG. 2 illustrates one embodiment of a high-level block diagram of one embodiment of an index tree with varying levels of protection.

FIG. 3A illustrates one embodiment of a high-level block diagram of one set of devices A, B, C, and D that are in communication with each other.

FIG. 3B illustrates one embodiment of a high-level block diagram of the set of devices A, B, C, and D of FIG. 3A where Device B has lost communication with the other devices.

FIG. 3C illustrates one embodiment of a high-level block diagram of the set of devices A, B, C, and D of FIG. 3B where Device B has lost communication with the other devices and after a modify has taken place.

FIG. 3D illustrates one embodiment of a high-level block diagram of the set of devices A, B, C, and D of FIG. 3C where Device B has rejoined the set of devices.

FIG. 4A illustrates one embodiment of a flow chart of a modify process.

FIG. 4B illustrates an additional embodiment of a flow chart of a modify process.

FIG. 5 illustrates one embodiment of a flow chart of a restore tree process.

FIG. 6 illustrates one embodiment of a flow chart of a restore node process.

FIG. 7 illustrates one embodiment of a flow chart of a merge process.

FIG. 8A illustrates one embodiment of a block diagram of a distributed system.

FIG. 8B illustrates another embodiment of a block diagram of a distributed system.

FIG. 9A illustrates one embodiment of a superblock.

FIG. 9B illustrates one embodiment of an inner node.

FIG. 9C illustrates one embodiment of a leaf node.

FIG. 10 illustrates one embodiment of a high-level block diagram of one embodiment of an index tree used to store database records.

FIG. 11 illustrates one embodiment of a leaf node used to store database records.

FIG. 12 illustrates one embodiment of a high-level block diagram of one embodiment of an index tree used to store addresses of metadata data structures.

FIG. 13 illustrates one embodiment of a leaf node used to store database records.

These and other aspects, advantages, and novel features of the present teachings will become apparent upon reading the following detailed description and upon reference to the accompanying drawings. The drawings and the associated descriptions are provided to illustrate embodiments of the invention and not to limit the scope of the invention. In the drawings, similar elements have may be marked with similar reference numerals.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

Systems and methods which represent various embodiments and example applications of the present disclosure will now be described with reference to the drawings.

For purposes of illustration, some embodiments will be described in the context of a distributed index tree and example environments in which a distributed index tree may be used are also disclosed. The inventors contemplate that the present invention is not limited by the type of environment in which the systems and methods are used, and that the systems and methods may be used in various environments, such as, for example, the Internet, the World Wide Web, a private network for a hospital, a broadcast network for a government agency, an internal network of a corporate enterprise, an intranet, a local area network, a wide area network, and so forth. It is also recognized that in other embodiments, the systems and methods may be implemented as a single module and/or implemented in conjunction with a variety of other modules and the like. Moreover, the specific implementations described herein are set forth in order to illustrate, and not to limit, the invention. The scope of the invention is defined by the appended claims.

I. OVERVIEW

The systems and methods of the present invention provide techniques for indexing data stored with varying protection levels. In one embodiment, the data is stored in a mirrored balanced tree, also referred to as an index tree, which indexes the data and stores it in the tree. Each leaf node represents a sorted group of the indexed data. Accordingly, when a modification is made to one node in the index tree, the same modification is made to other copies of that node. Similarly, when a node is added the index tree, the appropriate number of copies of the node are created and the parent node that references the new node includes references to each of the copies. Also, when a node is deleted from the index tree, references to all copies of the node are removed from the parent node.

In one embodiment, copies of the nodes of the mirrored index tree are distributed among a set of devices. Because copies of the nodes are stored on different devices, the index tree may tolerate the failure of one or more of the devices. When modifying nodes in the index tree, if the modification encounters a copy of node that is stored on a device that is unavailable, a new copy node is stored on an available device, and references to that node are updated to reflect its new location on the available device. In addition, when a device that was temporarily unavailable becomes available and attempts to rejoin the set of devices, that device is merged into the system and provided with references to the current copy of the index tree. Furthermore, the index tree may also be traversed to detect and restored any nodes that reside on unavailable devices by storing the nodes on available devices, and updating references to the restored nodes to reflect their new locations on the available devices.

II. MIRRORED INDEX TREE A. General Tree

To better understand the mirrored index tree, background information regarding an index tree is now described. FIG. 1 illustrates an example index tree 100 that includes three pieces of data, Data A 110, Data B 120, and Data C 130. Each of the pieces of data includes an index, namely 01, 08, and 24 respectively. FIG. 1 illustrates how the three pieces of data are stored in the tree. The top level of the tree includes two entries, 10 and 20, also referred to as keys or index entries. In some embodiments, the keys are of a fixed or variable size. In this example, if the data's index is less than or equal to 10, the data is stored off of the first branch of the tree; if the data's index is greater than 10 and less than or equal to 20, then the data is stored off of the second branch of the tree; if the data's index is greater than 20, then the data is stored off of the third branch of the tree. Thus, in this embodiment, a top level node 140, also referred to as a root node, covers all possible indexes. It is recognized that a variety of indexing techniques may be used wherein the top level covers other subsets of possible indexes, where other types of indexes are used (e.g., whole numbers, words, letters, etc.).

In FIG. 1, Data A's index is 01 which is less than or equal to 10 and less than or equal to 04. Thus, Data A is stored off of the first branch of internal node 150 on leaf node 170. Data B's index is 08 which is less than or equal to 10 and greater than 07. Thus, Data B is stored off of the third branch of internal node 150 on leaf node 180. Data C's index is 24 which is greater than 20 and less than or equal to 46. Thus, Data C is stored off of the first branch of internal node 160 on leaf node 190.

Index trees that are well known in the art include, for example, binary trees, B trees, B+ trees, B* trees, AVL trees, and so forth. Moreover, operations for searching, reading, updating, inserting nodes, deleting nodes, and balancing an index tree are well known to those of skill in the art.

B. Mirrored Tree

The systems and methods disclosed herein provide a protected index tree. In one embodiment, the nodes of the index tree are mirrored. One advantage of mirroring the nodes is that if one copy of a node is unavailable, then the other copy of the node may be used instead. In one embodiment, the entire index tree is mirrored the same number of times (e.g., all of the nodes are mirrored two times; all of the nodes are mirrored five times, etc.). In another embodiment, different nodes of the tree may have different levels of mirroring protection. For example, one node may be mirrored two times and another node may be mirrored five times. To maintain the protection level of the index tree, in this embodiment, a node of the index tree is stored using at least the same level of protection as the children that it references. For example, if a leaf node is mirrored two times, then any parent node referencing (e.g., pointing to) that leaf node is also mirrored at least two times.

FIG. 2 illustrates one embodiment of the index tree of FIG. 1 where the index tree includes different mirroring levels, such that different nodes in the index tree are mirrored a different number of times. Fore example, Data B 120 is stored with a protection level of 3×. Accordingly, the branches of the index tree 140, 150 that lead to Data B 120 are also protected at a protection level of at least 3×.

C. Distributed Storage of the Mirrored Tree

In one embodiment, copies of a node are stored among a set of devices. For example, in FIG. 2, one copy of the root node 140 may be stored on a Device A, the second copy of the root node 140 may be stored on a Device B, and the third copy of the root node 140 may be stored on a Device C. Similarly, one copy of a leaf node 180 may be stored on Device B, the second copy of the leaf node 180 may be stored on Device C, and the third copy of the leaf node 180 may be stored on Device D. Accordingly, if one of the devices becomes unavailable (e.g., fails, crashed, becomes disconnected, is taken off line, etc.), then additional copies of the node may be retrieved from the other devices. For example, if Device B disconnects from Device A, Device C, and Device D, copies of the root node 140 are still available on Device A and Device C. Similarly, copies of the leaf node 180 are still available on Device C and Device D.

In addition, in some embodiments, references to each copy of the root of the index tree are stored on each device. These references will be referred to as a superblock. FIG. 3A illustrates the set of Devices A, B, C, and D that are in communication with each other. Each device includes a superblock that provides the address of each copy of the root node as well as the version of the index tree referenced by the superblock. In the example above, the root node 140 is stored on Device A, Device B, and Device C. Accordingly, Device A, Device B, and Device C of FIG. 3 each have a copy of the root node 140. In the example above, the leaf node 180 is stored in Device B, Device C, and Device D. Accordingly, Device B, Device C, and Device D of FIG. 3 each have a copy of the leaf node 180. It is recognized that the address may be stored in a variety of formats using, for example, device number, address offsets, cylinder numbers, storage unit numbers, cache memory IDs, and so forth. In FIG. 3A, all four of the superblocks are shown as Version 3. Because they are all the same version, the superblocks, in this example, reference the same index tree.

FIG. 3B illustrates the example of when Device B becomes disconnected from Device A, Device C, and Device D, where copies of the root node 140 are still available on Device A and Device C. Similarly, copies of the leaf node 180 are still available on Device C and Device D.

FIG. 3C illustrates the example of FIG. 3B after a modification has taken place where the modify operation created a new copy of the root node, to replace the copy of the root node that is not available on Device B. In FIG. 3C, the new copy of the root node is stored on Device D, the superblocks of the available devices, Device A, Device C, and Device D have been updated to reflect that copy 2 of the root node is located on Device D (and not Device B). In addition, the version of the superblocks of Device A, Device C, and Device D have been updated to a new version to reflect that a modification of the superblocks has taken place.

FIG. 3D illustrates the example of FIG. 3A after Device B has come back online and merged back into the set of devices. Device B's superblock has been modified to reflect that copy 2 of the root node is located on Device D and to include the new version of the superblock. In addition, because the copy of the root node on Device B is no longer referenced, it has been removed from Device B. Also, in this example, there were no attempts to modify the leaf node 180 while Device B was offline. Accordingly, a copy of leaf node 180 remains on Device B.

D. Various Embodiments

In some embodiments, the index tree is implemented as a modified B*tree. As is well known by those of ordinary skill in the art, a B* tree is a search tree where every node has between ┌m/2┐ and m children, where m>1 is a fixed integer. Nodes are kept ⅔ full by redistributing the contents to fill two child nodes, then splitting them into three nodes. It may be advantageous to use a B* tree since the height, and hence the number of maximum accesses, can be kept small depending on m. As new nodes are added, the B* tree readjusts to keep the height of the tree below a maximum number. In some embodiments, the B* tree is further configured to have variable-sized records, that can be redundantly stored, splits insertion blocks once while they are being filled, and leaves behind a trail of blocks. It will be understood that, although some of the file and logical structures are described in terms of B-trees, various concepts of the present disclosure are not necessarily limited to B-tree applications. Moreover, it is recognized that a variety of data structures known to those of ordinary skill in the art may be used including, for example, other trees, graphs, linked lists, heaps, databases, stacks, and so forth.

Furthermore, in some embodiments, the index tree is protected using other protection schemes besides or in addition to mirroring. While mirroring is discussed herein, it is recognized that a variety of other protection/correction techniques may be used in addition to or instead of mirroring. For example, the nodes of the index tree may be protected using parity protection, for example, for nodes that are distributed among multiple devices. Moreover, the index tree may include nodes that are not mirrored at all.

It also is recognized that the term storage device may refer to a variety of devices including for example, a smart storage unit, a disk drive, a server, a non-volatile memory device, a volatile memory device, and so forth. Moreover, the storage device may be locally connected and/or remotely connected to one or more other devices. For example one smart storage unit may include multiple devices. Moreover, a storage device may include multiple memory units including one more volatile memory units and/or one or more non-volatile memory units.

III. OPERATIONS

Operations for reading, modifying, and restoring a distributed mirrored index tree are set forth below. In addition, an operation for merging in a device that was previously inaccessible is also disclosed.

A. Reading

To read data stored in the distributed mirrored index tree, a read process receives the requested data's index. The read process accesses one copy of the root node (e.g., using one of the references from the superblock), and based on the data's index and the keys in the root node, accesses one copy of the node in the next level of the distributed mirrored index tree. The read process then continues using the data's index and the keys in the nodes of the tree to access one copy of the node in the next level of the distributed mirrored index tree. Once the read processes accesses a copy of the leaf node, then the read processes uses the data's index to retrieve the data corresponding to that index.

Accordingly, if one copy of a node is on a disconnected device, then the read process attempts to access another copy of that node. The read process may be configured to request copies of nodes in a predetermined order based on the devices, to use a round robin technique based on which device was last used, a most recently used technique based on devices that were recently used, a “distance-based” technique placing a preference on local devices rather than remote devices, to use a random technique, and so forth.

B. Modifying

To modify data stored in the distributed mirrored index tree, a modify process receives a node to be modified, referred to as the target node. The modify process may also receive the modification that is requested (e.g., to update data, to update reference(s) to other nodes, to remove node, etc.). The modify process traverses the tree to the parent of the target node. The modify process then determines whether all of the copies of the target node are accessible. If so, then the modify process modifies all copies of the target node.

If one of the copies of the target node is not accessible (e.g., stored on a device that is not in communication with the other devices), then the modify process modifies the available copies of the target node, creates a new copy of the target node, stores the new copy on one of the available devices, and calls the modify process using the parent node.

Accordingly, the modify process then traverses the tree to the parent of the parent node, determines whether all copies of the parent node are accessible and if so, modifies all of the copies of the parent node to point to the new copy of the target node. If one of the copies of the parent node is not accessible, then the modify process modifies available copies of the parent node, creates a new copy of the parent node, stores the new copy of the parent node on one of the available devices, and calls the modify process of the parent's parent node (e.g., the grandparent of the target node).

This modify process continues up to the root node if changes to each of the parent nodes are necessary. In one embodiment, the root node acts as a special case since the address of each copy of the root nodes is stored on each device. If one of the copies of the root node are unavailable, then the modify process modifies available copies of the root node, creates a new copy of the root node, stores the new copy of the root node on one of the available devices, and then determines whether there are a quorum of devices that are available. If not, then the modify process does not update the superblocks to point to the new root node. If so, then the modify process modifies the superblocks to point to the new copy of the root node and updates the version of the superblocks.

The modify process 400 could also include removing nodes, where no changes are made to the target node and no copies of target nodes are made. Instead, the modify process 400 recursively updates the parent node of the node to be removed to reflect that the node has been removed. In other embodiments, the modify process 400 could replace the node to be removed with one more good copies of the node.

One example of a modify process 400 is illustrated in FIG. 4A. Beginning in a start state 410, the modify process 400 proceeds to block 415. In block 415, the modify process 400 receives a node and a requested modification to the node. The node may be identified using a variety of techniques such as, for example, an identifier, a name, a path, and so forth. In addition, the modification may include, for example, modifying data stored in a leaf node, modifying pointers to children nodes, removing the node from the index tree, and so forth. Proceeding to the next block 420, the modify process 400 accesses the node's parent node. In this example, the parent node is the node that references the node, and the parent of the root node is the superblock. Proceeding to block 425, the modify process 400 determines whether all copies of the node are available. For example, a copy of the node would not be available if the copy was stored on a device that is down. If all copies are available, then the modify process 400 modifies all copies of the node with the requested modification 430 and proceeds to an end state 465. If all copies are not available, the modify process 400 modifies all available copies of the node with the requested modification 435, creates and stores a new copy of the node (or more than one copy if more than one copy is not available) 440 on an available device. It is recognized that if none of the copies are available, the modify process 400 may terminate and return an error.

Proceeding to block 445, the modify process 400 determines whether the node is the root node. If the node is not the root node, then the modify process 400 proceeds to block 450; if the node is the root node, then the modify process 400 proceeds to block 455.

In block 450, the modify process 400, recursively calls the modify process to modify the parent node to point to the new copy (or copies) of the node, and proceeds to the end state 465.

In block 455, the modify process 400 determines whether there is quorum of available devices. In one embodiment, the quorum is a majority of the devices, but it is recognized that in other embodiments, other subsets of the number of devices could be used. If there is not a quorum, then the modify process 400 proceeds to the end state 465. In some embodiments, the modify process 400 may return an error indicating that less than a quorum of the devices are available. If there is a quorum, the modify process 400 proceeds to block 460 and updates the superblocks to point to the new copy (or copies) of the root. In some embodiments, the modify process 400 also updates the superblock to store a new version. It is recognized that in some embodiments, the modify process 400 does not update the superblocks, but sends out commands for each of the devices to update their superblocks and/or to update their versions.

It is recognized that other embodiments of a modify process 400 may be used. FIG. 4B illustrates an additional embodiment of a modify process 400 that prevents any updating of the root nodes if there is not a quorum. FIGS. 4A and 4B illustrate various embodiments of the modify process 400.

C. Restoring

To restore data stored in the distributed mirrored index tree, a restore process traverses the distributed mirrored index tree to find copies of nodes that are stored on unavailable devices and to restore those copies.

The restore process begins with a copy of the superblock and determines whether all copies of the root node are available. If so, then the superblock retrieves one copy of the root node and determines whether all copies of each of the root nodes' children are available. If not, then the restore process determines whether there is quorum of available devices. If there is not a quorum, the restore process terminates. If there is a quorum, then the restore process creates and stores a new copy of the missing root node on one of the available devices, and updates the superblocks on all of the available devices to reference the newly created copy of the root node and to update the superblocks' version.

Next, the restore process proceeds to the next level of the tree, and determines whether all copies of the root's children nodes are available. If not, then the restore process creates and stores missing copies of the root's children. The restore process then proceeds to restore children of the root's children. The restore process continues this for each level of the tree until all nodes, including the leaf nodes, have been traversed.

1. Restore Tree Process

One example of a restore tree process 500 is illustrated in FIG. 5. Beginning in a start state 510, the restore tree process 500 proceeds to the next block 515. In block 515, the restore tree process 500 obtains a copy of the superblock. Proceeding to the next block 520, the restore tree process 500 determines whether all copies of the root node are available. If so, then the restore tree process 500 proceeds to block 545. If not, then the restore tree process 500 proceeds to block 525.

In block 525, the restore tree process 500 obtains a copy of the root node. It is recognized that if none of the copies are available, the restore tree process 500 may terminate and/or return an error. In block 530, the restore tree process 500 creates and stores a new copy of the root node (or more than one copy if more than one copy is not available). The restore tree process 500 then determines whether there is quorum of available devices. If there is not a quorum, then the restore tree process 500 proceeds to the end state 550. In some embodiments, the restore tree process 500 may return an error indicating that less than a quorum of the devices is available. If there is a quorum, the restore tree process 500 proceeds to block 540 and updates the superblocks to point to the new copy (or copies) of the root node. In some embodiments, the restore tree process 500 also updates the superblock to store a new version. It is recognized that in some embodiments, the restore tree process 500 does not update the superblocks, but sends out commands for each of the devices to update their superblocks and/or to update their versions. The restore tree process 500 then proceeds to block 545.

In block 545, the restore tree process 500 calls a restore node process 600 to restore the root node. In some embodiments, the restore node process 600 is passed the copies of the root node or references to the copies of the root node.

2. Restore Node Process

One example of a restore node process 600 is illustrated in FIG. 6. Beginning in a start state 610, the restore node process 600 proceeds to the next block 615. In block 615, the restore node process 600 obtains copies of or receives copies of a parent node (or references to the node). For each child of the parent node 620, 650, the restore node process 600 determines whether all copies of the child node are available. If so, then the restore node process 600 proceeds to the next child 620, 650. If not, then the restore node process 600 proceeds to block 630.

In block 630, the restore node process 600 obtains a copy of the child node. It is recognized that if none of the copies are available, the restore node process 600 may terminate and/or return an error. In block 635, the restore node process 600 creates and stores a new copy of the child node (or more than one copy if more than one copy is not available). Proceeding to the next block 640, the restore node process 600 updates the copies of the parent node to point to the new copy (or copies) of the child node. Proceeding to the next block 645, the restore node process 600 calls a restore process to restore the child node. In some embodiments, the restore process is passed the copies of the child node or references to the copies of the child node. Once the children of the parent node have been traversed and the children nodes have been restored, then the restore node process 600 proceeds to an end state 655.

It is recognized that the tree may be traversed in a variety of manners and that in other embodiments the tree may be traversed starting with the leaf nodes and/or the tree may be traverses level by level. FIGS. 5 and 6 are meant only to illustrate example embodiments of a restore process.

D. Merging

The distributed mirrored index tree may also be used to merge in new devices that were temporarily unavailable, but that have now become available. When a device comes back online, the device may need to access the distributed mirrored index tree. However, the device may have invalid references to copies of the root node of the distributed mirrored index tree. For example, while the device was offline, one of the copies of the root node may have been stored on the down device and may have been modified using the modify process above. Accordingly, a new copy of the root node, with the modified data may have been created and updated and stored on an available device. In addition, the superblocks' references to copies of the root node may have been modified to reference the new copy of the root node instead of the copy that was stored on the down device.

A merge process may be used to compare the version of a device's superblock with versions of the other devices. If the version is the same, then the device's superblock is current. If the device's version is lower than the versions of the other devices, then the device's superblock is updated to point to the same copies of the root node as devices with the highest version. In addition, the device's superblock device is updated to the highest version.

One example of a merge process 700 is illustrated in FIG. 7. Beginning in a start state 710, the merge process 700 proceeds to block 715. In block 715, the merge process 700 obtains the version of the superblock for the device that is merging into the set of other devices. Proceeding to the next block, 720, the merge process 700 queries the other devices for the versions in their superblocks. Proceeding to the next block 725, the merge process 700 determines the highest version. In other embodiments, the merge process may also determine whether there is a quorum of nodes that have the highest version. If not, then the merge process 700 may return an error.

Proceeding to the next block 730, the merge process 700 determines whether the device's version is less than the highest version. If not, then the merge process 700 proceeds to an end state 750. If so, then the merge process updates the device's superblock to point to the same copies of the root node as pointed to by a superblock with the highest version 735. Proceeding to the next block 740, the merge process 700 updates the superblock's version to the highest version.

The version may be represented using a variety of techniques such as, for example, an integer, a decimal, a letter, a word, and so forth.

FIG. 7 illustrates one embodiment of a merge process 700 and it is recognized that other embodiments of a merge process 700 may be used.

IV. DISTRIBUTED SYSTEM

FIG. 8A illustrates one embodiment of a distributed system 800 having an index tree management module 820 in communication with a set of devices 810. It is recognized that the index tree management module 820 may be located apart from the set of devices 810 and/or may be located on one or more of the devices 810, as illustrated in FIG. 8B. In other embodiments, the index tree management module 820 may be spread among one or more of the devices 810.

The index tree management module 820 and the devices 810 may communicate using a variety of communication techniques that are well known in the art. Such communication may include local communication, remote communication, wireless communication, wired communication, or a combination thereof.

The exemplary devices include a superblock 812 as well as a set of index tree nodes 814. As illustrated each device may include a different number of index tree nodes or may include the same number of index tree nodes. The superblock and/or index tree nodes may be stored on disks or other non-volatile memory on the device 810 and/or in RAM or other volatile memory on the device 810. The distributed system 800 is not limited to a particular type of memory. In addition, the distributed system 800 may include devices that do not include any superblocks and/or any index tree nodes.

In some embodiments, the distributed system 800 may be accessible by one or more other systems, modules, and/or users via various types of communication. Such communication may include, for example, the Internet, a private network for a hospital, a broadcast network for a government agency, an internal network of a corporate enterprise, an intranet, a local area network, a wide area network, and so forth. It is recognized that the distributed system 800 may be used in a variety of environments in which data is stored. For example, the distributed system 800 may be used to stored records in a database, content data, metadata, user account data, and so forth.

It is also recognized that in some embodiments, the systems and methods may be implemented as a single module and/or implemented in conjunction with a variety of other modules and the like. Moreover, the specific implementations described herein are set forth to illustrate, and not to limit, the present disclosure.

V. SAMPLE INDEX TREE NODES

FIGS. 9A, 9B, and 9C illustrate example embodiments of a superblock 900, an inner node 910, and a leaf node 930. In various embodiments, these nodes can have redundant copies in a manner described herein.

A. Superblock

FIG. 9A illustrates one embodiment of a superblock 900 that can be configured to provide, among others, the functionality of pointing to the copies of the root node for an index tree. In one embodiment, the superblock 900 points to an index tree by pointing to (e.g., storing the device number and address of) copies of the root node. The exemplary superblock 900 includes a header section 902, followed by a listing of pointers 904 to the one or more copies of the root node. The exemplary list of pointers includes baddr1 to baddrN. Thus, the pointer baddr1 points to the first copy of the root node, baddr2 to the second copy of the root node, and so on. In one embodiment, unused pointers are stored as zeroes or NULL values and placed at the end of the listing 904. For example, if the superblock 200 points to two copies of a root node, then the pointers baddr1 and baddr2 would be positioned at the beginning of the listing 904, and the remainder of the listing 904 would be zeroed out.

In other embodiments, the superblock 900 may be configured to point to more than one index tree.

As further shown in FIG. 9A, the header section 902 can include version information that indicates how current the index tree is (e.g., version information). The header section 902 can also include information about the height of the index trees that are pointed to by the pointers 904. A height of zero indicates that the superblock 900 does not point to any index tree. A height of one indicates that the superblock 900 points directly to copies of leaf blocks (e.g., there are no inner blocks). A height of n>1 indicates that there are n—1 levels of inner blocks. It is recognized that the superblock 900 may include additional and/or other data such as, for example, the name of the index tree(s), the date the superblock 900 was last updated, the number of devices required for a quorum, the date the superblock 900 was created, permission information indicating which devices and/or users have permission to read, write, or delete the superblock 900, and so forth.

As set forth above, in one embodiment, a copy of the superblock 900 is stored on each device of the distributed system.

B. Inner Node

FIG. 9B illustrates one embodiment of an inner node 910 that includes a header section 912 followed by a listing of index entries 714 (shown as key1, key2, . . . , keyn) and related offset values 920. The offset values 920 point to pointer entries 918 that relate to the index entries 914. The pointer entries 918 point to leaf nodes or to another level of inner nodes.

Inner nodes 910 provide mappings to values between index entries 914 using pointer entries 918. For example, offset0 points to the address of the node for values less than key1; offset1 points to the address of the node for index entries greater than or equal to key1 and less than key2; offset2 points to the address of the node for index entries greater than or equal to key2 and less than key3; and so forth.

The number of pointer entries for each offset depends on the number of mirrored copies of that node. For example, if child node is mirrored two times, then any offset pointing to that node will have at least two pointer entries related to that offset. Similarly, if a child node is mirrored three times, then any offset pointing to that node will have at least three pointer entries related to that offset. In the exemplary inner node 910, offset0 points to baddr01, baddr02, and baddr03 signifying that there are three copies of the child node located at baddr01, baddr02, and baddr03; the node is mirrored three times (3×). Similarly, offset1 points to baddr11 and baddr12 signifying that there are two copies of the second child node located at baddr11 and baddr12; that node is mirrored two times (2×). Accordingly, the inner nodes provide information as to where copies of their children nodes are stored.

In one embodiment, the index entries 914 and the offsets 920 are arranged in an increasing order beginning from the top of the inner node 910. The pointer entries 918 corresponding to the offsets 920 are arranged beginning from the bottom of the inner node 910. Thus, a free space 916 can exist between the index entries 914 and the pointer entries 918. Such an arrangement and the free space 916 provide for easy addition of new index entries 914. For example, if keyn+1 is to be added, it can be inserted below the last entry (keyn) of the index entries 914. A corresponding pointer entry can then be inserted above the last entry. The free space 916 accommodates such addition, and the existing index entries and the pointer blocks are not disturbed. This embodiment allows referenced nodes to be protected at different levels allowing for the addition of multiple pointer entries 918 for each offset 220. In addition, it allows the index tree to be rebalanced such that if additional index entries 214 are needed to balance the tree, then they can be added.

As further shown in FIG. 9B, the header 912 can include information similar to that of the inner node 910 discussed above. The header 912 can also indicate the number of index entries 914 (e.g., key_count). The header 912 can also indicate the maximum protection “mp” (the maximum redundancy) for the index entries 214 (and the corresponding pointer entries). The header 912 can also indicate how many (e.g., mp_count) index entries (e.g., child nodes) have the maximum protection. In other embodiments, the header 912 may also include information about the protection level of each of the child nodes in addition to or instead of the maximum protection level. In other embodiments, the header 912 may include information about a subset of the protection levels and counts related to those protection levels. The information about the maximum protection and the count that can be used allow for variable protection in the index tree as disclosed in U.S. patent application entitled “Systems and Methods for Providing Variable Protection in an Indexing System,” filed concurrently herewith, which is hereby incorporated by reference herein in its entirety.

Moreover, it is recognized that the inner nodes 910 may include additional and/or other data, such as, for example, the date the inner node 910 was last updated, the date the inner node 910 was created, permission information indicating which devices and/or users have permission to read, write, or delete the inner node 910, and so forth. It is also recognized that the information discussed above may be stored in the header 912 or in other areas of the inner node 910.

In one embodiment, the inner node 910 as a whole constitutes a fixed amount of data. Thus, the foregoing arrangement of the index entries 914 and the pointer entries 918, in conjunction with the free space 916, allows for addition of new data without altering the existing structure. In one embodiment, the inner node 910 is 8 kB in size. It is recognized, however, that the inner node may be of a variety of sizes.

C. Leaf Node

FIG. 9C illustrates one embodiment of the leaf node 930 having a header 932 and a listing of leaf index entries 934. The leaf index entries 934 (key1, key2, . . . , keyn) have corresponding offsets 940, and are arranged in a manner similar to that of the inner node 910 described above. In one embodiment, the leaf nodes 930 are at the bottom level of the tree, with no lower levels. Thus, the offsets 940 for the leaf index entries 934 points to data 938 for the corresponding index entry 934. The exemplary leaf node includes n index entries 934, where key1 corresponds to offset1, which points to two copies of the data that correspond to key1, where the two copies of the data are stored at data11 and data12. The index entries may correspond to a variety of data. For example, the data 938 may include records in a database, user account information, version data, metadata, addresses to other data, such as metadata data structures for files and directories of the distributed file system, and so forth. For example, offset1 points to the address block having example two copies of the data (data11 and data12), which may be, for example, two copies physical addresses of a metadata structure for a file that is distributed within the distributed system.

In one embodiment, the arrangement of the leaf index entries 934 and the data 938, with a free space 936, is similar to that of the inner node 910 described above in reference to FIG. 9B. The header 932 may also include similar information as that of the inner node 910.

In one embodiment, the leaf block 930 as a whole constitutes a fixed amount of data. In one embodiment, the leaf block 930 is 8 kB in size. It is recognized, that the leaf block 930 may be a variety of sizes.

IV. EXAMPLE ENVIRONMENTS

The following provides example environments in which a distributed mirrored index tree may be used. It is recognized that the systems and methods disclosed herein are not limited to such example environments and that such examples are only meant to illustrate embodiments of the invention.

A. Employee Database System

FIG. 10 illustrates an example distributed mirrored index tree 1000 for storing employee database records, where the records are sorted by last name. For example, the index value for employee Phil Ader is “Ader” and the index value for Jan Saenz is “Saenz.” The exemplary index tree 1000 includes nodes that are mirrored two times.

As an example, if a request to modify Kaye Byer's name to be “Kay” instead of “Kaye,” following the modify process disclosed herein, the modify process 400 would obtain a copy of node 1020 a or 1020 b and determine whether both 1040 a and 1040 b were on live devices. If, for example, 1040 b was stored on a failed device, the modify process 400 would make the change to 1040 a, copy the modified 1040 a to create a new copy of 1040 b stored on an available device, and then check to see if 1020 a and 1020 b were both on live devices. If so, then the modify process 400 would update the pointers in 1020 a to point to the new 1040 b and update the pointers in 1020 b to point to the new 1040 b.

FIG. 11 illustrates an example leaf node 1100 that corresponds to node 1040 a. The exemplary leaf node 1100 includes a header 1152 noting that the node is a leaf node, the node is version 5, the number of entries is 2, the maximum protection is 1×, and the number of entries is 2. The entries 1134 include Ader and Byer whose corresponding offsets 1140 point to the respective data values “Ader, Phil” and “Byer, Kay” 1138.

B. Intelligent Distributed File System

As another example, in one embodiment, the systems and methods may be used with an intelligent distributed file system as disclosed in U.S. patent application Ser. No. 10/007,003, entitled “System and Method for Providing a Distributed File System Utilizing Metadata to Track Information About Data Stored Throughout the System,” filed Nov. 9, 2001, which claims priority to Application No. 60/309,803 filed Aug. 3, 2001, which is hereby incorporated by reference herein in its entirety.

In one embodiment, the intelligent distributed file system uses metadata data structures to track and manage detailed information about files and directories in the file system. Metadata for a file may include, for example, an identifier for the file, the location of or pointer to the file's data blocks as well as the type of protection for each file, or each block of the file, the location of the file's protection blocks (e.g., parity data, or mirrored data). Metadata for a directory may include, for example, an identifier for the directory, a listing of the files and subdirectories of the directory as well as the identifier for each of the files and subdirectories, as well as the type of protection for each file and subdirectory. In other embodiments, the metadata may also include the location of the directory's protection blocks (e.g., parity data, or mirrored data). The metadata data structures are stored in the intelligent distributed file system.

1. Distributed Mirrored Index Trees

In one embodiment, the intelligent distributed file system uses a distributed mirrored index tree to map the identifiers for a file or directory to the actual address of the file's or directory's metadata data structure. Thus, as metadata data structures are moved to different smart storage units or different address locations, only the index tree entries need needs to be updated. Other metadata data structures that reference that file or directory need not be updated to reflect the new location. Instead, the metadata data structures that reference that file or directory just use the identifier of that file or directory.

FIG. 12 illustrates one embodiment of a distributed mirrored index tree 1200 that stores addresses of metadata data structures, or inodes, that are indexed by integers. The root node 1210 includes two index entries 10 and 20. Accordingly, entries with index values less than 10 are stored off the first branch of the root node 1210, entries with index values greater than or equal to 10 and less than 20 are stored off the second branch of the root node 1210, and entries with index values greater than or equal to 20 are stored off the third branch of root node 1210.

Similarly, inner node 1220 has index values 3 and 7. Accordingly, entries with index values less than 3 are stored off the first branch of the inner node 1220, entries with index values greater than or equal to 3 and less than 7 are stored off the second branch of the inner node 1220, and entries with index values greater than or equal to 7 (but presumably less than 10) are stored off the third branch of inner node 1220.

In addition, leaf node 1250 has index values 1 and 2. Accordingly, entries with index values of 1 or 2 are stored in the leaf node 1250. Similarly, entries with index values of 3, 4, 5, or 6 are stored in the leaf node 1260, and entries with index values of 7, 8, or 9 are stored in the leaf node 1270.

The exemplary index tree 1200 also maintains the protection level of the index tree. For example, leaf node 1250 is mirrored two times and root node 1210 is mirrored three times.

2. Example Leaf Node

FIG. 13 illustrates an example leaf node 1300 that corresponds to leaf node 1250. The exemplary leaf node 1300 includes a header 1352 noting that the node is a leaf node, the node is version 2.1, the number of entries is 2, the maximum protection is 2×, and the number of entries is 2. The entries 1334 include 01 and 02 whose corresponding offsets 1340 point to the respective copies of the address entries “addrA” and “addrB” 1338. In this example, “addrA” is the address of the metadata data structure with identifier 01.

Furthermore, as discussed above, FIGS. 11 and 13 illustrate examples of how the leaf node may be stored. Various configurations of the superblocks, inner nodes, and leaf nodes may be used.

V. CONCLUSION

Although the above-disclosed embodiments have shown, described, and pointed out the fundamental novel features of the invention as applied to the above-disclosed embodiments, it should be understood that various omissions, substitutions, and changes in the form of the detail of the devices, systems, and/or methods shown may be made by those skilled in the art without departing from the scope of the invention. Consequently, the scope of the invention should not be limited to the foregoing description, but should be defined by the appended claims.

Citas de patentes
Patente citada Fecha de presentación Fecha de publicación Solicitante Título
US51631318 Sep 198910 Nov 1992Auspex Systems, Inc.Parallel i/o network file server architecture
US51811626 Dic 198919 Ene 1993Eastman Kodak CompanyDocument management and production system
US521278422 Oct 199018 May 1993Delphi Data, A Division Of Sparks Industries, Inc.Automated concurrent data backup system
US523004716 Abr 199020 Jul 1993International Business Machines CorporationMethod for balancing of distributed tree file structures in parallel computing systems to enable recovery after a failure
US525120612 Abr 19915 Oct 1993International Business Machines Corp.Hybrid switching system for a communication node
US525898413 Jun 19912 Nov 1993International Business Machines CorporationMethod and means for distributed sparing in DASD arrays
US532962623 Oct 199012 Jul 1994Digital Equipment CorporationSystem for distributed computation processing includes dynamic assignment of predicates to define interdependencies
US535959415 May 199225 Oct 1994International Business Machines CorporationPower-saving full duplex nodal communications systems
US54036392 Sep 19924 Abr 1995Storage Technology CorporationFile server having snapshot application data groups
US542304617 Dic 19926 Jun 1995International Business Machines CorporationHigh capacity data storage system using disk array
US545987126 Ago 199317 Oct 1995International Computers LimitedDetection and resolution of resource deadlocks in a distributed data processing system
US548169923 Mar 19952 Ene 1996Digital Equipment CorporationDurable atomic storage update manager
US554872421 Mar 199420 Ago 1996Hitachi, Ltd.File server system and file access control method of the same
US554879528 Mar 199420 Ago 1996Quantum CorporationMethod for determining command execution dependencies within command queue reordering process
US55686294 Nov 199322 Oct 1996At&T Global Information Solutions CompanyMethod for partitioning disk drives within a physical disk array and selectively assigning disk drive partitions into a logical disk array
US559670912 Nov 199221 Ene 1997International Business Machines CorporationMethod and apparatus for recovering parity protected data
US560666923 May 199525 Feb 1997International Business Machines CorporationSystem for managing topology of a network in spanning tree data structure by maintaining link table and parent table in each network node
US56128651 Jun 199518 Mar 1997Ncr CorporationDynamic hashing method for optimal distribution of locks within a clustered system
US56492002 Dic 199615 Jul 1997Atria Software, Inc.Dynamic rule-based version control system
US56574393 Nov 199512 Ago 1997International Business Machines CorporationDistributed subsystem sparing
US566894324 May 199616 Sep 1997International Business Machines CorporationVirtual shared disks with application transparent recovery
US56806217 Jun 199521 Oct 1997International Business Machines CorporationSystem and method for domained incremental changes storage and retrieval
US56945935 Oct 19942 Dic 1997Northeastern UniversityDistributed computer database system and method
US569689519 Jun 19959 Dic 1997Compaq Computer CorporationFault tolerant multiple network servers
US573482617 Sep 199231 Mar 1998International Business Machines CorporationVariable cyclic redundancy coding method and apparatus for use in a multistage network
US575475629 Feb 199619 May 1998Hitachi, Ltd.Disk array system having adjustable parity group sizes based on storage unit capacities
US576165929 Feb 19962 Jun 1998Sun Microsystems, Inc.Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
US577464313 Oct 199530 Jun 1998Digital Equipment CorporationEnhanced raid write hole protection and recovery
US57993052 Nov 199525 Ago 1998Informix Software, Inc.Method of commitment in a distributed database transaction
US580557812 Mar 19968 Sep 1998International Business Machines CorporationAutomatic reconfiguration of multipoint communication channels
US580590026 Sep 19968 Sep 1998International Business Machines CorporationMethod and apparatus for serializing resource access requests in a multisystem complex
US58060656 May 19968 Sep 1998Microsoft CorporationData system with distributed tree indexes and method for maintaining the indexes
US58227907 Feb 199713 Oct 1998Sun Microsystems, Inc.Voting data prefetch engine
US586231224 Oct 199519 Ene 1999Seachange Technology, Inc.Loosely coupled mass storage computer cluster
US587056311 Oct 19959 Feb 1999International Business Machines CorporationMethod and apparatus for optimizing message transmission
US587841013 Sep 19962 Mar 1999Microsoft CorporationFile system sort order indexes
US58784146 Jun 19972 Mar 1999International Business Machines Corp.Constructing a transaction serialization order based on parallel or distributed database log files
US588404623 Oct 199616 Mar 1999Pluris, Inc.Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
US588409818 Abr 199616 Mar 1999Emc CorporationRAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems
US58843036 Feb 199716 Mar 1999International Computers LimitedParallel searching technique
US58901477 Mar 199730 Mar 1999Microsoft CorporationScope testing of documents in a search engine using document to folder mapping
US591799826 Jul 199629 Jun 1999International Business Machines CorporationMethod and apparatus for establishing and maintaining the status of membership sets used in mirrored read and write input/output without logging
US593383416 Oct 19973 Ago 1999International Business Machines IncorporatedSystem and method for re-striping a set of objects onto an exploded array of storage units in a computer system
US59436907 Abr 199724 Ago 1999Sony CorporationData storage apparatus and method allocating sets of data
US596396311 Jul 19975 Oct 1999International Business Machines CorporationParallel file system and buffer management arbitration
US59667072 Dic 199712 Oct 1999International Business Machines CorporationMethod for managing a plurality of data processes residing in heterogeneous data repositories
US598323228 Sep 19989 Nov 1999Triada, Ltd.Virtual structured information system
US599608916 Dic 199730 Nov 1999Seachange International, Inc.Loosely coupled mass storage computer cluster
US600000718 May 19987 Dic 1999Monolithic System Technology, Inc.Caching in a multi-processor computer system
US601466921 Oct 199711 Ene 2000Sun Microsystems, Inc.Highly-available distributed cluster configuration database
US602141428 Dic 19981 Feb 2000Sun Microsystems, Inc.Single transaction technique for a journaling file system of a computer operating system
US602916823 Ene 199822 Feb 2000Tricord Systems, Inc.Decentralized file mapping in a striped network file system in a distributed computing environment
US603857031 May 199514 Mar 2000Network Appliance, Inc.Method for allocating files in a file system integrated with a RAID disk sub-system
US604436715 Abr 199828 Mar 2000Hewlett-Packard CompanyDistributed I/O store
US605275912 Nov 199818 Abr 2000Stallmo; David C.Method for organizing storage devices of unequal storage capacity and distributing data using different raid formats depending on size of rectangles containing sets of the storage devices
US605554321 Nov 199725 Abr 2000VeranoFile wrapper containing cataloging information for content searching across multiple platforms
US605556411 Mar 199825 Abr 2000Hewlett Packard CompanyAdmission control where priority indicator is used to discriminate between messages
US60701726 Mar 199730 May 2000Oracle CorporationOn-line free space defragmentation of a contiguous-file file system
US60818338 Jul 199627 Jun 2000Kabushiki Kaisha ToshibaMemory space management method, data transfer method, and computer device for distributed computer system
US60818835 Dic 199727 Jun 2000Auspex Systems, IncorporatedProcessing system with dynamically allocatable buffer memory
US610875917 Sep 199722 Ago 2000Powerquest CorporationManipulation of partitions holding advanced file systems
US611718123 Dic 199812 Sep 2000Sun Microsystems, Inc.Synchronization mechanism for distributed hardware simulation
US612275422 May 199819 Sep 2000International Business Machines CorporationMethod and system for data recovery using a distributed and scalable data structure
US613812621 Jul 199924 Oct 2000Network Appliance, Inc.Method for allocating files in a file system integrated with a raid disk sub-system
US61548548 Ene 199828 Nov 2000Emc CorporationLogical partitioning of a redundant array storage system
US616997226 Feb 19992 Ene 2001Kabushiki Kaisha ToshibaInformation analysis and method
US617337411 Feb 19989 Ene 2001Lsi Logic CorporationSystem and method for peer-to-peer accelerated I/O shipping between host bus adapters in clustered computer network
US62020856 Dic 199613 Mar 2001Microsoft CorportionSystem and method for incremental change synchronization between multiple copies of data
US620905925 Sep 199727 Mar 2001Emc CorporationMethod and apparatus for the on-line reconfiguration of the logical volumes of a data storage system
US62196934 Nov 199717 Abr 2001Adaptec, Inc.File array storage architecture having file system distributed across a data processing platform
US62263773 Jun 19981 May 2001Avaya Technology Corp.Prioritized transaction server allocation
US62471083 Jun 199812 Jun 2001Lucent Technologies Inc.Memory management during processing of binary decision diagrams in a computer system
US627900730 Nov 199821 Ago 2001Microsoft CorporationArchitecture for managing query friendly hierarchical values
US63213451 Mar 199920 Nov 2001Seachange Systems, Inc.Slow response in redundant arrays of inexpensive disks
US633416819 Feb 199925 Dic 2001International Business Machines CorporationMethod and system for updating data in a data storage system
US63349666 Nov 20001 Ene 2002Kemet Electronics CorporationChemical oxidative preparation of conductive polymers
US63538238 Mar 19995 Mar 2002Intel CorporationMethod and system for using associative metadata
US638462618 Abr 20017 May 2002Micro-Star Int'l Co., Ltd.Programmable apparatus and method for programming a programmable device
US638562619 Nov 19987 May 2002Emc CorporationMethod and apparatus for identifying changes to a logical object based on changes to the logical object at physical level
US639348330 Jun 199721 May 2002Adaptec, Inc.Method and apparatus for network interface card load balancing and port aggregation
US639731122 May 199528 May 2002Texas Instruments IncorporatedSystem and method for defragmenting a file system
US640521924 Sep 199911 Jun 2002F5 Networks, Inc.Method and system for automatically updating the version of a set of files stored on content servers
US640831316 Dic 199818 Jun 2002Microsoft CorporationDynamic memory allocation based on free memory size
US641525915 Jul 19992 Jul 2002American Management Systems, Inc.Automatic work progress tracking and optimizing engine for a telecommunications customer care and billing system
US642178110 Ago 199816 Jul 2002Openwave Systems Inc.Method and apparatus for maintaining security in a push server
US643457417 Dic 199813 Ago 2002Apple Computer, Inc.System and method for storing and retrieving filenames and files in computer memory using multiple encodings
US64497305 Abr 200110 Sep 2002Seachange Technology, Inc.Loosely coupled mass storage computer cluster
US645338925 Jun 199917 Sep 2002Hewlett-Packard CompanyOptimizing computer performance by using data compression principles to minimize a loss function
US645713930 Dic 199824 Sep 2002Emc CorporationMethod and apparatus for providing a host computer with information relating to the mapping of logical volumes within an intelligent storage system
US646344230 Jun 19988 Oct 2002Microsoft CorporationContainer independent data binding system
US649684228 May 199917 Dic 2002Survol Interactive TechnologiesNavigating heirarchically organized information
US649909113 Nov 200024 Dic 2002Lsi Logic CorporationSystem and method for synchronizing data mirrored by storage subsystems
US650217211 Ene 200231 Dic 2002Via Technologies, Inc.Memory accessing and controlling unit
US65021743 Mar 199931 Dic 2002International Business Machines CorporationMethod and system for managing meta data
US652313011 Mar 199918 Feb 2003Microsoft CorporationStorage system having error detection and recovery
US65264782 Feb 200025 Feb 2003Lsi Logic CorporationRaid LUN creation using proportional disk mapping
US654644315 Dic 19998 Abr 2003Microsoft CorporationConcurrency-safe reader-writer lock with time out support
US654951312 Oct 199915 Abr 2003AlcatelMethod and apparatus for fast distributed restoration of a communication network
US655711418 Sep 200129 Abr 2003Seachange Technology, Inc.Loosely coupled mass storage computer cluster
US65678948 Dic 199920 May 2003International Business Machines CorporationMethod and apparatus to prefetch sequential pages in a multi-stream environment
US65679267 Nov 200120 May 2003Seachange International, Inc.Loosely coupled mass storage computer cluster
US657124428 Oct 199927 May 2003Microsoft CorporationRun formation in large scale sorting using batched replacement selection
US65713495 Oct 199927 May 2003Seachange Technology, Inc.Loosely coupled mass storage computer cluster
US657474530 Abr 20023 Jun 2003Seachange International, Inc.Loosely coupled mass storage computer cluster
US65946554 Ene 200115 Jul 2003Ezchip Technologies Ltd.Wildcards in radix- search tree structures
US659466024 Ene 200015 Jul 2003Microsoft CorporationShare latch clearing
US659474411 Dic 200015 Jul 2003Lsi Logic CorporationManaging a snapshot volume or one or more checkpoint volumes with multiple point-in-time images in a single repository
US659817426 Abr 200022 Jul 2003Dell Products L.P.Method and apparatus for storage unit replacement in non-redundant array
US661879811 Jul 20009 Sep 2003International Business Machines CorporationMethod, system, program, and data structures for mapping logical units to a storage space comprises of at least one array of storage units
US663141113 Jul 20017 Oct 2003Freshwater Software, Inc.Apparatus and method for monitoring a chain of electronic transactions
US665855414 Oct 19992 Dic 2003Wisconsin Alumni Res FoundElectronic processor providing direct data transfer between linked data consuming instructions
US666218422 Sep 20009 Dic 2003International Business Machines CorporationLock-free wild card search data structure and method
US666830430 Ago 200023 Dic 2003International Business Machines CorporationTransaction support on logical disks
US66716862 Nov 200130 Dic 2003Guy PardonDecentralized, distributed internet data management
US667170411 Mar 199930 Dic 2003Hewlett-Packard Development Company, L.P.Method and apparatus for handling failures of resource managers in a clustered environment
US667177220 Sep 200030 Dic 2003Robert E. CousinsHierarchical file system structure for enhancing disk transfer efficiency
US668780530 Oct 20003 Feb 2004Hewlett-Packard Development Company, L.P.Method and system for logical-object-to-physical-location translation and physical separation of logical objects
US672539218 Oct 200020 Abr 2004Adaptec, Inc.Controller fault recovery system for a distributed file system
US67321258 Sep 20004 May 2004Storage Technology CorporationSelf archiving log structured volume with intrinsic data protection
US67420208 Jun 200025 May 2004Hewlett-Packard Development Company, L.P.System and method for managing data flow and measuring service in a storage network
US674842910 Ene 20008 Jun 2004Sun Microsystems, Inc.Method to dynamically change cluster or distributed system configuration
US68019498 May 20005 Oct 2004Rainfinity, Inc.Distributed server cluster with graphical user interface
US68480293 Ene 200125 Ene 2005Dirk ColdeweyMethod and apparatus for prefetching recursive data structures
US685659115 Dic 200015 Feb 2005Cisco Technology, Inc.Method and system for high reliability cluster management
US687129529 Ene 200222 Mar 2005Adaptec, Inc.Dynamic data recovery
US689548210 Sep 199917 May 2005International Business Machines CorporationReordering and flushing commands in a computer memory subsystem
US689553426 Oct 200117 May 2005Hewlett-Packard Development Company, L.P.Systems and methods for providing automated diagnostic services for a cluster computer system
US690701130 Mar 199914 Jun 2005International Business Machines CorporationQuiescent reconfiguration of a routing network
US690752011 Ene 200214 Jun 2005Sun Microsystems, Inc.Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US691794215 Mar 200012 Jul 2005International Business Machines CorporationSystem for dynamically evaluating locks in a distributed data storage system
US69204945 Oct 200119 Jul 2005International Business Machines CorporationStorage area network methods and apparatus with virtual SAN recognition
US69226969 Nov 200026 Jul 2005Sri InternationalLattice-based security classification system and method
US692270815 May 200026 Jul 2005Oracle International CorporationFile system that supports transactions
US693487822 Mar 200223 Ago 2005Intel CorporationFailure detection and failure handling in cluster controller networks
US694096621 Feb 20026 Sep 2005Vtech Telecommunications, Ltd.Method and apparatus for detection of a telephone CPE alerting signal
US695443529 Abr 200211 Oct 2005Harris CorporationDetermining quality of service (QoS) routing for mobile ad hoc networks
US699060428 Dic 200124 Ene 2006Storage Technology CorporationVirtual storage status coalescing with a plurality of physical storage devices
US699061129 Dic 200024 Ene 2006Dot Hill Systems Corp.Recovering data from arrays of storage devices after certain failures
US700704426 Dic 200228 Feb 2006Storage Technology CorporationStorage backup system for backing up data written to a primary storage device to multiple virtual mirrors using a reconciliation process that reflects the changing state of the primary storage device over time
US700709720 Jul 200128 Feb 2006Silicon Graphics, Inc.Method and system for covering multiple resourcces with a single credit in a computer system
US70106228 Jun 20017 Mar 2006Emc CorporationScalable communication within a distributed system using dynamic communication trees
US701700312 Abr 200421 Mar 2006Hitachi, Ltd.Disk array apparatus and disk array apparatus control method
US704348519 Mar 20029 May 2006Network Appliance, Inc.System and method for storage of snapshot metadata in a remote file
US704356720 Dic 20029 May 2006Seagate Technology LlcMethod and apparatus for determining the order of execution of queued commands in a data storage system
US705863930 Ago 20026 Jun 2006Oracle International CorporationUse of dynamic multi-level hash table for managing hierarchically structured information
US70693204 Oct 199927 Jun 2006International Business Machines CorporationReconfiguring a network by utilizing a predetermined length quiescent state
US71035973 Oct 20025 Sep 2006Mcgoveran David OAdaptive transaction manager for complex transactions and business process
US711130526 Nov 200219 Sep 2006Sun Microsystems, Inc.Facilitating event notification through use of an inverse mapping structure for subset determination
US711393813 Feb 200326 Sep 2006Gravic, Inc.Method of increasing system availability by splitting a system
US712426422 Mar 200417 Oct 2006Hitachi, Ltd.Storage system, control method for storage system, and storage control unit
US714652425 Oct 20025 Dic 2006Isilon Systems, Inc.Systems and methods for providing a distributed file system incorporating a virtual hot spare
US71521826 Jun 200319 Dic 2006Hewlett-Packard Development Company, L.P.Data redundancy system and method
US716519219 Dic 200316 Ene 2007Sun Microsystems, Inc.Fault isolation in large networks
US71772958 Mar 200213 Feb 2007Scientific Research CorporationWireless routing protocol for ad-hoc networks
US718174629 Jun 200120 Feb 2007Intel CorporationInitialization, reconfiguration, and shut down of a module function
US718442121 Dic 200127 Feb 2007Itt Manufacturing Enterprises, Inc.Method and apparatus for on demand multicast and unicast using controlled flood multicast communications
US719448716 Oct 200320 Mar 2007Veritas Operating CorporationSystem and method for recording the order of a change caused by restoring a primary volume during ongoing replication of the primary volume
US720680517 Nov 200017 Abr 2007Oracle International CorporationAsynchronous transcription object management system
US722520419 Mar 200229 May 2007Network Appliance, Inc.System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
US72282992 May 20035 Jun 2007Veritas Operating CorporationSystem and method for performing file lookups based on tags
US724023513 Mar 20023 Jul 2007Intel CorporationJournaling technique for write transactions to mass storage
US724911817 May 200224 Jul 2007Aleri, Inc.Database system and methods
US725725719 Ago 200314 Ago 2007Intel CorporationMethod and apparatus for differential, bandwidth-efficient and storage-efficient backups
US72900568 Sep 200030 Oct 2007Oracle International CorporationMonitoring latency of a network to manage termination of distributed transactions
US73136142 Nov 200125 Dic 2007Sun Microsystems, Inc.Switching system
US731813416 Mar 20048 Ene 2008Emc CorporationContinuous data backup using distributed journaling
US734634612 Ene 200618 Mar 2008At&T Mobility Ii LlcTesting methods and apparatus for wireless communications
US734672021 Oct 200518 Mar 2008Isilon Systems, Inc.Systems and methods for managing concurrent access requests to a shared resource
US73700646 Ago 20026 May 2008Yousefi Zadeh HomayounDatabase remote replication for back-end tier of multi-tier computer systems
US737342631 Mar 200313 May 2008Kabushiki Kaisha ToshibaNetwork system using name server with pseudo host name and pseudo IP address generation function
US738667521 Oct 200510 Jun 2008Isilon Systems, Inc.Systems and methods for using excitement values to predict future access to resources
US738669710 Mar 200510 Jun 2008Nvidia CorporationMemory management for virtual address space with translation units of variable range size
US744096612 Feb 200421 Oct 2008International Business Machines CorporationMethod and apparatus for file system snapshot persistence
US745134123 Nov 200411 Nov 2008Hitachi, Ltd.Storage system and communications path control method for storage system
US75028015 May 200610 Mar 2009International Business Machines CorporationProviding a snapshot of a subset of a file system
US75094485 Ene 200724 Mar 2009Isilon Systems, Inc.Systems and methods for managing semantic locks
US750952411 Ago 200624 Mar 2009Isilon Systems Inc.Systems and methods for a distributed file system with data recovery
US75332987 Sep 200512 May 2009Lsi CorporationWrite journaling using battery backed cache
US75463541 Jul 20029 Jun 2009Emc CorporationDynamic network based storage with high availability
US75464122 Dic 20059 Jun 2009International Business Machines CorporationApparatus, system, and method for global metadata copy repair
US755157221 Oct 200523 Jun 2009Isilon Systems, Inc.Systems and methods for providing variable protection
US755891030 Oct 20037 Jul 2009Cray Inc.Detecting access to a memory location in a multithreaded environment
US757134822 Mar 20064 Ago 2009Hitachi, Ltd.Storage system creating a recovery request point enabling execution of a recovery
US757725830 Jun 200518 Ago 2009Intel CorporationApparatus and method for group session key and establishment using a certified migration key
US757766718 Sep 200318 Ago 2009Netezza CorporationProgrammable streaming data processor for database appliance having multiple processing unit groups
US759065218 Ago 200615 Sep 2009Isilon Systems, Inc.Systems and methods of reverse lookup
US759393822 Dic 200622 Sep 2009Isilon Systems, Inc.Systems and methods of directory entry encodings
US75967134 May 200529 Sep 2009Intranational Business Machines CorporationFast backup storage and fast recovery of data (FBSRD)
US7617289 *10 Nov 2009Bea Systems, Inc.System and method for using a data replication service to manage a configuration repository
US763106625 Mar 20028 Dic 2009Symantec Operating CorporationSystem and method for preventing data corruption in computer system clusters
US763981829 Dic 2009Ntt Docomo, Inc.Structured document signature device, structured document adaptation device and structured document verification device
US766512316 Feb 2010Symantec CorporationMethod and apparatus for detecting hidden rootkits
US76766919 Mar 2010Isilon Systems, Inc.Systems and methods for providing nonlinear journaling
US768083616 Mar 2010Isilon Systems, Inc.Systems and methods for a snapshot of data
US768084218 Ago 200616 Mar 2010Isilon Systems, Inc.Systems and methods for a snapshot of data
US768512623 Mar 2010Isilon Systems, Inc.System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US768516225 Abr 200623 Mar 2010Bayerische Motoren Werke AktiengesellschaftMethod and device for adjusting user-dependent parameter values
US76895972 May 200630 Mar 2010Emc CorporationMirrored storage architecture using continuous data protection techniques
US770719322 Sep 200527 Abr 2010Netapp, Inc.System and method for verifying and restoring the consistency of inode to pathname mappings in a filesystem
US771626230 Sep 200411 May 2010Emc CorporationIndex processing
US773460326 Ene 20068 Jun 2010Netapp, Inc.Content addressable storage array element
US773928817 Sep 200915 Jun 2010Isilon Systems, Inc.Systems and methods of directory entry encodings
US774303319 Jul 200722 Jun 2010Isilon Systems, Inc.Systems and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US77522266 Jul 2010Symantec Operating CorporationReverse pathname lookup by inode identifier
US775240218 Ago 20066 Jul 2010Isilon Systems, Inc.Systems and methods for allowing incremental journaling
US775689813 Jul 2010Isilon Systems, Inc.Systems and methods for notifying listeners of events
US777904813 Abr 200717 Ago 2010Isilon Systems, Inc.Systems and methods of providing possible value ranges
US778366626 Sep 200724 Ago 2010Netapp, Inc.Controlling access to storage resources by using access pattern based quotas
US778830321 Oct 200531 Ago 2010Isilon Systems, Inc.Systems and methods for distributed system scanning
US779728314 Sep 2010Isilon Systems, Inc.Systems and methods for maintaining distributed data
US779732314 Sep 2010Hewlett-Packard Development Company, L.P.Producing representative hashes for segments of a file
US782293226 Oct 2010Isilon Systems, Inc.Systems and methods for providing nonlinear journaling
US784053626 Dic 200723 Nov 2010Emc (Benelux) B.V., S.A.R.L.Methods and apparatus for dynamic journal expansion
US78446174 Jun 201030 Nov 2010Isilon Systems, Inc.Systems and methods of directory entry encodings
US78482617 Dic 2010Isilon Systems, Inc.Systems and methods for providing a quiescing protocol
US787034511 Ene 2011Isilon Systems, Inc.Systems and methods for managing stalled storage devices
US788206821 Ago 20071 Feb 2011Isilon Systems, Inc.Systems and methods for adaptive copy on write
US78820711 Feb 2011Isilon Systems, Inc.Systems and methods for a snapshot of data
US78998001 Mar 2011Isilon Systems, Inc.Systems and methods for providing nonlinear journaling
US79000151 Mar 2011Isilon Systems, Inc.Systems and methods of quota accounting
US791747421 Oct 200529 Mar 2011Isilon Systems, Inc.Systems and methods for accessing and updating distributed data
US79374213 May 2011Emc CorporationSystems and methods for restriping files in a distributed file system
US794963624 May 2011Emc CorporationSystems and methods for a read only mode for a portion of a storage system
US794969224 May 2011Emc CorporationSystems and methods for portals into snapshot data
US795370418 Ago 200631 May 2011Emc CorporationSystems and methods for a snapshot of data
US795370931 May 2011Emc CorporationSystems and methods for a read only mode for a portion of a storage system
US79627799 Jun 200814 Jun 2011Emc CorporationSystems and methods for a distributed file system with data recovery
US796628921 Jun 2011Emc CorporationSystems and methods for reading objects in a file system
US797102128 Jun 2011Emc CorporationSystems and methods for managing stalled storage devices
US798432419 Jul 2011Emc CorporationSystems and methods for managing stalled storage devices
US800586527 May 201023 Ago 2011Emc CorporationSystems and methods for notifying listeners of events
US80104934 Mar 201030 Ago 2011Emc CorporationSystems and methods for a snapshot of data
US80151566 Sep 2011Emc CorporationSystems and methods for a snapshot of data
US80152166 Sep 2011Emc CorporationSystems and methods of providing possible value ranges
US80279844 Sep 200927 Sep 2011Emc CorporationSystems and methods of reverse lookup
US805142528 Oct 20051 Nov 2011Emc CorporationDistributed system with asynchronous execution systems and methods
US80547658 Nov 2011Emc CorporationSystems and methods for providing variable protection
US80557118 Nov 2011Emc CorporationNon-blocking commit protocol systems and methods
US806052115 Nov 2011Emc CorporationSystems and methods of directory entry encodings
US200100422245 Dic 200015 Nov 2001Stanfill Craig W.Continuous flow compute point based data processing
US2001004745124 May 200129 Nov 2001Seagate Technology LlcMethod and apparatus for disc drive defragmentation
US2001005649217 Ene 200127 Dic 2001Bressoud Thomas C.Method, apparatus and system for maintaining connections between computers using connection-oriented protocols
US200200106961 Jun 200124 Ene 2002Tadanori IzumiAutomatic aggregation method, automatic aggregation apparatus, and recording medium having automatic aggregation program
US2002002920010 Sep 20017 Mar 2002Charles DulinSystem and method for providing certificate validation and other services
US2002003566819 May 199921 Mar 2002Yasuhiko NakanoInformation storage system for redistributing information to information storage devices when a structure of the information storage devices is changed
US2002003843620 Sep 200128 Mar 2002Nec CorporationDisk array apparatus, error control method for the same apparatus, and control program for the same method
US2002004977829 Mar 200125 Abr 2002Bell Peter W.System and method of information outsourcing
US200200559402 Nov 20019 May 2002Charles ElkanMethod and system for selecting documents by measuring document quality
US2002007297428 Nov 200113 Jun 2002Pugliese Anthony V.System and method for displaying and selling goods and services in a retail environment employing electronic shopper aids
US2002007587031 Ago 200120 Jun 2002De Azevedo MarceloMethod and apparatus for discovering computer systems in a distributed multi-system cluster
US2002007816119 Dic 200020 Jun 2002Philips Electronics North America CorporationUPnP enabling device for heterogeneous networks of slave devices
US200200781807 Dic 200120 Jun 2002Kizna CorporationInformation collection server, information collection method, and recording medium
US200200830782 Nov 200127 Jun 2002Guy PardonDecentralized, distributed internet data management
US2002008311818 May 200127 Jun 2002Sim Siew YongMethod and apparatus for managing a plurality of servers in a content delivery network
US2002008736630 Dic 20004 Jul 2002Collier Timothy R.Tentative-hold-based protocol for distributed transaction processing
US2002009543811 Jul 200118 Jul 2002Sony CorporationProposed syntax for a synchronized commands execution
US2002010787729 Dic 19978 Ago 2002Douglas L. WhitingSystem for backing up files from disk volumes on multiple nodes of a computer network
US2002012413729 Ene 20025 Sep 2002Ulrich Thomas R.Enhancing disk array performance via variable parity based load balancing
US2002013855929 Ene 200226 Sep 2002Ulrich Thomas R.Dynamically distributed file system
US2002015684029 Ene 200224 Oct 2002Ulrich Thomas R.File system metadata
US2002015689129 Ene 200224 Oct 2002Ulrich Thomas R.Enhancing file system performance
US2002015697329 Ene 200224 Oct 2002Ulrich Thomas R.Enhanced disk array
US2002015697429 Ene 200224 Oct 2002Ulrich Thomas R.Redundant dynamically distributed file system
US2002015697529 Ene 200224 Oct 2002Staub John R.Interface architecture
US2002015890030 Abr 200131 Oct 2002Hsieh Vivian G.Graphical user interfaces for network management automated provisioning environment
US2002016184629 Ene 200231 Oct 2002Ulrich Thomas R.Data path controller architecture
US2002016185029 Ene 200231 Oct 2002Ulrich Thomas R.Data path accelerator for storage systems
US2002016197329 Ene 200231 Oct 2002Ulrich Thomas R.Programmable data path accelerator
US200201638891 Feb 20017 Nov 2002Yechiam YeminiMethod and apparatus for providing services on a dynamically addressed network
US2002016594229 Ene 20027 Nov 2002Ulrich Thomas R.Data path accelerator with variable parity, variable length, and variable extent parity groups
US2002016602629 Ene 20027 Nov 2002Ulrich Thomas R.Data blocking mapping
US2002016607929 Ene 20027 Nov 2002Ulrich Thomas R.Dynamic data recovery
US2002016982729 Ene 200214 Nov 2002Ulrich Thomas R.Hot adding file system processors
US2002017003621 Feb 200214 Nov 2002Cobb Jeffrey R.Detecting a stalled routine
US2002017429529 Ene 200221 Nov 2002Ulrich Thomas R.Enhanced file system failure tolerance
US2002017429629 Ene 200221 Nov 2002Ulrich Thomas R.Disk replacement via hot swapping with variable parity
US2002017816229 Ene 200228 Nov 2002Ulrich Thomas R.Integrated distributed file system with variable parity groups
US2002019131129 Ene 200219 Dic 2002Ulrich Thomas R.Dynamically scalable disk array
US2002019452329 Ene 200219 Dic 2002Ulrich Thomas R.Replacing file system processors by hot swapping
US2002019452629 Ene 200219 Dic 2002Ulrich Thomas R.Dynamic redistribution of parity groups
US2002019886423 May 200226 Dic 2002Ralf OstermannMethod and apparatus for simplifying the access of metadata
US200300051597 Jun 20012 Ene 2003International Business Machines CorporationMethod and system for generating and serving multilingual web pages
US200300095115 Jul 20019 Ene 2003Paul GiottaMethod for ensuring operation during node failures and network partitions in a clustered message passing server
US200300143915 Mar 200116 Ene 2003Evans Paul AData distribution
US200300333089 Nov 200113 Feb 2003Patel Sujal M.System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US2003006149121 Sep 200127 Mar 2003Sun Microsystems, Inc.System and method for the allocation of network storage
US2003010925318 Ene 200112 Jun 2003Fenton Shaun RichardDigital communications system
US200301208639 Dic 200226 Jun 2003Lee Edward K.Self-healing log-structured RAID
US2003012585225 Nov 20023 Jul 2003Caterpillar Inc.System and method for monitoring machine status
US2003012652228 Dic 20013 Jul 2003English Robert M.Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US2003013186025 Nov 200217 Jul 2003Ashcraft Charles RayWrapping materials for smoking articles
US2003013551425 Oct 200217 Jul 2003Patel Sujal M.Systems and methods for providing a distributed file system incorporating a virtual hot spare
US200301497507 Feb 20027 Ago 2003Franzenburg Alan M.Distributed storage array
US2003015887315 Feb 200221 Ago 2003International Business Machines CorporationDynamic links to file system snapshots
US2003016130224 Ene 200328 Ago 2003Roger ZimmermannContinuous media system
US2003016372627 Feb 200328 Ago 2003Kidd Taylor W.Method and apparatus for providing a hierarchical security profile object
US2003017214923 Ene 200211 Sep 2003Andiamo Systems, A Delaware CorporationMethods and apparatus for implementing virtualization of storage within a storage area network
US2003017730813 Mar 200218 Sep 2003Norbert Lewalski-BrechterJournaling technique for write transactions to mass storage
US2003018231219 Mar 200225 Sep 2003Chen Raymond C.System and method for redirecting access to a remote mirrored snapshop
US2003018232519 Mar 200225 Sep 2003Manley Stephen L.System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
US2003023338516 Abr 200318 Dic 2003Bladelogic,Inc.Method and system for executing and undoing distributed server change operations
US2004000305324 Mar 20031 Ene 2004Williams Michael JohnSystem
US200400247315 Ago 20025 Feb 2004Microsoft CorporationCoordinating transactional web services
US200400249635 Ago 20025 Feb 2004Nisha TalagalaMethod and system for striping data to accommodate integrity metadata
US2004007868020 Mar 200322 Abr 2004Legend (Beijing) LimitedMethod for implementing data backup and recovery in computer hard disk
US200400788124 Ene 200222 Abr 2004Calvert Kerry WayneMethod and apparatus for acquiring media services available from content aggregators
US2004011780213 Dic 200217 Jun 2004Green James DEvent monitoring system and method
US200401336704 Ene 20038 Jul 2004International Business Machines CorporationDistributed notification and action mechanism for mirroring-related events
US2004014364716 Ene 200322 Jul 2004Ludmila CherkasovaSystem and method for efficiently replicating a file among a plurality of recipients in a reliable manner
US2004015347914 Nov 20035 Ago 2004Mikesell Paul A.Systems and methods for restriping files in a distributed file system
US200401585496 Feb 200412 Ago 2004Vladimir MatenaMethod and apparatus for online transaction processing
US200401747985 Feb 20029 Sep 2004Michel RiguidelData copy-protecting system for creating a copy-secured optical disc and corresponding protecting method
US2004018968211 Dic 200330 Sep 2004Lidror TroyanskyMethod and a system for embedding textual forensic information
US200401997343 Abr 20037 Oct 2004Oracle International CorporationDeadlock resolution through lock requeuing
US2004019981229 Nov 20017 Oct 2004Earl William J.Fault tolerance using logical checkpointing in computing systems
US200402051419 Mar 200414 Oct 2004Goland Yaron Y.System and method for message ordering in a message oriented network
US2004023074829 Abr 200418 Nov 2004Sony Computer Entertainment Inc.Prefetch command control method, prefetch command control apparatus and cache memory control apparatus
US2004024044418 Sep 20032 Dic 2004Matthews Daniel JamesSystem and method for managing transactions in a messaging system
US2004026067312 Abr 200423 Dic 2004David HitzCopy on write file system consistency and block usage
US2004026774728 Ene 200430 Dic 2004Kabushiki Kaisha ToshibaTransaction processing system supporting concurrent accesses to hierarchical data by transactions
US200500105928 Jul 200313 Ene 2005John GuthrieMethod and system for taking a data snapshot
US2005003377818 Ago 200410 Feb 2005Price Daniel M.Method of improving the availability of a computer clustering system through the use of a network medium link state function
US2005004419718 Ago 200324 Feb 2005Sun Microsystems.Inc.Structured methodology and design patterns for web services
US2005006609523 Sep 200324 Mar 2005Sachin MullickMulti-threaded write interface and methods for increasing the single file read and write throughput of a file server
US2005011440220 Nov 200326 May 2005Zetta Systems, Inc.Block level data snapshot system and method
US2005011460926 Nov 200326 May 2005Shorb Charles S.Computer-implemented system and method for lock handling
US2005012545626 Feb 20049 Jun 2005Junichi HaraFile migration method based on access history
US2005013186014 Ene 200516 Jun 2005Microsoft CorporationMethod and system for efficiently indentifying differences between large files
US200501319906 Dic 200416 Jun 2005Acpana Business Systems Inc.Data backup system and method
US2005013819522 Dic 200323 Jun 2005Jean-Pierre BonoData streaming and backup systems having multiple concurrent read threads for improved small file performance
US2005013825223 Dic 200323 Jun 2005Arm LimitedTransaction request servicing mechanism
US2005017196030 Ene 20044 Ago 2005Lomet David B.Concurrency control for B-trees with node deletion
US200501719629 Abr 20044 Ago 2005Alvaro MartinData compression system based on tree models
US200501878893 Sep 200325 Ago 2005Hiroyuki YasoshimaMethod for managing file using network structure, operation object display limiting program, and recording medium
US2005018805229 Dic 200325 Ago 2005Microsoft CorporationPerforming threshold based connection status responses
US200501929937 Feb 20051 Sep 2005Bea Systems, Inc.System and method for performing commutative operations in data access systems
US2005019338925 Feb 20051 Sep 2005Murphy Robert J.System and method for a user-configurable, removable media-based, multi-package installer
US2005028916929 Oct 200429 Dic 2005Microsoft CorporationLossless recovery for computer systems with map assisted state transfer
US2005028918829 Jun 200429 Dic 2005Microsoft CorporationAllocation locks and their use
US2006000476021 Jun 20045 Ene 2006Microsoft CorporationMethod, system, and apparatus for managing access to a data object
US200600418943 Ago 200423 Feb 2006Tu-An ChengApparatus, system, and method for isolating a storage application from a network interface driver
US2006004771325 Jul 20052 Mar 2006Wisdomforce Technologies, Inc.System and method for database replication by interception of in memory transactional change records
US2006004792524 Ago 20042 Mar 2006Robert PerryRecovering from storage transaction failures using checkpoints
US200600532632 May 20059 Mar 2006Anand PrahladSystems and methods for generating a storage-related metric
US2006005946716 Sep 200416 Mar 2006International Business Machines CorporationFast source file to line number table association
US2006007492225 Nov 20036 Abr 2006Kozo NishimuraFile management device, file management method, file management program and recording medium
US2006008317718 Oct 200420 Abr 2006Nokia CorporationListener mechanism in a distributed network system
US2006009543828 Oct 20054 May 2006Fachan Neal TNon-blocking commit protocol systems and methods
US2006010106228 Oct 200511 May 2006Godman Peter JDistributed system with asynchronous execution systems and methods
US2006012958415 Dic 200415 Jun 2006Thuvan HoangPerforming an action in response to a file system event
US2006012963120 Ene 200415 Jun 2006Na Dong WMethod for controlling a media message upload through a wireless communication network
US2006012998315 Dic 200415 Jun 2006Feng Zhao-HuiApparatus, system, and method for sharing and accessing data by scopes
US2006015583111 Ene 200513 Jul 2006Cisco Technology, Inc.Network topology based storage allocation for virtualization
US200602065365 May 200614 Sep 2006International Business Machines CorporationProviding a snapshot of a subset of a file system
US2006023041112 Abr 200512 Oct 2006Microsoft CorporationResource accessing with locking
US2006027743211 Ago 20067 Dic 2006Patel Sujal MSystems and methods for providing a distributed file system incorporating a virtual hot spare
US2006028816117 Jun 200521 Dic 2006Cavallo Joseph SRAID power safe apparatus, systems, and methods
US2006029458923 Jun 200528 Dic 2006International Business Machines CorporationMethod/system to speed up antivirus scans using a journal file system
US2007003888716 Oct 200615 Feb 2007Witte Wesley RRemote disaster recovery and data migration using virtual appliance migration
US2007009179021 Oct 200526 Abr 2007Passey Aaron JSystems and methods for providing variable protection
US2007009426921 Oct 200526 Abr 2007Mikesell Paul ASystems and methods for distributed system scanning
US2007009427721 Oct 200526 Abr 2007Fachan Neal TSystems and methods for maintaining distributed data
US2007009431021 Oct 200526 Abr 2007Passey Aaron JSystems and methods for accessing and updating distributed data
US2007009443121 Oct 200526 Abr 2007Fachan Neal TSystems and methods for managing concurrent access requests to a shared resource
US2007009444926 Oct 200526 Abr 2007International Business Machines CorporationSystem, method and program for managing storage
US2007009445221 Oct 200526 Abr 2007Fachan Neal TSystems and methods for using excitement values to predict future access to resources
US2007012433730 Ene 200731 May 2007Flam Ran JSystem and method for automated process control
US200701683518 Jun 200619 Jul 2007Fachan Neal TNon-blocking commit protocol systems and methods
US2007017191928 Oct 200526 Jul 2007Godman Peter JMessage batching with checkpoints systems and methods
US2007019225421 Mar 200716 Ago 2007William HinkleMulti-processing financial transaction processing system
US2007019581017 Feb 200623 Ago 2007Fachan Neal TSystems and methods for providing a quiescing protocol
US200702336844 Jun 20074 Oct 2007Oracle International CorporationNeighboring locking technique for increasing concurrency among transactions
US2007023371031 Mar 20064 Oct 2007Passey Aaron JSystems and methods for notifying listeners of events
US2007024487712 Abr 200618 Oct 2007Battelle Memorial InstituteTracking methods for computer-readable files
US2007025576528 Abr 20061 Nov 2007Robinson Douglas BSystems and methods for file maintenance
US2007025592128 Abr 20061 Nov 2007Abhijeet GoleMethods of converting traditional volumes into flexible volumes
US2007028849012 Jun 200613 Dic 2007Tom Benjamin LongshawMethod, system, and database archive for enhancing database archiving
US2008000514529 Jun 20073 Ene 2008Data Equation LimitedData processing
US200800105075 Sep 200610 Ene 2008Oracle International CorporationSelecting optimal repair strategy for mirrored files
US2008002190719 Jul 200724 Ene 2008Patel Sujal MSystems and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US200800312382 Ago 20067 Feb 2008Shai HarmelinSystems and methods for configuring multiple network interfaces
US200800340044 Ago 20067 Feb 2008Pavel CislerSystem for electronic backup
US200800440164 Ago 200621 Feb 2008Henzinger Monika HDetecting duplicate and near-duplicate files
US2008004643218 Ago 200621 Feb 2008Anderson Robert JSystems and methods for a snapshot of data
US2008004644318 Ago 200621 Feb 2008Fachan Neal TSystems and methods for providing nonlinear journaling
US2008004644418 Ago 200621 Feb 2008Fachan Neal TSystems and methods for providing nonlinear journaling
US2008004644518 Ago 200621 Feb 2008Passey Aaron JSystems and methods of reverse lookup
US2008004647518 Ago 200621 Feb 2008Anderson Robert JSystems and methods for a snapshot of data
US2008004647618 Ago 200621 Feb 2008Anderson Robert JSystems and methods for a snapshot of data
US2008004666718 Ago 200621 Feb 2008Fachan Neal TSystems and methods for allowing incremental journaling
US2008005954118 Ago 20066 Mar 2008Fachan Neal TSystems and methods for a snapshot of data
US2008005973413 Nov 20066 Mar 2008Hitachi, Ltd.Storage subsystem and back-up/recovery method
US2008012636518 Ago 200629 May 2008Fachan Neal TSystems and methods for providing nonlinear journaling
US2008015172421 Dic 200626 Jun 2008Anderson Robert JSystems and methods for managing unavailable storage devices
US2008015497822 Dic 200626 Jun 2008Lemar Eric MSystems and methods of directory entry encodings
US2008015519121 Dic 200626 Jun 2008Anderson Robert JSystems and methods for providing heterogeneous storage systems
US200801682099 Ene 200710 Jul 2008Ibm CorporationData protection via software configuration of multiple disk drives
US200801683046 Dic 200710 Jul 2008David FlynnApparatus, system, and method for data storage using progressive raid
US200801684585 Ene 200710 Jul 2008Fachan Neal TSystems and methods for managing semantic locks
US200802437739 Jun 20082 Oct 2008Isilon Systems, Inc.Systems and methods for a distributed file system with data recovery
US2008025610313 Abr 200716 Oct 2008Fachan Neal TSystems and methods of providing possible value ranges
US2008025653713 Abr 200716 Oct 2008Fachan Neal TSystems and methods of quota accounting
US2008025654513 Abr 200716 Oct 2008Tyler Arthur AkidauSystems and methods of managing resource utilization on a threaded computer system
US2008026354926 Jun 200823 Oct 2008International Business Machines CorporationManaging locks and transactions
US2008029461111 Ago 200827 Nov 2008Matthew Joseph AnglinHierarchical storage management using dynamic tables of contents and sets of tables of contents
US2009005539921 Ago 200726 Feb 2009Qichu LuSystems and methods for reading objects in a file system
US2009005560421 Ago 200726 Feb 2009Lemar Eric MSystems and methods for portals into snapshot data
US2009005560721 Ago 200726 Feb 2009Schack Darren PSystems and methods for adaptive copy on write
US200901255638 Nov 200714 May 2009Lik WongReplicating and sharing data between heterogeneous data systems
US2009021088023 Mar 200920 Ago 2009Isilon Systems, Inc.Systems and methods for managing semantic locks
US2009024875627 Mar 20081 Oct 2009Akidau Tyler ASystems and methods for a read only mode for a portion of a storage system
US2009024876527 Mar 20081 Oct 2009Akidau Tyler ASystems and methods for a read only mode for a portion of a storage system
US2009024897527 Mar 20081 Oct 2009Asif DaudSystems and methods for managing stalled storage devices
US2009024901327 Mar 20081 Oct 2009Asif DaudSystems and methods for managing stalled storage devices
US2009025206615 Jun 20098 Oct 2009Isilon Systems, Inc.Systems and methods for providing variable protection
US200903272184 Sep 200931 Dic 2009Passey Aaron JSystems and Methods of Reverse Lookup
US201000161559 Nov 200721 Ene 2010Basf SeLiquid Water Based Agrochemical Formulations
US201000163533 Oct 200521 Ene 2010Kirk Russell HenneBenzoimidazole derivatives useful as antiproliferative agents
US2010012205713 Nov 200813 May 2010International Business Machines CorporationTiled storage array with systolic move-to-front reorganization
US201001615564 Mar 201024 Jun 2010Anderson Robert JSystems and methods for a snapshot of data
US201001615574 Mar 201024 Jun 2010Anderson Robert JSystems and methods for a snapshot of data
US2010018559222 Jul 2010Emc CorporationSnapshot indexing
US201002232352 Mar 20102 Sep 2010Isilon Systems, Inc.Systems and methods for providing nonlinear journaling
US2010023541316 Sep 2010Isilon Systems, Inc.Systems and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US2010024163223 Sep 2010Lemar Eric MSystems and methods of directory entry encodings
US2010030678627 May 20102 Dic 2010Isilon Systems, Inc.Systems and methods for notifying listeners of events
US2011002279027 Ene 2011Isilon Systems, Inc.Systems and methods for providing nonlinear journaling
US2011003541224 Ago 201010 Feb 2011Isilon Systems, Inc.Systems and methods for maintaining distributed data
US2011004420924 Feb 2011Isilon Systems, Inc.Systems and methods for providing a quiescing protocol
US2011008763517 Dic 201014 Abr 2011Isilon Systems, Inc.Systems and methods for a snapshot of data
US2011011321112 May 2011Isilon Systems, Inc.Systems and methods of quota accounting
US2011011923419 May 2011Schack Darren PSystems and methods for adaptive copy on write
US2011015356923 Jun 2011Fachan Neal TSystems and methods for providing nonlinear journaling
EP0774723A219 Nov 199621 May 1997Matsushita Electric Industrial Co., Ltd.Virtual file management system
EP1421520A12 Ago 200226 May 2004Isilon Systems, Inc.Systems and methods providing metadata for tracking of information on a distributed file system of storage devices
EP1563411B114 Nov 200319 Jun 2013EMC CorporationSystems and methods for restriping files in a distributed file system
EP2284735A114 Nov 200316 Feb 2011Isilon Systems, Inc.Systems and methods for restriping files in a distributed file system
EP2299375A214 Nov 200323 Mar 2011Isilon Systems, Inc.Systems and methods for restriping files in a distributed file system
JP4464279B2 Título no disponible
JP4504677B2 Título no disponible
Otras citas
Referencia
1Apr. 1, 2009 Response to Oct. 2, 2008 Final Rejection in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
2Apr. 20, 2004 Int'l Search report PCT/US03/36699, 10 pages.
3Apr. 20, 2009 Response to Oct. 21, 2008 Final Rejection in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
4Arthur S. Rose, Letter to Steven M. Bauer, Aug. 31, 2007, 4 pages.
5Arthur S. Rose, Letter to Steven M. Bauer, Aug. 7, 2006, 2 pages.
6Arthur S. Rose, Letter to Steven M. Bauer, Feb. 23, 2007, 1 page.
7Arthur S. Rose, Letter to Steven M. Bauer, Jun. 22, 2007, 1 page.
8Arthur S. Rose, Letter to Steven M. Bauer, Nov. 9, 2006, 2 pages.
9Aug. 25, 2010 Issue Notification in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
10Aug. 6, 2004 Int'l Search report PCT/US03/33704, 11 pages.
11Birk, Y., Deterministic load-balancing schemes for disk-based video-on-demand storage servers, Mass Storage Systems 1995; Storage-At the Forefront of Information Infrastructures', Proceedings of the Fourteenth IEEE Symposium on Monterey, CA, Sep. 11-14, 1995, pp. 17-25.
12Birk, Y., Deterministic load-balancing schemes for disk-based video-on-demand storage servers, Mass Storage Systems 1995; Storage—At the Forefront of Information Infrastructures', Proceedings of the Fourteenth IEEE Symposium on Monterey, CA, Sep. 11-14, 1995, pp. 17-25.
13Byteandswitch, "Discovery Chooses Isilon," Apr. 23, 2007, 1 page (Exhibit C).
14Coulouris et al., Distributed Systems Concepts and Design; Addison-Wesley, Second Edition, 1994, pp. 353-371 and 377-405.
15Dec. 11, 2007 Non-Final Rejection in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
16Dec. 21, 2009 Final OA in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
17Dorai et al.:, "Transport Threads: Resource Sharing in SMT Processor for High Single-Thread Performance", proceedings of the 2002 International Conference on Parallel Architectures and Complication Techniques, Sep. 2002, 12 pages.
18Duchamp, Dan: "Analysis of Transaction Management Performance", ACM Symposium on Operating Systems Principles, Dec. 1989, pp. 177-190.
19Duzett, Bob et al., An Overview of the nCube 3 Supercomputer, IEEE, Jul. 1992, pp. 458-464.
20Feb. 22, 2008 Int'l Search report PCT/US07/018326, 20 pages.
21Feb. 22, 2011 Supplemental Notice of Allowance in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
22Garcia-Molina H et al: "Database System Implementation, passage" Database System Implementation, Jan. 1, 2000, pp. I-V, 423-509.
23Gerhard Weikum, et al., Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery, Morgan Kaufmann, 2002, pp. 436-853.
24Gerhard Weikum, et al., Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery, Morgan Kaufmann, 2002, pp. ix-xxv and 2-435.
25Gibson, Garth A. et al., The Scotch Parallel Storage System, IEEE, 1995, pp. 403-410.
26Gray J et al: "Transaction processing: concepts and techniques (excerpt), Passage" Transaction Processing: Concepts and Techniques, Jan. 1, 1993, pp. 373-445.
27Haerder T et al: "Principles of Transaction-Oriented Database Recovery" ACM Computing Surveys, ACM, New York, NY, US, vol. 15, No. 4, Dec. 1, 1983, pp. 287-317.
28Hartman, John Henry, The Zebra Striped Network File System, (Sc.B. (Brown University) 1987, pp. 1-148.
29Hisayuki Aoki, Parallel Filesystem MFS, IPSJ SIG Technical Reports, Japan, Information Processing Society of Japan, Aug. 26, 1996, vol. 96, No. 79, pp. 31 to 36 (stamped Citation 1 / English Translation attached, 23 pages).
30HP, Slow Internal Disk, Feb. 22, 2005, p. 2 and 6, in 7 pages.
31IOS Commands, Feb. 6, 2005, Pantz.org, [online], , 12 pages.
32IOS Commands, Feb. 6, 2005, Pantz.org, [online], <web.archive.org/web/20050206184604/http://pantz.org/os/ios/ioscommands.shtml>, 12 pages.
33IP Forwarding with Cisco Routers Lab Exercises, Jun. 15, 1999 [online], , 11 pages.
34IP Forwarding with Cisco Routers Lab Exercises, Jun. 15, 1999 [online], <ws.edu.isoc.org/data1999/1481713642400af6a2de65a/ip—fwd—cisco—config.ppt>, 11 pages.
35Isilon Systems, "Isilon IQ Platform Overview", 4 pages, 2007 (Exhibit A).
36Isilon Systems, "Uncompromising Reliability through Clustered Storage", Sep. 2006, 10 pages (Exhibit B).
37Jan. 17, 2008 Non-Final Rejection in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
38Jan. 21, 2008 Final Rejection in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
39Jan. 23, 2009 Examination Report EP 02 75 6944, 5 pages.
40Jim Gray and Andreas Reuter, Transaction Processing: Concepts and Techniques, Morgan Kaufmann, 1993, pp. 291-628.
41Jim Gray and Andreas Reuter, Transaction Processing: Concepts and Techniques, Morgan Kaufmann, 1993, pp. 630-1070.
42Jim Gray and Andreas Reuter, Transaction Processing: Concepts and Techniques, Morgan Kaufmann, 1993, pp. v-290.
43Jul. 24, 2009 Non-Final OA in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
44Jul. 29, 2010 Response to Final Office Action dated Mar. 29, 2010 submitted with Request for Continued Examiation in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
45Jun. 1, 2010 Notice of Allowance in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
46Jun. 10, 2011 Office Action in U.S. Appl. No. 12/862,060, filed Aug. 24, 2010.
47Jun. 4, 2009 Non-Final Rejection in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
48Keidar, et al.: Increasing the Resilience of Distributed and Replicated Database Systems (1998) pp. 1-25.
49Kenneth P. Birman, Building Secure and Reliable Network Applications, Manning, 1996, pp. 301-591.
50Kenneth P. Birman, Building Secure and Reliable Network Applications, Manning, 1996, pp. xvi-300.
51Kumar, Akhil, "An analysis of borrowing policies for escrow transactions in a replicated data environment", Institute of Electrical and Electronics Engineers; Proceedings of the International Conference on Data Engineering, Los Angeles, Feb. 5-9, 1990; Los Alamitos, IEEE, Comp. Soc. Press, US. vol. Conf. 6, Feb. 5, 1990, pp. 446-454, XP010018185 ISBN: 978-0-8186-2025-6 p. 446, left-hand column, line 1-p. 447, last line.
52Kumar, Akhil, "An analysis of borrowing policies for escrow transactions in a replicated data environment", Institute of Electrical and Electronics Engineers; Proceedings of the International Conference on Data Engineering, Los Angeles, Feb. 5-9, 1990; Los Alamitos, IEEE, Comp. Soc. Press, US. vol. Conf. 6, Feb. 5, 1990, pp. 446-454, XP010018185 ISBN: 978-0-8186-2025-6 p. 446, left-hand column, line 1—p. 447, last line.
53Levy E., Ed.-Institute of Electrical and Electronics Engineers: "Incremental restart (database management)" Proc. Int. Conf. Data Eng., Kobe, JP, Apr. 8-12, 1991; IEEE Comp. Soc. Press, U.S., vol. Conf. 7, Apr. 8, 1991, pp. 640-648.
54Levy E., Ed.—Institute of Electrical and Electronics Engineers: "Incremental restart (database management)" Proc. Int. Conf. Data Eng., Kobe, JP, Apr. 8-12, 1991; IEEE Comp. Soc. Press, U.S., vol. Conf. 7, Apr. 8, 1991, pp. 640-648.
55Long, Darrell D.E., et al., Swift/RAID: A Distributed RAID System, Computing Systems, vol. 7, No. 3 Summer 1994, pp. 333-359.
56Lougher P. et al., "Scalable storage servers for digital audio and video," International Conference on Storage and Recording Systems, 1994, Keele, UK, Jan. 1, 1994, pp. 140-143.
57Mar. 10, 2011 issue Notification in U.S. Appl. No. 11/255,337, filed Oct. 21, 2005.
58Mar. 29, 2010 Final OA in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
59May 12, 2008 Response to Dec. 11, 2007 Non-Final Rejection in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
60May 18, 2009 Int'l Search report PCT/US08/059798, 18 pages.
61May 20, 2008 Response to Jan. 17, 2008 Non-Final Rejection in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
62May 21, 2007 European Search Report EP 02756944.1-2201, 8 pages.
63May 8, 2008 Int'l Search report PCT/US07/018324, 13 pages.
64MCSA/MSCE/MCDBA Self Paced Training Kit: MS SQL Server 2000 System Administration, May 14, 2003, Microsoft Press, Second Edition, 12 pages.
65Michael Stonebraker et al., Distributed Raid: A New Multiple Copy Algorithm, Proc. Sixth Int. Conf. Data Eng., IEEE Service Center, Piscataway, NJ (IEEE cat No. 90CH2840-7), pp. 430-437, Feb. 5, 1990.
66Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996 pp. 397-872.
67Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996, pp. 1-395.
68Nov. 15, 2002 Int'l Search report PCT/US02/24728, 2 pages.
69Oct. 2, 2008 Final Rejection in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
70Oct. 22, 2009 Int'l Preliminary Report on Patentability PCT/US08/059798, 10 pages.
71Oct. 26, 2009 Amendment to Jul. 24, 2009 Non-Final OA in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
72Oct. 8, 2008 European Supplemental Search Report EP 02 75 6944, 6 pages.
73Pei Cao et al., The TickerTAIP parallel RAID architecture, 1993, 12 pages, Princeton, NJ.
74Pei Cao et al., The TickerTAIP parallel RAID architecture, ACM Transactions on Computer Systems, vol. 12, No. 3, Aug. 1994, 34 pages, Palto Alto, California.
75Peterson, Zachary Nathaniel Joseph, "Data Placement for Copy-On-Write Using Virtual Contiguity," Master of Science in Computer Science Thesis, University of California, Santa Cruz, Sep. 2002, 67 pages.
76Philip A. Bernstein, Vassos Hadzilacos, and Nathan Goodman, Concurrency Control and Recovery in Database Systems, Addison-Wesley, 1987, pp. iii-270.
77Ramez Elmasri, Fundamentals of Database Systems 3rd ed, Sep. 30, 1999, Addison-Wesley, pp. 155-156, 169-173, 178-179, 181-182, 381, 771.
78Reddy, P. Krishna et al., Reducing the blocking in two phase commit with backup sites Apr. 15, 2003, Elsevier, pp. 39-47.
79Sanjay Ghemawat et al., The Google File System, Symposium on Operating Systems Principles, Oct. 19-22, 2003, 15 pages, Bolton Landing, NY.
80Sape Mullender, editor, Distributed Systems (2nd Ed.), ACM Press/Addison-Wesley Publishing Co., New York, NY, USA, 1993, pp. 316-595.
81Sape Mullender, editor, Distributed Systems (2nd Ed.), ACM Press/Addison-Wesley Publishing Co., New York, NY, USA, 1993, pp. v-315.
82Sep. 13, 2010 Notice of Allowance in U.S. Appl. No. 11/255,337, filed Jan. 25, 2006.
83Sep. 4, 2009 Response to Jun. 4, 2009 Non-Final Rejection in U.S. Appl. No. 11/255,818, filed Oct. 21, 2005.
84Shen, et al., Distributed and Dynamic Task Reallocation in Robot Organizations; IEEE 2002, pp. 1019-1024.
85Silaghi, Raul et al.: "Porting OMTTs to CORBA", Lecture Notes in Computer Science, vol. 2888/2003, Nov. 2003, pp. 1521-1542.
86Stallings, William, Operating Systems, Prentice Hall, Fourth Edition; 2001, pp. 197-253 and 265-293.
87Steven M. Bauer, Letter to Arthur S. Rose, Feb. 6, 2007, 2 pages.
88Steven M. Bauer, Letter to Arthur S. Rose, Jun. 7, 2007 (including claim chart), 28 pages.
89Steven M. Bauer, Letter to Arthur S. Rose, Oct. 31, 2006, 1 page.
90Steven M. Bauer, Letter to Arthur S. Rose, Sep. 25, 2006, 2 pages.
91Steven M. Bauer, Letter to Steve Goldman, Jul. 31, 2006 (including the first page of the patents), 8 pages.
92Supp EPO Search Report, App. No. EP 03 78 3599; dated Apr. 29, 2008, 2 pages.
93Taneja Group Technology Analysts, "The Power of InfiniBand and Clustered Storage", Dec. 2005, 8 pages (Exhibit E).
94Tanenbaum, Andrew S., MINIX Operating System, Japan, Apr. 21, 1989, 1st Edition, pp. 328, 505; Also attached is what Applicant believes is the English language version: Tanenbaum, Andrew S., Operating Systems: Design and Implementation, Prentice-Hall, 1987, pp. 279, 347-348.
95Todd A. Gerety, Letter to Arthur S. Rose, Jun. 26, 2007 (exhibits listed separately below), 1 page.
96United States Court of Appeals, Federal Circuit, Seachange International, Inc. Vs. C-Corp, Inc., Jun. 29, 2005, 22 pages.
97United States Court of Appeals, Federal Circuit, Seachange International, Inc. Vs. nCUBE, Corp., Oct. 26, 2004, 28 pages.
98United States District Court, Delaware, Seachange International, Inc. Vs. nCUBE, Corp., Apr. 7, 2004, 13 pages.
99United States District Court, Delaware, Seachange International, Inc. Vs. nCUBE, Corp., Aug. 29, 2000, 12 pages.
100Wedde H. F., et al.: "A universal framework for managing metadata in the distributed Dragon Slayer System", Proceedings of the Euromicro Conference. Euromicro. Informatics: Inventing the Future, Proceedings of Euromicro Workshop on Multimedia and Telecommunications, vol. 2, Sep. 5, 2000, pp. 96, 98, 100, 143, 141.
101Yamashita, Hirofumi, et al., "Development of RAID Filesystem VAFS/HR," The Special Interest Group Notes of IPSJ, Japan, Information Processing Society of Japan, Sep. 16, 1994, vol. 94, No. 80, p. 9-16.
102Yoshitake Shinkai, Cluster File System: HAMFS, Fujitsu, Japan, Fujitsu Limited, Jul. 9, 1999, vol. 50, No. 4, pp. 210 to 214 (stamped Citation 2 / English Translation attached, 16 pages).
Citada por
Patente citante Fecha de presentación Fecha de publicación Solicitante Título
US82860299 Oct 2012Emc CorporationSystems and methods for managing unavailable storage devices
US86254641 Nov 20107 Ene 2014Emc CorporationSystems and methods for providing a quiescing protocol
US896608013 Abr 200724 Feb 2015Emc CorporationSystems and methods of managing resource utilization on a threaded computer system
US20080151724 *21 Dic 200626 Jun 2008Anderson Robert JSystems and methods for managing unavailable storage devices
Clasificaciones
Clasificación de EE.UU.707/656
Clasificación internacionalG06F7/00, G06F17/30
Clasificación cooperativaG06F17/30327, G06F17/30091, G06F11/2094
Clasificación europeaG06F11/20S6, G06F17/30Z1T
Eventos legales
FechaCódigoEventoDescripción
6 May 2011ASAssignment
Owner name: ISILON SYSTEMS, INC., WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PASSEY, AARON J.;SCHACK, DARREN P.;GODMAN, PETER J.;AND OTHERS;REEL/FRAME:026237/0441
Effective date: 20060105
12 May 2011ASAssignment
Owner name: IVY HOLDING, INC., MASSACHUSETTS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ISILON SYSTEMS LLC;REEL/FRAME:026267/0225
Effective date: 20101229
Owner name: EMC CORPORATION, MASSACHUSETTS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:IVY HOLDING, INC.;REEL/FRAME:026267/0562
Effective date: 20101231
Owner name: ISILON SYSTEMS LLC, WASHINGTON
Free format text: MERGER;ASSIGNOR:ISILON SYSTEMS, INC.;REEL/FRAME:026268/0232
Effective date: 20101229
9 Nov 2015FPAYFee payment
Year of fee payment: 4