New! View global litigation for patent families

US20070022129A1 - Rule driven automation of file placement, replication, and migration - Google Patents

Rule driven automation of file placement, replication, and migration Download PDF

Info

Publication number
US20070022129A1
US20070022129A1 US11459906 US45990606A US2007022129A1 US 20070022129 A1 US20070022129 A1 US 20070022129A1 US 11459906 US11459906 US 11459906 US 45990606 A US45990606 A US 45990606A US 2007022129 A1 US2007022129 A1 US 2007022129A1
Authority
US
Grant status
Application
Patent type
Prior art keywords
storage
file
system
node
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11459906
Inventor
Cameron Bahar
Joseph Hopfield
Naveen Nalam
David Zafman
Rasoul Oskouy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ParaScale Inc
Original Assignee
ParaScale Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/30Information retrieval; Database structures therefor ; File system structures therefor
    • G06F17/30067File systems; File servers
    • G06F17/30182File system types
    • G06F17/30194Distributed file systems
    • G06F17/30212Distributed file systems implemented as replicated file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/1002Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers, e.g. load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/1002Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers, e.g. load balancing
    • H04L67/1004Server selection in load balancing
    • H04L67/1008Server selection in load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/1002Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers, e.g. load balancing
    • H04L67/1029Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers, e.g. load balancing using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/1095Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for supporting replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes or user terminals or syncML
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/1097Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for distributed storage of data in a network, e.g. network file system [NFS], transport mechanisms for storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/28Network-specific arrangements or communication protocols supporting networked applications for the provision of proxy services, e.g. intermediate processing or storage in the network
    • H04L67/2814Network-specific arrangements or communication protocols supporting networked applications for the provision of proxy services, e.g. intermediate processing or storage in the network for data redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L29/00Arrangements, apparatus, circuits or systems, not covered by a single one of groups H04L1/00 - H04L27/00 contains provisionally no documents
    • H04L29/12Arrangements, apparatus, circuits or systems, not covered by a single one of groups H04L1/00 - H04L27/00 contains provisionally no documents characterised by the data terminal contains provisionally no documents
    • H04L29/12009Arrangements for addressing and naming in data networks
    • H04L29/12207Address allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements or network protocols for addressing or naming
    • H04L61/20Address allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/1002Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers, e.g. load balancing
    • H04L67/1004Server selection in load balancing
    • H04L67/1017Server selection in load balancing based on a round robin mechanism
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Abstract

Techniques and mechanism are provided for deciding which storage device (or devices) a file should be stored on. These determinations can be used to guide either the placement of new files or the replication or migration of existing files to new storage volumes. These determinations may be made on the basis of simple rules, involving a small number of readily ascertainable file attributes.

