Global storage classes with local parameters

Global storage classes with local parameter settings address replication challenges by tailoring storage and replication strategies to regional hardware and software configurations, ensuring efficient and robust data redundancy and recovery.

WO2026135712A1PCT designated stage Publication Date: 2026-06-25HITACHI VANTARA LLC

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
HITACHI VANTARA LLC
Filing Date
2025-03-20
Publication Date
2026-06-25

AI Technical Summary

Technical Problem

Data storage systems face challenges in replicating data across geographically distinct locations due to differing hardware and software configurations, complicating redundancy and disaster recovery.

Method used

Implementing global storage classes with local parameter settings that allow data objects to be stored and replicated using a unified global class definition, with local settings tailored to each geographic region's hardware and software capabilities, ensuring redundancy and disaster recovery.

Benefits of technology

Ensures efficient data replication and redundancy across diverse geographic regions by adapting storage parameters to local conditions, enhancing disaster recovery and performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2025020623_25062026_PF_FP_ABST
    Figure US2025020623_25062026_PF_FP_ABST
Patent Text Reader

Abstract

Examples include a computing device configured by executable instructions to receive a data object for storage and an indication of a global storage class for storing the object. The global storage class includes an indication of at least one storage parameter with which the data object is to be stored. The data object is stored according to a first local storage class definition defined for the indicated global storage class at a first storage system located at a first geographic region corresponding to a first geographic location. Further, the data object is stored according to a second local storage class definition defined for the indicated global storage class at a second storage system located at a second geographic region corresponding to a second geographic location. The second local storage class definition differs from the first local storage class definition based on a difference in the at least one storage parameter.
Need to check novelty before this filing date? Find Prior Art

Description

GLOBAL STORAGE CLASSES WITH LOCAL PARAMETERSCROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims the benefit of, and priority to, U.S. Provisional Patent Application No. 63 / 735,927, filed December 19, 2024, which is incorporated by reference herein.TECHNICAL FIELD

[0002] This disclosure relates to the technical field of data storage and replication.BACKGROUND

[0003] Data storage systems, such as object storage systems or various other types of storage systems, may be configured to replicate data to multiple geographically distinct locations (referred to herein as “geographic regions”). For instance, the geographic regions may be located geographically remote from each other, such as in different cities, different states, different countries, and so forth, so that if a disaster were to occur at a first geographic region, a second geographic region may be sufficiently remote from the first geographic region such that the data stored at the second geographic region might reasonably be expected to be unaffected by the disaster occurring at the first geographic region. Thus, a storage system may replicate data between geographic regions that are remote from each other so that when data is stored to a storage system at a first geographic region, the data may also be stored at one or more other geographic regions to provide redundancy and protection against a disaster that might destroy or otherwise make unavailable the data stored at the first geographic region. However, different storage systems located at different geographic regions may have hardware configurations, software capabilities, and the like, that are different from those at other geographic regions, which can complicate replication.SUMMARY

[0004] In some implementations, a computing device is configured by executable instructions to receive a data object for storage and an indication of a global storage class for storing the object. The global storage class includes an indication of at least one storage parameter with which the data object is to be stored. The computing device causes the data object to be stored according to a first local storage class definition defined for the indicated global storage class at a first storage2system located at a first geographic region corresponding to a first geographic location. Further, the computing device causes the data object to be stored according to a second local storage class definition defined for the indicated global storage class at a second storage system located at a second geographic region corresponding to a second geographic location. The second local storage class definition differs from the first local storage class definition based at least on a difference in the at least one storage parameter.BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The detailed description is set forth with reference to the accompanying figures. In the figures, the leftmost digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items or features.

[0006] FIG. 1 illustrates an example architecture of a system able to store and replicate data using global storage classes according to some implementations.

[0007] FIG. 2 illustrates an example of how different local settings may be applied for storing a data object according to the same global storage class at different geographic regions according to some implementations.

[0008] FIG. 3 is a flow diagram illustrating an example process for storing and replicating data based on a global storage class according to some implementations.

[0009] FIG. 4 illustrates select example components of the service computing device(s) that may be used to implement at least some of the functionality of the systems described herein.

[0010] FIG. 5 illustrates select components of an example configuration of a storage system according to some implementations.DESCRIPTION OF THE EMBODIMENTS

