Currently, many pay-as-you-grow cloud service providers and enterprises use single layer file systems, such as block storage systems, block and file storage systems, and high-performance file systems. Oftentimes, the single layer file systems use Layer-2 Ethernet connectivity for security and performance. The cloud service providers and enterprises generally implement single layer file systems using multiple storage silos configured for multiple workloads such that each storage silo is configured for a different storage configuration. For instance, a first storage silo may be configured in a stripe redundant array of independent disks (“RAID”) 10 level while a second storage silo is configured in a mirror RAID 2 level. The different storage configurations enable the cloud service provider to provide different storage configurations based on the requirements or desires of subscribing clients. The different storage configurations enable an enterprise to select the appropriate storage configuration based on requirements or needs for data storage.
Generally, today's cloud service providers and enterprises assign a storage configuration to one or more storage system chassis. Typically, each storage device or server within the chassis is assigned a unique rung number or identifier. Thus, each of the storage silos (or a management server of the storage silos) includes a list or data structure of the unique rung numbers or identifiers that are configured with the respective storage configuration. Under this single layer configuration, each storage silo is assigned one or more chassis having storage devices that are specifically configured for that storage silo. While this configuration is acceptable under some circumstances, the single layer system provides little scalability and/or flexibility. For example, adding new storage devices to a storage silo requires physically configuring a new chassis or portions of the current chassis and readdressing or renumbering the rung numbers or identifiers. Further, migrating data and the underlying storage configuration to another chassis requires updating the data structure with the identifiers or rung numbers of the storage devices on the new chassis. In another scenario, the readdressing of storage devices within a chassis may result in downtime, lost data, overwritten data, or the reduction in scalability and reactivity based on client usage.
The present disclosure relates in general to a method, apparatus, and system for providing multilayered storage and, in particular, to a method, apparatus, and system that use at least a two layer storage structure that leverages Layer-2 Ethernet for connectivity and addressing. The example method, apparatus, and system disclosed herein address at least some of the issues discussed above in the Background section regarding single layer file systems by using a virtualized multilayer file system that enables chassis and storage device addresses to be decoupled from the storage service. In particular, the example method, apparatus, and system disclosed herein create one or more virtual storage nodes (“VSNs”) at a first layer and one or more data services nodes (“DSNs”) at a second layer. The DSNs and VSNs are provisioned in conjunction with each other to provide at least a two-layer file system that enables additional physical storage devices or drives to be added or storage to be migrated without renumbering or readdressing the chassis or physical devices/drives.
As disclosed below in more detail, DSNs are files, blocks, etc. that are partitioned into pools (e.g., service pools) of shared configurations (i.e., DSN service configurations). Each service pool has a DSN service configuration that specifies how data is stored within (and/or among) one or more logical volumes of the VSNs. The DSNs include a file system and volume manager to provide client access to data stored at the VSNs while hiding the existence of the VSNs and the associated logical volumes. Instead, the DSNs provide clients data access that appears similar to single layer file systems.
VSNs are virtualized storage networks that are backed or hosted by physical data storage devices and/or drives. Each VSN includes one or more storage pools that are partitioned into slices (e.g., logical units (“LUs”) or logical unit numbers (“LUNs”)) that serve as the logical volumes at the DSN. The storage pools are each provisioned based on a storage configuration, which specifies how data is to be stored on at least a portion of the hosting physical storage device. Generally, each storage pool within a VSN is assigned an identifier (e.g., a shelf identifier), with each LU being individually addressable. A logical volume is assigned to a DSN by designating or otherwise assigning the shelf identifier of the storage pool and one or more underlying LUs to a particular service pool within the DSN.
This two layer configuration accordingly decouples the shelf identifier and LU from a physical chassis, physical storage device, and/or physical storage pool because the addressing is virtualized based on the configuration of the service pools of the DSN and the storage pools of the VSN. The LU within the VSN is accordingly a virtual representation of the underlying assigned or provisioned portion of a physical chassis, physical storage device, and/or physical storage pool. Decoupling the addressing from physical devices enables additional physical storage devices to be added without readdressing, thereby enabling a cloud provider or enterprise to more easily allocate or select the appropriate capacity for any given service level. Decoupling also enables VSN storage pools to be easily migrated or load balanced among physical storage devices by moving the desired pools (or LUs) without having to readdress the pools (or LUs) based on the new host device. In other words, the shelf identifier and LUs move with the data instead of being tied to the physical device.
Reference is made throughout to storage pools and service pools. In this disclosure, a storage pool is a virtualized or logical portion of a physical storage device that is configured to have a specific storage configuration. In some embodiments, one physical storage device may include, host, or otherwise be partitioned into multiple different storage pools. In other embodiments, a storage pool may be provisioned or hosted by two or more physical storage devices such that the storage pool is physically distributed among separate devices or drives. In these other embodiments, the physical storage devices may be of the same type of physical storage device (e.g., a solid state drive (“SSD”)), a serial attached small computer system interface (“SCSI”) (“SAS”) drive, a near-line (“NL”)-SAS drive, a serial AT attachment (“ATA”) (“SATA”) drive, a Dynamic random-access memory (“DRAM”) drive, a synchronous dynamic random-access memory (“SDRAM” drive, etc.).
The specific storage configuration assigned to each storage pool specifies, for example, a RAID virtualization technique for storing data. As discussed below, any type of RAID level may be used including, for example, RAID0, RAID1, RAID2, RAID6, RAID10, RAID01, etc. The physical storage device type selected in conjunction with the data storage virtualization technique accordingly form a storage pool that uses a specific storage configuration.
In contrast to a storage pool, a service pool is a virtualized combination of logical slices or volumes from different storage pools of one or more VSNs. Each service pool is associated with or configured based on a data services configuration (e.g., service pool properties) that specifies how the service pool is to be constructed. The data services configuration may also specify how data is to be stored among the one or more logical slices or volumes (e.g., LUs). The data services configuration may also specify a file system type for managing data storage, client access information, and/or any other information or metadata that may be specified within a service-level agreement (“SLA”).
The example DSNs and VSNs are disclosed as operating using a Layer-2 Ethernet communication medium that incorporates ATA over Ethernet (“AoE”) as the network protocol for communication and block addressing. However, it should be appreciated that the DSN and/or the VSN may also be implemented using other protocols within Layer-2 including, for example, Address Resolution Protocol (“ARP”), Synchronous Data Link Control (“SDLC”), etc. Further, the DSN and the VSN may further be implemented using protocols of other layers, including, for example, Internet Protocol (“IP”) at the network layer, Transmission Control Protocol (“TCP”) at the transport layer, etc.
The example DSN 102 includes service pools 108 that are separately configured according to respective data services characteristics. In this embodiment, the DSN 102a includes the service pools 108a, 108b, and 108c and the DSN 102b includes the service pool 108d. In other examples, either of the DSNs 102 may include additional or fewer service pools. The example DSNs 102 may be implemented on any type of server (e.g., a network file server), processor, etc. configured to manage a network file system.
The example service pools 108 are configured on the DSNs 102 via a configuration manager 110. In some embodiments, the configuration manager 110 may be included within the same server or device that hosts the DSNs 102. Alternatively, the configuration manager 110 may separate from and/or remotely located from the DSNs 102. The example configuration manager 110 is configured to receive, for example, a SLA from clients (e.g., clients associated with the client devices 106) and accordingly provision or create the service pools 108. In other embodiments, the configuration manager 110 may create the service pools 108 before any SLA is received. The created service pools 108 may be created to have popular or widely desired storage properties. The configuration manager 110 assigns clients to portions of requested service pools 108 responsive to the clients subscribing to a service provided by the configuration manager 110.
The example client devices 106 include computers, processors, laptops, smartphones, tablet computers, smart eyewear, smart watches, etc. that enable a client to read, write, subscribe, or otherwise access and manipulate data. In instances where the multiplayer file system environment 100 is implemented within a cloud computing service, the client devices 106 may be associated with different clients such that access to data is reserved only to client devices 106 authorized by the client. In instances where the multilayered file system environment 100 is implemented within an enterprise, the client devices 106 may be associated with individuals of the enterprise having varying levels of access to data. It should be appreciated that there is virtually no limitation as to the number of different clients that may be allowed access to the DSNs 102 and the VSNs 104.
In the illustrated example, the client devices 106 are communicatively coupled to the DSNs 102 via AoE 112. The DSNs 102 are configured to provide a network file system (“NFS”) 114 that is accessible to the client devices 106 via the AoE 112. Such a configuration provides security since only the client devices 106 that are part of the same local area network (“LAN”) or metropolitan area network (“MAN”) have access to the DSNs 102 via the AoE 112. In other words, the AoE 112 does not have an Internet Protocol (“IP”) address and is not accessibly by client devices outside of the local network. In instances where the DSNs 102 and the VSNs 104 are implemented within a cloud storage service, an access control device such as a network sever or a gateway may provide controlled access via Layer-2 to the DSNs 102 to enable client devices remote from the local network to access or store data. These client devices and/or network server may use, for example, a virtual LAN (“VLAN”) or other private secure tunnel to access the DSNs 102.
The example DSNs 102 are communicatively coupled to the VSNs 104 via the AoE 112b. The example AoE 112b may be part of the same or different network than the AoE 112 between the DSNs 102 and the client devices 106. The use of AoE 112b enables Ethernet addressing to be used between the service pools 108, storage pools 116, and individual portions of each of the storage pools (e.g., LUs). The use of AoE 112b also enables the communication of data between the DSN 102 and the VSN 104 through a secure LAN or other Ethernet-based network.
As illustrated in
For example, the storage pool 116a may be assigned a shelf identifier of 100, the storage pool 116b may be assigned a shelf identifier of 200, and the storage pool 116c may be assigned a shelf identifier of 300. Additionally, each of the storage pools 116 are partitioned into individually addressable identifiable portions that correspond to portions of the hosting physical storage device and/or drive allocated for that particular storage pool. The individually addressable identifiable portions are grouped into logical volumes that are assigned to one of the service pools 108 of the DSN 102a.
In the illustrated example of
It should be appreciated that in some embodiments individual LUs may be assigned to service pools 108 outside of logical volumes. For instance, the storage pool 116 may not be partitioned into logical volumes (or even have logical volumes), but instead partitioned only into the LUs. Such a configuration enables smaller and more customizable portions of storage space to be allocated.
Returning to
As shown in
It should be appreciated that a service pool may include logical volumes from the same service pool. For example, the service pool 108b includes the logical volumes 212 and 218 from the storage pool 116c. Such a configuration may be used to expand the storage responses of a service pool by simply adding or assigning another logical volume without renumbering or affecting already provisioned or provided logical volumes. In the example of
A benefit of the virtualization of the service pools 108 with the logical volumes 202 to 218 is that service pools may be constructed that incorporate storage systems with different storage configurations. For instance, the service pool 108 includes the logical volumes 202, 210, and 216 corresponding to respective storage pools 116a, 116b, and 116c. This enables the service pool 108a to use the different storage configurations as provided by the separate storage pools 116a, 116b, and 116c without having to implement entire dedicated storage pools only for the service pool 108a. Additionally, as storage service needs change, the configuration manager 110 may add logical volumes from other storage pools or remove logical volumes without affecting the other provisioned logical volumes. Such a configuration also enables relatively easy migration of data to other storage configurations by moving the logical volumes among the storage pools without changing the addressing used by the service pools.
As mentioned, the VSN 104 includes underlying physical storage devices 310 that are provisioned to host the storage pools 302 to 306. In the illustrated example, the physical storage devices 310 include a SATA drive 310a, a SAS drive 310b, an NL-SAS drive 310c, and an SSD drive 310d. Other embodiments may include additional types of physical storage devices and/or fewer types of physical storage devices. Further, while only one of each type of physical storage device 310 is shown, other examples can include a plurality of the same type of storage device or drive.
In the illustrated example of
As discussed above in conjunction with
The example VSN 104 of
As shown in
As shown in
Also shown in
The example DSN 102 of
The example DSN 102 further includes an AoE target 416 to provide a Layer-2 interface for the client devices 106. The AoE target 416 may also be configured to prevent multiple client devices 106 from accessing, overwriting, or otherwise interfering with each other. The AoE target 416 may further route incoming requests and/or data from the client devices 106 to the appropriate service pool 402 to 406, which is then routed to the appropriate LU.
The example DSN 102 also includes a NFS server 418 and file system and volume manager 420 configured to manage file systems used by the client devices 106. The NFS server 418 may host the file systems. The NFS server 418 may also host or operate the DSN 102. The example file system and volume manager 420 is configured to manage the provisioning and allocation of the service pools 402 to 406. The provisioning of the service pools 402 to 406 may include, for example, assignment of logical volumes and/or LUs. In particular, the file system and volume manager 420 may specify which LUs and/or logical volumes each of the service pools 402 to 406 may access or otherwise utilize. The use of the logical volumes enables additional LUs to be added to the service pools 402 to 406 by, for example, the file system and volume manager 420 without affecting the performance of already provisioned LUs or logical volumes.
The example procedure 500 of
The example configuration manager 110 next determines or identifies individually addressable LUs (within a logical volume) for the storage pool (block 506). As discussed above, the LUs within the storage pool are logical representations of the underlying devices 310. In some instances, the configuration manager 110 may select or assign the addresses for each of the LUs. The configuration manager 110 also determines a network configuration to enable, for example, a DSN or a Layer-2 Ethernet block storage target to access the LUs (block 508). The network configuration may include a switching or routing table from a DSN to the LUs on the physical storage devices. The configuration manager 110 then makes the newly provisioned storage pool available for one or more DSNs (block 510). The configuration manager 110 may also determine if additional storage pools for the VSN are to be created (block 512). Conditioned on determining additional storage pools are to be created, the procedure 500 returns to block 502 where the configuration manager 110 determines another storage configuration for another storage pool. However, conditioned on determining no additional storage pools are needed, the procedure 500 ends.
Turning to
The example configuration manager 110 also determines a logical volume (or a LU) for the service pool (block 606). Determining the logical volume includes identifying one more storage pools of a VSN that are to be used for the service pool. The configuration manager 110 selects or otherwise allocates a set of LUs of a logical volume within a VSN storage pool for the service pool (block 608). The configuration manager 110 also determines a network configuration to enable a Layer-2 Ethernet block storage initiator of the DSN to access the selected set of LUs (block 610). The network configuration may include, for example, provisioning the initiator of the DSN to access over a Lyer-2 communication medium the LUs logically located within the physical storage devices at the specified Layer-2 (or LU) address.
The example configuration manager 110 next determines if another storage pool is to be used for the service pool (block 612). If another storage pool is to be used, the example procedure 600 returns to block 608 where the configuration manager 110 selects another set of LUs of the other storage pool for the service pool. However, if no additional storage pools are needed, the example configuration manager 110 makes the service pool available to one or more clients (e.g., n+1 number of clients) (block 614). The configuration manager 110 also determines if another service pool is to be configured or provisioned for the DSN (block 616). Conditioned on determining the DSN is to include another service pool, the example procedure 600 returns to block 602 where the configuration manager 110 determines a data service configuration for the next service pool to be provisioned. The example procedure 600 may repeat steps 602 to 614 until, for example, n+1 number of service pools have been provisioned for the DSN. If no additional service pools are to be created, the example procedure 600 ends.
As mentioned above, data may be migrated between service pools of the same DSN or service pools of different DSNs. For example, data may be migrated from a first DSN to a second DSN that has more computing power or storage capacity. Data may also be migrated from a first DSN to a second DSN for load balancing when a service pool is operating at, for example, diminished efficiency and/or capacity. In an example embodiment, data may be migrated from the first service pool 108a of the DSN 102a to a new service pool of the DSN 102b. To migrate that data, the example configuration manager 110 of
As disclosed above, the VSN 104 of
The redistribution of LUs between the physical storage pools 702 associated with the storage pool 302 enables a provider to offer non-disruptive data storage services. For instance, a storage pool may be disruption free for changes to performance characteristics of a physical storage pool. In particular, a storage pool may be disruption free (for clients and other end users) during a data migration from an HDD pool 702a to an SSD pool 702b, as illustrated in
Returning to
At Event C, after the change deltas become relatively small, a cut-over operation is performed where the logical representation 710 of the LU 12 is taken offline and one last update is performed. At Event D, the Ethernet LU identifier is transferred from the logical representation 710 to the logical representation 712. At Event E, the logical representation 712 is placed online such that the virtual representation of the LU 12 within the logical volume 202 of the storage pool 302 instantly begins using the logical representation 712 of the LU 12 including the corresponding portions of the drive 310d.
It should be appreciated that the above described Events A to E may be repeated until all virtual representations of designated LUs have been transferred. In some embodiments, the Events A to E may operate simultaneously for different LUs to the same destination physical storage pool and/or different destination physical storage pools. Additionally, in some embodiments, the transfer of the logical representation 710 of the LU 12 may be across the SAN 708. Alternatively, in other embodiments, the transfer of the logical representation 710 of the LU 12 is performed locally between controllers of the physical storage pools 702 instead of through the SAN 708.
Similar to the example discussed in conjunction with
As discussed above in conjunction with
In contrast to
It should be appreciated that the decentralization of two-tier architecture 900 enables simplification of the functions performed by each of the tiers. For example, the VSN 104 may process a dynamic stripe (i.e., RAID0), which is backed by many physical storage nodes 704. This enables the VSN 104 to have relatively large storage pools and/or physical storage pools while eliminating the need for many storage pools and/or physical storage pools if many pools are not needed to differentiate classes of physical storage (e.g., SSD and HDD drives). The following sections describe offloading differences between the example two-tier architecture 900 and the known single tier ZFS architecture 1000.
In the known single tier ZFS architecture 1000 the storage node 1002 is configured to write data/metadata and perform all the RAID calculations for the storage pool 1004. As additional storage is added to the architecture 1000, the burden on the storage node 1002 becomes relatively high because significantly more calculations and writes have to be performed within a reasonable time period. In contrast, the VSN 104 of the example two-tier architecture 900 is configured to write data and metadata without parity information in a parallel round-robin operation across all available LUs within the storage pool 302. The physical storage node 704 is configured to write all the RAID parity information required by the drive 310 (or more generally the physical storage pool 702). The addition of storage to the two-tier architecture 900 does not become more burdensome for the VSN 104 because physical storage nodes 704 are also added to handle the additional RAID calculations.
When a device within the physical storage group 1008 fails in the known single tier ZFS architecture 1000 the entire storage pool 1004 is affected and may be taken offline. The chances of a failure to the storage pool 1004 become more likely as more drives are added to the physical storage group 1008 or the storage pool 1004. This is especially true if more drives fail during a rebuild, which may cause a re-silvering process at the storage pool 1004 to restart, thereby increasing the amount of time data is unavailable to a client.
In contrast, the VSN 104 of the example two-tier architecture 900 is configured to mitigate failures to underlying drives within the physical storage group 706. For instance, when an SSD or HDD fails in the physical storage group 706, the storage pool 302 is not affected because re-silvering occurs primarily within the physical storage node 704 of the physical storage pool 702 and/or the device 310. As can be appreciated, the addition of more physical storage nodes does not affect re-silvering on other physical storage nodes, thereby improving drive rebuild reliability.
In the known single tier ZFS architecture 1000 of
Deduplication of data means that only a single instance of each unique data block is stored in a storage system. A ZFS deduplication system may store references to the unique data blocks in memory. In the known single tier ZFS architecture 1000 the storage node 1002 is configured to perform all deduplication operations. As such, it is generally difficult to grow or increase capacity at the storage pool 1004 in a predictable manner. At a large scale, the storage node 1002 eventually runs out of available resources.
The two-tier architecture 900, in contrast, offloads the entire deduplication processing to the physical storage nodes 704. It should be appreciated that each physical storage node 704 has a record of storage parameters of the underlying physical storage group 706 because it is not possible to increase the node 704 beyond its fixed physical boundaries. The storage parameters include, for example, an amount of CPU, memory, and capacity of the physical storage group 706. Such a decentralized configuration enables additional physical storage nodes 704 to be added without affecting LU assignment within the storage pool 302. The addition of the nodes 704 (including physical storage groups) does not burden deduplication since each node is responsible for its own deduplication of the underlying physical storage group 706.
In the known single tier ZFS architecture 1000 of
Cache (read) and log (write) devices may only be added to the storage pool 1004 in the known single tier ZFS architecture 1000. In contrast to the single tier ZFS architecture 1000, the example two-tier architecture 900 enables cache and log devices to be added to both the storage pool 302 and the physical storage pool 702 (or devices 310). This decentralization of cache and log devices improves performance by keeping data cached and logged in proximity to the slowest component in the storage system, namely the HDDs and SSD drives within the physical storage group 706. This decentralized configuration also enables data to be cached in proximity to the VSN 104. As more physical storage pools 702 (and/or devices 310) with more cache and log devices are added to the storage pool 302, larger working sets may be cached, thereby improving overall system performance.
In the known single tier ZFS architecture 1000 of
An orchestration mechanism may be used between the VSN 104 and the physical storage node 704 to facilitate the consistency of the storage pool 302 during replication. The orchestration mechanism may be configured to ensure application integrity before replication begins. The orchestration mechanism may also enable replication to occur in parallel to multiple destination physical storage pools.
Generally, limitations in physical storage connectivity limit flexible pool migration in the known single tier ZFS architecture 1000. In contrast, the example two-tier architecture 900 enables the storage pool 302 to be migrated from a retired VSN (e.g., the VSN 104) to a new VSN (not shown) by just connecting the new VSN to the Ethernet SAN 708. Once the new VSN is connected, the storage pool 302 may be imported. Any cache or log devices local to the retired VSN 104 may be removed from the storage pool 302 before the migration and moved physically to the new VSN. Alternatively, new cache and log devices may be added to the new VSN. This decentralized migration may be automated by orchestration software.
It will be appreciated that all of the disclosed methods and procedures described herein can be implemented using one or more computer programs or components. These components may be provided as a series of computer instructions on any computer-readable medium, including RAM, ROM, flash memory, magnetic or optical disks, optical memory, or other storage media. The instructions may be configured to be executed by a processor, which when executing the series of computer instructions performs or facilitates the performance of all or part of the disclosed methods and procedures.
It should be understood that various changes and modifications to the example embodiments described herein will be apparent to those skilled in the art. Such changes and modifications can be made without departing from the spirit and scope of the present subject matter and without diminishing its intended advantages. It is therefore intended that such changes and modifications be covered by the appended claims.
The present application claims priority to and the benefit of U.S. Provisional Patent Application No. 62/007,191, filed on Jun. 3, 2014, the entirety of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62007191 | Jun 2014 | US |