Description

    CROSS-REFERENCES TO RELATED APPLICATIONS
  • [0001]
    This application claims the benefit of U.S. Provisional Application No. 60/702,428, filed Jul. 25, 2005 and entitled “Scalable Clustered Storage System,” and U.S. Provisional Application No. 60/702,429, filed Jul. 25, 2005 and entitled “Grid Management System,” the disclosures of which are herein incorporated by reference for all purposes.
  • BACKGROUND OF THE INVENTION
  • [0002]
    Embodiments of the present invention generally relate to computer systems, and more specifically to techniques for rule driven automation of placement, migration, and replication in a storage network.
  • [0003]
    File systems are most commonly stored on random access storage devices (like spinning magnetic disks). Traditionally these disks were directly attached to a single computer, via a disk controller. Many years ago it was the case the files on a disk could only be accessed by programs that were running on the computer to which the disks were attached.
  • [0004]
    The advent of standardized remote file access protocols (e.g., the Network File System and the Common Internet File System) have made it possible for clients to access files on other computers. The advent of Storage Area Networking technologies (such as fibre channel and iSCSI) has made it possible for a single storage device (e.g., a disk) to be accessed directly and efficiently by multiple computers. In this new regime, client software is no longer aware of what device their files are actually stored on, and it becomes possible to move files from one storage device to another.
  • [0005]
    Different digital storage volumes have different characteristics (e.g., cost, size, access time, and throughput). The performance characteristics are further affected by file system and operating system options (e.g. block size, allocation strategy, and caching), or even protocol options (stream vs datagram, ack-window size, etc).
  • [0006]
    Different types of files (e.g. streaming video, text, programs, HTML, etc) tend to be processed in different ways (read size and frequency, reuse, read/write mix, etc). As a result, different types of files will experience better or worse performance, based on the characteristics of the storage devices, file system, operating system, and protocol through which they are being accessed.
  • [0007]
    System performance will be optimized when each file is stored and accessed in the manners that are most appropriate for that type of file. If all of the files used by a system are of single type, it is relatively easy for system managers to configure a storage volume and access services with the appropriate characteristics and allocate the space for those files on that volume.
  • [0008]
    Unfortunately it is increasingly common for users or applications to use increasingly many files of increasingly many types. No one storage volume or set of configuration parameters could possibly be right for all of these files. System managers have traditionally been forced to select the storage volume and management discipline that was right for the most important files, and accept reduced performance (or price performance) for the rest of the files.
  • BRIEF SUMMARY OF THE INVENTION
  • [0009]
    Embodiments of the present invention generally relate to computer systems, and more specifically to techniques for rule driven automation of placement, migration, and replication in a storage network.
  • [0010]
    In one embodiment, a computer-implemented method of selecting a storage volume for a file is disclosed. The method includes associating, by a system manager, storage classes with one or more storage volumes. The system manager composes a set of rules that map file characteristics into a storage class. A computer system applies the set of rules to a plurality of files to obtain one or more storage classes associated with each file in the plurality of files. The computer system matches the obtained one or more storage classes to the one or more storage volumes to determine an appropriate storage volume for each file in the plurality of files.
  • [0011]
    The file may be stored in the appropriate storage volume based on the storage class. At least one rule in the set of rules may include a Boolean expression. The Boolean expression may include a regular expression for pattern matching against character strings. The Boolean expression may include an arithmetic expressions involving for matching numeric quantities. The Boolean expression may include a Boolean expression for matching against arbitrary properties.
  • [0012]
    At least one rule in the set of rules may map the file to the storage class. The least one rule in the set of rules may map to replication factors for the file. In one embodiment, the at least one rule is used by a network file server to determine if the file should be replicated. The network file server determines which volumes replicas of the file should be stored, and generates a task to perform replication of the file on the determined volumes.
  • [0013]
    The at least one rule may be used by a network file server to determine which of available volumes to use for the file to create the file. The at least one rule may be used by a network file server to determine if the file should be migrated from a first storage volume to a second storage volume, and the network file server may generate a task using the network file server to perform migration of the file from the fist storage volume to the second storage volume.
  • [0014]
    A further understanding of the nature and the advantages of the inventions disclosed herein may be realized by reference of the remaining portions of the specification and the attached drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • [0015]
    FIG. 1 is an illustration of a clustered storage system according to an embodiment according to the present invention.
  • [0016]
    FIG. 2 is a block diagram of a control node according to an embodiment of the present invention.
  • [0017]
    FIG. 3 is a block diagram of a storage node according to an embodiment of the present invention.
  • [0018]
    FIG. 4 is a simplified flowchart of a method of servicing requests for files in a storage system according to an embodiment of the present invention.
  • [0019]
    FIG. 5A is a message sequence chart of servicing a request to read from a file in a storage system using tokens according to an embodiment of the present invention.
  • [0020]
    FIG. 5B is a message sequence chart of servicing a request to write to a file in a storage system using tokens according to an embodiment of the present invention.
  • [0021]
    FIG. 6 is a block diagram of a storage system including a number of storage servers implementing a distributed file system with clients connecting to a virtual Internet Protocol address (VIP) according to an embodiment of the present invention.
  • [0022]
    FIG. 7 illustrates a message sequence chart for client session redirection from an elected master in the storage system of FIG. 6 to an appropriate storage server according to one embodiment of the present invention.
  • [0023]
    FIGS. 8A, 8B, and 8C illustrate storage systems for a network file system that may incorporate embodiments of the present invention.
  • [0024]
    FIGS. 9A, 9B, and 9C illustrate interconnection of storage devices to multiple servers that may incorporate embodiments of the present invention.
  • [0025]
    FIG. 10 is a block diagram illustrating a layering of primary performance-impacting components in remote file access that may be incorporated in embodiments of the present invention.
  • [0026]
    FIGS. 11A, 11B, and 11C are high level flowcharts for a method of selecting an appropriate storage volume for a file using rules according to one embodiment of the present invention.
  • [0027]
    FIG. 12 is a block diagram illustrating file characteristics used for determining a storage volume according to one embodiment of the present invention.
  • [0028]
    FIG. 13 is an example of a general grammar for rules defining storage classes according to one embodiment of the present invention.
  • [0029]
    FIG. 14 is a block diagram illustrating a distributed file system with multiple client and storage server nodes, each serving its own storage volumes, where one of the storage nodes has been elected as a master according to one embodiment of the present invention.
  • [0030]
    FIG. 15 is a block diagram illustrating an elected work manager and multiple storage nodes according to one embodiment of the present invention.
  • [0031]
    FIGS. 16A, 16B, 16C, and 16D are flowcharts of methods of managing work tasks using a work manager according to one embodiment of the present invention.
  • [0032]
    FIG. 17 is a flowchart of a method of servicing work queues using a remote replication agent according to one embodiment of the present invention.
  • [0033]
    FIG. 18 is a block diagram of a computer system suitable for implementing embodiments of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • [0034]
    The embodiments discussed herein are illustrative of one or more examples of the present invention. As these embodiments of the present invention are described with reference to illustrations, various modifications or adaptations of the methods and/or specific structures described may become apparent to those skilled in the art. All such modifications, adaptations, or variations that rely upon the teachings of the present invention, and through which these teachings have advanced the art, are considered to be within the scope of the present invention. Hence, the present descriptions and drawings should not be considered in a limiting sense, as it is understood that the present invention is in no way limited to only the embodiments illustrated.
  • [0000]
    Clustered Storage System
  • [0035]
    According to various embodiments, a scalable clustered storage system separates namespace and metadata attributes of files in a file system from the actual data content of files. In one embodiment, one or more servers, called control nodes, are responsible for handling the namespace, metadata, and location information of files. One or more servers, called storage nodes, are responsible for the physical storage and access to files in the file system. Each storage node typically employs a shared-nothing architecture, meaning that each storage node has its own block storage device, whether local or attached through a storage area network (SAN) and the like.
  • [0036]
    In the clustered storage system, the file system itself spans both control nodes and storage nodes, as is not physically tied to a particular server. Accordingly, the clustered storage system scales in several dimensions. Storage nodes may be added in order to scale capacity and bandwidth for serving files stored in the file system. Each storage node may provide both processing and storage capabilities. Moreover, control nodes may be added to distribute the load of metadata operations.
  • [0037]
    In some embodiments of the clustered storage system, users (e.g., client computer systems) may use industry standard protocols without modification to mount exported file system and to access files within the storage system from storage nodes. In some embodiments, the clustered storage system provides a global namespace allowing users to see the entire file system regardless of the storage node used for access to the file system.
  • [0038]
    Accordingly, a storage system in one embodiment of the present invention includes a control node that stores metadata, object identifiers, and location information associated with a plurality of files in a file system and a plurality of storage nodes that store the plurality of files. A storage node in the plurality of storage nodes is capable of receiving a request for a file in the file system from a client. The storage node communicates with the control node to determine metadata, an object identifier, and location information associated with the file. The storage node then accesses the file in the file system to service the request from the client using the metadata, the object identifier, and the location information received from the control node.
  • [0039]
    FIG. 1 is an illustration of a clustered storage system 100 according to an embodiment according to the present invention. Storage system 100 includes clients 120 and 130, control nodes 130 and 140, and storage nodes 150, 160, and 170. Clients 120 and 130, control nodes 130 and 140, and storage nodes 150, 160, and 170 are communicatively coupled using a communications network 180.
  • [0040]
    Typically, clients 110 and 120 are computer systems such as personal computers (PCs), workstations, laptops, personal digital assistants (PDAs), servers, mainframes, and the like. The clients 110 and 120 are configured to access remote files and file systems using file access protocols, such as NFS, CIFS, HTTP, FTP, and the like.
  • [0041]
    Control nodes 130 and 140 may be PCs, workstations, servers, mainframes, and the like. Control nodes 130 and 140 may store information associated with files in a file system on a local file system, network attached storage (NAS), a storage area network (SAN), a database, and the like. Control nodes 130 and 140 may also store information associated with files in a file system in a combination of a local file system and a database. One example of a computer system suitable for implementing control nodes 130 or 140 is shown in FIGS. 2 and 8.
  • [0042]
    Storage nodes 150, 160, and 170 are any hardware and/or software elements configured to store files in a file system. Storage nodes 150, 160, and 170 may be PCs, workstations, servers, mainframes, and the like. Storage nodes 150, 160, and 170 may implement one or more file systems to store files, such as NTFS, EXT, XFS, GFS, and the like. One example of a computer system suitable for implementing control nodes 130 or 140 is shown in FIGS. 3 and 8.
  • [0043]
    Information associated with files in a file system includes namespace, metadata, an object identifier, and location information. Namespace includes a hierarchical tree-based file path and naming scheme common in most file systems. Metadata includes file attributes, such as a file name, permissions, size, type, and the like. Object identifier is a cluster-wide globally unique 128-bit id that is used for naming and storage of files in an object store on a storage node. Location information includes information associated with the logical and/or physical location of a file in a file system. For example, the location information may specify a given storage node, an object store attached to a storage node, path information, and the like.
  • [0044]
    In one example of operation, client 110 sends a request for a file in a file system, such as a request to read from a file, to storage node 150. Storage node 150 then communicates with control nodes 130 and 140 to determine metadata, object identifier, and location information associated with the file and optimally caches this information locally in its RAM. In this example, control node 130 determines an object identifier associated with the name of the file, and from the object identifier, determines the location of the file. Control node 130 sends the object identifier and the location of the file to storage node 150. Operations of the control node 130 are described further with respect to FIGS. 2 and 4.
  • [0045]
    Storage node 150 uses the object identifier and the location of the file to access the file in the file system. For example, the location information may direct storage node 150 to access the file on storage node 160. In some embodiments, storage node 150 may read and write files from or to storages nodes 160 and 170 using an Internet Protocol (IP) based transport mechanism, some examples of which are HTTP or NFS cross mounts. The location information may also direct storage node 150 to access the file using a portion of the file system stored on the storage node 150. Operations of the storage node 150 are described further with respect to FIGS. 3 and 4.
  • [0046]
    According to various embodiments, the storage system 100 separates namespace, metadata and location information associated with files in a file system from the actual storage of the files by the storage nodes 150, 160, and 170. Accordingly, various embodiments provide enhanced access to file system objects using the storage system 100 regardless of the location of an file within a storage node. Additionally, in various embodiments, additional control nodes and additional storage nodes may be added to the storage system, increasing storage capacity and reducing file access time in the storage system.
  • [0047]
    In some embodiments, a pool of network addresses, such as Internet Protocol (IP) addresses may be allocated and assigned to storage nodes 150, 160, and 170 by control nodes 130 and 140. Upon a storage node failure (e.g., storage node 150), control nodes 130 and 140 dynamically reassign the network address (e.g., the IP address) associated with the failed storage node 150 to a functioning storage node (e.g., storage node 160). Thus, client/user access to files previous using storage node 150 may be transparently moved and/or redirected to a new storage node (i.e., storage node 160).
  • [0048]
    FIG. 2 is a block diagram of control node 130 according to an embodiment of the present invention. In general, access to files in a file system funnels a single namespace. Control node 130 maintains the mapping between names and files in the namespace, and provides APIs to allow access to maps from pathnames to unique object identifiers and the reverse. In this example, control node 130 includes an address manager 205, a membership manager 210, a monitoring service 215, a load balancer 220, a placement engine 225, a policy engine 230, a location service 235, a data manager 240, a token manager 245, a metadata manager 250, a user interface manager 255, a file system 260, and a location database 265.
  • [0049]
    Address manager 205 includes hardware and/or software elements configured to provide address management for control node 130. For example, control node 130 may be configured to response to one or more Internet Protocol (IP) addresses to services requests for files in a file system. Address manager 205 may also provide address management to one or more storage nodes in the storage system 100. Address manager 205 may allocate IP addresses to a storage node (e.g., storage nodes 150, 160, and 170) based on performance, capacity, policies, and other criteria collected and associated with a storage node.
  • [0050]
    Membership manager 210 includes hardware and/or software elements configured to determine membership of control node 130 and storage nodes that join or leave the storage system 100. Monitoring service 215 includes hardware and/or software elements configured to monitor and report the status of control nodes (e.g., control nodes 130 and 140) and storage nodes (e.g. storage nodes 150, 160, 170), such as uptime, throughput, and the like.
  • [0051]
    Load balancer 220 includes hardware and/or software elements configured to provide balancing of file system requests between one or more storage nodes. Load balancer 220 may redirect access to files in a file system from clients 120 and 130 in response to load on storage nodes 150, 160, and 170, capacity, location of the client, and the like.
  • [0052]
    Placement engine 225 includes hardware and/or software elements configured to determine the placement of files in a file system. For example, placement engine 225 may determine to store MP3 files on storage node 160 and AVI video files on storage node 170. Placement engine 225 may determine placement of files based on files attributes, such as size, type, extension, and capacity, performance, and the like, of a storage node, as well as the particular type of a disk volume attached to a storage node.
  • [0053]
    Policy engine 230 includes hardware and/or software elements configured to provide rules-based policies for automatic placement, migration, and replication of files in the clustered storage system. Policy engine 230 allows a user, such as an administrator, to specify reliability targets and policies for different classes of data, (e.g., storage classes). These policies can take into account file attributes like path, file type, mod-time, size, etc.
  • [0054]
    Location service 235 includes hardware and/or software elements configured to determine the location of a file in a file system. In various embodiments, the storage system 100 has the ability to move data between volumes and storage nodes without interrupting or affecting client use. For example, data associated with client 110 may be migrated from storage node 160 to a volume associated with storage node 170, with no downtime noticed by client 110. In various embodiments, files have unique object identifiers, and files are stored in volumes associated with volume identifiers. Location service 235 tracks the location of files in the storage system 100 and provides an API to query and update this information. Location service 235 also may track which storage nodes are storing which volumes, and may also maintain information related to how much free space exists on a volume, and other attribute information about volumes, such as performance and the like.
  • [0055]
    The data manager 240 includes hardware and/or software elements configured to provide data management services. In general, in order to tolerate failures in storage nodes 150, 160, and 170, multiple copies of files may be stored throughout the storage system 100. In some embodiments, data manager 240 provides “lazy” replication, in which policy and data attributes determine which files take precedence during replication. Data manager 240 may also provide synchronous replication, for synchronous writes—mirroring of sensitive data.
  • [0056]
    Metadata manager 250 includes hardware and/or software elements configured to manage file attributes associated with files in a file system. Some examples of file attributes are size, ownership and access permission, type, extension, name, and the like.
  • [0057]
    User interface manager 255 includes hardware and/or software elements configured to provide access to various features of control node 130, such as policy engine 230, through a graphical user interface.
  • [0058]
    File system 260 includes hardware and/or software elements configured to storage data. In this example, control node 130 stores the namespace, metadata, and an object identifier associated with files in a file system in the file system 260.
  • [0059]
    Location database 265 includes hardware and/or software elements configured to store location information associated with files in a file system. Some examples of location data 265 are a flat database, a relational database, and the like. The location database 265 may also be part of the file system 260. Typically, files are stored with enough identifying information (volume, name, version history) to allow them to be identified, versions resolved, and the data used by another control node, if necessary.
  • [0060]
    In various embodiments, the control node 130 may include one or more local or attached block devices, such as hard disks, removable disks, SANS, and the like.
  • [0061]
    In operation of control node 130, each namespace has a corresponding file system (or isolated file-tree) at control node 130. Control node 130 stores metadata, along with an object identifier, such as a alpha-numeric sequence or the like, associated with an object (e.g., a file) in the file on file system 260 (e.g., the contents of /foo/bar on file system 260 of control node 130 is “object-id=1783 . . . ”). The file system 260 may also includes current attributes of files, including ownership, times, and size information. In one example, the file system 260 includes file attributes in a phantom file. For example, “/SHARE17/foo/bar” is a file which contains the object identifier of /foo/bar, as well as the owner, times, etc. of the file. The phantom file's length may also be set to the length of the file plus 4 k of padding, to store the object identifier and other information associated with the file in the file system. Control node 130 also stores location information associated with files in the file system in location database 265.
  • [0062]
    According to the previous example, when control node 130 receives a request to access an file in the file system, control node 130 retrieves the file (i.e., the phantom file for the file) from file system 260 to determine metadata associated with the file. Control node 130 retrieves the object identifier form the phantom file, and uses the object identifier to determine location information associated with the file from the location database 265. Control node 130 then returns the object identifier of the file and the location information (e.g., volume identifier, path, etc.) associated with the file to the requestor.
  • [0063]
    According to various embodiments, control node 130 provides separation between metadata and location information of files in the file system, and the actual storage of the files. The separation of metadata and file storage allows flexibility in the storage and retrieval of files because the files can be stored in one location and later moved or migrated.
  • [0064]
    FIG. 3 is a block diagram of storage node 150 according to an embodiment of the present invention. In general, storage node 150 provides for the storage of the actual files in a file system, with metadata and location information stored on a control node (e.g., control node 130 of FIG. 1). In this example, storage node 150 includes a data manager 310, a file protocol router 320, a token handler 330, a monitoring service 340, a replication agent 350, and an object storage 360.
  • [0065]
    Data manager 310 includes hardware and/or software elements configured to service requests for files in a file system. File protocol router 320 includes hardware and/or software configured to provide communication between storage node 150 and various file access protocols, such as NFS, CIFS, HTTP, Web-DAV, FTP, and the like.
  • [0066]
    Token handler 330 includes hardware and/or software elements configured to manage access to files in a file system based on tokens received from a control node. Monitoring service 340 includes hardware and/or software elements configured to monitor and report status information associated with storage node 150.
  • [0067]
    Replication agent 350 includes hardware and/or software elements configured to replicate files in a file system.
  • [0068]
    Object storage 360 includes hardware and/or software elements configured to store data. Some examples of object storage 360 are local file systems residing on one or more hard disks, databases, and the like.
  • [0069]
    In various embodiments, the storage node 150 may include one or more local or attached block devices, such as hard disks, removable disks, SANS, and the like.
  • [0070]
    In general, storage node 150 communicates with control node 130 to determine metadata, an object identifier, and location information associated with a file as metadata and location information are separated in the storage system 100. In response to a request from a client (e.g., client 110), storage node 150 uses the metadata, object identifier, and location information to service the request from the client 110. The operations of storage node 150 are described further with respect to FIG. 4.
  • [0071]
    FIG. 4 is a simplified flowchart of a method of servicing requests for files in a storage system according to an embodiment of the present invention. The processing depicted in FIG. 4 may be performed by software modules (e.g., instructions or code) executed by a processor of a computer system, by hardware modules, or combinations thereof. FIG. 4 begins in step 400.
  • [0072]
    In step 410, a request for a file from a client (e.g., client 110) is received at storage node 150. The request may be to read from a file, write to a file, change to a directory, and the like. In step 420, storage node 150 determines metadata, and object identifier, and location information associated with the file from control node 130. For example, control node 130 accesses the file (e.g., the phantom or ghost file) in file system 260 to determine an object identifier associated with the file. Control node 130 then uses the object identifier to determine location information from the location database 265, such as volume identifier, path, etc. Control node 130 returns the metadata, including the object identifier, and location information associated with the file to the storage node 150.
  • [0073]
    In step 430, storage node 150 uses the metadata, object identifier, and location information associated with the file to access the file in the file system to service the request for the file from client 110. In one example, the metadata, object identifier, and location information received from control node 130 by the storage node 150 directs storage node 150 to retrieve the file from object storage 360. Storage node 150 then services the request for the file using the retrieved file from object storage 360. In another example, the metadata, object identifier, and location information received from control node 130 directs storage node 150 to request the file from storage node 160. Storage node 150 may then may cross-mount a portion of the file system hosted by storage node 160 to access the file.
  • [0000]
    Token Management
  • [0074]
    FIG. 5A is a message sequence chart of servicing a request to read from an file in a file system using tokens according to an embodiment of the present invention. In this example, storage node 150 receives a request from client 110 (FIG. 1) to read from an file in the file system. Storage node 160 receives a request from client 120 to read from the same file in the file system. The file has been replicated to volume_1 510 and to volume_2 520 so that multiple copies of the file exist in the file system.
  • [0075]
    Storage node 150 communicates with control node 130 to determine metadata and location information associated with the file. In particular, token handler 330 (FIG. 3) of storage node 150 request a token from control node 130 to read from the file. Control node 130 generates a token allowing read access to the object storage in Volume_1 510 by storage node 150. As discussed above, control node 130 may determine one or more volumes to distribute data storage. Accordingly, control node 130 provides volume information in token to the storage node 150. A token is a lease for file system operations, such as read or write, and includes an access time or lease time. Using the token received from the control node, storage node 150 then reads the file from Volume_1 510 to service the request from the client 110. Storage node 150 may attempt to renew the token, to continue read access to the file in Volume_1 510 as further requested by client 110.
  • [0076]
    Typically, storage node 150 stores the token received from control node 130, and sets a timeout shorter than the lease time of the token. This allows storage node 150 to renew its lease before the control node 130 expires the token. When the timeout occurs, the token storage node 150 determines whether to renew the lease of the token. For example, in file systems, like CIFS that have open/close in the protocol, an open sets a flag which will ensure that the lease of the token is renewed. In various embodiments, and open mode read or write determines the mode in which the renewal of the token will occur. In another example, for a file system, such as NFS, that does not have open/close in the protocol, storage node 150 monitors actual read and write operations. If a read or a write operation has occurred since the last renewal of the token, another renewal will be requested. In various embodiments, the particular operations, whether read or write, determines in what mode the renewal of the token will occur.
  • [0077]
    In some embodiments, the token includes information, such as a mode (READ/MASTER), a referral volume identifier, the number of seconds the lease is good for, and a generation number. A storage node returns the generation number to a control node, so that the control node may determine when certain races have occurred. Typically, a control node sets an internal time-out, which when triggered the control node assumes a storage node has let a token lease expire or the storage node has crashed, or is otherwise unavailable.
  • [0078]
    Referring again to FIG. 5A, storage node 160 also communicates with control node 130 to determine metadata and location information associated with the file. Token handler 330 of storage node 160 requests a token from control node 130 to read from the file. Control node 130 generates a token allowing read access to the object storage in Volume_2 520 by storage node 160. Using the token received from the control node, storage node 160 reads the file from Volume_2 520 to service the request from the client 120. Similarly, storage node 160 attempts to renew the token, to continue read access to the file in Volume_2 520 as further requested by client 120.
  • [0079]
    FIG. 5B is a message sequence chart of servicing a request to write to an file in a file system using tokens according to an embodiment of the present invention. In this example, storage node 150 receives a request from client 110 to write to an file in the file system. Storage node 160 receives a request from client 120 to write to the same file in the file system.
  • [0080]
    Storage node 150 communicates with control node 130 to determine metadata and location information associated with the file. Token handler 330 of storage node 150 requests a token from control node 130 to write to the file. Control node 130 generates a token allowing a write access operation to the object storage in Volume 530 by storage node 150. Using the token received from the control node, storage node 150 then reads the file from Volume 530 to service the request from the client 110. Storage node 150 may attempt to renew the token, to continue write access to the file in Volume 530 as further requested by client 110.
  • [0000]
    Redirection and Load Balancing
  • [0081]
    Given a distributed remote file system service implemented by N servers storing M file systems, the present invention describes techniques and mechanisms for taking client sessions initiated to a single virtual IP address, determining which file server should handle the new session, and transparently redirecting the client to that server, based on heuristics and collected statistics. These techniques are applicable to client systems that use standard remote file access protocols such as NFS, CIFS, HTTP or FTP.
  • [0082]
    FIG. 6 is a block diagram of a storage system 600 including a number of storage servers implementing a distributed file system with clients connecting to a virtual Internet Protocol address (VIP) according to an embodiment of the present invention. Storage system 600 includes storage servers 615, 620, and 625. Storage server 615 includes a redirection manger/module 640 and a statistics database 635. Storage server 620 includes a statistics database 640. Storage server 625 includes a statistics database 645.
  • [0083]
    Client 605 and 610 requests require access to a single virtual Internet Protocol address (VIP) associated with the storage system 600 to initiate file system mount and other file system request operations. To provide for the advertising and coordination of such a cluster-wide globally unique virtual IP address, storage nodes 615, 620, and 625 (e.g., using standard clustering technology) elect one node (e.g., storage node 615) to be the “master” or “coordinator” to advertise the virtual IP address (VIP) associated with the storage system 600 to the clients 605 and 610.
  • [0084]
    The master node typically provides important functions and services to operations of the storage system 600, but does not represent a single point of failure. According to various embodiments, if the master node (storage server 615) ever fails, the surviving nodes (storage servers 620 and 625) will elect a new master. Additionally, in some embodiments, as the network of storage servers grows larger, there is a danger that the master node could become a performance bottleneck. Various embodiments mitigate this by providing that, although the master node receives initial client request, the master nodded delegates the actual work to other storage servers in the storage system 600 which will field requests from the clients 605 and 610 directly.
  • [0085]
    Each and every storage node collects statistics for itself, stores them locally (e.g., statistics database 635), and forwards collected statistics to the master node. In one example, the storage server 615 groups the statistics into three general categories:
  • [0086]
    1) Server Statistics: These are standard server load statistics collected by standard OS and I/O management tools which include but are not limited to: Load, Packets received, Packets sent, Memory Used, Memory Free, Uptime, Protocols supported, Performance characteristic (#CPU's, other h/w attributes), and the like.
  • [0087]
    2) Client Statistics: These are collected by each server for each client which include but are not limited to: Client IP address, Client Protocol used, Client file systems accessed, Client workload, Client access pattern (read/write ratio, streaming, mixed, etc), and the like.
  • [0088]
    3) Storage Statistics: These are standard file system and I/O configuration statistics gathered by standard OS and file system management tools which include but are not limited to: Exported list of file systems, Used capacity per file system, Free capacity per file system, List of block devices in use, List of free or available block devices, and the like.
  • [0089]
    FIG. 7 illustrates a message sequence chart for client session redirection from an elected master in the storage system of FIG. 6 to an appropriate storage server according to one embodiment of the present invention. In this example, client 605 sends a file system request (OPEN( )) 710 to the master node's VIP (e.g., to storage server 615). The master storage server 615 consults the accumulated statistics information in the statistics database 635 based on network parameters associated with the client 605, the file system being accessed, and the various statistics of all the file servers available for fielding requests selects an appropriate storage node to which the client will be redirected.
  • [0090]
    According to some embodiments, the storage server 615 accomplishes the redirection without modifying client network file protocols used by client 605. Accordingly, using built-in methods in existing network file system protocols, the storage server 615 effectively redirects the client 605 to establish a connection to a storage node chosen by the master storage server 615.
  • [0091]
    In this example, using the NFS protocol, the master storage server 615 responds (e.g., redirect 720) to the request from the client 605 with a manufactured symbolic link which includes the storage node Internet Protocol (IP) address of storage node 620 followed by a path (i.e. /10.10.0.2/engineering). Upon receiving the response 720, the client 605 uses the widely available automounter to follow this symbolic link and mount the exported file system on the storage node 620 advertised via the symbolic link. In this fashion, the client 605 has established a session with the master storage server 615 using the VIP and is transparently redirected to the storage node 620 exporting a file system based on a wide range of statistics collected from each storage server by the master.
  • [0092]
    In some embodiments, such as the case of commonly used Windows based clients using the CIFS protocol, master storage server 615 accomplishes redirection and load balancing using the same effect by masquerading to be a CIFS distributed file system (DFS) root server to CIFS clients. Upon receiving file system requests, storage server 615 returns a DFS junction point redirection response forcing the Windows CIFS client to establish a connection with a storage node chosen by the master. All subsequent file operations will be performed directly on the chosen storage node.
  • [0093]
    In some embodiments, if client 605 is using the HTTP protocol, the master storage server 615 may respond with an HTTP Redirect to the client 605 causing the HTTP client 605 to contact the new server or storage node indicated in the redirect.
  • [0094]
    In various embodiments, the client 605 performs file system operations with the target storage node 620 for the entire session. Once the session has expired, the redirection process may be repeated. The client 605 may be potentially redirected to a different storage node (e.g., storage server 625) for a subsequent session.
  • [0000]
    Rule Driven Automation
  • [0095]
    According to various embodiments, techniques and mechanism are provided for deciding which storage device (or devices) a file should be stored on. These determinations can be used to guide either the placement of new files or the replication or migration of existing files to new storage volumes. These determinations may be made on the basis of simple rules, involving a small number of readily ascertainable file attributes.
  • [0096]
    FIGS. 8A, 8B, and 8C illustrate storage systems for a network file system that may incorporate embodiments of the present invention. Referring to FIG. 8A, a client system 805 uses Network File System (NFS) file access to communicate with a storage server 810. Storage server 810 includes an NFS server 815 and is coupled to a file system 820. Referring to FIG. 8B, a client system 825 uses Common Internet File System (CIFS) file access to communicate with a storage server 830. Storage server 830 includes a CIFS server 835 and is coupled to a file system 840. Referring to FIG. 8C, a client system 845 uses hypertext transport protocol (HTTP) file access to communicated with a storage server 850. Storage server 850 includes an http server 855 and is coupled to a file system 870.
  • [0097]
    FIGS. 9A, 9B, and 9C illustrate interconnection of storage devices to multiple servers that may incorporate embodiments of the present invention. Referring to FIG. 9A, a storage server 905 includes a small computer systems interface (SCSI) host bus adapter (HBA) 910. SCSI HBA 910 is coupled to three SCSI disk drives 915. Referring to FIG. 9B, a storage server 920 includes a fiber channel (FC) HBA 925. FC HBA 925 is coupled to a storage area network (SAN) switch 930. SAN switch 930 is coupled to three FC disks 935. Referring to FIG. 9C, a storage server 940 includes an Ethernet interface 945 and is coupled to a server 950 and a server 970. Server 950 includes an Ethernet interface 955 and a serial advanced technology attachment (SATA) interface 960 coupled to the SATA disks 965. Server 970 includes an Ethernet interface 975 and SATA interface 980 coupled to two SATA disks 985.
  • [0098]
    FIG. 10 is a block diagram illustrating a layering of primary performance-impacting components in remote file access that may be incorporated in embodiments of the present invention. Application layer 1010 includes performance-impacting components, such as data locality, write size frequency, and read size read rate. Operating system (OS) layer 1020 includes performance-impacting components block size and allocation, followed by caching and scheduling. Below OS layer 1020 are performance-impacting components, such as system bus 1030, disk controller and associated cache 1040, channel speed 1050, and disk speed (RPMs) 1060).
  • [0099]
    FIGS. 11A, 11B, and 11C are high level flowcharts for a method of selecting an appropriate storage volume for a file using rules according to one embodiment of the present invention. FIG. 11A begins in step 1100. In step 1105, a storage system (e.g., storage server 810) receives input from a user or system administrator to define one or more storage classes.
  • [0100]
    In general, most storage systems, storage management systems, operating systems, file systems, and remote file access protocols have a variety of tunable parameters (e.g., parameters associated with performance-impacting components such as those illustrated in FIG. 10). According to one embodiment, the user or system administrator uses a Graphical User Interface (GUI) to define new storage class names and to associate one or more storage class names with each known volume.
  • [0101]
    The terms “volume” or “storage volume” are used to generally to describe, not merely physical disk drives, but subsets of disk drives, combinations of disk drives, or any other combination of components that presents a similar randomly addressable block storage interface.
  • [0102]
    In step 1110, storage server 810 receives input from the user or system administrator to associated the storage classes with one or more volumes. In step 1115, storage server 810 receives input from the user or system administrator to create rules associated with the storage classes. In general, a rule comprises criteria for identifying a file and the rule defines a storage class for the files that satisfy the criteria. According to one embodiment, the user or system administrator may create criteria to create a rule that select files based on name related characteristics. The criteria may be specified as string-matching criteria (such as that defined by the POSIX regular expression functions, e.g., “name:*.mp3”).
  • [0103]
    The user or system administrator may also specify criteria to create a rule that involves numerical characteristics (such as size and times) written as algebraic equalities (or inequalities) involving variable names (e.g., “size>128 k”). Criteria may also be specified to create rules that involve enumerated values (such as ownership, access, class, auxiliary properties, and the like) stated as Boolean statements (e.g. “owner=joe|mark”). In these embodiments, each rule involves a Boolean combination (a parenthesized expression, involving AND, OR and NOT operators) of the above described criteria expressions. One example of a Boolean statement is ((suffix:mp3) & (size>128 K) & (read>3 days)).
  • [0104]
    As discussed above, each rule also includes one or more storage class specifications. A storage class specification includes an optional replication factor and one or more storage classes. One example of a storage class is (3, un-cached-stream, un-cached). Storage class specifications may be modified by one or more of the following qualifiers:
      • same prefer the same volume as parent directory
      • different prefer different volume from parent directory
      • near prefer a volume that is close to the original
      • far prefer a volume that is far from the original
      • leastfull prefer the least full volume
      • leastbusy prefer a volume on the least busy server
      • next choose volumes in a round-robin fashion
  • [0112]
    In some embodiments, “near” and “far” may me implemented using a subnet address to define affinity, with same subnet being near, and different subnet being far.
  • [0113]
    While system administrators or system managers could directly write rule expressions, various embodiments of the present invention include a Graphical User Interface (GUI), wherein a user may select file characteristics and characteristic-specific tests. FIG. 11A ends in step 1120.
  • [0114]
    FIG. 11B is a flowchart of a method of rule driven automation for newly created files. FIG. 11B begins in step 1125. In some embodiment, the storage server 810 may receive a list of files. The list of files may include files to be created by the storage server 810 or another storage server. The list of files may also include one or more files to be replicated and/or migrated within a storage system.
  • [0115]
    In step 1135, the storage server 810 applies rules to determine the storage class associated with each file in the list of files based on file attributes of each file. For example, given a particular file (to be either created or to be checked for replication or migration), storage server 810 obtains values for file characteristics associated with the file and evaluates expressions in one or more rules defined by a system administrator.
  • [0116]
    In some embodiments, the storage server 810 applies each rule, in order, to the file, until the conditions specified by a rule are satisfied (e.g., evaluate to TRUE). The first rule satisfied yields one or more storage class specifications.
  • [0117]
    In step 1140, the storage server 810 determines and selects one more volumes associated with the storage class of the satisfied rule. In one embodiment, the storage server 810 starts with the first storage class specification for the first satisfied rule. Storage server 810 then identifies the volumes that satisfy that storage class specification. Storage server 810 may prioritize those volumes according to specified qualifiers (e.g., where earlier specified qualifiers have higher precedence). Storage server 810 then selects the specified number of volumes from the prioritized list.
  • [0118]
    If insufficiently many volumes are available, the storage server 810 moves on to the next storage class specification. If it is not possible for the storage server 810 to find volumes that meet those specifications, the storage server 810 may log an error message and continue evaluating subsequent rules. If no rules are satisfied or appropriate volumes do not exist, the storage server 810 may leave existing files on the volume where the files currently reside. New files are then created on the same volume that contains their parent directory.
  • [0119]
    In step 1145, the storage server 810 creates the files on the selected volumes in the file system. FIG. 11B ends in step 1150.
  • [0120]
    FIG. 11C is a flow chart of a rule driven method for file replication and migration. FIG. 11C begins in step 1155 when the storage server performs a periodic (or event driven) audit of the correctness of file placement and replication. In step 1165, the storage server enumerates all of the managed files. For each file, in step 1170, storage server 810 applies the rules to determine the storage class associated with that file based on its attributes.
  • [0121]
    In step 1175, if migration is needed, storage server 810 selects one or more volumes associated with the determined storage class associated with the satisfied rules in step 1180. In step 1185, storage server 810 generates one or more tasks to migrate the file to the selected one or more volumes associated with the storage classes.
  • [0122]
    If migration is not needed, then in step 1190, storage server 810 determines when a copy operations is needed. If yes, storage server 810 selects one or more volumes associated with the determined storage class associated with the satisfied rules in step 1192. In step 1194, storage server 810 generates one or more tasks to copy the file to the selected one or more volumes associated with the storage classes.
  • [0123]
    In step 1196, storage server 810 determines whether all files in the list of files have been processed. If not all files have been processed, storage server 810 continues to apply the rules to the remaining files. FIG. 11C ends in step 1198.
  • [0124]
    FIG. 12 is a block diagram illustrating file characteristics used for determining a storage volume according to one embodiment of the present invention. In a file system 1200, a mounting point 1210 provides access to mounted file system 1220 including one or more directories. A sub-directory 1230 includes a file 1240 named “MYFILE.MP3.” File 1240 includes a base name 1250 and a suffix 1260. File 1240 is associated with file attributes 1270. In this example, file attributes 1270 includes a size, an owner identifier, a group identifier, creation time (ctime), modification time (mtime), and access time (atime).
  • [0125]
    In general, a set of attributes and/or characteristics associated with a file that can be determined quickly and easily, without having to observe how the file is used, and are supported by most operating systems and file systems. One example of a file attribute is the name of a file. The name of the file may be broken into components, such as context (e.g., a file system or mount-point), the name of the directory in which the file resides, the suffix of the file name, a base name (after the directory and before the suffix), and the like. Other examples of attributes and/or characteristics associated with a file are the size of the file (e.g., in bytes, kilobytes, or megabytes), the time since the file was created (e.g., expressed as a number of minutes, hours, days, weeks, months, or years), the time since the file was last written, the time since the file was last read, the identity of the user who created the file (typically an alpha-numeric string, perhaps with simple punctuation), the identity of an affiliated group that enjoys special access privileges to the file, the access privileges associated with the file (typically expressed as a list of privileges or <name, privilege> pairs, the type of the file (as determined by existing operating system specific classing engines), and the like. Some operating systems and file systems allow arbitrary auxiliary properties to be associated with files.
  • [0126]
    In various embodiments, the file attributes, in addition to being easily ascertainable, may also be represented in a form that makes the file attribute easily recognized by simple rules. Many such languages are possible. FIG. 13 is an example of a general grammar for rules defining storage classes according to one embodiment of the present invention.
  • [0000]
    Replication
  • [0127]
    According to various embodiments, file system independent techniques and mechanisms for replicating files on multiple devices are provided, migrating files from one device to another (for purposes of reliability, increased bandwidth, load balancing, capacity expansion, or reduced cost), and propagating updates from a master copy to remote replicas. The mechanisms involve work queues and asynchronous file migration daemons that operate independently from and in parallel with the primary client-server and network protocol to on-disk storage data paths.
  • [0128]
    FIG. 14 is a block diagram illustrating a distributed file system 1400 with multiple client and storage server nodes, each serving its own storage volumes, where storage node 1450 has been elected as a master according to one embodiment of the present invention. In this example, distributed file system 1400 includes clients 1410 and 1420 and storage servers 1430, 1440, and 1450.
  • [0129]
    In some embodiments, the distributed file system 1400 enables client computers 1410 and 1420 to access files from storage servers 1430, 1440, and 1450 via standard remote file system protocols. For reasons of robustness, capacity, and scalability, the storage servers 1430, 1440, and 1450 distributed the file systems
  • [0130]
    Typically, clients 1410 and 1420 generate requests can be entirely performed on a single storage server. Some operations, however, require coordinated updates to other storage nodes (e.g., the other nodes that store copies of a particular file). To provide for the coordination of such cooperative updates, in various embodiments the storage servers 1430, 1440, and 1450 (e.g., using standard clustering technology) elect one node (e.g., storage server 1450 to be the “master” or “coordinator.”
  • [0131]
    FIG. 15 is a block diagram illustrating elected work manager 1450 and multiple storage nodes 1430 and 1440 according to one embodiment of the present invention. In this example, each of the storage nodes 1430, 1440, and 1450 include a replication agent 1510, 1520, and 1530 respectively. Storage node 1450, as elected master, includes a work manager 1540. Work manager 1540 generates tasks to be performed by other storage servers in response to events. The tasks are placed in work queues 1550 for retrieval by the replication agents 1510, 1520, and 1530 to be performed by the respective storage nodes.
  • [0132]
    In this example, communication from the work manager 1540 to the background replication agents 1510, 1520, and 1530 is accomplished through entries in (per storage node) work queues. An entry (task) on such a queue includes, at minimum: a file name, an operation, and a completion status. The completion status reflects, at minimum, the following states:
      • enqueued: not yet serviced
      • success: operation performed successfully
      • failure: unable to perform operation
  • [0136]
    According to some embodiments, the work manager 1540 may support one or more of the following additional states:
      • in progress: received, not yet completed
      • cancelled: requester no longer wants this operation
      • waiting: additional resources needed
      • retrying: trying to correct a problem
  • [0141]
    In general, the work queues are persistent, and able to survive failures of the current master node.
  • [0142]
    In various embodiments, the most common types of request that require coordination are:
      • 1. file replication
      • 2. file update propagation
      • 3. file deletion
      • 4. file migration
  • [0147]
    FIGS. 16A, 16B, 16C, and 16D are flowcharts of methods of managing work tasks using the work manager 1540 of the storage server 1450 according to one embodiment of the present invention. FIG. 16A is a flowchart of a method for replication of files in the storage system 1400. FIG. 16A begins in step 1602. In step 1604, work manager 1540 of the master storage server 1450 receives a replication task to be performed by a storage server. For each replica to be copies in step 1606, work manager 1540 of the storage server 1450 builds a remote copy request in step 1608.
  • [0148]
    In step 1610, work manager 1540 of the master storage server 1450 places the remote copy request on the work queue 1550 of the storage server that will create the replica. In step 1612, work manager 1540 of storage server 1450 awaits completion of the remote copy request. Optionally, in step 1614, work manager 1540 of storage server 1450 updates a file to location map in response to the completed remote copy request.
  • [0149]
    In step 1616, work manager 1540 of master storage server 1450 determines whether all replicas are done. If not, the next replica is created beginning in step 1606. If all replicas are done in step 1616, FIG. 16A ends in step 1618.
  • [0150]
    In step 1625, work manager 1540 of the master storage server 1450 determines whether the event indicates a replication file operation. If yes, work manager 1540 of the storage server 1450 generates a task to perform a remote copy of a file to one or more storages servers that store a replica of the file in step 1620.
  • [0151]
    FIG. 16B is a flowchart of a method for updating files in the storage system 1400. FIG. 16B begins in step 1620. In step 1622, work manager 1540 of the master storage server 1450 receives an update task to be performed by a storage server. In step 1624, work manager 1540 of the storage server 1450 builds a remote copy request.
  • [0152]
    In step 1626, work manager 1540 of the master storage server 1450 places the remote copy request on the work queue 1550 of the storage server that will update the copy of the file. In step 1628, work manager 1540 of storage server 1450 awaits completion of the remote copy request. FIG. 16B ends in step 1618.
  • [0153]
    FIG. 16C is a flowchart of a method for deleting files in the storage system 1400. FIG. 16B begins in step 1632. In step 1634, work manager 1540 of the master storage server 1450 receives a delete task to be performed by a storage server. In step 1636, work manager 1540 of the storage server 1450 builds a remote delete request.
  • [0154]
    In step 1638, work manager 1540 of the master storage server 1450 places the remote delete request on the work queue 1550 of the storage server that will delete the file. In step 1640, work manager 1540 of storage server 1450 awaits completion of the remote delete request. Optionally, in step 1642, work manager 1540 of storage server 1450 updates a file to location map in response to the completed remote delete request. FIG. 16C ends in step 1644.
  • [0155]
    FIG. 16D is a flowchart of a method for migrating files in the storage system 1400. FIG. 16D begins in step 1646. In step 1648, work manager 1540 of the master storage server 1450 receives an migration task to be performed by a storage server. In step 1650, work manager 1540 of the storage server 1450 builds a remote copy request.
  • [0156]
    In step 1652, the master storage server 1450 places the remote copy request on the work queue 1550 of the storage server that will copy the file to perform the migration. In step 1654, work manager 1540 of storage server 1450 awaits completion of the remote copy request. Optionally, in step 1656, work manager 1540 of storage server 1450 updates a file to location map in response to the completed remote copy request.
  • [0157]
    In step 1658, work manager 1540 of the master storage server 1450 builds a remote delete request. In step 1660, work manager 1540 of the master storage server 1450 places the remote delete request on the work queue 1550 of the storage server that will delete the file to complete the migration. Optionally, work manager 1540 of storage server 1450 may await completion of the remote delete request. FIG. 16D ends in step 1662.
  • [0158]
    In some embodiments, work manager 1540 of the master storage server 1450 may incorporate a function that automatically maps file names into the identity of a storage node that stores that file. Where such mapping functions exist, the work manager 1530 of the storage server 1450 also updates that map: 1) to reflect the location of new copies after a successful replication 2) to reflect the new location after a migration, and 3) before the deletion of the original copy to reflect deletions.
  • [0159]
    FIG. 17 is a flowchart of a method of servicing work queues using remote replication agent 1510 of storage server 1430 according to one embodiment of the present invention. FIG. 17 begins in step 1700. In step 1700, the storage server 1430 polls the work queue 1550 of the master storage server 1450 for the next task. If the work queue 1550 is empty, the replication agent 1510 of storage server 1430 waits for a predetermined period of time before checking the work queue 1550 for additional tasks.
  • [0160]
    If there are tasks in the work queue 1550 for storage server 1430, in step 1715, the storage server 1430 receives the next task. In step 1720, the storage server 1430 determines whether the task has been cancelled. If the task has been cancelled, the storage server 1430 marks the task as failed in step 1725. If the task has not been cancelled, in step 1730, the storage server 1430 updates the work manager 1540 of master storage server 1450 that the task received from the work queue 1550 is in-progress.
  • [0161]
    In step 1735, the storage server 1430 performs the received task. Storage server 1430 may perform one or more actions associated with the task. Some examples of actions are to copy a file, delete a file, replicate a file, and the like. In step 1740, the storage server 1430 updates the master storage server 1450 with the results of the one or more actions performed. In some embodiments, the storage server 1430 updates the master storage server 1450 with a success or failure based on the performances of the one or more actions.
  • [0162]
    In step 1745, the storage server 1430 signals the work managers 1540 of master storage server 1450 that the task is complete. The storage server 1430 also signals the work managers 1540 of master storage server 1450 that the task is complete if the task has been cancelled in step 1720. In either event, storage server 1430 then continues to poll the work queue 1550 for the next task in step 1705.
  • [0163]
    In various embodiment, in each case the storage server 1430 requests the next operation from its associated queue, updates the status to show the request is in progress, performs the task, updates the status of the request to reflect success or failure, and then signals the work coordinator that the request is complete.
  • [0164]
    In some embodiments, for remote copy operations, the remote replication agent 1510 of the storage server 1430 opens and reads the remote file, and then writes that data into a file on the specified local file system. In one embodiment, remote files are obtained via NFS cross mounts. In another implementation, remote files are obtained via HTTP. In another embodiment, remote files are obtained via FTP.
  • [0165]
    There are many possible implementations of highly available distributed work queues. In one embodiment, the work queues 1550 are implemented via remote procedure calls which are mirrored to a designated successor to the current master node. In another embodiment, the work queues 1550 are implemented as updates to a shared highly available database.
  • [0166]
    FIG. 18 is a block diagram of a computer system 1800 suitable for implementing an embodiment of the present invention. Computer system 1800 typically includes a monitor 1810, computer 1820, a keyboard 1830, a user input device 1840, and a network interface 1850. User input device 1840 includes a computer mouse, a trackball, a track pad, graphics tablet, touch screen, and/or other wired or wireless input devices that allow a user to create or select graphics, objects, icons, and/or text appearing on the monitor 1810. Embodiments of network interface 1850 typically provides wired or wireless communication with an electronic communications network, such as a local area network, a wide area network, for example the Internet, and/or virtual networks, for example a virtual private network (VPN).
  • [0167]
    Computer 1820 typically includes components such as one or more general purpose processors 1860, and memory storage devices, such as a random access memory (RAM) 1870, disk drives 1880, and system bus 1890 interconnecting the above components. RAM 1870 and disk drive 1880 are examples of tangible media for storage of data, audio/video files, computer programs, applet interpreters or compilers, virtual machines, and embodiments of the herein described invention. Other types of tangible media include floppy disks; removable hard disks; optical storage media such as DVD-ROM, CD-ROM, and bar codes; non-volatile memory devices such as flash memories; read-only-memories (ROMS); battery-backed volatile memories; and networked storage devices.
  • [0168]
    The present invention can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium as a plurality of instructions adapted to direct an information-processing device to perform a set of steps disclosed in embodiments of the present invention. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the present invention.
  • [0169]
    The above description is illustrative but not restrictive. Many variations of the invention will become apparent to those skilled in the art upon review of the disclosure. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the pending claims along with their full scope or equivalents.