[0011] Some implementations herein are directed to techniques and arrangements for replication in which data, such as a data object, can be written to a first storage system at a first geographic region for storage according to a specified global storage class. Additionally, the data object may also be replicated asynchronously to a second storage system at a second geographic region for storage according to the specified storage class. In some implementations, the global storage classes herein exist globally (e.g., throughout a federation of storage systems at a plurality of different geographic regions), but the protection level and / or other storage class parameters for each global storage class may be locally defined for each different storage system at each3different geographic region, such as based on various local hardware capabilities, local software capabilities, local resource availability, and the like. Thus, the same global storage class can be specified for storing data at each different geographic region, but a specified global storage class may have different local protection levels and / or other different local parameter settings, or the like, that are defined and employed at each of the different geographic regions. In some examples, the different geographic regions may be located at least a minimum distance from each other, such as 10 miles, 50 miles, 100 miles, 500 miles, 1000 miles, and / or may be located on a different power grid, in different countries, and so forth, depending on the level of disaster protection desired for the data.

[0012] The storage systems herein may use a variety of storage media for physically storing the data. The storage systems herein may also store a variety of different types of data with different requirements as to the level of protection, speed of access, encryption, and other parameters. As one example, an object storage system herein may include physical storage that is spread across multiple machines, racks, or other equipment, such as at a data center located at a geographic region.

[0013] Some of the storage systems herein may employ erasure coding to, at least in part, provide redundancy protection to the stored data. Erasure coding is a method of taking stored data, calculating additional parity data for the stored data, and storing the data and parity data in such a manner that, if a portion of the original data is lost, then the lost data can be reconstructed using the remaining original data and the additional parity data. Thus, because the parity data can consume less storage space than the data of the object, erasure coding can protect against data loss more efficiently as compared to keeping additional complete copies of the data.Further, the users herein may have access to different geographic regions with varying hardware configurations and software capabilities. However, different users may want different levels of protection for their data. Accordingly, the local settings for the global storage classes may satisfy a minimum level of protection for the type of data being stored and for the global storage class, but may do so by specifying various different local storage class definitions that take into account the available hardware and software at each respective geographic region.

[0014] In the examples herein, a storage class may be defined globally and propagated across the different geographic regions within a federation of geographic storage regions. After the storage class is created, the storage class then exists with the same class name in every geographic region within the federation of geographic regions to which data may be stored and / or replicated. Local administrators at each geographic region may define an associated local 4protection level for the global storage class in that geographic region, as well as specifying the hardware upon which the data objects in the global storage class can reside and other local storage parameters for the global storage class. In some examples, at least some of the storage systems at the different geographic regions may include network storage (e.g., cloud storage) provided by one or more commercial cloud-based storage providers, such as AMAZON®, MICROSOFT®, IBM®, GOOGLE®, HITACHI VANTARA®, or the like, such as may be provided at data centers operated by these entities.

[0015] Users are provided the flexibility to have access to different geographic regions with different storage configurations and capabilities. For example, a primary geographic region may have a local protection level that allows for higher throughput of write operations and read operations. A secondary geographic region may be configured primarily for receiving data replication for disaster recovery scenarios, and may have a higher protection level as throughput is not as large a concern at the secondary geographic region. Additionally, or alternatively, some examples may allow replication links to be configured so that the global storage class of the object written to a secondary geographic storage region is different from the global storage class of the original object.

[0016] For discussion purposes, some example implementations are described in the environment of one or more service computing devices in communication with a plurality of storage systems at different geographic locations for managing replication of data based on one or more specified global storage classes. However, implementations herein are not limited to the particular examples provided, and may be extended to other types of computing system architectures, other types of storage systems, other types of client configurations, other types of data, and so forth, as will be apparent to those of skill in the art in light of the disclosure herein.

[0017] FIG. 1 illustrates an example architecture of a system 100 able to store and replicate data using global storage classes according to some implementations. The system 100 may be a federated computer system spread across a number of different geographic regions, and includes one or more service computing devices 102 that are able to communicate with, or otherwise coupled to, a plurality of storage systems 104, such as a first storage system 104(1), a second storage system 104(2), . .., an Nth storage system 104(N), such as through one or more networks 106. The storage systems 104( 1 )- 104(N) may each include one or more computing devices (not shown in FIG. 1) that manage a plurality of designated storage devices separately from each of the other storage systems 104(l)-104(N). Additional details of the storage systems 104 are discussed below with respect to FIG. 5.5

[0018] Further, the service computing device(s) 102 may be able to communicate over the one or more networks 106 with one or more client computing devices 108. For example, the service computing device(s) 102 may include a gateway node, an access node, a server node, a management node, and / or any of various other types of service nodes that provide the client devices 108 with access to the storage systems 104 for enabling the client devices 108 to store and access data in the storage systems 104, as well as performing other management and control functions, as discussed additionally below.

