Abstract:
A method may include storing data in one or more first-type stripes spanning a plurality of N storage resources and having N−1 data strips for storing the data and a parity strip for storing parity information for the data stored to the particular first-type stripe and each of the plurality of storage resources includes one of a data strip or a parity strip of the particular first-type stripe if the data to be stored exceeds a threshold size. If the data to be stored does not exceed a threshold size, the method may include storing the data in a second-type stripe and a third-type stripe each spanning N storage resources, such that each stripe comprises N−1 data strips for storing the data and a metadata strip for storing address information for the corresponding second-type strip or third-type strip.

Description:
RELATED APPLICATION 
     This application is a continuation of U.S. patent application Ser. No. 13/420,068 filed Mar. 14, 2012, and which is hereby incorporated by reference in its entirety for all purposes. 
    
    
     TECHNICAL FIELD 
     The present disclosure relates in general to information handling systems, and more particularly to optimizing write accesses in a storage array. 
     BACKGROUND 
     As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems. 
     Information handling systems often use an array of physical storage resources, such as a Redundant Array of Independent Disks (RAID), for example, for storing information. Arrays of physical storage resources typically utilize multiple disks to perform input and output operations and can be structured to provide redundancy which may increase fault tolerance. Other advantages of arrays of physical storage resources may be increased data integrity, throughput and/or capacity. In operation, one or more physical storage resources disposed in an array of physical storage resources may appear to an operating system as a single logical storage unit or “logical unit.” Implementations of physical storage resource arrays can range from a few physical storage resources disposed in a server chassis, to hundreds of physical storage resources disposed in one or more separate storage enclosures. 
     The most common RAID levels in use today are RAID0, RAID1, RAID5, and RAID6. For RAID with redundancy, RAID1 or RAID10 mirroring may provide the highest performance with the least degradation to write performance. However, the downside to mirroring is that it halves the available storage capacity. RAID5 and RAID6 are more capacity-efficient, but often have poorer write performance due the fact that such arrays must employ read-modify-write operations when performing a write, in order to calculate parity information needed to ensure redundancy. In addition to increased latency, stress placed on physical storage devices during read-modify-write operations, particularly solid state storage devices (e.g., flash storage devices) that are increasingly used for storage of data, may reduce the useful life of such storage devices. 
     SUMMARY 
     In accordance with the teachings of the present disclosure, the disadvantages and problems associated with latency and wear in storage devices have been reduced or eliminated. 
     In accordance with embodiments of the present disclosure, a storage array may include a plurality of storage resources and a controller communicatively coupled to the plurality of storage resources. The controller may configured to receive a write operation and determine whether a size of data to be written to the storage array in accordance with the write operation is greater than a threshold size. The controller may further be configured to, in response to determining that the size of data is greater than the threshold size, store the data in one or more first-type stripes spanning the plurality of storage resources, such that each particular first-type stripe comprises N−1 data strips for storing the data and a parity strip for storing parity information for the data stored to the particular first-type stripe and each of the plurality of storage resources includes one of a data strip or a parity strip of the particular first-type stripe, wherein N is the number of the plurality of storage resources. The controller may also be configure to, in response to determining that the size of data is not greater than the threshold size: (i) store the data in a second-type stripe spanning the plurality of storage resources, such that the second-type stripe comprises N−1 data strips for storing the data and a metadata strip for storing address information for a third-type strip associated with the second-type strip and each of the plurality of storage resources includes one of a data strip or a metadata strip of the second-type stripe; and (ii) store the data in a third-type stripe spanning the plurality of storage resources, such that the third-type stripe comprises N−1 data strips for storing the data and a metadata strip for storing address information for the second-type strip, each of the plurality of storage resources includes one of a data strip or a metadata strip of the third-type stripe, and each individual portion of data stored the data strips of the third-type stripe is stored on a different storage resource than it is within the second-type stripe. 
     In accordance with these and other embodiments of the present disclosure, an information handling system may include a processor, a plurality of storage resources, and a controller communicatively coupled to the plurality of storage resources and the processor. The controller may configured to receive a write operation and determine whether a size of data to be written to the storage array in accordance with the write operation is greater than a threshold size. The controller may further be configured to, in response to determining that the size of data is greater than the threshold size, store the data in one or more first-type stripes spanning the plurality of storage resources, such that each particular first-type stripe comprises N−1 data strips for storing the data and a parity strip for storing parity information for the data stored to the particular first-type stripe and each of the plurality of storage resources includes one of a data strip or a parity strip of the particular first-type stripe, wherein N is the number of the plurality of storage resources. The controller may also be configure to, in response to determining that the size of data is not greater than the threshold size: (i) store the data in a second-type stripe spanning the plurality of storage resources, such that the second-type stripe comprises N−1 data strips for storing the data and a metadata strip for storing address information for a third-type strip associated with the second-type strip and each of the plurality of storage resources includes one of a data strip or a metadata strip of the second-type stripe; and (ii) store the data in a third-type stripe spanning the plurality of storage resources, such that the third-type stripe comprises N−1 data strips for storing the data and a metadata strip for storing address information for the second-type strip, each of the plurality of storage resources includes one of a data strip or a metadata strip of the third-type stripe, and each individual portion of data stored the data strips of the third-type stripe is stored on a different storage resource than it is within the second-type stripe. 
     In accordance with these and other embodiments of the present disclosure, a method may include receiving a write operation for data to be stored in a storage array comprising a plurality of storage resources and determining whether a size of data to be written to the storage array in accordance with the write operation is greater than a threshold size. The method may further include, in response to determining that the size of data is greater than the threshold size, storing the data in one or more first-type stripes spanning the plurality of storage resources, such that each particular first-type stripe comprises N−1 data strips for storing the data and a parity strip for storing parity information for the data stored to the particular first-type stripe and each of the plurality of storage resources includes one of a data strip or a parity strip of the particular first-type stripe, wherein N is the number of the plurality of storage resources. The method may also include, in response to determining that the size of data is not greater than the threshold size: (i) storing the data in a second-type stripe spanning the plurality of storage resources, such that the second-type stripe comprises N−1 data strips for storing the data and a metadata strip for storing address information for a third-type strip associated with the second-type strip and each of the plurality of storage resources includes one of a data strip or a metadata strip of the second-type stripe; and (ii) storing the data in a third-type stripe spanning the plurality of storage resources, such that the third-type stripe comprises N−1 data strips for storing the data and a metadata strip for storing address information for the second-type strip, each of the plurality of storage resources includes one of a data strip or a metadata strip of the third-type stripe, and each individual portion of data stored the data strips of the third-type stripe is stored on a different storage resource than it is within the second-type stripe. 
     Technical advantages will be apparent to those of ordinary skill in the art in view of the following specification, claims, and drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       A more complete understanding of the present embodiments and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein: 
         FIG. 1  illustrates a block diagram of an example system for optimizing write accesses in a storage array, in accordance with certain embodiments of the present disclosure; and 
         FIG. 2  illustrates a block diagram of certain portions of an example storage array, in accordance with certain embodiments of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Preferred embodiments and their advantages are best understood by reference to  FIGS. 1 and 2 , wherein like numbers are used to indicate like and corresponding parts. 
     For the purposes of this disclosure, an information handling system may include any instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, entertainment, or other purposes. For example, an information handling system may be a personal computer, a PDA, a consumer electronic device, a network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include memory, one or more processing resources such as a central processing unit (CPU) or hardware or software control logic. Additional components or the information handling system may include one or more storage devices, one or more communications ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, and a video display. The information handling system may also include one or more buses operable to transmit communication between the various hardware components. 
     For the purposes of this disclosure, computer-readable media may include any instrumentality or aggregation of instrumentalities that may retain data and/or instructions for a period of time. Computer-readable media may include, without limitation, storage media such as a direct access storage device (e.g., a hard disk drive or floppy disk), a sequential access storage device (e.g., a tape disk drive), compact disk, CD-ROM, DVD, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), and/or flash memory; as well as communications media such wires, optical fibers, microwaves, radio waves, and other electromagnetic and/or optical carriers; and/or any combination of the foregoing. 
     An information handling system may include or may be coupled to an array of physical storage resources. The array of physical storage resources may include a plurality of physical storage resources, and may be operable to perform one or more input and/or output storage operations, and/or may be structured to provide redundancy. In operation, one or more physical storage resources disposed in an array of physical storage resources may appear to an operating system as a single logical storage unit or “virtual storage resource.” 
     In certain embodiments, an array of physical storage resources may be implemented as a Redundant Array of Independent Disks (also referred to as a Redundant Array of Inexpensive Disks or a RAID). RAID implementations may employ a number of techniques to provide for redundancy, including striping, mirroring, and/or parity generation/checking. As known in the art, RAIDs may be implemented according to numerous RAID levels, including without limitation, standard RAID levels (e.g., RAID 0, RAID 1, RAID 3, RAID 4, RAID 5, and RAID 6), nested RAID levels (e.g., RAID 01, RAID 03, RAID 10, RAID 30, RAID 50, RAID 51, RAID 53, RAID 60, RAID 100), non-standard RAID levels, or others. 
       FIG. 1  illustrates a block diagram of an example system for optimizing write accesses in a storage array, in accordance with certain embodiments of the present disclosure; 
     As depicted in  FIG. 1 , system  100  may include an information handling system  102  and a storage array  110  communicatively coupled to information handling system  102 . 
     Information handling system  102  may generally be operable to receive data from and/or communicate data to storage array  110 . In certain embodiments, information handling system  102  may be a server. In another embodiment, information handling system  102  may be a personal computer (e.g., a desktop computer or a portable computer). In yet other embodiments, information handling system  102  may, together with storage array  110 , comprise a storage sub-system. As depicted in  FIG. 1 , information handling system  102  may include a processor  103  and a memory  104  communicatively coupled to processor  103 . 
     Processor  103  may include any system, device, or apparatus configured to interpret and/or execute program instructions and/or process data, and may include, without limitation a microprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit (ASIC), or any other digital or analog circuitry configured to interpret and/or execute program instructions and/or process data. In some embodiments, processor  103  may interpret and/or execute program instructions and/or process data stored in memory  104  and/or another component of information handling system  102 . 
     Memory  104  may be communicatively coupled to processor  103  and may include any system, device, or apparatus configured to retain program instructions and/or data for a period of time (e.g., computer-readable media). Memory  104  may include random access memory (RAM), electrically erasable programmable read-only memory (EEPROM), a PCMCIA card, flash memory, magnetic storage, opto-magnetic storage, or any suitable selection and/or array of volatile or non-volatile memory that retains data after power to information handling system  102  is turned off. 
     Storage array  110  may comprise any system, device, or apparatus having a plurality of physical storage resources  114  communicatively coupled to information handling system  102  via controller  112 . Storage resources  114  may include hard disk drives, magnetic tape libraries, optical disk drives, magneto-optical disk drives, compact disk drives, compact disk arrays, disk array controllers, and/or any computer-readable medium operable to store data. In particular embodiments, one or more storage resources  114  may comprise solid-state storage devices. In some embodiments, storage resources  114  may form all or part of a redundant storage array (e.g., a RAID). In such embodiments, storage resources  114  participating in the redundant storage array may appear to an operating system executing on information handling system  102  as a single logical storage unit or virtual resource. Thus, information handling system  102  may “see” a logical unit instead of seeing each individual physical storage resource  114 . Although  FIG. 1  depicts storage resources  114  as components of system  100  separate from information handling system  102 , in some embodiments, one or more storage resources  114  may be integral to information handling system  102 . Storage resources  114  may be housed in one or more storage enclosures configured to hold and power storage resources  114 . 
     As depicted in  FIG. 1 , storage resources  114  may each be communicatively coupled to a controller  112 . Controller  112  may comprise any suitable system, device, or apparatus that manages physical storage resources  114  of storage array  110  and/or presents them to information handling system  102  as logical units and/or virtual storage resources. In some embodiments, controller  112  may comprise a RAID controller. For example, if a RAID is implemented using the physical storage resources  114  of storage array  110 , controller  112  may control how stored data is mirrored and/or striped among physical storage resources  114 , and may present such RAID as a single logical unit or virtual storage resource to information handling system  102 . In some example embodiments, controller  112  may be an integral part of a storage enclosure housing one or more of physical storage resources  114 . In other embodiments, controller  112  may be an integral part of information handling system  102 . 
     In operation, controller  112  may, in response to receipt of write operation from information handling system  102 , determine the size of the data to be written in accordance with the write operation, and, based on such determined size, determine whether to perform a RAID1 write or a RAID5 write to storage array  110 . 
       FIG. 2  illustrates a block diagram of certain portions of an example storage array  110  having a plurality of storage resources  114 , in accordance with certain embodiments of the present disclosure. Although  FIG. 2  depicts storage array  110  having a particular number of storage resources  114 , it is understood that storage array  110  may include any suitable number of storage resources  114 . As shown in  FIG. 2 , data may be stored in storage array  110  in a plurality of stripes  202 ,  203 , and  201 . Each particular stripe  202 ,  203 ,  201  may span across each storage resource  114  such that a strip  204  of the particular stripe  202 ,  203 ,  201  may reside on each storage resource  114 . In some embodiments of the present disclosure, all strips  204  may be of the same size, and all stripes  202 ,  203 ,  201  may be of the same size. In these and other embodiments, sizes of strips  204  and stripes  202 ,  203 ,  201  may be determined in any suitable manner (e.g., by a user or administrator of system  100 , by controller  112 , by a manufacturer of a component of system  100 , etc.). 
     As shown in  FIG. 2 , stripes  202 ,  203 , and  201  may comprise one or more RAID1 primary data stripes  202 , one or more RAID5 stripes  203 , and one or more RAID1 mirrored data stripes  201 . Where N is the number of storage resources  114  in storage array  110 , a RAID1 primary data stripe  202  may comprise N−1 data strips  204  for storing data written to storage array  110  and a metadata strip  204  for storing address information for a RAID1 mirrored data stripe  201  mirroring the data of the RAID1 primary data stripe  202 . For example, referring to  FIG. 2 , a RAID 1 primary data stripe  202  labeled as “Stripe 0” may include data strips  204 , for storing data A 0 , A 1 , A 2 , A 3 , and A 4  written to storage array  110 , and a metadata strip  204  for storing address information A′ ADR  for the RAID1 mirrored data stripe  201  (e.g., Stripe 0′) mirroring the data A 0 , A 1 , A 2 , A 3 , and A 4 . Similarly, a RAID1 mirrored data stripe  201  may span the same N storage resources  114  and comprise N−1 data strips  204  for storing mirrored data of a corresponding RAID1 primary data stripe  202  a metadata strip  204  for storing address information for the corresponding RAID1 primary data stripe  202 . As shown in  FIG. 2 , data (e.g., A 0 , A 1 , A 2 , A 3 , and A 4 ) may be stored within RAID1 mirrored data stripe  201  such that each individual mirrored portion of data is stored on a different storage resource  114  than it is within the corresponding RAID1 primary stripe  202 , thus ensuring redundancy of data in the event of a failure of a storage resource  114 . For example, while data A 0  within a RAID1 primary data stripe  202  may be stored on a strip  204  of a storage resource  114  labeled as “Storage Resource 0,” its corresponding mirrored data A 0  within a RAID1 mirrored data stripe  201 , may be stored on a strip  204  of a storage resource  114  labeled as “Storage Resource 1,” thus ensuring a redundant copy of A 0  is available in the event of a failure of either of Storage Resource 0 or Storage Resource 1. 
     Where N is the number of storage resources  114  in storage array  110 , a RAID5 stripe  203  may comprise N−1 data strips  204  for storing data written to storage array  110  and a parity strip  204  for storing parity information for the RAID5 stripe  203 . For example, referring to  FIG. 2 , a stripe  203  labeled as “Stripe 2” may include data strips  204 , for storing data C 0 , C 1 , C 2 , C 3 , and C 4  written to storage array  110 , and a parity strip  204  for storing parity information C P  based on a parity calculation of data C 0 , C 1 , C 2 , C 3 , and C 4 . Such parity information allows data to be recovered in the event of a failure of a storage resource  114  (e.g., by recalculating parity). 
     Accordingly, controller  112  of storage array  110  may process received write operations either as RAID1 operations to store data and its associated address metadata in a RAID1 primary data stripe  202  and a corresponding RAID1 mirrored data stripe  201  or as RAID5 operations to store data and its associated parity information in a RAID5 stripe  203 . As discussed above, controller  112  may determine whether to process a write operation as a RAID1 or RAID5 operation based on size of data to be written to storage array  110 . For example, if the size of data to be written is equal to or lesser than a predetermined threshold size, controller  112  may process the write operation as a RAID1 operation. Alternatively, if the size of data to be written is equal to or greater than a predetermined threshold size, controller  112  may process the write operation as a RAID5 operation. In some embodiments, the predetermined threshold size may be equal to the size of a strip  204 . 
     Furthermore, controller  112  may also be configured to select data to transfer between the regions including RAID5 stripes  203  and/or the region including RAID1 mirrored data stripes  201  as they reach their respective capacity. For example, a least-frequently used algorithm and/or least-recently used algorithm may be used to select for moving, particular data from the region including RAID5 stripes  203  and/or the region including RAID1 stripes  201 / 202 , and/or to move data between the regions including RAID5 stripes  203  and/or the region including RAID1 stripes  201 / 202 . 
     Using this approach of processing write operations as RAID1 operations for smaller writes and as RAID5 operations for larger writes, the occurrence of read-modify-write operations may be reduced as compared with traditional storage systems, thus potentially reducing latency and improving storage resource life, while at the same time allowing for some RAID5 operations in order to maximize storage capacity as compared to traditional RAID1 approaches. 
     Although the present disclosure has been described in detail, it should be understood that various changes, substitutions, and alterations can be made hereto without departing from the spirit and the scope of the disclosure as defined by the appended claims.