Managing accesses to storage

A method is used in managing accesses to storage. An amount of data storage space in use by a mapped logical volume and RAID group characteristics of a storage pool used by the mapped logical volume are determined. Based on the amount and the RAID group characteristics, a report of storage resources corresponding to the mapped logical volume is produced. Based on the report, accesses to the mapped logical volume are controlled.

BACKGROUND

Technical Field

This application relates to managing accesses to storage.

Description of Related Art

A traditional storage array (herein also referred to as a “data storage system”, “disk storage array”, “disk array”, or simply “array”) is a collection of hard disk drives operating together logically as a unified storage device. Storage arrays are designed to store large quantities of data. Storage arrays typically include one or more storage array processors (SPs), for handling requests for allocation and input/output (I/O) requests. An SP is the controller for and primary interface to the storage array.

A storage array may be thought of as a system for managing a large amount of a resource, i.e., a large number of disk drives (also referred to as “disks” or “drives”). Management of the resource may include allocation of a portion of the resource in response to allocation requests. In the storage array example, portions of the storage array may be allocated to, i.e., exclusively used by, entities that request such allocation.

Data storage systems, such as disk drives, disk storage arrays, network storage devices, storage area networks, and the like, are called upon to store and manage a significant amount of data (e.g., gigabytes, terabytes, petabytes, etc.) that is written and read by many users. Storage arrays are typically used to provide storage space for a plurality of computer file systems, databases, applications, and the like. For this and other reasons, it is common for physical storage arrays to be logically partitioned into chunks of storage space, called logical units, or LUs. This allows a unified storage array to appear as a collection of separate file systems, network drives, and/or volumes.

Performance of a storage system can be characterized by the system's total capacity, response time, throughput, and/or various other metrics. The capacity of a storage system is the maximum total amount of data that can be stored on the system. The response time of a storage system is the amount of time required to read data from or write data to the storage system. The throughput of a storage system is a measure of the amount of data that can be transferred into or out of (i.e., written to or read from) the storage system over a given period of time.

The administrator of a storage array can desire to optimize the storage system in a manner that maximizes performance or balances cost vs. performance. In general, performance of a storage system can be constrained by both physical and temporal constraints. Examples of physical constraints include bus occupancy and availability, excessive disk arm movement, and uneven distribution of load across disks or across RAID groups. Examples of temporal constraints include bus bandwidth, bus speed, spindle rotational speed, serial versus parallel access to multiple read/write heads, and the size of data transfer buffers.

One factor that can limit the performance of a storage system is the performance of each individual storage device. For example, the read access time of a storage system including hard disk drives is constrained by the access time of the disk drive from which the data is being read. Read access time can be affected by physical characteristics of the disk drive, such as the number of revolutions per minute of the spindle: the faster the spin, the less time it takes for the sector being read to come around to the read/write head.

Furthermore, even if a disk-based storage system uses the fastest disks available, the performance of the storage system can be limited by the number of those disks that can be accessed at a time. In other words, performance of a storage system, whether it is an array of disks, tapes, flash drives, or other storage devices, can also be limited by system constraints, such the number of data transfer buses available in the system and the density of traffic on each bus.

SUMMARY OF THE INVENTION

A method is used in managing accesses to storage. An amount of data storage space in use by a mapped logical volume and RAID group characteristics of a storage pool used by the mapped logical volume are determined. Based on the amount and the RAID group characteristics, a report of storage resources corresponding to the mapped logical volume is produced. Based on the report, accesses to the mapped logical volume are controlled.

DETAILED DESCRIPTION OF EMBODIMENT(S)

Described below is a technique for use in managing accesses to storage. In at least one implementation, the technique may be used to help provide, among other things, a method for approximating the number of data drives in a thinly provisioned logical volume (LUN).

For example, a host side (also referred to as front end) software component on a storage array may use a fairness process to limit the number of requests to a LUN based on the number of physical data drives on the back end that provide backing storage for the LUN. This fairness process helps to prevent any one host initiator from overwhelming the back end of a storage array.

For a traditional (not thinly provisioned) LUN, the fairness process can rely simply on a mapping to the underlying RAID group for the LUN, which RAID group has a static number of drives.

By contrast, in an enhancement as described herein, a mapped LUN driver (MLU) presents to a host a virtual volume such as a thinly provisioned LUN that is backed by one or more RAID groups in a storage pool. The MLU assigns storage to the virtual volume in 1 GB slices. The slices that make up the virtual volume may come from multiple RAID groups making it less straightforward to determine how many physical data drives provide the backing storage. Also, a large virtual volume may have provisioned one or more slices on all available RAID groups, which means a large number of physical data drives provide the backing storage, while a small virtual volume may have all of its slices provisioned on only a single RAID group, which means a small number of physical data drives provide the backing storage. It is impractical or difficult to determine the location of all slices, and therefore to determine exactly how many physical data drives are used for backing storage by a particular virtual volume.