[0019] In addition, one or more administrator computing devices 110 are able to communicate with each of the storage systems 104, such as through the one or more networks 106. For example, a first administrator computing device 110(1) may communicate with the first storage system at a first geographic region 111(1), a second administrator computing device 110(2) may communicate with the second storage system 104(2), which may be located at a second geographic region 111(2), and an Nth administrator computing device (not shown in FIG. 1) may communicate with the Nth storage system 104(N) located at an Nth geographic region 111(N). For example, each administrative device 111 may be used for configuring the respective storage system 104, such as for defining local storage class definitions 112 for the respective storage systems 104 at each respective geographic region 1 11. Thus, a first administrative user 114(1) associated with the first storage system 104(1) at the first geographic region 111(1) may define first local storage class definitions 112(1) for a plurality of global storage classes 117 via an administrative application 116 executed on the administrative device 110(1); a second administrative user 1 14(2) associated with the second storage system 104(2) at the second geographic region 111(2) may define second local storage class definitions 112(1) for the plurality of global storage classes 117 via the administrative application 116 executed on the administrative device 110(2); and an Nth administrator (not shown in FIG. 1) associated with the Nth storage system 104(N) at the Nth geographic region 111 (N) may define Nth local storage class definitions 112(N) for the plurality of global storage classes 117 via an administrator application executed on an Nth administrator device (not shown in FIG. 1).

[0020] In some examples, the service computing device(s) 102 may include one or more servers that may be embodied in any number of ways. For instance, the programs, other functional components, and at least a portion of data storage of the service computing device(s) 102 may be implemented on at least one server, such as in a cluster of servers, a server farm, a data center, a cloud-hosted computing service, and so forth, although other computer architectures may additionally or alternatively be used. As another example, the service computing device(s) 1026may be abstracted as, or otherwise treated as, a single node that is actually a cluster containing multiple service computing devices 102. Additional details of the service computing device(s) 102 are discussed below with respect to FIG. 4.

[0021] The one or more networks 106 may include any suitable network, including a wide area network, such as the Internet; a local area network (LAN), such as an intranet; a wireless network, such as a cellular network, a local wireless network, such as Wi-Fi, and / or short-range wireless communications, such as BLUETOOTH®; a wired network including Fibre Channel, fiber optics, Ethernet, or any other such network, a direct wired connection, or any combination thereof. Accordingly, the one or more networks 106 may include both wired and / or wireless communication technologies. Components used for such communications can depend at least in part upon the type of network, the environment selected, or both. Protocols for communicating over such networks are well known and will not be discussed herein in detail. As one example, such as in the case that the service computing device(s) 102 is co-located with the first storage system 104(1) in the first geographic region 111, such as in the same data center or the like, the network(s) 106 connecting the service computing device(s) 102 with the first storage system 104 may include a private network, such as a LAN, storage area network (SAN), Fibre Channel network, and so forth . Additionally, the network(s) 106 connecting the service computing device(s) 102 with the second storage system 104(2) through the Nth storage system 104(N) may be a public network that may include the Internet in some cases, or a combination of public and private networks. Implementations herein are not limited to any particular type of network as the one or more networks 106.

[0022] The service computing device(s) 102 may be configured to provide storage and data management services to the client device(s) 108. In some examples, the client devices 108 may be server-type computing devices or other high-performance computing devices that execute a client application 118 that stores and / or retrieves data, such as data objects 120, or the like on the storage systems 104. For example, the client application 118 may be an enterprise level application that has high input and output requirements for storing and / or retrieving data. Alternatively, in other examples, the client devices 108 may be any type of user computing device such as a desktop, laptop, tablet computing device, mobile device, smart phone, wearable device, terminal, and / or any other type of computing device able to send data over a network. In the latter case, users (not shown in FIG. 1) may be associated with client devices 108 such as through a respective user account, user login credentials, or the like. Furthermore, the client device(s) 108 may be configured to communicate with the service computing device(s) 1027through the one or more networks 106, through separate networks, or through any other suitable type of communication connection. Numerous other variations will be apparent to those of skill in the art having the benefit of the disclosure herein.

[0023] The client application 118 on the client device 108 may communicate with a storage management program 122 executable on the service computing device(s) 102, such as for sending a data object 120 for storage and replication on the storage systems 104 and / or for receiving a stored data object from the storage system(s) 104 through a data instruction. Examples of data instructions include a write operation, read operation, delete operation, or the like. The client application 118 may include any type of application having communication functionality enabling communication over the one or more networks 106 with the storage management program 122 or other application(s) on the service computing device(s) 102. Accordingly, the service computing device(s) 102 may provide storage services for the client device(s) 108, such as by acting as a storage gateway, or the like, as mentioned above.

[0024] The administrative device 110 may be any suitable type of computing device such as a desktop, laptop, tablet computing device, mobile device, smart phone, wearable device, terminal, and / or any other type of computing device able to send data over a network. An administrative user 1 14 may be associated with the administrative device 1 10, such as through a respective administrator account, administrator login credentials, or the like. Furthermore, the administrative device 110 may be able to communicate with the service computing device(s) 102 and / or the storage systems 104 through the one or more networks 106, through separate networks, or through any other suitable type of communication connection.