Claims (11)

  1. 1. A computer-implemented method of selecting a storage volume for a file, the method comprising:
    associating, by a system manager, storage classes with one or more storage volumes;
    composing, by a system manager, a set of rules that map file characteristics into a storage class;
    applying, using a computer system, the set of rules to a plurality of files to obtain one or more storage classes associated with each file in the plurality of files; and
    matching, using the computer system, the obtained one or more storage classes to the one or more storage volumes to determine an appropriate storage volume for each file in the plurality of files.
  2. 2. The method of claim 1 further comprising storing the file in the appropriate storage volume based on the storage class.
  3. 3. The method of claim 1 wherein at least one rule in the set of rules comprises a Boolean expression.
  4. 4. The method of claim 3 wherein the Boolean expression comprises a regular expression for pattern matching against character strings.
  5. 5. The method of claim 3 wherein the Boolean expression comprises an arithmetic expressions involving for matching numeric quantities.
  6. 6. The method of claim 3 wherein the Boolean expression comprises a Boolean expression for matching against arbitrary properties.
  7. 7. The method of claim 1 wherein at least one rule in the set of rules map the file to the storage class.
  8. 8. The method of claim 7 wherein the least one rule in the set of rules maps to replication factors for the file.
  9. 9. The method of claim 8 further comprising:
    using the at least one rule by a network file server to determine if the file should be replicated;
    determining which volumes replicas of the file should be stored; and
    generating a task to perform replication of the file on the determined volumes.
  10. 10. The method of claim 7 further comprising using the at least one rule by a network file server to determine which of available volumes to use for the file to create the file.
  11. 11. The method of claim 7 further comprising:
    using the at least one rule by a network file server to determine if the file should be migrated from a first storage volume to a second storage volume, and
    generating a task using the network file server to perform migration of the file from the fist storage volume to the second storage volume.