In at least some implementations in accordance with the current technique as described herein, as a result of the fairness process, the MLU reports the number of data drives used as backing storage for a virtual volume with the following formula:
# data drives=Min(sum of all data drives for all RAID groups in the storage pool, virtual volume size in slices)*(Default number of data drives in a RAID group in the storage pool).

In other words, the number of data drives is the smaller of:(1) the number of drives calculated to be in the storage pool overall; or(2) the virtual volume size in slices multiplied by the default number of drives in a RAID group in the storage pool.

Depending on the implementation, each slice may represent a fixed amount of data storage space, such as 1 GB, and/or the smallest number of drives in a RAID group in the storage pool may be used instead of the default number of drives in a RAID group in the storage pool.

In a system without the enhancement, the MLU may use a “one size fits all” approach to report the same number of data drives for every virtual volume regardless of storage pool or LUN size, and users may add more disks to a storage pool to spread the storage across as many backend drives as possible, but generally the static number can limit expected performance.

By contrast, in a system with the enhancement as described herein, use of the formula described above helps allow for large virtual volumes that may span all backend drives in a storage pool. This results in a large number of requests being allowed to be processed on that large virtual volume. At the same time a small virtual volume which cannot and does not employ as many backend drives reports a smaller number of physical data drives, thus properly limiting the number of requests received to that virtual volume.

Referring now toFIG. 1, shown is an example of an embodiment of a computer system that may be used in connection with performing the technique or techniques described herein. The computer system10includes one or more data storage systems12connected to host systems14a-14nthrough communication medium18. The system10also includes a management system16connected to one or more data storage systems12through communication medium20. In this embodiment of the computer system10, the management system16, and the N servers or hosts14a-14nmay access the data storage systems12, for example, in performing input/output (I/O) operations, data requests, and other operations. The communication medium18may be any one or more of a variety of networks or other type of communication connections as known to those skilled in the art. Each of the communication mediums18and20may be a network connection, bus, and/or other type of data link, such as hardwire or other connections known in the art. For example, the communication medium18may be the Internet, an intranet, network or other wireless or other hardwired connection(s) by which the host systems14a-14nmay access and communicate with the data storage system12, and may also communicate with other components (not shown) that may be included in the computer system10. In at least one embodiment, the communication medium20may be a LAN connection and the communication medium18may be an iSCSI or fibre channel connection.

It should be noted that the particular examples of the hardware and software that may be included in the data storage systems12are described herein in more detail, and may vary with each particular embodiment. Each of the host/server computers14a-14n, the management system16and data storage systems may all be located at the same physical site, or, alternatively, may also be located in different physical locations. In connection with communication mediums18and20, a variety of different communication protocols may be used such as SCSI, Fibre Channel, iSCSI, FCoE and the like. Some or all of the connections by which the hosts, management system, and data storage system may be connected to their respective communication medium may pass through other communication devices, such as a Connectrix or other switching equipment that may exist such as a phone line, a repeater, a multiplexer or even a satellite. In at least one embodiment, the hosts may communicate with the data storage systems over an iSCSI or fibre channel connection and the management system may communicate with the data storage systems over a separate network connection using TCP/IP. It should be noted that althoughFIG. 1illustrates communications between the hosts and data storage systems being over a first connection, and communications between the management system and the data storage systems being over a second different connection, an embodiment may also use the same connection. The particular type and number of connections may vary in accordance with particulars of each embodiment.

Each of the host/server computer systems may perform different types of data operations in accordance with different types of tasks. In the embodiment ofFIG. 1, any one of the host/server computers14a-14nmay issue a data request to the data storage systems12to perform a data operation. For example, an application executing on one of the host/server computers14a-14nmay perform a read or write operation resulting in one or more data requests to the data storage systems12.

The management system16may be used in connection with management of the data storage systems12. The management system16may include hardware and/or software components. The management system16may include one or more computer processors connected to one or more I/O devices such as, for example, a display or other output device, and an input device such as, for example, a keyboard, mouse, and the like. A data storage system manager may, for example, view information about a current storage volume configuration on a display device of the management system16. The manager may also configure a data storage system, for example, by using management software to define a logical grouping of logically defined devices, referred to elsewhere herein as a storage group (SG), and restrict access to the logical group.

An embodiment of the data storage systems12may include one or more data storage systems. Each of the data storage systems may include one or more data storage devices, such as disks. One or more data storage systems may be manufactured by one or more different vendors. Each of the data storage systems included in12may be inter-connected (not shown). Additionally, the data storage systems may also be connected to the host systems through any one or more communication connections that may vary with each particular embodiment and device in accordance with the different protocols used in a particular embodiment. The type of communication connection used may vary with certain system parameters and requirements, such as those related to bandwidth and throughput required in accordance with a rate of I/O requests as may be issued by the host/server computer systems, for example, to the data storage systems12.