[0025] Each administrative device 110 may include a respective instance of the administrative application 116 that may execute on the respective administrative device 110, such as for communicating with the storage management program 122 on the service computing device(s) 102 and / or for communicating with a storage program 126 executable on the storage systems 104. For example, the administrative user 114 may communicate with the storage program 126, such as for setting the local storage class definitions 112 for each storage system 104 for each geographic region 111, as discussed above. In some cases, the administrative application 116 may include a browser or may operate through a browser, while in other cases, the administrative application 116 may include any other type of application having communication functionality enabling communication with the storage program 126 or other applications on the service computing device(s) 102 or the storage systems 104 over the one or more networks 106.8

[0026] Each storage system 104(1)- 104(N) may execute an instance of the storage program 126(1)-126(N), respectively, for managing storage of respective data objects at the respective storage systems 104(l)-104(N). For instance, the storage program 126 may receive a data object 120 from the storage management program 122 at the service computing device(s) 102, may store the data object 120 on one or more storage devices at the storage system 104, and may retrieve and send requested data to the storage management program 122, such as in response to a client read request, or the like. The storage program 126 may also provide information to the storage management program 122, such as performance information, capacity usage information, and so forth for the respective storage devices managed by the particular storage program 126 on a particular one of the storage systems 104.

[0027] The service computing device(s) 102 may execute the storage management program 122, which may provide access to the storage systems 104(l)-104(N). For example, the service computing device 102 may receive a data object 120 from a client device 108 for storage at the first storage system 104(1) according to a specified global storage class 117, which may be specified by the client application 118 or by the storage management program 122. The service computing device 102 may send the data object 120 to the first storage system 104(1) for storage according to the local storage class definition 112 corresponding to the specified global storage class 117. In this example, suppose that the local storage class definition 112 indicates that the data object 120 should be stored in a first storage type 128(1) as data object 130(1) along with one or more copies of the data object 130(2). For instance, as discussed below, the copies 130(2) may include erasure coded parity data rather than complete copies of the data object 130(1). As one example, the first storage type 128(1) may be a fast response type of storage that provides the client application 118 quick access to the stored data such as the stored data object 130(1).

[0028] In addition, the storage management program 122 may include replication logic 132 that may cause the storage management program 122 to asynchronously replicate the data object 120 to one or more other storage systems 104 located at different geographic regions 111, such as the second storage system 104(2) located at the second geographic region 111(2) and / or the Nth storage system 104(N) located at the Nth geographic region 111(N). For example, suppose that the service computing device sends the replicated data object 134 to the second storage system along with an indication of the global storage class 117 specified for the replicated data object 134. Upon receipt of the replicated data object 134, the storage program 126(2) at the second storage system 104(2) may store the replicated data object 134 according to the second local storage class definitions 112(2).9

[0029] In this example, suppose that the second local storage class definitions 112(2) for the specified global storage class 117 include storage of the replicated data object 134 as data object 136(1) stored in a second storage type 128(2), along with a copy of the data object 136(2) also stored in the second storage type 128(2). Additionally, suppose that the second local storage class definitions 112 for the specified global storage class 117 also specify storage of another copy of the data object 136(3) and a third storage type 128(3). As mentioned above, in some examples, the copies of the data object 136(2) and / or 136(3) may include erasure coded parity data rather than a complete duplicate copy of the data of the entire data object 136(1).

[0030] Furthermore, while the replication logic 132 is illustrated in this example as being included with the storage management program 122, in other examples, the replication logic 132 may be a program that is separate from the storage management program 122. In still other examples, the replication logic 132 may be included in the storage program 126 executed on the storage system 104, or may be otherwise executed by the storage system 104, rather than by the service computing device(s) 102. Numerous other variations will be apparent to those of skill in the art having the benefit of the disclosure herein.

[0031] FIG. 2 illustrates an example 200 of how different local settings may be applied for storing a data object according to the same global storage class at different geographic regions according to some implementations. In FIG. 2, as a partial continuation of the example discussed above with respect to FIG. 1, the first storage system 104(1) at the first geographic region 111(1) stores the data object 130 according the specified global storage class 117 in accordance with how the global storage class is defined by the first local storage class definitions 112(1). In this example, suppose that the first local storage class definitions 112(1) for the specified global storage class 117 include using an erasure coding arrangement for providing a level of protection for the stored data object 130 in which one erasure coded parity block is generated for every two data blocks of the data object. For instance the erasure coding arrangement may provide the equivalent to storing the data object 130(1) and the copy of the data object 130(2).