US11459906 2005-07-25 2006-07-25 Rule driven automation of file placement, replication, and migration Abandoned US20070022129A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US70242805 true 2005-07-25 2005-07-25
US70242905 true 2005-07-25 2005-07-25
US11459906 US20070022129A1 (en) 2005-07-25 2006-07-25 Rule driven automation of file placement, replication, and migration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11459906 US20070022129A1 (en) 2005-07-25 2006-07-25 Rule driven automation of file placement, replication, and migration

Publications (1)

Publication Number Publication Date
US20070022129A1 true true US20070022129A1 (en) 2007-01-25

Family

ID=37683970

Family Applications (4)

Application Number Title Priority Date Filing Date
US11459906 Abandoned US20070022129A1 (en) 2005-07-25 2006-07-25 Rule driven automation of file placement, replication, and migration
US11459902 Active 2026-11-29 US7574443B2 (en) 2005-07-25 2006-07-25 Scalable clustered storage system
US11459909 Active 2026-11-08 US7571168B2 (en) 2005-07-25 2006-07-25 Asynchronous file replication and migration in a storage network
US11459905 Active 2026-11-16 US7599941B2 (en) 2005-07-25 2006-07-25 Transparent redirection and load-balancing in a storage network

Family Applications After (3)

Application Number Title Priority Date Filing Date
US11459902 Active 2026-11-29 US7574443B2 (en) 2005-07-25 2006-07-25 Scalable clustered storage system
US11459909 Active 2026-11-08 US7571168B2 (en) 2005-07-25 2006-07-25 Asynchronous file replication and migration in a storage network
US11459905 Active 2026-11-16 US7599941B2 (en) 2005-07-25 2006-07-25 Transparent redirection and load-balancing in a storage network

