EP3111623A1 - System, method, and computer program product for providing a unified namespace - Google Patents
System, method, and computer program product for providing a unified namespaceInfo
- Publication number
- EP3111623A1 EP3111623A1 EP15751600.6A EP15751600A EP3111623A1 EP 3111623 A1 EP3111623 A1 EP 3111623A1 EP 15751600 A EP15751600 A EP 15751600A EP 3111623 A1 EP3111623 A1 EP 3111623A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- namespace
- data
- data identifier
- gateway
- storage system
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4552—Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Definitions
- the present description relates generally to data storage and, more specifically, to providing a single unified namespace across multiple storage systems, each having its own independent namespace.
- Network-based storage and cloud storage has become a common way for entities to save their data.
- storage options have become more common, they have also become more complex.
- a single client accesses data from a single data store of a networked storage system by sending data transactions (e.g., read and/or write requests) to the storage system, which executes the requested transactions on a connected data store.
- the client refers to the desired data using a data identifier, which in various examples includes a file name, a path name, and/or a virtual memory address.
- the storage system and typically a storage controller thereof, translates the data identifier into a unique location for the data within the data store.
- the storage system virtualizes the organization of data on the data store and hides the complexity of the underlying data storage techniques from the client.
- the identifier used by the client in the data transaction does not necessarily contain the location or address within the data store; rather, the storage system translates the identifier into a corresponding address.
- the storage controller then performs the requested operation on the data at the address in the data store and sends a response to the client.
- the data identifier used by the client conforms to a first namespace, which in this example, includes a protocol for identifying data objects.
- a first namespace which in this example, includes a protocol for identifying data objects.
- Different storage systems may use different (heterogeneous) namespaces, and the addition of further storage systems to the example above introduces complexity to the system due to the additional namespace to data location transformations.
- a client in some conventional systems introduces complexity to the system due to the additional namespace to data location transformations.
- communication with two or more storage systems may have to be cognizant of the heterogeneous namespaces and may have to conform its data transactions to the namespace associated with whichever storage system the transaction is sent to.
- FIG. I is an illustration of an example storage architecture, adapted according to one embodiment.
- Figs. 2A and 2B are illustrations of exemplary Key- Value ( V) databases according to various embodiments.
- Fig. 3 is an illustration of a further exemplary KV database according to one embodiment.
- FIG. 4 is an illustration of an example storage architecture, adapted according to one embodiment, and using a distributed database for KV pairs.
- FIG. 5 is an illustration of an example storage architecture according to one embodiment.
- Fig. 6 is an illustration of an example storage architecture integrating a unified namespace gateway module into a storage system according to one embodiment.
- FIG. 7 is an illustration of an example process adapted according to one
- FIG. 8 is an illustration of an example process adapted according to one
- Various embodiments include systems, methods, and computer program products that join any number of storage systems including storage systems that have incompatible namespaces for specifying data.
- the embodiments provide a single unified namespace by which clients can refer to data located on different storage systems.
- Many embodiments include a gateway system that translates data transactions directed to the unified namespace into a protocol and namespace associated with a particular storage system and that forwards the translated transaction on to the respective system, in this way, the gateway system simplifies the task of specifying data located on a group of heterogeneous storage systems.
- a storage system includes a network storage system with multiple storage drives, one or more storage controllers, and a storage server that communicates with the storage controllers.
- the storage system can be a network storage system that, by itself, could provide storage to multiple clients.
- the clients communicate with the storage system by sending and receiving data transactions to the storage system and in particular, to the storage controller of the storage system.
- a transaction include a data identifier that uniquely identities a data object and that conforms to a namespace of the storage system.
- a data storage environment including a number of storage systems further includes a gateway that is disposed communicatively between the client and the storage systems.
- a gateway is a separate computing system distinct from the client and the storage systems.
- a gateway is a module of a storage system.
- the storage environment includes some storage systems that include gateway modules and some storage systems that interface with discrete gateway systems.
- the gateway receives transactions that refer to data using a first namespace and translates the transaction to refer to data using a second namespace particular to the storage system. In this way, the gateway hides the underlying storage architecture from the client. Thus, in these examples, the client is unaware of the multitude of different storage systems.
- the gateway When the client sends a read or write request, the gateway translates the data identifier in the request to a namespace appropriate for whichever storage system will handle the request. For example, one storage system may use an NFS protocol, while a second uses an CIFS/SMB protocol and a third uses HTTP.
- a particular technique for facilitating the namespace translation at the gateway includes the use of a database of Key-V alue (KV) pairs. At its most basic, querying a database using a key returns a corresponding value.
- the keys includes the data identifier used by the client in its request.
- the values associated with the keys each include an identification of the appropriate storage system (e.g., in the case of a read request, the storage system that stores the data), an identifier of the namespace of the storage system, and another data identifier that is understood by the storage system to refer to the data identified by the key. This latter data identifier conforms to the namespace of the storage system.
- the gateway uses the data identifier in the transaction to traverse the KV pairs, finding the corresponding key.
- the gateway accesses the data in the value to determine which storage system owns the data and what data identifier to use.
- the gateway then sends a modified transaction to the identified storage system using the translated data identifier from the value.
- gateways may be clustered and a database of namespace translations may be distributed over the gateways with each gateway storing at least a portion of the database.
- the gateways may act as peers so that when any gateway receives a transaction, it is operable to query its peer nodes to determine an appropriate translation if the relevant portion of the database is not stored locally.
- the systems and method s of these embodiments can join heterogeneous pools of storage across networks and sites in a manner that is transparent to the client systems.
- Many embodiments also provide transparent redundancy. For example, transactions can be handled by other gateways in the cluster should a particular gateway fail, and redundant storage systems can be brought on line to replace a failing device without interruption.
- Fig. 1 is an illustration of exemplary storage architecture 100, adapted according to one embodiment.
- the storage architecture 100 includes clients 1 10-112, gateways 120 and 121 , and storage systems 130-133, Clients 1 10-1 12 in this example include clients that use the storage systems 130- 133 for storage. For instance, each of clients 1 10- 1 12 may run one or more applications (e.g., word processing or database programs) that utilize the storage architecture.
- Each client 1 10-1 12 includes a computer system that interacts with gateways 120 and 121 for submitting read/write access requests and for receiving or transmitting data from storage systems 130-133 via gateways 120 and 121.
- Gateways 120 and 12.1 each include a computer system that executes applications and interacts with the clients 110-1 12 for receiving read/write access requests and receiving or transmitting data from or to the clients 1 10-1 12.
- Gateways 120 and 121 in this example may be connected to the clients 1 10-1 12 over a network such as a local area network (LAN), an Ethernet subnet, a PCI or PCIe subnet, a switched PCIe subnet, a wide area network (WAN ), a metropolitan area network (MA N), the Internet, or the like.
- the gateway functionality described herein may be included in applications that are run on the computer systems that constitute gateways 120 and 12.1 .
- Each gateway 120 and 12.1 may include any appropriate computer hardware and software, such as, e.g., a general-purpose computer configured to execute any of a vari ety of operating systems, including the UnixTM, LinuxTM, and Microsoft WindowsTM operating systems.
- the storage systems 130-133 in this example each include a storage controller (e.g. , storage controllers 140-142) that exercises low-level control over a set of networked storage devices referred to col lectively as a data store (e.g. , data stores 150-153) in order to read and write data to the storage devices of the data store.
- a storage controller e.g. , storage controllers 140-142
- a data store e.g. , data stores 150-153
- each data store 150-153 examples include hard disk drives (HDDs), solid state drives (SSDs), optical drives, and/or any other suitable volatile or non-volatile data storage medium, though the scope of embodiments is not limited to any particular storage hardware.
- the storage controllers 140-142 each have an associated namespace and process transactions identifying data in a respective namespace protocol. To do so, the storage controllers 140-143 may translate addresses within the associated namespace to a data location on a storage device of a data store.
- each of the clients 1 10-1 12 is in communication with at least one of the gateways 120 and 121 .
- client 1 10 is in communication with gateway 120;
- client 1 1 1 is in communication with gateways 120 and 121 ;
- client 1 12 is in communication with gateway 121.
- each of the gateways 120-121 is in communication
- gateway 120 is in communication with all of storage systems 130-133, as is gateway 121 , and each of the clients 1 10-1 12 can reach any of the storage systems 1 30-133 via one of the gateways 120 or 121.
- Gateways 120 and 121 may also be in communication with each other, e.g., over a LAN or other type of network.
- Each of the clients 1 10-1 12 can send a request to create a file, read a fi le, write a file, change a directory, look up a file, or any other suitable data transaction to a gateway with which it is in communication.
- the gateways 120 and 121 translates an identifier of the file or directory into a namespace of an underlying storage device and thereby provides a unified namespace technique so that complexity of th e storage architecture is hidden from clients 110-1 12, as described in detail below.
- the following example use case illustrates a read request from client 1 1 1 to gateway 120, and it is understood that similar action may be performed by any of the cl ients 1 10- 1 12 with any of the gateways 120 and 121 , assuming a network connection therebetween.
- client 1 1 1 issues a read request to gateway 120.
- Client 1 1 1 is in communication with both of gateways 120 and 121 and may issue the read request to gateway 121 rather than to gateway 120 for any appropriate reason, e.g., load balancing.
- the read request from client 111 includes a first data identifier in the unified namespace.
- the first data identifier in this example uniquely identifies the object (e.g., an object, file, or block), although it does not comply with a namespace used by any of the storage systems 130-133 and would not properly identify data if sent directly to any of the storage systems 130-133.
- Gateway 120 receives the read request and determines a particular storage system 130- 133 to which to send the read request. Gateway 120 also determines a second data identifier to use when sending the read request to the particular storage system. Various embodiments may use any appropriate technique to resolve a particular storage system or data identifier upon receipt of a request from a client. In the present example, gateways 120 and 121 use a database of V pairs to resolve storage systems and data identifiers. The gateway 120 creates a second read request that references data using the second data identifier and forwards the second request to the identified storage system of systems 130- 133. [ ⁇ 032] Moving to Fig. 2A, an illustration of an exemplary KV database 200 according to one embodiment is provided.
- the keys include the unified namespace identifiers that are provided from and to clients 1 10-112.
- the unified namespace identifiers include block-level identifiers, file-level identifiers, and/or object identifiers.
- Block-level data identifiers refer to data using an address that corresponds to a sector of a storage device and may include a physical address (i.e., an address that directly map to a storage device) and/or a logical address (i.e., an address that is translated into a physical address of a storage device).
- Exemplary block-level protocols include iSCSI, Fibre Channel, and Fibre Channel over Ethernet (FCoE).
- FCoE Fibre Channel over Ethernet
- file-level protocols specify data locations by a file name.
- a file name is an identifier within a file system that can be used to uniquely identify corresponding memory addresses.
- File-level protocols rely on a system such as one of the unified namespace gateways 120 and 121 and/or a storage system to translate the file name into respective storage device addresses.
- Exemplar ⁇ ' file-level protocols include CIFS/SMB, SAMBA, and NFS.
- Object-level protocols are similar to file- level protocols in that data is specified via an object identifier that is eventually translated by another system into a storage device address. However, objects are more flexible groupings of data and may specify a cluster of data within a file or spread across multiple files.
- Object- level protocols include CDML HTTP, and S3.
- the unified namespace identifiers are file-level identifiers.
- a file-level namespace identifier includes a filename suffix and a path prefix that indicates a directory structure in which the data corresponding to the filename is said to reside.
- the path determines the storage system on which the data resides, with each directory being assigned to a particular system. This does not allow data residing within a given directory to be split across more than one storage system.
- many embodiments of the present disclosure allow each individual file to reside on any storage system (e.g., systems 130-133) regardless of the path prefix.
- a computing system such as one of gateways 120 and 121 can query the KV database 200 using the identifier.
- the associated values include an identifier of a storage system, an identifier of a namespace, and an identifier corresponding to the object in the namespace of the particular storage system.
- a query using the unified namespace identifier will return a value that specifies which storage system the data resides on, a namespace used by the storage system, and/or an identifier specifying the data at the storage system.
- the database 200 may be divided into database portions 202, which in some embodiments are distributed among multiple computing systems such as gateways 120 and 121 , As discussed in further detail below, a distributed database 200 has many advantages such as redundancy and load balancing that become particularly important as database size increases.
- the exemplary read request issued from client 1 1 1 includes the data identifier "/project/alpha/design ___spec.txt" which is a file-level unified namespace data identifier.
- the gateway 120 traverses the KV database to find a corresponding identifier particular to a storage system and within the namespace of the storage system. In this example, the gateway 120 traverses the KV database using a key that includes the data identifier
- the gateway 120 reads the value corresponding to the key, which in this example includes "Storage System C, Namespace B, #09548a22". Therefore, gateway 120 has information indicating that the read request should be sent to Storage System C using Namespace B and data should be identified to Storage System C using the block-level identifier #09548a22. It is noted that the identifier used by the storage system need not be the same or even the same type (e.g., file-level/block-level) as the unified namespace data identifier.
- gateway 120 forwards the read request to storage system 132 indicating that the read request is for object #09548a22.
- Storage controller 142 of storage system 132 maps the data identifier #09548a22 to one or more storage locations within its physical stores drives (using its own internal mapping tables), reads the corresponding data, and returns the results to gateway 120.
- Gateway 120 forwards the results on to requesting client 111 using the unified namespace protocol.
- the keys include the unified namespace identifiers that are provided from and to clients 110-112.
- the unified namespace identifiers include block-type data identifiers that correspond to addresses where the data is stored.
- the associated values include an identifier of a storage system, an identifier of a namespace, and an identifier corresponding to the object in the namespace of the particular storage system.
- the database 250 may be divided into database portions 202, which in some embodiments are distributed among multiple computing systems such as gateways 120 and 121.
- exemplary databases of Figs. 2A and 2B contain keys of a single identifier type (file-level and block-level, respectively), further exemplary databases include keys of any number of identifier types.
- the unified namespace may support block-level identifiers, file-level identifiers, and/or object identifiers, concurrently. This provides "file object duality", whereby different clients can access the same element of data using different protocols.
- Fig. 3 is an illustration of one such database 300 according to various embodiments.
- the database 300 includes records comprising various fields.
- the illustrated examples include a IJUID 302 (a randomly generated unique value assigned to the record), a name 304 particular to the object or file, a prefix 306 corresponding to a path of a file or a prefix of an object, a file handle 308 uniquely identifying the file for NFS compatibility, a file handle 310 uniquely identifying a parent of the file for NFS compatibility, a creation time 312, an access time 314, a size 316, a type 318 such as file or directory, and a location 320.
- the location 320 may specify a storage system the data resides on, a namespace used by the storage system, and/or an identifier specifying the data at the storage system.
- multiple fields of the database 300 may correspond to searchable keys.
- the database 300 may be queried using the name field 304.
- the database 300 may also be queried using the prefix field 306.
- the database 300 may also be queried using the file handle 308 and/or parent file handle 310 fields.
- the available fields and the fields indexed for querying have an impact on the database performance, and, in many embodiments, the database 300 is configured to optimize those transactions expected to be most common. For example, in the illustrated database 300, moving and renaming a file is performed by updating the file name 304 field of a single record.
- the gateway 120 upon receiving a write request creates a new KV pair in its database to indicate the unified namespace identifier, storage system identifier, namespace identifier, and data identifier for use with the storage system.
- the gateways 120 and 121 may keep their KV tables up to date by modifying them in response to newly-written data and modified data, thereby ensuring that subsequent data transactions access the correct data.
- FIG. 4 is an illustration of a storage architecture 400, adapted according to one embodiment and using a distributed database for KV pairs.
- gateway 120 includes namespace database portion 402
- gateway 121 includes namespace database portion 404. Therefore, in a scenario in which a client sends a read request to gateway 120 for a particular object, gateway 120 may or may not have local access to the part of the namespace database including that object's identifiers. The same is true for gateway 121.
- the storage architecture 400 may provide one or more techniques to provide comprehensive access to the clients 110-1 12 so that each client can access any storage system from any gateway, despite individual gateway 120 and 121 having less than a full database stored locally.
- Gateways 120 and 121 may use any appropriate di stributed database technology in the example of Fig. 4.
- One example database technology includes the open source NoSQL distributed database under the name CASSANDRA, available from Apache Software Foundation,
- Another example database technology includes the open source NoSQL distributed database under the name R.1A , available from Basho Technologies.
- the scope of embodiments may include any appropriate distributed database technology, whether open source or otherwise.
- Gateways 120 and 121 are in communication with each other via a network, such as a LAN or other suitable connection.
- gateways 120 and 121 may be in the same facility or geographic area or may be in different facilities or different geographic areas.
- gateways 120 and 121 may communicate with each other via the Internet.
- gateways 120 and 121 communicate with each other to provide access from any client 110-1 12 to any storage system 130-133.
- client 1 1 1 sends a read request to gateway 120 using the unified namespace data identifier 'Yproject aipha/design spec.txt" from the previous example.
- Gateway 120 queries its database portion 402 using the key corresponding to the identifier. In a scenario in which the gateway 120 finds the data identifier
- gateway 120 forwards the read request to Storage System C (storage system 132 in the previous example) using data identifier #09548a22. This is consistent with example database 200 of Fig, 2.
- gateway 120 does not find data identifier
- Gateway 120 sends a message to other gateways to inquire whether those other gateways can resolve the unified namespace data identifier.
- the other gateway is gateway 121, and gateway 120 sends a message to gateway 121 requesting that the unified namespace identifier "/project/alpha/design, spec.txt" be resolved.
- the key or a hash thereof uniquely identifies those gateways storing the database portion containing the key. In these examples, knowing that gateway 121 can resolve the identifier, gateway 120 only inquires of gateway 121. [ ⁇ 048]
- Storage architecture 400 may resolve the data identifier and handle the read request in any appropriate manner.
- gateway 121 takes over responsibility for the read request if it is determined that namespace database portion stored on gateway 121 (i.e., database portion 404) includes an entry for identifier "/project/alpha/design spec.txt".
- Taking over a data transaction may include one or more of: performing the translation of the data transaction from the unified namespace to a namespace associated with a storage system, providing the translated data transaction to the storage system, forwarding a response from the storage system to the requesting client, and/or translating the response from the namespace associated with the storage system to the unified namespace prior to forwarding it.
- gateway 121 reads the value associated with the key and determines that the corresponding value includes "Storage System C, Namespace B,
- Storage system 132 receives the read request, resolves data identifier #09548a22 using its own internal mapping to find one or more locations within its physical storage drives, reads the data from the location(s), and returns the data to gateway 121 .
- Gateway 121 then either returns the requested data directly to requesting client 1 11 or sends the requested data to gateway 120 to forward to client 111.
- gateway 120 searches its namespace database portion 302 using data identifier "/projeet/alpha/design_spec.txt" and, not finding a match, sends a message to gateway 121 with the data identifier.
- gateway 121 does not take over responsibility for the read request, instead, gateway 121 sends the value of the V pair "Storage System C, Namespace B, #09548a22" to gateway 120. Gateway 120 then forwards the read request to storage system 132 with the data identifier #09548a22.
- Storage system 132 receives the read request, resolves data identifier #09548a22 using its own internal mapping to find one or more locations within its physical storage drives, reads the data from the location(s), and returns the data to gateway 120. Gateway 120 then returns the requested data to requesting client 111 using the unified namespace protocol.
- Fig. 5 is an illustration of storage architecture 400 according to one embodiment.
- the arrow between client 1 1 1 and gateway 120 indicates the client 11 1 issuing the request to gateway 120 and the gateway 120 returning the requested data to client 1 1 1.
- the arrow 7 between gateway 120 and storage system 132 indicates sending the request from gateway 120 to storage system 132 with the resolved identifier and receiving the requested data from storage system 132. Arrows between gateways 120 and 121 indicate that gateways 120 and 121 communicate with each other to resolve a unified namespace data identifier wherever the V pair may be stored,
- a unified namespace gateway is integrated into a storage system.
- Fig. 6 illustrates a storage architecture 600 according to one embodiment.
- the unified gateway modules 612 and 613 operate substantially simi lar to unified namespace gateways such as gateways 120 and 121, and the storage systems 602 and 603 operate substantially similar to storage systems such as storage systems 130-133.
- the storage systems 602 and 603, and in particular the gateway modules 612 and 613 of the storage systems perform translation of a unified namespace identifier to an identifier within the namespace of a storage system.
- the gateway modules 612 and 613 provide frontends that allow respective storage systems 602 and 603 to service data access requests from a client even if the data does not reside on the storage system.
- the gateway module 602 may contain some or all of a namespace database. In some embodiments, if a unified namespace identifier is not contained within the portion of the namespace database stored by the gateway module 602, the gateway module 602 provides the unified namespace identifier to another gateway module or to a unified namespace gateway to translate. Once the unified namespace identifier is translated, the gateway module 602 may provide the request with the translated identifier to the corresponding storage system. Additionally, or in the alternative, the gateway module 602 may respond to the client, thereby causing the client to redirect the request to the corresponding storage system. The response from the gateway module to the client may include the translated identifier, an identifier of the corresponding storage system, an identifier of the associated namespace, and/or any other suitable information.
- FIG. 7 is an illustration of example process 700 adapted according to one embodiment.
- Process 700 may be performed by one or more computer processors executing code to provide the functionality described above with respect to gateways 120 and 121 and gateway module 602,
- the gateway receives from a client a first data transaction request including a first data identifier.
- the data transaction request may include, for example, a read request or a write request.
- the first data identifier conforms to a first namespace protocol (e.g., a universal namespace protocol) that is not directly actionable by various underlying storage systems. This is due in part to the storage systems using one or more namespace protocols that are different from the first namespace protocol .
- a first namespace protocol e.g., a universal namespace protocol
- the gateway determines a storage system associated with the first identifier.
- the gateway traverses a database of KV pairs to find an entry that corresponds to the first identifier.
- the value associated with the first identifier provides an indication of the storage system that should receive the data transaction request.
- the gateway determines a second data identifier associated with the first data identifier, wherein the second data identifier conforms to a namespace protocol associated with the storage system. In one example, the gateway determines the second data identifier by examining the same KV database entry that indicates the storage system in action 720.
- the second data identifier conforms to a namespace protocol of the storage system.
- the storage system uses a different namespace protocol than does the client, and the storage system's namespace protocol may also be different from namespaces used by other storage systems in the architecture. It is not necessary that any of the namespace protocols be compatible, in other words, the first data identifier conforms to a protocol that is not compatible with that of the storage system; similarly, the second data identifier conforms to a protocol that is not compatible with that of the client.
- the gateway translates between the namespace protocols to allow the client to perform data transactions on any storage system in the architecture while at the same time hiding the underlying storage architecture complexity from the clients.
- the clients may only know and use the unified namespace protocol (of the first data identifier) and be unaware of the namespace protocols used by the storage systems.
- the gateway forwards a second data transaction request referencing the second data identifier to the storage system.
- a storage controller of the storage system maps the second data identifier to one or more physical storage addresses in its own data store and returns results to the gateway.
- process 700 may also include updating a database of data identifiers to create or modify a record consistent with the written data, if the database is distributed among a multitude of gateways, updating the database may include identifying at least one gateway device to store the entry of the distributed database by, e.g., considering load balancing among the gateways.
- process 700 may also include forwarding the read results to the client from the gateway.
- Fig. 8 is an il lustration of example process 800 adapted according to one
- Process 800 may be performed by one or more computer processors executing code to provide the functionality described above with respect to gateways 120 and 121 and gateway module 602, In the process 800, a first gateway, having received a first data transaction request, finds that it does not have local access to a distributed database entry corresponding to requested data. The actions of Fig. 8 are discussed above with respect to Figs. 4 and 5 as well,
- the gateway receives from a client a first data transaction request including a first data identifier.
- Action 810 is substantially similar to action 710 (Fig. 7), discussed above.
- the gateway searches a portion of a distributed database for an entr to resolve the first data identifier into a second data identifier and a corresponding storage system.
- An example of action 820 is given above, wherein the gateway traverses a database of KV pairs, where the keys in the KV pairs correspond to first data identifiers.
- the gateway has local access to a portion of a distribu ted database, where the portion is less than the full database and does not, by itself, provide comprehensive resolution of first data identifiers because some first data identifiers may be missing from the portion.
- the gateway upon determining that no database entry exists locally for resolving the first data identifier, the gateway communicates with another gateway to complete the first data transaction. For example, the gateway may forward the first data transaction request to the other gateway or may merely pass an inquiry to the other gateway, where the inquiry references the first data identifier. Any appropriate communication between gateways can be used by various embodiments to facilitate completion of the first data transaction.
- the first data transaction is completed, as facilitated by action 630.
- the first gateway passes the first data transaction request to the second gateway, and the second gateway takes over responsibility for the first data transaction.
- the second gateway resolves the first data identifier into a corresponding storage system and second data identifier and requests the transaction from the storage system using the second data identifier (using, e.g. , actions 720-740 of Fig. 7).
- the second gateway can communicate results of th e data transaction to the requesting client itself or can forward the results to the first gateway, thereby allowing the first gateway to pass the results to the requesting client.
- the first gateway requests that the second gateway resolve the first data identifier and return the second data identifier and storage system identifier to the first gateway. Upon receipt of the second data identifier and storage system identifier, the first gateway then completes the transaction according to action 740 of Fig. 7.
- Various embodiments may include one or more advantages over conventional systems. For instance, various embodiments provide a unified namespace that hides the complexity of the underlying data storage architecture from the clients. Such action allows the cl ients to u se a single namespace and pass the burden of keeping track of namespaces to the gateways.
- various embodiments use a distributed database of KV pairs to facilitate resolving data identifiers of the unified namespace.
- the distributed database may provide scalability because it can be used for a large volume of entries and can be split among a multitude of gateways.
- storage systems and gateways can be added to the storage architecture by updating the database and providing at least a portion of the database to added gateways.
- various elements of embodiments of the present di sclosure are in essence the software code defining the operations of such various elements.
- the executable instructions or software code may be obtained from a non-transitory, tangible readable medium (e.g., a hard drive media, optica] media, RAM, EPROM, EEPROM, tape media, cartridge media, flash memory, ROM, memory stick, network storage device, and/or the like).
- readable media can include any medium that can store information.
- example clients, gateways, and storage systems include processor-based devices and may include general-purpose processors or specially-adapted processors (e.g., an Application Specific Integrated Circuit). Such processor-based devices may include or otherwise access the non-transitory, tangible, machine readable media to read and execute the code. By executing the code, the one or more processors perform the actions of processes 700 and/or 800 as described above.
- the systems and methods of the present disclosure provide a unified or federated namespace capabl e of identifying data across heterogeneous storage systems using a single universal identifier.
- a database used in translating data identifiers to and from the unified namespace is distributed across multiple gateway systems. This distributes the translatioiial burden across the gateways and reduces system bottlenecks particularly as the size of the unified namespace grows.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IN906CH2014 | 2014-02-24 | ||
| US14/318,460 US10812313B2 (en) | 2014-02-24 | 2014-06-27 | Federated namespace of heterogeneous storage system namespaces |
| PCT/US2015/017160 WO2015127398A1 (en) | 2014-02-24 | 2015-02-23 | System, method, and computer program product for providing a unified namespace |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| EP3111623A1 true EP3111623A1 (en) | 2017-01-04 |
| EP3111623A4 EP3111623A4 (en) | 2017-10-25 |
Family
ID=57394717
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP15751600.6A Withdrawn EP3111623A4 (en) | 2014-02-24 | 2015-02-23 | System, method, and computer program product for providing a unified namespace |
Country Status (1)
| Country | Link |
|---|---|
| EP (1) | EP3111623A4 (en) |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| US7725601B2 (en) * | 2004-10-12 | 2010-05-25 | International Business Machines Corporation | Apparatus, system, and method for presenting a mapping between a namespace and a set of computing resources |
| US7933921B2 (en) * | 2006-11-29 | 2011-04-26 | Netapp, Inc. | Referent-controlled location resolution of resources in a federated distributed system |
-
2015
- 2015-02-23 EP EP15751600.6A patent/EP3111623A4/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| EP3111623A4 (en) | 2017-10-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10812313B2 (en) | Federated namespace of heterogeneous storage system namespaces | |
| US20230087493A1 (en) | Shared storage model for high availability within cloud environments | |
| US10795817B2 (en) | Cache coherence for file system interfaces | |
| US11620064B2 (en) | Asynchronous semi-inline deduplication | |
| US8620886B1 (en) | Host side deduplication | |
| US11036423B2 (en) | Dynamic recycling algorithm to handle overlapping writes during synchronous replication of application workloads with large number of files | |
| US8874850B1 (en) | Hierarchically tagged cache | |
| US11714782B2 (en) | Coordinating snapshot operations across multiple file systems | |
| US8924425B1 (en) | Migrating data from legacy storage systems to object storage systems | |
| US20250005003A1 (en) | Object and sequence number management | |
| US10031682B1 (en) | Methods for improved data store migrations and devices thereof | |
| US20140195551A1 (en) | Optimizing snapshot lookups | |
| US20170031772A1 (en) | Incremental transfer with unused data block reclamation | |
| US9959335B2 (en) | System and method for avoiding object identifier collisions in a peered cluster environment | |
| US10990571B1 (en) | Online reordering of database table columns | |
| US8621569B1 (en) | Intercluster relationship management | |
| US20230133433A1 (en) | Unified object format for retaining compression and performing additional compression for reduced storage consumption in an object store | |
| WO2008066872A2 (en) | Referent-controlled location resolution of resources in a federated distributed system | |
| US11544007B2 (en) | Forwarding operations to bypass persistent memory | |
| WO2015118865A1 (en) | Information processing device, information processing system, and data access method | |
| US11343308B2 (en) | Reduction of adjacent rack traffic in multi-rack distributed object storage systems | |
| US11055005B2 (en) | Background deduplication using trusted fingerprints | |
| US11064020B2 (en) | Connection load distribution in distributed object storage systems | |
| EP3111623A1 (en) | System, method, and computer program product for providing a unified namespace | |
| WO2015127398A1 (en) | System, method, and computer program product for providing a unified namespace |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20160924 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| AX | Request for extension of the european patent |
Extension state: BA ME |
|
| DAX | Request for extension of the european patent (deleted) | ||
| A4 | Supplementary search report drawn up and despatched |
Effective date: 20170927 |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: H04L 29/12 20060101ALI20170921BHEP Ipc: H04L 29/06 20060101ALI20170921BHEP Ipc: G06F 17/30 20060101ALI20170921BHEP Ipc: H04L 29/08 20060101AFI20170921BHEP |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
| 18D | Application deemed to be withdrawn |
Effective date: 20180424 |