[0032] In this example, suppose that, based on the first local storage class definitions 112(1), the first storage system 104(1) divides the data object 120 into six data blocks namely Al, A2, Bl, B2, Cl, and C2. Furthermore, suppose that the first storage system 104(1) calculates a first parity block AP for data blocks Al and A2, a second parity block BP for data blocks Bl and B2, and a third parity block CP for data blocks Cl and C2. Additionally, suppose that the first storage system 104(1) stores the first parity block AP with data blocks Bl and Cl on a first storage device 202(1); stores the second parity block BP with data blocks Al and C2 on a10second storage device 202(2); and stores the third parity block CP with data blocks A2 and B2 on a third storage device 202(3). Accordingly the configuration in the first storage system allows for any single one of the storage devices 202(1), 202(2), or 202(3) to fail while enabling recovery from the other two storage devices 202 of any data that may have been lost due to failure of one of the storage devices 202.

[0033] As another example, suppose that the second storage system also stores the replicated data object 136 according to the specified global storage class 117 as defined according to the second local storage class definitions 112(2). In this example, suppose that the second local storage class definitions 112(2) specify that storing the replicated object 136 according to the global storage class 117 includes storing the replicated data object 136 using an erasure coding protection level that includes two parity blocks for every three data blocks. Accordingly, in this example, the replicated data object 136 is divided into three data blocks namely block A, block B, and block C. Furthermore, the storage system 104(2) calculates a first parity block for the three data blocks and a second parity block for the three data blocks. The second storage system stores data block A in a first storage device 204(1), stores data block B in a second storage device 204(2), stores data block C in a third storage device 204(3), stores the first parity block in a fourth storage device 204(4), and stores the second parity block in a fifth storage device 204(5). In this configuration, the second storage system 104(2) is able to recover the entire data object 136 even if any two of the storage devices 204(1) through 204(5) fail.

[0034] Erasure coding techniques are well-known in the art and details of encoding and decoding particular parity blocks are therefore not described herein. Furthermore, while two different erasure coding techniques have been described as examples of different local storage class definitions 112 in the illustrated example, numerous other variations in local storage class definitions, other storage parameters that may be locally defined, other storage techniques, and the like, that may be different between the different geographic regions will be apparent to those of skill in the art having the benefit of the disclosure herein. For instance, as another example, the first local storage class definitions 112(1) for the specified global storage class 117 may include that the data object 130 be stored on fast storage devices (e.g., the first storage type 128(1)) in the first storage system 104(1) to provide high availability of the data to the client devices. On the other hand, the second local storage class definitions 112(2) for the specified global storage class 117 may include that the replicated data object 136 and additional copies of the replicated data object be stored on lower performance storage devices (e.g., the second11storage type 128(2) and the third storage type 128(3)) to provide multiple backup copies for ensuring redundancy and disaster recovery.

[0035] FIG. 3 is a flow diagram illustrating an example process 300 for storing and replicating data based on a global storage class according to some implementations. The process is illustrated as a collection of blocks in a logical flow diagram, which represents a sequence of operations, some or all of which may be implemented in hardware, software or a combination thereof. In the context of software, the blocks may represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, program the processors to perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures and the like that perform particular functions or implement particular data types. The order in which the blocks are described should not be construed as a limitation. Any number of the described blocks can be combined in any order and / or in parallel to implement the process, or alternative processes, and not all of the blocks need be executed. For discussion purposes, the process is described with reference to the environments, frameworks, and systems described in the examples herein, although the process may be implemented in a wide variety of other environments, frameworks, and systems.

[0036] In the example of FIG. 3, the process 300 may be performed at least in part by the storage management program 122 executing on the service computing device 102, and / or by the storage program 126 executing on a computing device of a storage system 104, and / or by another computing device executing storage and replication logic.

[0037] At 302, the computing device may receive a data object for storage and an indication of a global storage class for storing the object. For example, the global storage class may include an indication of at least one storage parameter with which the data object is to be stored. In some examples, the computing device may receive the data object from a client device executing a client application.

[0038] At 304, the computing device may cause the data object to be stored according to a first local storage class definition defined for the indicated global storage class at a first storage system located at a first geographic region corresponding to a first geographic location. For example, the first local storage class definition may be defined for the indicated global storage class at the first storage system by a first administrative user having access to the first storage system.12

[0039] At 306, the computing device may cause the data object to be stored according to a second local storage class definition defined for the indicated global storage class at a second storage system located at a second geographic region corresponding to a second geographic location. For instance, the computing device may execute replication logic that configures the computing device to replicate the data object asynchronously to the second storage system and provide an indication of the global storage class to the second storage system. The second local storage class definition may be defined for the indicated global storage class at the second storage system by a second administrative user having access to the second storage system. For example, the second local storage class definition may differ from the first local storage class definition based at least on a difference in the at least one storage parameter. For instance, the difference in the at least one storage parameter may include at least one of: a difference in a storage protection level for the stored data object, or a difference in a storage performance level for the stored data object. Additionally, the first local storage class definition may be defined for the indicated global storage class based on at least one of a hardware configuration of the first storage system or software capabilities of the first storage system, and the second local storage class definition may differ from the first local storage class definition based at least in part on a different hardware configuration and / or different software capabilities at the second storage system. In some examples, the first storage system stores the data object according to a first erasure coding configuration and the second storage system stores the data object according to a second erasure coding configuration that is different from the first erasure coding configuration.