Country Status (2)

Country Link
US (4) US20070022129A1 (en)
WO (1) WO2007014296A3 (en)

Cited By (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046404A1 (en) * 2002-07-30 2008-02-21 Bone Jeff G Method and apparatus for managing file systems and file-based data storage
US20080086728A1 (en) * 2006-08-02 2008-04-10 Lam Monica S Binding User Data Files
US20090112953A1 (en) * 2007-10-30 2009-04-30 Eric Lawrence Barsness Enhanced garbage collection in a multi-node environment
US20090157774A1 (en) * 2007-12-18 2009-06-18 International Business Machines Corporation Character pattern-based file storage tool
US20090235251A1 (en) * 2008-03-11 2009-09-17 International Business Machines Corporation Systems, methods and computer program products for improving placement performance of message transforms by exploiting guided replication
US20100088317A1 (en) * 2002-07-30 2010-04-08 Stored Iq, Inc. Method and apparatus for harvesting file system metadata
US20100145917A1 (en) * 2002-07-30 2010-06-10 Stored Iq, Inc. System, method and apparatus for enterprise policy management
US20100185963A1 (en) * 2009-01-19 2010-07-22 Bycast Inc. Modifying information lifecycle management rules in a distributed system
US20100228935A1 (en) * 2009-03-05 2010-09-09 International Business Machines Corporation Conditional storage of multiple information items
US7937453B1 (en) * 2008-09-24 2011-05-03 Emc Corporation Scalable global namespace through referral redirection at the mapping layer
US20110119456A1 (en) * 2009-11-18 2011-05-19 Microsoft Corporation Efficiency of hardware memory access using dynamically replicated memory
US8046561B1 (en) * 2006-12-22 2011-10-25 Emc Corporation Methods and apparatus for selecting a storage zone for a content unit
US20120023145A1 (en) * 2010-07-23 2012-01-26 International Business Machines Corporation Policy-based computer file management based on content-based analytics
US8135760B1 (en) * 2007-11-01 2012-03-13 Emc Corporation Determining the lineage of a content unit on an object addressable storage system
US20120136829A1 (en) * 2010-11-30 2012-05-31 Jeffrey Darcy Systems and methods for replicating data objects within a storage network based on resource attributes
US20130159253A1 (en) * 2011-12-15 2013-06-20 Sybase, Inc. Directing a data replication environment through policy declaration
US20130173849A1 (en) * 2011-12-29 2013-07-04 International Business Machines Corporation Write bandwidth management for flashdevices
US20130179404A1 (en) * 2003-03-11 2013-07-11 Hitachi, Ltd. Method and apparatus for seamless management for disaster recovery
US8510331B1 (en) * 2004-10-28 2013-08-13 Storediq, Inc. System and method for a desktop agent for use in managing file systems
US8612699B2 (en) 2010-06-25 2013-12-17 International Business Machines Corporation Deduplication in a hybrid storage environment
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8688630B2 (en) 2008-10-24 2014-04-01 Compuverde Ab Distributed data storage
US20140108465A1 (en) * 2009-06-30 2014-04-17 Sandisk Technologies Inc. File System and Method of File Access
US20140173185A1 (en) * 2012-12-19 2014-06-19 International Business Machines Corporation Write Performance in Fault-Tolerant Clustered Storage Systems
US8769691B1 (en) * 2011-02-14 2014-07-01 Trend Micro, Inc. Network traffic reduction
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US20140208290A1 (en) * 2013-01-22 2014-07-24 Oracle International Corporation Application source code scanning for database migration
US8812448B1 (en) * 2011-11-09 2014-08-19 Access Sciences Corporation Computer implemented method for accelerating electronic file migration from multiple sources to multiple destinations
US8850019B2 (en) 2010-04-23 2014-09-30 Ilt Innovations Ab Distributed data storage
US8918672B2 (en) 2012-05-31 2014-12-23 International Business Machines Corporation Maximizing use of storage in a data replication environment
US20150046394A1 (en) * 2013-08-07 2015-02-12 Fujitsu Limited Storage system, storage control device, and storage medium storing control program
US20150067005A1 (en) * 2013-08-28 2015-03-05 Red Hat, Inc. Path resolver for client access to distributed file systems
US20150066852A1 (en) * 2013-08-27 2015-03-05 Netapp, Inc. Detecting out-of-band (oob) changes when replicating a source file system using an in-line system
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US9032244B2 (en) 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
WO2015122905A1 (en) * 2014-02-14 2015-08-20 Hewlett-Packard Development Company, L.P. Assign placement policy to segment set
US20150248434A1 (en) * 2014-02-28 2015-09-03 Red Hat, Inc. Delayed asynchronous file replication in a distributed file system
US20150269183A1 (en) * 2014-03-19 2015-09-24 Red Hat, Inc. File replication using file content location identifiers
US9300692B2 (en) 2013-08-27 2016-03-29 Netapp, Inc. System and method for implementing data migration while preserving security policies of a source filer
US9304997B2 (en) 2013-08-27 2016-04-05 Netapp, Inc. Asynchronously migrating a file system
US9311314B2 (en) 2013-08-27 2016-04-12 Netapp, Inc. System and method for migrating data from a source file system to a destination file system with use of attribute manipulation
US9355036B2 (en) 2012-09-18 2016-05-31 Netapp, Inc. System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers
US9355120B1 (en) * 2012-03-02 2016-05-31 Netapp, Inc. Systems and methods for managing files in a content storage system
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system
US9659080B1 (en) * 2013-04-29 2017-05-23 Google Inc. Categorization for constraint-based placement of object replicas in a distributed storage system
US9672126B2 (en) 2011-12-15 2017-06-06 Sybase, Inc. Hybrid data replication
US20170220598A1 (en) * 2016-01-29 2017-08-03 Vmware, Inc. Fine-Grained Metadata Management in a Distributed File System

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE43346E1 (en) 2001-01-11 2012-05-01 F5 Networks, Inc. Transaction aggregation in a switched file system
US7509322B2 (en) 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US8195760B2 (en) 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
US7562110B2 (en) * 2001-01-11 2009-07-14 F5 Networks, Inc. File switch and switched file system
US7512673B2 (en) 2001-01-11 2009-03-31 Attune Systems, Inc. Rule based aggregation of files and transactions in a switched file system
US7788335B2 (en) 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US20040133606A1 (en) 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US7885970B2 (en) 2005-01-20 2011-02-08 F5 Networks, Inc. Scalable system for partitioning and accessing metadata over multiple servers
US20060167838A1 (en) * 2005-01-21 2006-07-27 Z-Force Communications, Inc. File-based hybrid file storage scheme supporting multiple file switches
US7958347B1 (en) 2005-02-04 2011-06-07 F5 Networks, Inc. Methods and apparatus for implementing authentication
US8239354B2 (en) 2005-03-03 2012-08-07 F5 Networks, Inc. System and method for managing small-size files in an aggregated file system
US7970803B2 (en) 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US8959125B2 (en) * 2005-07-01 2015-02-17 226008 Ontario Inc. File system having inverted hierarchical structure
US7873683B2 (en) * 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
KR100657329B1 (en) * 2005-08-09 2006-12-07 삼성전자주식회사 Remote access controlling method and system for peripheral device connected at monitor, and recording medium thereof
US7797359B1 (en) * 2005-08-23 2010-09-14 Hewlett-Packard Development Company, L.P. Recursive data naming
US20070150492A1 (en) * 2005-12-27 2007-06-28 Hitachi, Ltd. Method and system for allocating file in clustered file system
US7698318B2 (en) * 2006-02-10 2010-04-13 Microsoft Corporation Automatically determining file replication mechanisms
US8417746B1 (en) 2006-04-03 2013-04-09 F5 Networks, Inc. File system management with enhanced searchability
US7698351B1 (en) 2006-04-28 2010-04-13 Netapp, Inc. GUI architecture for namespace and storage management
US8019872B2 (en) * 2006-07-12 2011-09-13 International Business Machines Corporation Systems, methods and computer program products for performing remote data storage for client devices
US7870128B2 (en) * 2006-07-28 2011-01-11 Diskeeper Corporation Assigning data for storage based on speed with which data may be retrieved
US8566503B2 (en) * 2006-08-25 2013-10-22 Qnx Software Systems Limited Multimedia filesystem having unified representation of content on diverse multimedia devices
US20080059510A1 (en) * 2006-08-31 2008-03-06 Daniel Cardamore Multimedia system framework having layer consolidating access to multiple media devices
WO2008029261A3 (en) * 2006-09-06 2008-05-29 Network Box Corp Ltd A push update system
US20080147747A1 (en) * 2006-12-14 2008-06-19 Dan Cardamore Media system having synchronization with preemptive prioritization of synchronization order
US7996421B2 (en) * 2007-01-03 2011-08-09 International Business Machines Corporation Method, computer program product, and system for coordinating access to locally and remotely exported file systems
US20080209145A1 (en) * 2007-02-27 2008-08-28 Shyamsundar Ranganathan Techniques for asynchronous data replication
US20090077097A1 (en) * 2007-04-16 2009-03-19 Attune Systems, Inc. File Aggregation in a Switched File System
CN101296176B (en) * 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 Data processing method and apparatus based on cluster
US8682916B2 (en) 2007-05-25 2014-03-25 F5 Networks, Inc. Remote file virtualization in a switched file system
US8452821B2 (en) * 2007-06-29 2013-05-28 Microsoft Corporation Efficient updates for distributed file systems
US9298417B1 (en) * 2007-07-25 2016-03-29 Emc Corporation Systems and methods for facilitating management of data
US8954522B1 (en) * 2007-08-07 2015-02-10 Emc Corporation Horizontal scaling through upper level protocol pre-processing
US7958200B2 (en) * 2007-08-14 2011-06-07 International Business Machines Corporation Methods, computer program products, and apparatuses for providing remote client access to exported file systems
US9134916B1 (en) * 2007-09-28 2015-09-15 Emc Corporation Managing content in a distributed system
US7836018B2 (en) * 2007-10-24 2010-11-16 Emc Corporation Simultaneously accessing file objects through web services and file services
US9817832B1 (en) * 2007-10-31 2017-11-14 EMC IP Holding Company LLC Unified framework for policy-based metadata-driven storage services
US8117244B2 (en) 2007-11-12 2012-02-14 F5 Networks, Inc. Non-disruptive file migration
US8548953B2 (en) 2007-11-12 2013-10-01 F5 Networks, Inc. File deduplication using storage tiers
US8180747B2 (en) 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US8068433B2 (en) * 2007-11-26 2011-11-29 Microsoft Corporation Low power operation of networked devices
US8352785B1 (en) 2007-12-13 2013-01-08 F5 Networks, Inc. Methods for generating a unified virtual snapshot and systems thereof
US9495116B2 (en) * 2007-12-26 2016-11-15 Sandisk Il Ltd. Storage device coordinator and a host device that includes the same
US8849970B1 (en) * 2008-02-07 2014-09-30 Netapp, Inc. Transparent redirection of clients to a surrogate payload server through the use of a proxy location server
US8074014B2 (en) * 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US8095726B1 (en) * 2008-03-31 2012-01-10 Emc Corporation Associating an identifier with a content unit
US8103628B2 (en) * 2008-04-09 2012-01-24 Harmonic Inc. Directed placement of data in a redundant data storage system
US8352954B2 (en) 2008-06-19 2013-01-08 Commvault Systems, Inc. Data storage resource allocation by employing dynamic methods and blacklisting resource request pools
US8549582B1 (en) 2008-07-11 2013-10-01 F5 Networks, Inc. Methods for handling a multi-protocol content name and systems thereof
US8271652B2 (en) * 2008-07-24 2012-09-18 Netapp, Inc. Load-derived probability-based domain name service in a network storage cluster
US8510577B2 (en) * 2008-07-28 2013-08-13 Microsoft Corporation Reducing power consumption by offloading applications
US8122421B2 (en) * 2008-08-14 2012-02-21 Omnivision Technologies, Inc. System, and method, and computer readable medium for designing a scalable clustered storage integrated circuit for multi-media processing
US8086634B2 (en) * 2008-10-07 2011-12-27 Hitachi, Ltd. Method and apparatus for improving file access performance of distributed storage system
US8244870B2 (en) * 2008-11-18 2012-08-14 Raytheon Company Distributing traffic to multiple GNS devices
US9361326B2 (en) * 2008-12-17 2016-06-07 Sap Se Selectable data migration
US8713060B2 (en) * 2009-03-31 2014-04-29 Amazon Technologies, Inc. Control service for relational data management
US8332365B2 (en) 2009-03-31 2012-12-11 Amazon Technologies, Inc. Cloning and recovery of data volumes
US8060792B2 (en) 2009-03-31 2011-11-15 Amazon Technologies, Inc. Monitoring and automated recovery of data instances
US8307003B1 (en) 2009-03-31 2012-11-06 Amazon Technologies, Inc. Self-service control environment
US9705888B2 (en) * 2009-03-31 2017-07-11 Amazon Technologies, Inc. Managing security groups for data instances
US9207984B2 (en) * 2009-03-31 2015-12-08 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US8769049B2 (en) * 2009-04-24 2014-07-01 Microsoft Corporation Intelligent tiers of backup data
US8560639B2 (en) * 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
JP4951652B2 (en) * 2009-06-24 2012-06-13 株式会社日立製作所 Remote copying method and computer system of the computer system
US9128953B1 (en) * 2009-07-21 2015-09-08 Emc Corporation Asynchronous multi-node filesystem coordinated replication
US9135283B2 (en) 2009-10-07 2015-09-15 Amazon Technologies, Inc. Self-service configuration for data environment
US8074107B2 (en) 2009-10-26 2011-12-06 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US8335765B2 (en) 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
US8676753B2 (en) * 2009-10-26 2014-03-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US8180813B1 (en) 2009-12-08 2012-05-15 Netapp, Inc. Content repository implemented in a network storage server system
US20110137966A1 (en) * 2009-12-08 2011-06-09 Netapp, Inc. Methods and systems for providing a unified namespace for multiple network protocols
US9507799B1 (en) * 2009-12-08 2016-11-29 Netapp, Inc. Distributed object store for network-based content repository
US8484259B1 (en) 2009-12-08 2013-07-09 Netapp, Inc. Metadata subsystem for a distributed object store in a network storage system
US8990585B2 (en) * 2009-12-29 2015-03-24 Cleversafe, Inc. Time based dispersed storage access
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
US8204860B1 (en) 2010-02-09 2012-06-19 F5 Networks, Inc. Methods and systems for snapshot reconstitution
US8370672B2 (en) * 2010-02-26 2013-02-05 Microsoft Corporation Reducing power consumption of distributed storage systems
US8412899B2 (en) * 2010-04-01 2013-04-02 Autonomy, Inc. Real time backup storage node assignment
US8312237B2 (en) * 2010-04-02 2012-11-13 Autonomy, Inc. Automated relocation of in-use multi-site protected data storage
US8793645B2 (en) 2010-04-02 2014-07-29 Microsoft Corporation Replacement of data element in a graph
EP3238659A1 (en) 2010-06-15 2017-11-01 Cook Medical Technologies LLC Pre-loaded multiport delivery device
KR101491484B1 (en) * 2010-06-18 2015-02-10 엘에스아이 코포레이션 Scalable storage devices
US9239860B1 (en) * 2010-06-30 2016-01-19 Emc Corporation Augmenting virtual directories
US8954669B2 (en) 2010-07-07 2015-02-10 Nexenta System, Inc Method and system for heterogeneous data volume
US8984241B2 (en) * 2010-07-07 2015-03-17 Nexenta Systems, Inc. Heterogeneous redundant storage array
CN102130935A (en) * 2010-08-05 2011-07-20 华为技术有限公司 Data acquisition method and device and network storage method and equipment
US8601310B2 (en) * 2010-08-26 2013-12-03 Cisco Technology, Inc. Partial memory mirroring and error containment
US9286298B1 (en) 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
US8656454B2 (en) 2010-12-01 2014-02-18 Microsoft Corporation Data store including a file location attribute
US8396832B2 (en) 2010-12-08 2013-03-12 International Business Machines Corporation Independent fileset generations in a clustered redirect-on-write filesystem
US8904006B2 (en) 2010-12-08 2014-12-02 International Business Machines Corporation In-flight block map for a clustered redirect-on-write filesystem
US8458181B2 (en) 2010-12-08 2013-06-04 International Business Machines Corporation Distributed free block map for a clustered redirect-on-write file system
US8626713B2 (en) 2010-12-08 2014-01-07 International Business Machines Corporation Multiple contexts in a redirect on write file system
US9384199B2 (en) 2011-03-31 2016-07-05 Microsoft Technology Licensing, Llc Distributed file system
US9766947B2 (en) 2011-06-24 2017-09-19 At&T Intellectual Property I, L.P. Methods and apparatus to monitor server loads
US8396836B1 (en) 2011-06-30 2013-03-12 F5 Networks, Inc. System for mitigating file virtualization storage import latency
US8954587B2 (en) * 2011-07-27 2015-02-10 Salesforce.Com, Inc. Mechanism for facilitating dynamic load balancing at application servers in an on-demand services environment
WO2013024485A3 (en) * 2011-08-17 2013-05-23 Scaleio Inc. Methods and systems of managing a distributed replica based storage
US9274898B2 (en) 2011-09-09 2016-03-01 Nokia Technologies Oy Method and apparatus for providing criticality based data backup
US8463850B1 (en) 2011-10-26 2013-06-11 F5 Networks, Inc. System and method of algorithmically generating a server side transaction identifier
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9043567B1 (en) * 2012-03-28 2015-05-26 Netapp, Inc. Methods and systems for replicating an expandable storage volume
EP2833222A4 (en) * 2012-03-29 2016-04-06 Nec Corp State control device, control method, and program
US9063938B2 (en) 2012-03-30 2015-06-23 Commvault Systems, Inc. Search filtered file system using secondary storage, including multi-dimensional indexing and searching of archived files
CN103379184B (en) * 2012-04-23 2016-03-16 深圳市腾讯计算机系统有限公司 Network service access method and system
US9337865B2 (en) 2012-05-04 2016-05-10 Seagate Technology Llc Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders
US9235346B2 (en) 2012-05-04 2016-01-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Dynamic map pre-fetching for improved sequential reads of a solid-state media
US9302185B2 (en) * 2012-06-14 2016-04-05 Disney Enterprises, Inc. Decision streams for synchronizing visual script language processing between networked computers
US9229829B2 (en) * 2012-07-25 2016-01-05 GlobalFoundries, Inc. Synchronous mode replication to multiple clusters
US20140040206A1 (en) * 2012-08-02 2014-02-06 Kadangode K. Ramakrishnan Pipelined data replication for disaster recovery
CN103634350B (en) * 2012-08-24 2017-05-17 阿里巴巴集团控股有限公司 A storage system and its implementation method
US9519501B1 (en) 2012-09-30 2016-12-13 F5 Networks, Inc. Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system
CN102929791A (en) * 2012-10-25 2013-02-13 浪潮电子信息产业股份有限公司 Cluster storage system expansion method based on identical expansion module
US9177172B2 (en) * 2012-11-15 2015-11-03 Microsoft Technology Licensing, Llc Single system image via shell database
US9152642B2 (en) * 2012-12-21 2015-10-06 Zetta, Inc. Systems and methods for on-demand data storage
US9554418B1 (en) 2013-02-28 2017-01-24 F5 Networks, Inc. Device for topology hiding of a visited network
US9020893B2 (en) * 2013-03-01 2015-04-28 Datadirect Networks, Inc. Asynchronous namespace maintenance
WO2014162586A1 (en) * 2013-04-05 2014-10-09 株式会社日立製作所 Storage system and storage system control method
US20150236974A1 (en) * 2013-04-26 2015-08-20 Hitachi, Ltd. Computer system and load balancing method
CN103324577B (en) * 2013-06-08 2016-04-06 北京航空航天大学 Large-scale distribution points of the file systems to minimize the conflict io access and file-based striping
US9253043B2 (en) * 2013-11-30 2016-02-02 At&T Intellectual Property I, L.P. Methods and apparatus to convert router configuration data
WO2015084397A1 (en) * 2013-12-06 2015-06-11 Hewlett-Packard Development Company, L.P. Replicating metadata associated with a file
US20150186488A1 (en) * 2013-12-27 2015-07-02 International Business Machines Corporation Asynchronous replication with secure data erasure
JP2015135568A (en) * 2014-01-16 2015-07-27 株式会社日立製作所 Gateway device, file server system, and file distribution method
US20150244775A1 (en) * 2014-02-27 2015-08-27 Commvault Systems, Inc. Work flow management for an information management system
US9648100B2 (en) 2014-03-05 2017-05-09 Commvault Systems, Inc. Cross-system storage management for transferring data across autonomous information management systems
US20150280959A1 (en) * 2014-03-31 2015-10-01 Amazon Technologies, Inc. Session management in distributed storage systems
US9424156B2 (en) 2014-05-13 2016-08-23 Netapp, Inc. Identifying a potential failure event for a data storage device
US9436571B2 (en) 2014-05-13 2016-09-06 Netapp, Inc. Estimating data storage device lifespan
US9557938B2 (en) 2014-05-13 2017-01-31 Netapp, Inc. Data retrieval based on storage device activation schedules
US9436524B2 (en) 2014-05-13 2016-09-06 Netapp, Inc. Managing archival storage
US9430152B2 (en) 2014-05-13 2016-08-30 Netapp, Inc. Data device grouping across data storage device enclosures for synchronized data maintenance
US9430321B2 (en) 2014-05-13 2016-08-30 Netapp, Inc. Reconstructing data stored across archival data storage devices
US9766677B2 (en) 2014-05-13 2017-09-19 Netapp, Inc. Cascading startup power draws of enclosures across a network
US9430149B2 (en) 2014-05-13 2016-08-30 Netapp, Inc. Pipeline planning for low latency storage system
WO2015175720A1 (en) * 2014-05-13 2015-11-19 Netapp, Inc. Storage operations utilizing a multiple-data-storage-devices cartridge
WO2015194937A1 (en) * 2014-06-19 2015-12-23 Mimos Berhad System and method for distributed secure data storage in torus network topology
WO2016111954A4 (en) * 2015-01-05 2016-09-01 Cacheio Llc Metadata management in a scale out storage system
US9444811B2 (en) 2014-10-21 2016-09-13 Commvault Systems, Inc. Using an enhanced data agent to restore backed up data across autonomous storage management systems
US9843453B2 (en) * 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4412285A (en) * 1981-04-01 1983-10-25 Teradata Corporation Multiprocessor intercommunication system and method
US4851988A (en) * 1986-03-31 1989-07-25 Wang Laboratories, Inc. Loosely-coupled computer system using global identifiers to identify mailboxes and volumes
US5899986A (en) * 1997-02-10 1999-05-04 Oracle Corporation Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer
US6167457A (en) * 1996-12-11 2000-12-26 Agilent Technologies Message filters, automatic binding, and encoding for distributed systems
US20010039548A1 (en) * 2000-04-27 2001-11-08 Yoshitake Shinkai File replication system, replication control method, and storage medium
US6446141B1 (en) * 1999-03-25 2002-09-03 Dell Products, L.P. Storage server system including ranking of data source
US6718347B1 (en) * 1999-01-05 2004-04-06 Emc Corporation Method and apparatus for maintaining coherence among copies of a database shared by multiple computers
US6820135B1 (en) * 2000-08-31 2004-11-16 Pervasive Software, Inc. Modeless event-driven data transformation
US6826613B1 (en) * 2000-03-15 2004-11-30 3Com Corporation Virtually addressing storage devices through a switch
US20050050054A1 (en) * 2003-08-21 2005-03-03 Clark Quentin J. Storage platform for organizing, searching, and sharing data
US20050091187A1 (en) * 2003-10-24 2005-04-28 Madhavarapu Pradeep J. Method and system for transacted file operations over a network
US20050195660A1 (en) * 2004-02-11 2005-09-08 Kavuri Ravi K. Clustered hierarchical file services
US6968345B1 (en) * 2002-02-27 2005-11-22 Network Appliance, Inc. Technique to enable support for symbolic link access by windows clients
US6971044B2 (en) * 2001-04-20 2005-11-29 Egenera, Inc. Service clusters and method in a processing system with failover capability
US6976090B2 (en) * 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073209A (en) * 1997-03-31 2000-06-06 Ark Research Corporation Data storage controller providing multiple hosts with access to multiple storage subsystems
US6088766A (en) * 1997-10-06 2000-07-11 Emc Corporation Method for exchanging data blocks on disk storage devices utilizing disk access statistics and testing for the effect of a change
US7293107B1 (en) * 1998-10-09 2007-11-06 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6728716B1 (en) * 2000-05-16 2004-04-27 International Business Machines Corporation Client-server filter computing system supporting relational database records and linked external files operable for distributed file system
US7185052B2 (en) * 2001-05-16 2007-02-27 Akamai Technologies, Inc. Meta content delivery network system

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4412285A (en) * 1981-04-01 1983-10-25 Teradata Corporation Multiprocessor intercommunication system and method
US4851988A (en) * 1986-03-31 1989-07-25 Wang Laboratories, Inc. Loosely-coupled computer system using global identifiers to identify mailboxes and volumes
US6167457A (en) * 1996-12-11 2000-12-26 Agilent Technologies Message filters, automatic binding, and encoding for distributed systems
US5899986A (en) * 1997-02-10 1999-05-04 Oracle Corporation Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer
US6718347B1 (en) * 1999-01-05 2004-04-06 Emc Corporation Method and apparatus for maintaining coherence among copies of a database shared by multiple computers
US6446141B1 (en) * 1999-03-25 2002-09-03 Dell Products, L.P. Storage server system including ranking of data source
US6826613B1 (en) * 2000-03-15 2004-11-30 3Com Corporation Virtually addressing storage devices through a switch
US6976090B2 (en) * 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet
US20010039548A1 (en) * 2000-04-27 2001-11-08 Yoshitake Shinkai File replication system, replication control method, and storage medium
US6820135B1 (en) * 2000-08-31 2004-11-16 Pervasive Software, Inc. Modeless event-driven data transformation
US6971044B2 (en) * 2001-04-20 2005-11-29 Egenera, Inc. Service clusters and method in a processing system with failover capability
US6968345B1 (en) * 2002-02-27 2005-11-22 Network Appliance, Inc. Technique to enable support for symbolic link access by windows clients
US20050050054A1 (en) * 2003-08-21 2005-03-03 Clark Quentin J. Storage platform for organizing, searching, and sharing data
US20050091187A1 (en) * 2003-10-24 2005-04-28 Madhavarapu Pradeep J. Method and system for transacted file operations over a network
US20050195660A1 (en) * 2004-02-11 2005-09-08 Kavuri Ravi K. Clustered hierarchical file services

Cited By (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046404A1 (en) * 2002-07-30 2008-02-21 Bone Jeff G Method and apparatus for managing file systems and file-based data storage
US8032501B2 (en) 2002-07-30 2011-10-04 Stored Iq, Inc. Method and apparatus for managing file systems and file-based data
US20080091739A1 (en) * 2002-07-30 2008-04-17 Bone Jeff G Method and apparatus for managing file systems and file-based data storage
US8898101B2 (en) 2002-07-30 2014-11-25 International Business Machines Corporation Managing file systems and file-based data storage
US8612404B2 (en) 2002-07-30 2013-12-17 Stored Iq, Inc. Harvesting file system metsdata
US9330109B2 (en) 2002-07-30 2016-05-03 International Business Machines Corporation System, method and apparatus for enterprise policy management
US20100088317A1 (en) * 2002-07-30 2010-04-08 Stored Iq, Inc. Method and apparatus for harvesting file system metadata
US20100145917A1 (en) * 2002-07-30 2010-06-10 Stored Iq, Inc. System, method and apparatus for enterprise policy management
US8417678B2 (en) 2002-07-30 2013-04-09 Storediq, Inc. System, method and apparatus for enterprise policy management
US8086553B2 (en) 2002-07-30 2011-12-27 Stored Iq, Inc. Method and apparatus for managing file systems and file-based data storage
US9104741B2 (en) * 2003-03-11 2015-08-11 Hitachi, Ltd. Method and apparatus for seamless management for disaster recovery
US20130179404A1 (en) * 2003-03-11 2013-07-11 Hitachi, Ltd. Method and apparatus for seamless management for disaster recovery
US8510331B1 (en) * 2004-10-28 2013-08-13 Storediq, Inc. System and method for a desktop agent for use in managing file systems
US20080086728A1 (en) * 2006-08-02 2008-04-10 Lam Monica S Binding User Data Files
US9063814B2 (en) * 2006-08-02 2015-06-23 Moka5, Inc. Binding user data files
US8046561B1 (en) * 2006-12-22 2011-10-25 Emc Corporation Methods and apparatus for selecting a storage zone for a content unit
US20090112953A1 (en) * 2007-10-30 2009-04-30 Eric Lawrence Barsness Enhanced garbage collection in a multi-node environment
US8868623B2 (en) * 2007-10-30 2014-10-21 International Business Machines Corporation Enhanced garbage collection in a multi-node environment
US8135760B1 (en) * 2007-11-01 2012-03-13 Emc Corporation Determining the lineage of a content unit on an object addressable storage system
US20090157774A1 (en) * 2007-12-18 2009-06-18 International Business Machines Corporation Character pattern-based file storage tool
US20090235251A1 (en) * 2008-03-11 2009-09-17 International Business Machines Corporation Systems, methods and computer program products for improving placement performance of message transforms by exploiting guided replication
US7840677B2 (en) 2008-03-11 2010-11-23 International Business Machines Corporation Systems, methods and computer program products for improving placement performance of message transforms by exploiting guided replication
US7937453B1 (en) * 2008-09-24 2011-05-03 Emc Corporation Scalable global namespace through referral redirection at the mapping layer
US8688630B2 (en) 2008-10-24 2014-04-01 Compuverde Ab Distributed data storage
US9495432B2 (en) 2008-10-24 2016-11-15 Compuverde Ab Distributed data storage
US9026559B2 (en) 2008-10-24 2015-05-05 Compuverde Ab Priority replication
US9329955B2 (en) 2008-10-24 2016-05-03 Compuverde Ab System and method for detecting problematic data storage nodes
US9542415B2 (en) 2009-01-19 2017-01-10 Netapp, Inc. Modifying information lifecycle management rules in a distributed system
US20100185963A1 (en) * 2009-01-19 2010-07-22 Bycast Inc. Modifying information lifecycle management rules in a distributed system
US8898267B2 (en) * 2009-01-19 2014-11-25 Netapp, Inc. Modifying information lifecycle management rules in a distributed system
US9208192B2 (en) * 2009-03-05 2015-12-08 International Business Machines Corporation Conditional storage of multiple information items
US20100228935A1 (en) * 2009-03-05 2010-09-09 International Business Machines Corporation Conditional storage of multiple information items
US20140108465A1 (en) * 2009-06-30 2014-04-17 Sandisk Technologies Inc. File System and Method of File Access
US9916116B2 (en) 2009-11-18 2018-03-13 Microsoft Technology Licensing, Llc Memory access and detecting memory failures using dynamically replicated memory based on a replication policy
US20110119456A1 (en) * 2009-11-18 2011-05-19 Microsoft Corporation Efficiency of hardware memory access using dynamically replicated memory
US8543863B2 (en) * 2009-11-18 2013-09-24 Microsoft Corporation Efficiency of hardware memory access using dynamically replicated memory
US8850019B2 (en) 2010-04-23 2014-09-30 Ilt Innovations Ab Distributed data storage
US9503524B2 (en) 2010-04-23 2016-11-22 Compuverde Ab Distributed data storage
US8612699B2 (en) 2010-06-25 2013-12-17 International Business Machines Corporation Deduplication in a hybrid storage environment
US20120023145A1 (en) * 2010-07-23 2012-01-26 International Business Machines Corporation Policy-based computer file management based on content-based analytics
US20120136829A1 (en) * 2010-11-30 2012-05-31 Jeffrey Darcy Systems and methods for replicating data objects within a storage network based on resource attributes
US9311374B2 (en) * 2010-11-30 2016-04-12 Red Hat, Inc. Replicating data objects within a storage network based on resource attributes
US8769691B1 (en) * 2011-02-14 2014-07-01 Trend Micro, Inc. Network traffic reduction
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance
US8843710B2 (en) 2011-09-02 2014-09-23 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US9305012B2 (en) 2011-09-02 2016-04-05 Compuverde Ab Method for data maintenance
US8812447B1 (en) * 2011-11-09 2014-08-19 Access Sciences Corporation Computer implemented system for accelerating electronic file migration from multiple sources to multiple destinations
US8812448B1 (en) * 2011-11-09 2014-08-19 Access Sciences Corporation Computer implemented method for accelerating electronic file migration from multiple sources to multiple destinations
US9672126B2 (en) 2011-12-15 2017-06-06 Sybase, Inc. Hybrid data replication
US20130159253A1 (en) * 2011-12-15 2013-06-20 Sybase, Inc. Directing a data replication environment through policy declaration
US20130173849A1 (en) * 2011-12-29 2013-07-04 International Business Machines Corporation Write bandwidth management for flashdevices
US9355120B1 (en) * 2012-03-02 2016-05-31 Netapp, Inc. Systems and methods for managing files in a content storage system
US8918672B2 (en) 2012-05-31 2014-12-23 International Business Machines Corporation Maximizing use of storage in a data replication environment
US8930744B2 (en) 2012-05-31 2015-01-06 International Business Machines Corporation Maximizing use of storage in a data replication environment
US9244787B2 (en) 2012-05-31 2016-01-26 International Business Machines Corporation Maximizing use of storage in a data replication environment
US9244788B2 (en) 2012-05-31 2016-01-26 International Business Machines Corporation Maximizing use of storage in a data replication environment
US9355036B2 (en) 2012-09-18 2016-05-31 Netapp, Inc. System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers
US9032244B2 (en) 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
US20150331925A1 (en) * 2012-12-19 2015-11-19 International Business Machines Corporation Write Performance in Fault-Tolerant Clustered Storage Systems
US9916201B2 (en) * 2012-12-19 2018-03-13 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
US9454435B2 (en) * 2012-12-19 2016-09-27 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
US20140173185A1 (en) * 2012-12-19 2014-06-19 International Business Machines Corporation Write Performance in Fault-Tolerant Clustered Storage Systems
US9189504B2 (en) * 2013-01-22 2015-11-17 Oracle International Corporation Application source code scanning for database migration
US20140208290A1 (en) * 2013-01-22 2014-07-24 Oracle International Corporation Application source code scanning for database migration
US9659080B1 (en) * 2013-04-29 2017-05-23 Google Inc. Categorization for constraint-based placement of object replicas in a distributed storage system
US20150046394A1 (en) * 2013-08-07 2015-02-12 Fujitsu Limited Storage system, storage control device, and storage medium storing control program
US9633038B2 (en) 2013-08-27 2017-04-25 Netapp, Inc. Detecting out-of-band (OOB) changes when replicating a source file system using an in-line system
US9300692B2 (en) 2013-08-27 2016-03-29 Netapp, Inc. System and method for implementing data migration while preserving security policies of a source filer
US20150066852A1 (en) * 2013-08-27 2015-03-05 Netapp, Inc. Detecting out-of-band (oob) changes when replicating a source file system using an in-line system
US9304997B2 (en) 2013-08-27 2016-04-05 Netapp, Inc. Asynchronously migrating a file system
US9311331B2 (en) * 2013-08-27 2016-04-12 Netapp, Inc. Detecting out-of-band (OOB) changes when replicating a source file system using an in-line system
US9311314B2 (en) 2013-08-27 2016-04-12 Netapp, Inc. System and method for migrating data from a source file system to a destination file system with use of attribute manipulation
US20150067005A1 (en) * 2013-08-28 2015-03-05 Red Hat, Inc. Path resolver for client access to distributed file systems
WO2015122905A1 (en) * 2014-02-14 2015-08-20 Hewlett-Packard Development Company, L.P. Assign placement policy to segment set
US20150248434A1 (en) * 2014-02-28 2015-09-03 Red Hat, Inc. Delayed asynchronous file replication in a distributed file system
US20150269183A1 (en) * 2014-03-19 2015-09-24 Red Hat, Inc. File replication using file content location identifiers
US20170220598A1 (en) * 2016-01-29 2017-08-03 Vmware, Inc. Fine-Grained Metadata Management in a Distributed File System

Also Published As

Publication number Publication date Type
US7571168B2 (en) 2009-08-04 grant
US20070022122A1 (en) 2007-01-25 application
US7574443B2 (en) 2009-08-11 grant
WO2007014296A2 (en) 2007-02-01 application
WO2007014296A3 (en) 2007-12-06 application
US20070022121A1 (en) 2007-01-25 application
US20070022087A1 (en) 2007-01-25 application
US7599941B2 (en) 2009-10-06 grant

Similar Documents

Publication Publication Date Title
US7171624B2 (en) User interface architecture for storage area network
US6920494B2 (en) Storage area network methods and apparatus with virtual SAN recognition
US7778984B2 (en) System and method for a distributed object store
US6952698B2 (en) Storage area network methods and apparatus for automated file system extension
US7287063B2 (en) Storage area network methods and apparatus using event notifications with data
US6996670B2 (en) Storage area network methods and apparatus with file system extension
US6922761B2 (en) Method and system for migrating data
US5873103A (en) Data storage management for network interconnected processors using transferrable placeholders
US6014667A (en) System and method for caching identification and location information in a computer network
US7716180B2 (en) Distributed storage system with web services client interface
US7406473B1 (en) Distributed file system using disk servers, lock servers and file servers
US6854035B2 (en) Storage area network methods and apparatus for display and management of a hierarchical file system extension policy
US7778972B1 (en) Dynamic object replication within a distributed storage system
US6697924B2 (en) Storage area network methods and apparatus for identifying fiber channel devices in kernel mode
Brandt et al. Efficient metadata management in large distributed storage systems
US6523130B1 (en) Storage system having error detection and recovery
US6976060B2 (en) Symmetric shared file storage system
US7065541B2 (en) Database migration
US9246776B2 (en) Forward-based resource delivery network management techniques
US20070136308A1 (en) Accumulating access frequency and file attributes for supporting policy based storage management
US6829610B1 (en) Scalable storage system supporting multi-level query resolution
US6101508A (en) Clustered file management for network resources
US20030149762A1 (en) Storage area network methods and apparatus with history maintenance and removal
US6564252B1 (en) Scalable storage system with unique client assignment to storage server partitions
US7937453B1 (en) Scalable global namespace through referral redirection at the mapping layer

Legal Events

Date Code Title Description
AS Assignment

Owner name: PARASCALE, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BAHAR, CAMERON;HOPFIELD, JOSEPH;NALAM, NAVEEN;AND OTHERS;REEL/FRAME:018311/0504;SIGNING DATES FROM 20060830 TO 20060912