determining a type of degradation to perform based on a preference between performance of the operation and preservation of the drive lifetime
Patent Information
- Application Number
- CN202180019828.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-04-14
- Filing Date
- 2021-03-25
- Publication Date
- 2026-10-30
- Estimated Expiration
- 2041-03-25
Smart Images

Figure CN115244500B_ABST
Abstract
Description
Technical Field
[0001] The implementation involves determining the type of degradation to be performed based on a preference between operational performance and the preservation of drive lifetime. Background Technology
[0002] In some storage system environments, a storage controller (or storage controller complex) may include multiple storage servers coupled to each other. The storage controller allows host computing systems to perform input / output (I / O) operations on storage devices controlled by the storage controller, which may be referred to as the host.
[0003] A storage controller may include two or more servers, each of which may be referred to as a node, storage server, processor complex, central processing unit complex (CPC), or central electronic complex (CEC). Each server may have multiple processor cores, and these servers may share the workload of the storage controller. In a two-server configuration of the storage controller (also known as a dual-server based storage controller), if one of the two servers fails, the other server can take over the operations performed by the failed server.
[0004] Data written from the host can be stored in the storage controller's cache, and at appropriate times, data stored in the cache can be destaged (i.e., moved or copied) to the storage device. Data can also be staged (i.e., moved or copied) from the storage device to the storage controller's cache. If the data for a read I / O request is available in the cache, the storage controller can respond to the read I / O request from the host via the cache; otherwise, data can be staged from the storage device to the cache for responding to the read I / O request. Write I / O requests from the host cause the corresponding data to be written to the cache, and then, at appropriate times, the written data can be destaged from the cache to the storage device. Because the cache's storage capacity is relatively small compared to the storage capacity of the storage device, data can be periodically destaged from the cache to create empty storage space within the cache. Data can be written to and read from the cache much faster than data can be read from and written from the storage device.
[0005] In computer data storage, data striping is a technique for segmenting logically sequential data (such as files) so that consecutive segments are stored on different physical storage devices (such as disks). Segments of sequential data written to or read from a disk are typically called chunks, strides, or stripe units before continuing operations on the next disk, while the logical group of these segments that forms a single striping operation is called a stripe.
[0006] Striping is used across disk drives in a Redundant Array of Independent Disks (RAID) storage system. RAID is a data storage virtualization technique that combines multiple physical disk drive components into one or more logical units for the purpose of data redundancy and performance improvement. Depending on the required level of redundancy and performance, data is distributed across drives in one of several ways (called RAID levels). Different schemes or data distribution layouts are named by the word "RAID" followed by a number (e.g., RAID 0 or RAID 1). Each scheme or RAID level provides a different balance between key objectives of reliability, availability, performance, and capacity. RAID levels greater than RAID 0 provide protection against unrecoverable sector read errors and against failures of the entire physical drive via parity information maintained for the stored data. A stripe is a term associated with a single disk and is a predetermined number of consecutive addressable blocks on that disk. In the case of a set of RAID arrays, striping begins and is the set of stripes across all drives in the set of RAID arrays. Summary of the Invention
[0007] A method, system, and computer program product are provided, wherein a first score corresponding to full-span degradation, a second score corresponding to strip degradation, and a third score corresponding to individual track degradation are calculated, wherein the first, second, and third scores are calculated based on a first metric and a second metric for a set of input / output (I / O) operations, wherein the first metric is configured to affect data transfer performance, and wherein the second metric is configured to affect drive lifetime. The type of degradation to be performed is determined based on the first, second, and third scores.
[0008] In another embodiment, the first metric configured to affect the performance of data transmission includes I / O operations and bandwidth on the rank, non-volatile storage (NVS) capacity, parity lock contention, and the amount of unmodified data in holes and spans.
[0009] In another embodiment, a second metric configured to affect drive lifespan includes the drive wear level, the drive's daily write classification, and the amount of modified data in the span.
[0010] In some embodiments, a full-span downgrade is performed in response to determining that the first score is the highest among the first, second, and third scores.
[0011] In some embodiments, strip downgrading is performed in response to determining that the second score is the highest among the first, second, and third scores.
[0012] In some embodiments, individual track degradation is performed in response to determining that the third score is the highest among the first, second, and third scores.
[0013] In another embodiment, a first weight of the first metric and a second weight of the second metric are read from a configuration data structure. The calculation of the first score, the second score, and the third score is based on the first weight provided to the first sub-score and the second weight provided to the second sub-score, wherein the first sub-score is calculated based on the first metric and the second sub-score is calculated based on the second metric. Attached Figure Description
[0014] Referring now to the accompanying drawings, and throughout the text, the same reference numerals denote the same parts:
[0015] Figure 1 The diagram illustrates a computing environment including a storage controller coupled to one or more hosts and one or more storage devices, according to certain embodiments.
[0016] Figure 2 The diagram illustrates a type of degradation that can be performed by a storage controller according to certain embodiments;
[0017] Figure 3 The diagram illustrates a block diagram showing the score types calculated for each downgrade type according to certain embodiments;
[0018] Figure 4 The diagram illustrates a factor for performance-based scores according to certain embodiments;
[0019] Figure 5 The diagram illustrates a factor for a fraction based on drive lifetime, according to certain embodiments.
[0020] Figure 6 The illustration shows a flowchart, according to some embodiments, for selecting the type of degradation to be performed;
[0021] Figure 7 The illustration shows a flowchart, according to some embodiments, for selecting the type of degradation to be performed;
[0022] Figure 8 The diagram illustrates a block diagram of performance factor-based scoring according to certain embodiments;
[0023] Figure 9 The diagram illustrates a block diagram of performance factor-based scoring according to certain embodiments;
[0024] Figure 10 The diagram illustrates a block diagram of performance factor-based scoring according to certain embodiments;
[0025] Figure 11 The diagram illustrates a block diagram of performance factor-based scoring according to certain embodiments;
[0026] Figure 12 The diagram illustrates a scoring based on a drive lifetime factor according to certain embodiments;
[0027] Figure 13 The illustration shows a flowchart, according to some embodiments, for selecting the type of degradation to be performed;
[0028] Figure 14 The diagram illustrates a block diagram of a cloud computing environment according to certain embodiments;
[0029] Figure 15 The illustration shows some embodiments. Figure 14 A more detailed block diagram of the cloud computing environment; and
[0030] Figure 16 The illustration shows, according to certain embodiments, such as Figures 1-15 A block diagram of a computing system that may include certain components in a storage controller or host. Detailed Implementation
[0031] In the following description, reference is made to the accompanying drawings, which form part of and illustrate several embodiments. It should be understood that other embodiments may be utilized and structural and operational changes may be made.
[0032] In some embodiments, the storage controller may perform full-span degradation or non-full-span degradation (e.g., stripe degradation or individual track degradation) based on different factors affecting degradation performance and drive lifetime. In full-span degradation, all data and parity in all spans (or stripes) are written during degradation. In stripe degradation, one or more stripes are written during degradation. In track degradation, one or more tracks are written during degradation.
[0033] When performing a degradation, many factors can affect the performance and drive lifespan of the degradation process. Performance refers to how quickly the degradation is completed, and drive lifespan refers to the expected lifespan or durability of the drive. These factors affecting the performance and drive lifespan of degradation include:
[0034] 1. Non-volatile storage (NVS) is full or not full;
[0035] 2. The amount of modified data in the span;
[0036] 3. Parity lock contention;
[0037] 4. Whether I / O is sequential or not;
[0038] 5. Data is written to disk sequentially or not sequentially;
[0039] 6. Unmodified data already exists in the span or needs to be upgraded;
[0040] 7. Bandwidth usage on the block;
[0041] 8. The current number of I / O operations per second (IOPS) on a block;
[0042] 9. Number of holes in the span;
[0043] 10. Flash memory wear level;
[0044] 11. Daily write classification of the driver;
[0045] 12. IOPS in full-span degradation vs. strip degradation vs. track-by-track degradation; and
[0046] 13. Response time for upgrades / downgrades on blocks.
[0047] Customers may prefer a balance between drive lifetime and degradation operation performance. In some embodiments, the storage controller determines whether to perform full-span degradation or not (e.g., stripe degradation or individual track degradation) based on factors affecting performance and factors affecting drive lifetime.
[0048] Some factors affect drive durability (i.e., drive lifespan), while others affect performance. Some customers may prefer performance over drive lifespan, while others may prefer performance over drive lifespan. Some implementations calculate separate scores for performance and drive lifespan based on multiple factors and allow configuration settings to determine which score is preferred for a particular customer.
[0049] Some embodiments calculate scores for full-span degradation, stripe degradation, and individual track degradation for a set of I / O operations based on metrics optimizing the lifetime of the flash drive forming the secondary storage device and metrics optimizing data transfer performance. The metrics for drive lifetime include flash drive wear level and daily write classification, as well as the amount of modified data in the span. The performance metrics include I / O operations and bandwidth on blocks, NVS storage capacity, parity lock contention, and unmodified data in holes and spans. The selection of the degradation type to be performed is based on the calculated scores, which optimize flash drive lifetime and also optimize degraded data transfer performance. As a result, improvements are made to the operation of the storage controller.
[0050] Exemplary embodiments
[0051] Figure 1 A block diagram of a computing environment 100 according to some embodiments is shown. The computing environment 100 includes a storage controller 102 having a cache 104 and non-volatile memory (NVS) 106 coupled to one or more hosts 108 and one or more storage devices 110, 112. The one or more storage devices 110, 112 may form a RAID-configured storage device 114.
[0052] The storage controller 102 allows one or more hosts 108 to perform input / output (I / O) operations using the logical storage maintained by the storage controller 102. The physical storage devices corresponding to the logical storage can be found in one or more of the storage devices 110, 112 and / or cache 104 and / or non-volatile memory (NVS) 106 of the storage controller 102.
[0053] Storage controller 102 and host 108 may include any suitable computing device, including those known in the art, such as personal computers, workstations, servers, mainframes, handheld computers, PDAs, telephone equipment, network equipment, blade computers, processing devices, controllers, etc. In some embodiments, storage controller 102 may include multiple servers. Multiple servers provide redundancy because if one server experiences an unrecoverable failure, a replacement server can perform the functions of the failed server. Each of the multiple servers may be referred to as a processing complex and may include one or more processors and / or processor cores.
[0054] Storage controller 102 and one or more hosts 108 can be components in any suitable network (e.g., storage area network, wide area network, Internet, intranet). In some embodiments, storage controller 102 and one or more hosts 108 can be components in a cloud computing environment.
[0055] The cache 104 and non-volatile storage device 106 can be any suitable memory known in the art or developed in the future. The cache 104 and non-volatile storage device 106 can be distributed across two servers in a dual-server configuration of the storage controller 102. A degradation management application 116, implemented in the storage controller 102 in software, hardware, firmware, or any combination thereof, can control degradation operations from the storage controller 102 to auxiliary storage devices including storage devices 110, 112.
[0056] The multiple storage devices 110, 112 may include any storage device known in the art. For example, storage device 110 may be a solid-state drive (SSD), and storage device 112 may be a hard disk drive (HDD).
[0057] A configuration data structure 118, providing weights for I / O operation performance (as indicated by reference numeral 120) and for drive lifetime (as indicated by reference numeral 122), can be maintained by the storage controller 102. These weights are populated by a customer, administrator, or user to indicate whether drive lifetime takes precedence over I / O operation performance or vice versa. It should be written to reduce drive lifetime (especially in the case of flash drives such as solid-state drives).
[0058] Figure 2 The diagram 200 illustrates degradation types that can be performed by a storage controller 102 storing data in a RAID configuration, according to certain embodiments. Degradation types include full-span degradation 202, strip degradation 204, and individual track degradation 206.
[0059] In full-span degradation 202, all spans are degraded. In strip degrader 204, the selected strip is degraded. In individual track degradation 206, the selected track is degraded. It should be noted that a strip comprises multiple tracks.
[0060] Figure 3 The diagram illustrates a block diagram showing the score types calculated for each degradation type according to certain embodiments. The score types calculated for each degradation type (full-span degradation 202, stripe degradation 204, individual track degradation 206) include a performance-based score 302 and a drive-life-based score 304. The performance-based score 302 is based on factors affecting disk I / O operations, and the drive-life-based score 304 is based on factors affecting disk durability (i.e., lifespan).
[0061] Figure 4 A block diagram 400 is shown for a factor for a performance-based score according to some embodiments.
[0062] The factors used for performance-based scores include the following:
[0063] 1. NVS is full or not full (refer to reference number 402);
[0064] 2. Number of I / O operations per second (IOPS) in full-span degradation vs. strip degradation vs. individual track degradation (reference 404);
[0065] 3. Parity lock contention (reference number 406);
[0066] 4. Whether I / O is sequential or non-sequential (reference 408);
[0067] 5. Data is written to disk sequentially or not sequentially (reference number 410);
[0068] 6. Unmodified data already exists in the span or needs to be upgraded (refer to reference number 402);
[0069] 7. Bandwidth usage on blocks (refer to reference number 412);
[0070] 8. Current IOPS on the block (reference number 414); and
[0071] 9. Number of holes in the span (reference number 416).
[0072] Further details of each of these performance factors will be described later in this disclosure. Each performance factor directly or indirectly affects the performance of disk I / O during a degradation operation.
[0073] Figure 5 The diagram illustrates a block diagram 500 showing a factor for a score based on drive lifetime according to certain embodiments. The factor for a score based on drive lifetime includes the following:
[0074] 1. The amount of modified data in the span (reference number 502);
[0075] 2. Flash memory wear level (reference number 504); and
[0076] 3. Driver daily write classification (reference number 506).
[0077] Further details of each of these drive lifetime factors will be described later in this disclosure. Each performance factor directly or indirectly affects drive lifetime during degradation operations.
[0078] Figure 6 A flowchart 600 is shown for selecting the type of degradation to be performed, according to some embodiments. In some embodiments, Figure 6The operations shown can be performed by the degradation management application 116 executed in the storage controller 102.
[0079] Control begins at box 602, where the degradation management application 116 calculates a performance-based score 302 and a drive lifetime-based score 304 for full-span degradation 202, strip degradation 204, and individual track degradation 206. Control proceeds to box 604, where the degradation management application 116 selects among full-span degradation 202, strip degradation 204, and individual track degradation 206 based on configuration settings made in configuration data structure 118. For example, if the weight 120 for performance is greater than the weight for drive lifetime 122, the performance-based score 302 is weighted more heavily than the drive lifetime-based score 304.
[0080] As a result, performance and drive lifetime are optimized based on customer-provided instructions in configuration data structure 118. For example, in some embodiments, full-span degradation may be optimal to comply with customer-provided instructions, while in other embodiments, strip degradation or individual track degradation may be optimal.
[0081] Figure 7 A flowchart 700 is illustrated according to certain embodiments for selecting the type of degradation to be performed. In some embodiments, Figure 7 The operations shown can be performed by the degradation management application 116 executed in the storage controller 102.
[0082] Control begins at box 702, where the process initializes the variables FullStrideScore, StripScore, and IndividualTrackScore to 0, and then calculates (in box 704) a performance score for each of the full-stride degradation, strip degradation, and individual track degradation based on the performance factor.
[0083] Control also begins in block 706 (in parallel with block 702), where the process initializes the variables FullStrideScore, StripScore, and IndividualTrackScore to 0, and then calculates (in block 708) the drive lifetime score for each of the full-stride degradation, strip degradation, and individual track degradation based on the drive lifetime factor.
[0084] Upon completion of boxes 704 and 708, control advances to box 710, where the weighted full-span score is calculated as follows:
[0085] WeightedFullStrideScore = (Performance Weight × FullStrideScore using Performance Factor) + (Drive Lifetime Weight × FullStrideScore using Drive Lifetime Factor).
[0086] The performance weight is a weight for performance 120, and the driver weight is a weight for driver lifetime 122 provided in configuration data structure 118.
[0087] Upon completion of box 710, control advances to box 712, where the weighted strip scores are calculated as follows:
[0088] WeightedStripScore = (Performance weight × StripScore using performance factor) + (Drive lifetime weight × StripScore using drive lifetime factor).
[0089] Upon completion of box 712, control advances to box 714, where the weighted individual track scores are calculated as follows:
[0090] WeightedIndividualTrackScore = (Performance Weight × IndividualTrackScore using Performance Factor) + (Drive Weight × IndividualTrackScore using Drive Lifetime Factor).
[0091] Control moves from box 714 to box 716, where the process determines which of WeightedFullStrideScore, WeightedStripScore, and WeightedididualTrackScore is highest and uses the corresponding degradation mechanism. For example, if WeightedFullStrideScore is highest, a full-span degradation is performed.
[0092] After initializing FullStrideScore, StripScore, and IndividualTrackScore to 0 Figures 8-11 Provided Figure 7 The details of the operation shown in box 704. These fractions are described in sequence. Figures 8-11 The operations shown are added. These operations are illustrated in pseudocode and in a self-evident manner. It should be noted that alternative embodiments may calculate scores in different ways, and Figures 8-11 The scores shown are examples.
[0093] Figure 8 A block diagram 800 for scoring based on performance factors is illustrated according to certain embodiments.
[0094] Box 802 describes the NVS performance factor as full or not full via the following pseudocode (via Figure 4 (as shown by reference numeral 402 in the text):
[0095] If NVS is full, then
[0096] FullStrideScore increases by 2 and StripScore increases by 1;
[0097] If NVS is not full, nothing will be added.
[0098] Box 804 describes the number of IOPS (via the following pseudocode) in the case of full-span degradation vs. strip degradation vs. single-track degradation. Figure 4 The performance factor (shown by reference numeral 404 in the figure) is:
[0099] Calculate the number of IOPS that each option will take.
[0100] If the difference in IOPS between full-stride vs. strip vs. individual track is high (>10), then FullStrideScore increases by 2 and StripScore increases by 1.
[0101] If the difference in IOPS between full-stride vs. strip vs. individual track is moderate (>5), then FullStrideScore increases by 1.
[0102] Otherwise, if the difference is low (below 5), increase IndividualTrackScore by 1.
[0103] Figure 9 A block diagram 900 is shown for scoring based on performance factors according to certain embodiments.
[0104] Box 903 describes the performance factor of parity lock contention via the following pseudocode (via Figure 4 (Ref. 406 is shown in the text):
[0105] Calculate the number of tracks competing for the same parity lock across different stripes of the span. For example, track 1 (strip 1) will compete with track 5 (strip 2) to update the parity.
[0106] If the number of tracks competing for the same parity lock in different stripes is greater than, for example, 10, then the FullStrideScore increases by 2 and the StripScore increases by 1.
[0107] otherwise,
[0108] If the number of tracks competing for the same parity lock in different stripes is greater than, for example, 5, then the FullStrideScore increases by 1.
[0109] otherwise,
[0110] If the number of tracks competing for the same parity check lock in different stripes is greater than 2, then
[0111] The IndividalTrackScore increased by 1.
[0112] otherwise,
[0113] The IndividalTrackScore increases by 2 (i.e., it is 2 or less).
[0114] Box 904 describes the performance factor of whether I / O is sequential or not via the following pseudocode (via... Figure 4 (Ref. 408 is shown in the text):
[0115] If I / O is sequential, then FullStrideScore increases by 2 and StripScore increases by 1.
[0116] Otherwise, the IndividalTrackScore increases by 1.
[0117] Box 906 describes the performance factors of sequential or non-sequential data writes to disk (via... Figure 4 (Ref. 410 is shown in the diagram). If the data was previously written to disk sequentially, then a full-span degradation is much better. This can be checked by looking at the logical-to-physical mapping of the tracks. If the logical-to-physical mapping is in the same order for all tracks in the span, then the data was previously degraded to a full span. The pseudocode is as follows:
[0118] If the data is written to disk sequentially, the FullStrideScore increases by 2 and the StripScore increases by 1.
[0119] Otherwise, IndividualTrackScore increases by 1.
[0120] Figure 10 A block diagram 1000 for scoring based on performance factors is shown according to some embodiments.
[0121] Box 1002 describes performance factors where unmodified data already exists in the span or needs to be upgraded (via...). Figure 4(Ref. 412 is shown in the figure). In this case, if most of the span is in the cache, whether modified or unmodified, then not much of an upgrade is needed, and this means that full-span downgrading is beneficial, followed by stripes, and then individual tracks. The pseudocode is as follows:
[0122] If the total data in the cache is greater than 75% of the span size.
[0123] Then the FullStrideScore increases by 2 and the StripScore increases by 1.
[0124] Otherwise, the total data in the cache is greater than 50% of the span size.
[0125] Then FullStrideScore increases by 1.
[0126] Otherwise, the total data in the cache is greater than 25% of the span size.
[0127] IndividalTrackScore increased by 1
[0128] Otherwise (below 25%)
[0129] The IndividalTrackScore has increased by 2.
[0130] The examples have thresholds of 25%, 50%, and 75%. These percentages can be varied based on the geometry of the RAID array (RAID 5, RAID-6, etc.).
[0131] Box 1004 describes the performance factors of bandwidth usage on a block (via Figure 4 (See reference numeral 414 in the text). In such cases, if bandwidth usage is high, degrading the full span or stripe will impair performance.
[0132] The pseudocode is as follows:
[0133] If the bandwidth used is greater than 90% of the maximum bandwidth
[0134] Then IndividualTrackScore increases by 2
[0135] Otherwise, if the bandwidth used is greater than 70% of the maximum bandwidth.
[0136] Then IndividualTrackScore increases by 1.
[0137] Otherwise, if the bandwidth used is greater than 50% of the maximum bandwidth.
[0138] Then the FullStrideScore increases by 1.
[0139] Otherwise (below 50%)
[0140] Then FullStrideScore increases by 2 and StripScore increases by 1.
[0141] Figure 11 A block diagram 1100 for scoring based on performance factors is illustrated according to certain embodiments.
[0142] Box 1102 describes the performance factor and the number of IOPS on the current block (via... Figure 4 (Ref. 416 is shown in the reference numeral). If the IOPS count is high, a full span is better because it has a lower IOPS count compared to strips versus individual tracks. The pseudocode is as follows:
[0143] If the current IOPS is greater than 90% of the maximum IOPS
[0144] Then the FullStrideScore increases by 2 and the StripScore increases by 1.
[0145] Otherwise, if the current IOPS > 70% of the maximum IOPS
[0146] Then the FullStrideScore increases by 1.
[0147] Otherwise, if the current IOPS > 50% of the maximum IOPS
[0148] Then lndividalTrackScore increases by 1.
[0149] Otherwise (below 50%)
[0150] Then lndividalTrackScore increases by 2.
[0151] Box 1104 describes the "number of holes in the span" (via Figure 4 The performance factor is shown in reference numeral 418. For larger hole numbers, full-span degradation is better, followed by strip degradation, and then individual track degradation. The pseudocode is as follows:
[0152] If the number of holes > 10
[0153] Then the FullStrideScore increases by 2 and the StripScore increases by 1.
[0154] Otherwise, if the number of holes > 5
[0155] Then the FullStrideScore increases by 1.
[0156] Otherwise, if the number of holes > 2
[0157] Then IndividualTrackScore increases by 1.
[0158] Otherwise (less than 2)
[0159] Then IndividualTrackScore increases by 2.
[0160] Figure 12 A block diagram 1200 for scoring based on a drive lifetime factor, according to some embodiments, is illustrated. After initializing FullStrideScore, StripScore, and IndividualTrackScore to 0, Figure 12 Provided Figure 7 The details of the operation shown in box 708. These scores are described in sequence. Figure 12 The operation shown is added.
[0161] Box 1202 describes the driving lifetime factor (via the amount of modified data in the span) for the "amount of data modified in the span". Figure 5 (Ref. 502 is shown in the figure). Full-span degradation is preferred as the amount of modified data increases, followed by strip degradation, and then individual track degradation. The pseudocode is as follows:
[0162] If the modified data is greater than 75% of the span size.
[0163] Then the FullStrideScore increases by 2 and the StripScore increases by 1.
[0164] Otherwise, if the modified data is greater than 50% of the span size.
[0165] Then the FullStrideScore increases by 1.
[0166] Otherwise, if the modified data is greater than 25% of the span size.
[0167] Then IndividualTrackScore increases by 1.
[0168] Otherwise (below 25%)
[0169] IndividualTrackScore increased by 2.
[0170] Box 1204 describes the drive lifetime factor of "flash wear level" (via Figure 5 (Ref. 504 is shown in the reference numeral). If the flash memory wear level is high, it is beneficial to only downgrade the modified data. The pseudocode is as follows:
[0171] If the flash memory wear level is high, the individualTrackScore increases by 1.
[0172] If the flash memory wear level is low, the FullStrideScore increases by 1 and the StripScore increases by 1.
[0173] Box 1206 describes the driver lifetime factor (via "Daily Write Classification of Drivers") Figure 5 (Ref. 506 is shown in the reference numeral). The higher the daily write classification, the more data can be degraded without wearing down the flash memory. When the daily write classification is high, full-span degradation is better. The pseudocode is as follows:
[0174] If the daily write category is low, the lndividualTrackScore is increased by 1.
[0175] If the daily write volume is high, the FullStrideScore increases by 1 and the StripScore increases by 1.
[0176] Figure 13 The illustration depicts a flowchart, according to certain embodiments, for selecting the type of degradation to perform. In some embodiments, Figure 13 The operations shown can be performed by the degradation management application 116 executed in the storage controller 102.
[0177] Control begins at box 1300, where a first score corresponding to full-span degradation, a second score corresponding to strip degradation, and a third score corresponding to individual track degradation are calculated. The first, second, and third scores are calculated based on a first metric and a second metric for a set of input / output (I / O) operations. The first metric is configured to affect the performance of data transfer, and the second metric is configured to affect drive lifetime.
[0178] Control moves from block 1302 to block 1304, where the type of degradation to be performed is determined based on a first score, a second score, and a third score. In some embodiments, in response to determining that the first score is the highest among the first, second, and third scores, the type of degradation to be performed is determined to be a full-span degradation. In some embodiments, in response to determining that the second score is the highest among the first, second, and third scores, the type of degradation to be performed is determined to be a strip degradation. In some embodiments, in response to determining that the third score is the highest among the first, second, and third scores, the type of degradation to be performed is determined to be a single-track degradation.
[0179] In another embodiment, a first metric configured to affect data transfer performance includes I / O operations and bandwidth on blocks, non-volatile storage device (NVS) capacity, parity lock contention, and holes and unmodified data in the span. A second metric configured to affect drive lifetime includes drive wear level, drive daily write classification, and the amount of modified data in the span.
[0180] In some embodiments, a first weight 120 for a first metric and a second weight 122 for a second metric are read from a configuration data structure 118. The calculation of the first score, the second score, and the third score is based on a first weight provided to the first sub-score and a second weight provided to the second sub-score, wherein the first sub-score is calculated based on the first metric and the second sub-score is calculated based on the second metric.
[0181] Although Figures 1-13 The implementation described illustrates certain increments for the variables FullStrideScore, StripScore, and IndividualTrackScore, but in alternative implementations, other increments may be used. For example, instead of increments 1 and 2, alternative embodiments may increase X and Y respectively, where X and Y are natural numbers, and Y is greater than X. Similarly, certain percentages shown in the embodiments may differ in alternative embodiments. Other parameters exist in embodiments that have already been assigned certain representative values, and these parameters may differ in alternative embodiments.
[0182] therefore, Figures 1-13 The illustration shows some embodiments of determining the type of degradation to be performed to comply with the performance weights and driver lifetime weights provided in the configuration data structure.
[0183] Cloud computing environment
[0184] Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage devices, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
[0185] See now Figure 14The diagram illustrates an illustrative cloud computing environment 50. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 to which local computing devices used by cloud consumers can communicate. These local computing devices include, for example, personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automotive computer systems 54N. The nodes 10 can communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as private clouds, community clouds, public clouds, or hybrid clouds, or combinations thereof, as described above. This allows the cloud computing environment 14 to provide infrastructure, platforms, and / or software as services that cloud consumers do not need to maintain on their local computing devices. It should be understood that... Figure 10 The types of computing devices 54A to 54N shown are intended to be illustrative only, and computing node 10 and cloud computing environment 50 can communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).
[0186] See now Figure 15 This demonstrates a cloud computing environment of 50 ( Figure 14 This provides a set of functional abstractions. It should be understood beforehand. Figure 15 The components, layers, and functions shown are merely illustrative, and embodiments of the present invention are not limited thereto.
[0187] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include a host, in an example IBM zSeries* system; a RISC (Reduced Instruction Set Computer) based server, in an example IBM pSeries* system; an IBM xSeries* system; an IBM BladeCenter* system; storage devices; and networks and network components. Examples of software components include network application server software, in an example IBM WebSphere* application server software; and database software, in an example IBM DB2* database software.
[0188] The virtualization layer 62 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers; virtual storage devices; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients.
[0189] In one example, management layer 64 can provide the following functionalities: Resource provisioning provides dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and pricing provides cost tracking as resources are utilized within the cloud computing environment and issues invoices or bills for the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection for data and other resources. User portal provides consumers and system administrators with access to the cloud computing environment. Service level management provides the allocation and management of cloud computing resources to ensure that required service levels are met. Service level agreement (SLA) plans and fulfills the pre-arrangement and procurement of cloud computing resources, anticipating future requirements for those resources according to the SLA.
[0190] Workload tier 66 provides examples of functionalities that can be utilized in a cloud computing environment. Examples of workloads and functionalities that can be provided from this tier include: mapping and navigation; software development and lifecycle management; virtual classroom education delivery; data analytics and processing; transaction processing; and degradation management 68, such as... Figures 1-15 As shown in the image.
[0191] Additional Implementation Details
[0192] The described operations can be implemented as a method, apparatus, or computer program product using standard programming and / or engineering techniques to produce software, firmware, hardware, or any combination thereof. Therefore, aspects of the implementation can take the form of a completely hardware implementation, a completely software implementation (including firmware, resident software, microcode, etc.), or an implementation combining software and hardware aspects (collectively referred to herein as a "circuit," "module," or "system"). Furthermore, aspects of the embodiments can take the form of a computer program product. A computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to execute aspects of this embodiment.
[0193] Computer-readable storage media can be tangible means for retaining and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital universal disk (DvD), memory sticks, floppy disks, mechanical encoding devices such as punch cards or protrusions in slots having instructions recorded thereon, and any suitable combination of the foregoing. As used herein, computer-readable storage media should not be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses passing through fiber optic cables), or electrical signals transmitted through wires.
[0194] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a suitable computing / processing device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network), or to an external computer or external storage device. The network may include copper cables, optical fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to a computer-readable storage medium within the suitable computing / processing device.
[0195] Computer-readable program instructions used to perform the operations of this embodiment may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages (such as Smalltalk, C++, etc.) and conventional procedural programming languages (such as the "C" programming language or similar programming languages). The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network (including a local area network (LAN) or a wide area network (WAN)) or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) may be personalized to execute computer-readable program instructions by utilizing state information from the computer-readable program instructions in order to perform aspects of this embodiment.
[0196] This document describes aspects of the embodiments of the invention with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It should be understood that each block of the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.
[0197] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / actions specified in one or more boxes of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that causes a computer, programmable data processing apparatus, and / or other device to operate in a particular manner, such that the computer-readable storage medium storing the instructions includes an article of manufacture containing instructions that implement aspects of the functions / actions specified in one or more boxes of a flowchart and / or block diagram.
[0198] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce computer-implemented processing, such that the instructions executed on the computer, other programmable apparatus, or other device perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.
[0199] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. Each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative embodiments, the functions marked in the blocks may occur in a non-linear order. For example, depending on the functions involved, two consecutively shown blocks may actually be executed substantially simultaneously, or these blocks may sometimes be executed in reverse order. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, can be implemented using a dedicated hardware-based system that performs the specified function or action or executes a combination of dedicated hardware and computer instructions.
[0200] Figure 16 The diagram illustrates block diagrams of elements that may be included in a storage controller 102 or a host 108 or other computing device according to certain embodiments. System 1600 may include circuitry 1602, which in some embodiments may include at least a processor 1604. System 1600 may also include memory 1606 (e.g., a volatile memory device) and storage device 1608. Storage device 1608 may include non-volatile storage devices (e.g., EEPROM, ROM, PROM, flash memory, firmware, programmable logic, etc.), disk drives, optical disk drives, tape drives, etc. Storage device 1608 may include internal storage devices, attached storage devices, and / or network-accessible storage devices. System 1600 may include program logic 1610, which includes code 1612 that can be loaded into memory 1606 and executed by processor 1604 or circuitry 1602. In some embodiments, program logic 1610 including code 1612 may be stored in storage device 1608. In some other embodiments, program logic 1610 may be implemented in circuitry 1602. One or more components of system 1600 may communicate via a bus or other coupling or connection 1614. Therefore, although Figure 16 Program logic 1610 is shown as separate from other components, but program logic 1610 can be implemented in memory 1606 and / or circuit 1602.
[0201] Some embodiments may relate to a method for automating processes by which human personnel deploy computational instructions or integrate computer-readable code into a computing system, wherein the code, combined with the computing system, is capable of performing the operations of the described embodiments.
[0202] Unless otherwise expressly stated, the terms “an embodiment,” “embodiment,” “embodiments,” “the embodiment,” “the embodiments,” “one or more embodiments,” “some embodiments,” and “one embodiment” mean “one or more (but not all) embodiments of the present invention.”
[0203] Unless otherwise expressly stated, the terms “including,” “comprising,” “having,” and variations thereof mean “including but not limited to.”
[0204] Unless otherwise expressly stated, the enumeration list of items does not imply that any or all items are mutually exclusive.
[0205] Unless otherwise expressly stated, the terms “a,” “an,” and “the” mean “one or more.”
[0206] Unless otherwise expressly stated, devices communicating with each other do not need to communicate continuously. Furthermore, devices communicating with each other may communicate directly or indirectly through one or more intermediaries.
[0207] The description of embodiments having multiple components that communicate with each other does not imply that all such components are necessary. Rather, various optional components are described to illustrate various possible implementations of the invention.
[0208] Furthermore, while process steps, method steps, algorithms, etc., can be described in a sequential order, such processes, methods, and algorithms can be configured to operate in an alternative order. In other words, any order or sequence of the steps that can be described does not necessarily indicate the requirement to perform these steps in that order. The steps of the process described herein can be performed in any actual order. Moreover, some steps can be performed simultaneously.
[0209] When a single device or item is described herein, it will be apparent that more than one device / item (whether or not they cooperate) may be used in place of that single device / item. Similarly, when more than one device or item (whether or not they cooperate) is described herein, it will be apparent that a single device / item may be used in place of more than one device or item, or that a different number of devices / items may be used in place of the number of devices or programs shown. The functionality and / or features of a device may alternatively be embodied by one or more other devices not explicitly described as having such functionality / features. Thus, other embodiments of the invention do not necessarily need to include the device itself.
[0210] The diagrams may show at least some operations that indicate certain events occurring in a specific order. In alternative embodiments, some operations may be performed, modified, or removed in a different order. Furthermore, steps can be added to the logic described above, still conforming to the described embodiments. Further, the operations described herein may occur sequentially, or some operations may be processed in parallel. Additionally, operations may be performed by a single processing unit or by distributed processing units.
[0211] For illustrative and descriptive purposes, the foregoing description of various embodiments of the invention has been presented. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in accordance with the foregoing teachings. It is intended that the scope of the invention be limited not by this detailed description, but by the appended claims. The foregoing specification, examples, and data provide a complete description of the manufacture and use of the compositions of the invention. The scope of the invention is defined by the following appended claims.
[0212] *IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation registered in many jurisdictions worldwide.
Claims
1. A computer-implemented method, comprising: Calculate a first score corresponding to full-span degradation, a second score corresponding to strip degradation, and a third score corresponding to individual track degradation, wherein the first, second, and third scores are calculated based on a first metric and a second metric for a set of input / output I / O operations, wherein the first metric is configured to affect data transfer performance, and wherein the second metric is configured to affect drive lifetime, wherein the first score is increased more than the second score in response to data being sequentially written to memory, and wherein the third score is increased for a first flash memory wear level greater than a second flash memory wear level, and the first and second scores are increased for the second flash memory wear level; and Based on the first score, the second score, and the third score, determine which type of degradation to perform, and perform the determined degradation type.
2. The method according to claim 1, wherein, The first metric configured to affect the performance of data transmission includes I / O operations and bandwidth on blocks, non-volatile storage (NVS) capacity, parity lock contention, holes, and unmodified data in spans.
3. The method according to claim 2, wherein, The second metric configured to affect drive lifespan includes the drive's wear level, the drive's daily write classification, and the amount of modified data in the span.
4. The method according to claim 3, further comprising: In response to determining that the first score is the highest among the first score, the second score, and the third score, the full-span downgrade is performed.
5. The method according to claim 3, further comprising: In response to determining that the second score is the highest among the first score, the second score, and the third score, the strip downgrade is performed.
6. The method according to claim 3, further comprising: In response to determining that the third score is the highest among the first score, the second score, and the third score, the individual track degradation is performed.
7. The method according to claim 1, further comprising: Read the first weight of the first metric and the second weight of the second metric from the configuration data structure; as well as A first score, a second score, and a third score are calculated based on a first weight provided to a first sub-score and a second weight provided to a second sub-score, wherein the first sub-score is calculated based on the first metric and the second sub-score is calculated based on the second metric.
8. A computing system, comprising: Memory; as well as A processor, coupled to the memory, wherein the processor performs operations, the operations performed by the processor including: Calculate a first score corresponding to full-span degradation, a second score corresponding to strip degradation, and a third score corresponding to individual track degradation, wherein the first, second, and third scores are calculated based on a first metric and a second metric for a set of input / output I / O operations, wherein the first metric is configured to affect data transfer performance, and wherein the second metric is configured to affect drive lifetime, wherein the first score is increased more than the second score in response to data being sequentially written to memory, and wherein the third score is increased for a first flash memory wear level greater than a second flash memory wear level, and the first and second scores are increased for the second flash memory wear level; and Based on the first score, the second score, and the third score, determine which type of degradation to perform, and perform the determined degradation type.
9. The system according to claim 8, wherein, The first metric configured to affect the performance of data transmission includes I / O operations and bandwidth on blocks, non-volatile storage (NVS) capacity, parity lock contention, holes, and unmodified data in spans.
10. The system according to claim 9, wherein, The second metric configured to affect drive lifespan includes the drive's wear level, the drive's daily write classification, and the amount of modified data in the span.
11. The system of claim 10, further comprising: In response to determining that the first score is the highest among the first score, the second score, and the third score, the full-span downgrade is performed.
12. The system according to claim 10, wherein the operation further comprises: In response to determining that the second score is the highest among the first score, the second score, and the third score, the strip downgrade is performed.
13. The system according to claim 10, further comprising: In response to determining that the third score is the highest among the first score, the second score, and the third score, the individual track degradation is performed.
14. The system according to claim 8, wherein the operation further comprises: Read the first weight of the first metric and the second weight of the second metric from the configuration data structure; as well as A first score, a second score, and a third score are calculated based on a first weight provided to a first sub-score and a second weight provided to a second sub-score, wherein the first sub-score is calculated based on the first metric and the second sub-score is calculated based on the second metric.
15. A computer program product comprising computer-readable program code configured to perform operations, the operations including: Calculate a first score corresponding to full-span degradation, a second score corresponding to strip degradation, and a third score corresponding to individual track degradation, wherein the first, second, and third scores are calculated based on a first metric and a second metric for a set of input / output I / O operations, wherein the first metric is configured to affect data transfer performance, and wherein the second metric is configured to affect drive lifetime, wherein the first score is increased more than the second score in response to data being sequentially written to memory, and wherein the third score is increased for a first flash memory wear level greater than a second flash memory wear level, and the first and second scores are increased for the second flash memory wear level; and Based on the first score, the second score, and the third score, determine which type of degradation to perform, and perform the determined degradation type.
16. The computer program product according to claim 15, wherein, The first metric configured to affect the performance of data transmission includes I / O operations and bandwidth on blocks, non-volatile storage (NVS) capacity, parity lock contention, holes, and unmodified data in spans.
17. The computer program product according to claim 16, wherein, The second metric configured to affect drive lifespan includes the drive's wear level, the drive's daily write classification, and the amount of modified data in the span.
18. The computer program product according to claim 17, wherein the operation further comprises: In response to determining that the first score is the highest among the first score, the second score, and the third score, the full-span downgrade is performed.
19. The computer program product according to claim 17, wherein the operation further comprises: In response to determining that the second score is the highest among the first score, the second score, and the third score, the strip downgrade is performed.
20. The computer program product of claim 17, wherein the operation further comprises: In response to determining that the third score is the highest among the first score, the second score, and the third score, the individual track degradation is performed.
Citation Information
Patent Citations
Destage grouping for sequential fast write tracks
US20150134914A1