[0040] At 308, the computing device may receive a request to access the data object from the client device.

[0041] At 310, the computing device may retrieve the data object from the first storage system and provide the data object to the client device. For example, the difference in the at least one storage parameter may be a difference in a storage performance level, and the first local storage class definition may include a first performance level that allows for a higher throughput of data writes and / or reads than a second performance level defined for the second local storage class definition for the indicated global storage class. Consequently, the computing device may access the first storage system to retrieve the data object due to the higher performance throughput.

[0042] At 312, following an occurrence that renders the data object unavailable at the first storage system, the computing device may retrieve the data object from the second storage system. For example, the difference in the at least one storage parameter may include a difference in a storage protection level, and the first local storage class definition may include a 13first storage protection level having a lower degree of redundancy than a second storage protection level defined for the second local storage class definition for the indicated global storage class. For example, the second local storage class definition may configure the second storage system to provide disaster recovery and redundancy for the stored data object. Accordingly, the second geographic location may be remote from the first geographic location by at least one of: 10 miles, 50 miles, 100 miles, 500 miles, or 1000 miles, and / or may be located in a different country or on a different power grid.

[0043] FIG. 4 illustrates select example components of the service computing device(s) 102 that may be used to implement at least some of the functionality of the systems described herein. The service computing device(s) 102 may include one or more servers or other types of computing devices that may be embodied in any number of ways. For instance, in the case of a server, the programs, other functional components, and data may be implemented on a single server, a cluster of servers, a server farm or data center, a cloud-hosted computing service, and so forth, although other computer architectures may additionally or alternatively be used. Multiple service computing device(s) 102 may be located together or separately, and organized, for example, as virtual servers, server banks, and / or server farms. The described functionality may be provided by the servers of a single entity or enterprise, or may be provided by the servers and / or services of multiple different entities or enterprises.

[0044] In the illustrated example, the service computing device(s) 102 includes, or may have associated therewith, one or more processors 402, one or more computer-readable media 404, and one or more communication interfaces 406. Each processor 402 may be a single processing unit or a number of processing units, and may include single or multiple computing units, or multiple processing cores. The processor(s) 402 can be implemented as one or more central processing units, microprocessors, microcomputers, microcontrollers, digital signal processors, system-on-chip processors, graphics processing units, artificial intelligence processing units, embedded processors, state machines, logic circuitries, and / or any devices that manipulate signals based on operational instructions. As one example, the processor(s) 402 may include one or more hardware processors and / or logic circuits of any suitable type specifically programmed or configured to execute the algorithms and processes described herein. The processor(s) 402 may be configured to fetch and execute computer-readable instructions stored in the computer- readable media 404, which may program the processor(s) 402 to perform the functions described herein.14

[0045] The computer-readable media 404 may include volatile and nonvolatile memory and / or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. For example, the computer-readable media 404 may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, optical storage, solid state storage, magnetic tape, magnetic disk storage, storage arrays, directly attached storage, network attached storage, storage area networks, cloud storage, combinations thereof, or any other medium that can be used to store the desired information and that can be accessed by a computing device. Depending on the configuration of the service computing device(s) 102, the computer-readable media 404 may be a tangible non-transitory medium to the extent that, when mentioned, non- transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and / or signals per se. In some cases, the computer-readable media 404 may be at the same location as the service computing device 102, while in other examples, the computer-readable media 404 may be partially remote from the service computing device 102. For instance, in some cases, the computer-readable media 404 may include a portion of storage in the storage system(s) 104 discussed above with respect to FIG. 1.

[0046] The computer-readable media 404 may be used to store any number of functional components that are executable by the processor(s) 402. In many implementations, these functional components comprise instructions or programs that are executable by the processor(s) 402 and that, when executed, specifically program the processor(s) 402 to perform the actions attributed herein to the service computing device 102. Functional components stored in the computer-readable media 404 may include the storage management program 122, which may include the replication logic 132 in some examples, and each of which may include one or more computer programs, applications, executable code, or portions thereof. Further, while these programs are illustrated together in this example, during use, some or all of these programs may be executed on separate service computing device(s) 102.