It should be noted that each of the data storage systems may operate stand-alone, or may also be included as part of a storage area network (SAN) that includes, for example, other components such as other data storage systems.

Each of the data storage systems of element12may include a plurality of disk devices or volumes. The particular data storage systems and examples as described herein for purposes of illustration should not be construed as a limitation. Other types of commercially available data storage systems, as well as processors and hardware controlling access to these particular devices, may also be included in an embodiment.

Servers or host systems, such as14a-14n, provide data and access control information through channels to the storage systems, and the storage systems may also provide data to the host systems also through the channels. The host systems do not address the disk drives of the storage systems directly, but rather access to data may be provided to one or more host systems from what the host systems view as a plurality of logical devices or logical volumes. The logical volumes may or may not correspond to the actual disk drives. For example, one or more logical volumes may reside on a single physical disk drive. Data in a single storage system may be accessed by multiple hosts allowing the hosts to share the data residing therein. A LUN (logical unit number) may be used to refer to one of the foregoing logically defined devices or volumes. An address map kept by the storage array may associate host system logical address with physical device address.

In such an embodiment in which element12ofFIG. 1is implemented using one or more data storage systems, each of the data storage systems may include code thereon for performing the techniques as described herein. In following paragraphs, reference may be made to a particular embodiment such as, for example, an embodiment in which element12ofFIG. 1includes a single data storage system, multiple data storage systems, a data storage system having multiple storage processors, and the like. However, it will be appreciated by those skilled in the art that this is for purposes of illustration and should not be construed as a limitation of the techniques herein. As will be appreciated by those skilled in the art, the data storage system12may also include other components than as described for purposes of illustrating the techniques herein.

Referring toFIG. 2, shown is an example representing how data storage system best practices may be used to form storage pools. The example 50 illustrates how storage pools may be constructed from groups of physical devices. For example, RAID Group 164amay be formed from physical devices60a. The data storage system best practices of a policy may specify the particular disks and configuration for the type of storage pool being formed. For example, for physical devices60aon a first data storage system type when forming a storage pool, RAID-5 may be used in a 4+1 configuration (e.g., 4 data drives and 1 parity drive). The RAID Group 164amay provide a number of data storage LUNs62a. An embodiment may also utilize one or more additional logical device layers on top of the LUNs62ato form one or more logical device volumes61a. The particular additional logical device layers used, if any, may vary with the data storage system. It should be noted that there may not be a 1-1 correspondence between the LUNs of62aand the volumes of61a. In a similar manner, device volumes61bmay be formed or configured from physical devices60b. The storage pool1of the example 50 illustrates two RAID groups being used to define a single storage pool although, more generally, one or more RAID groups may be used to form a storage pool in an embodiment using RAID techniques.

The data storage system12may also include one or more thin devices70-74. A thin device (also referred to as “thin logical unit” or “thin LUN”) presents a logical storage space to one or more applications running on a host where different portions of the logical storage space may or may not have corresponding physical storage space associated therewith. However, the thin device is not mapped directly to physical storage space. Instead, portions of the thin storage device for which physical storage space exists, referred to as slices above, are mapped to data devices such as device volumes61a-61b, which are logical devices that map logical storage space of the data device to physical storage space on the physical devices60a-60b. Thus, an access of the logical storage space of the thin device results in either a null pointer (or equivalent) indicating that no corresponding physical storage space has yet been allocated, or results in a reference to a data device which in turn references the underlying physical storage space. Further, a mapped LUN (e.g., mapped devices70-74) may either be a direct mapped logical unit or thin logical unit.

FIG. 3illustrates an example implementation using the technique described herein. System12has thin LUNs73,70, pool1, and, at its back end, drives60described above. At its front end, system12also has host interface4070for communicating with hosts14a-14ndescribed above.

LUNs73,70have respective backing drives logic4020B,4020A that use the formula described above to determine how many backing disk drives to report for the LUN. Interface has accesses control logic4050that, based on numbers of backing disk drives for each LUN as reported by respective logic4020B,4020A, controls how many accesses should be allowed to flow to each of LUNs73,70for processing.

For example, if pool1has access to X number of drives60in total, the highest number of backing drives that logic4020A can report for large LUN70is X. In another example, by default if each RAID group in pool1has Y number of drives60, the lowest number of backing drives that logic4020B can report for small LUN70is Y.

In another example in which each slice is 1 GB and pool1has 10 RAID groups wherein each RAID group has 5 drives, if LUN70has a size of at least 10 GB, logic4020A reports 50 drives, and if LUN73has a size of 3 GB, logic4020A reports 15 drives.

In at least one implementation, logic4020B,4020A have an additional constraint or cap such that the highest number of drives that can be reported as backing storage for the LUN is Z where Z is less than the total number of backing drives available to pool1. The constraint or cap may be used to help avoid excessive accesses from interface4070.

As used herein, “size” of a thin LUN refers to the LUN's stated capacity.