[0047] In addition, the computer-readable media 404 may store data, data structures, and other information used for performing the functions and services described herein. For example, the computer-readable media 404 may store a metadata database 408 containing metadata 410 that may be maintained by the service computing device 102 such as for retrieving stored data objects from one or more of the storage systems 104, such as in response to a request from the client application or the like. In addition, the service computing device 102 may include a global storage class data structure 412 that may list the global storage classes 117 currently active in15the system 100, along with the minimum requirements for each global storage class 117. Further, while these data structures and programs are illustrated together in this example, during use, some or all of these data structures and / or programs may be stored on separate service computing device(s) 102. The service computing device 102 may also include or maintain other functional components and data, which may include programs, drivers, etc., and the data used or generated by the functional components. Further, the service computing device 102 may include many other logical, programmatic, and physical components, of which those described above are merely examples that are related to the discussion herein.

[0048] The one or more communication interfaces 406 may include one or more software and hardware components for enabling communication with various other devices, such as over the one or more network(s) 106. For example, the communication interface(s) 406 may enable communication through one or more of a LAN, the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi) and wired networks (e.g., Fibre Channel, fiber optic, Ethernet), direct connections, as well as close-range communications such as BLUETOOTH®, and the like, as additionally enumerated elsewhere herein.

[0049] FIG. 5 illustrates select components of an example configuration of a storage system 104 according to some implementations. The storage system 104 may include one or more storage computing devices 502, which may include one or more servers or any other suitable computing device, such as any of the examples discussed above with respect to the service computing device 102. The storage computing device(s) 502 may each include one or more processors 504, one or more computer-readable media 506, and one or more communication interfaces 508. For example, the processor(s) 504 may correspond to any of the examples discussed above with respect to the processors 402, the computer-readable media 506 may correspond to any of the examples discussed above with respect to the computer-readable media 404, and the communication interface(s) 508 may correspond to any of the examples discussed above with respect to the communication interfaces 406.

[0050] In addition, the computer-readable media 506 may store the storage program 126, discussed above, as a functional component executed by the one or more processors 504 for managing the storage of the data objects 509 on a storage 510 associated with the storage system 104. Further, in some examples, the storage program 126 may include the replication logic 132, which may be executed by the storage computing device 502 for replicating stored objects to one or more other storage systems 104 located at other geographic regions.16

[0051] In addition, the computer-readable media 506 may store data and data structures used by the storage program 126 such as a local storage class definitions data structure 511 that includes the local storage class definitions 112 for the particular storage system 104. Additionally, in some examples, the computer-readable media 506 may store a global storage class data structure 514 that may maintain the global storage classes 117 and associated minimum requirements for each global storage class 117.

[0052] The storage 510 may include one or more controllers 512 associated with the storage 150 for storing the data objects 509 on one or more arrays, trays, racks, extent groups, or other types of configurations of storage devices 516. For instance, the controller 152 may control the storage devices 516, such as for configuring the storage devices 516 into the first type of storage 128(1) having first storage devices 516(1) that are higher performance, and the second type of storage 128(2) having second storage devices 516(2) that are lower performance than the first storage devices 516(1). Further, the controller may be configured to store the data objects 509 with various levels of protection based on the local storage class definitions 112 for various global storage classes 117, such as in various erasure coded protection configurations, or any of various other configurations, such as a RAID configuration, JBOD configuration, or the like, and / or for presenting storage extents, logical units, logical volumes, or the like, based on the storage devices 516 to the storage program 126, and for managing the data objects 130 stored on the underlying physical storage devices 516. The storage devices 516 may include any type of storage device, such as solid state drives, hard disk drives, optical drives, magnetic tape, combinations thereof, and so forth.

[0053] In some examples, the client device(s) 108 and / or the administrator device(s) 110 may have a hardware configuration and hardware elements similar to those discussed above for the service computing device 102. However, the client device(s) 108 and / or the administrator device(s) 110 may have functional components and data that are different from those of the service computing device 102.

[0054] The example processes described herein are only examples of processes provided for discussion purposes. Numerous other variations will be apparent to those of skill in the art in light of the disclosure herein. Further, while the disclosure herein sets forth several examples of suitable frameworks, architectures and environments for executing the processes, implementations herein are not limited to the particular examples shown and discussed. Furthermore, this disclosure provides various example implementations, as described and as illustrated in the drawings. However, this disclosure is not limited to the implementations17described and illustrated herein, but can extend to other implementations, as would be known or as would become known to those skilled in the art.

[0055] Various instructions, processes, and techniques described herein may be considered in the general context of computer-executable instructions, such as programs, applications, executable code, program modules, and the like, stored on computer-readable media, and executed by the processor(s) herein. Generally, programs, applications, executable code, program modules, include routines, executable computer programs, programming objects, executable components, data structures, and so forth, for performing particular tasks or implementing particular abstract data types. These programs, applications, executable code, program modules, and the like, may be executed as native code or may be downloaded and executed, such as in a virtual machine or other just-in-time compilation execution environment. Typically, the functionality of the programs, applications, executable code, program modules, and the like may be combined or distributed as desired in various implementations. An implementation of these programs, applications, executable code, program modules, and the like may be stored on computer storage media and / or transmitted across some form of communication media.

[0056] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claims.18

Claims

CLAIMS1. A method comprising: receiving, by a computing device, a data object for storage and an indication of a global storage class for storing the object, wherein the global storage class includes an indication of at least one storage parameter with which the data object is to be stored; causing the data object to be stored according to a first local storage class definition defined for the indicated global storage class at a first storage system located at a first geographic region corresponding to a first geographic location; and causing the data object to be stored according to a second local storage class definition defined for the indicated global storage class at a second storage system located at a second geographic region corresponding to a second geographic location, the second local storage class definition differing from the first local storage class definition based at least on a difference in the at least one storage parameter.

2. The method as recited in claim 1, wherein the difference in the at least one storage parameter includes at least one of: a difference in a storage protection level for the stored data object, or a difference in a storage performance level for the stored data object.

3. The method as recited in claim 1, wherein the difference in the at least one storage parameter is a difference in a storage performance level, and the first local storage class definition includes a first performance level that allows for a higher throughput of data writes and / or reads than a second performance level defined for the second local storage class definition for the indicated global storage class.

4. The method as recited in claim 1 , wherein the difference in the at least one storage parameter is a difference in a storage protection level, and the first local storage class definition includes a first storage protection level having a lower degree of redundancy than a second storage protection level defined for the second local storage class definition for the indicated global storage class.

5. The method as recited in claim 1, wherein: the first local storage class definition is defined for the indicated global storage class based on at least one of a hardware configuration of the first storage system or software capabilities of the first storage system, and the second local storage class definition differs from the first local storage class definition based at least in part on a different hardware configuration and / or different software capabilities at the second storage system.

6. The method as recited in claim 1, wherein: causing the data object to be stored according to the first local storage class definition defined for the indicated global storage class at the first storage system includes storing the data object according to a first erasure coding configuration; and causing the data object to be stored according to the second local storage class definition defined for the indicated global storage class at the second storage system includes storing the data object according to a second erasure coding configuration that is different from the first erasure coding configuration.

7. The method as recited in claim 1, wherein: the first local storage class definition is defined for the indicated global storage class at the first storage system by a first administrative user having access to the first storage system, and the second local storage class definition is defined for the indicated global storage class at the second storage system by a second administrative user having access to the second storage system.

8. The method as recited in claim 1, wherein the computing device executes replication logic that configures the computing device to replicate the data object asynchronously to the second storage system and provide an indication of the global storage class to the second storage system.

9. The method as recited in claim 1, wherein the second geographic location is remote from the first geographic location by at least one of: 10 miles, 50 miles, 100 miles, 500 miles, or 1000 miles.

10. The method as recited in claim 1, wherein the second geographic location is remote from the first geographic location by at least one of: being located in a different country, or being located on a different power grid.

11. The method as recited in claim 1, wherein the computing device is in communication with a client device for receiving the data object from an application executing on the client device.

12. A system comprising: a computing device configured by executable instructions to perform operations comprising: receiving a data object for storage and an indication of a global storage class for storing the object, wherein the global storage class includes an indication of at least one storage parameter with which the data object is to be stored; causing the data object to be stored according to a first local storage class definition defined for the indicated global storage class at a first storage system located at a first geographic region corresponding to a first geographic location; and causing the data object to be stored according to a second local storage class definition defined for the indicated global storage class at a second storage system located at a second geographic region corresponding to a second geographic location, the second local storage class definition differing from the first local storage class definition based at least on a difference in the at least one storage parameter.

13. The system as recited in claim 12, wherein the difference in the at least one storage parameter includes at least one of: a difference in a storage protection level for the stored data object, or a difference in a storage performance level for the stored data object.

14. A non- transitory computer-readable medium storing instructions executable by one or more processors to cause the one or more processors to perform operations comprising: receiving a data object for storage and an indication of a global storage class for storing the object, wherein the global storage class includes an indication of at least one storage parameter with which the data object is to be stored; causing the data object to be stored according to a first local storage class definition defined for the indicated global storage class at a first storage system located at a first geographic region corresponding to a first geographic location; and causing the data object to be stored according to a second local storage class definition defined for the indicated global storage class at a second storage system located at a second geographic region corresponding to a second geographic location, the second local storage class definition differing from the first local storage class definition based at least on a difference in the at least one storage parameter.

15. The non- transitory computer-readable medium as recited in claim 14, wherein the difference in the at least one storage parameter includes at least one of: a difference in a storage protection level for the stored data object, or a difference in a storage performance level for the stored data object.