Recovery of data from sequential storage media

By establishing a global index and media-specific deduplication mechanism between multiple media accessing storage devices in sequence, identifying and managing duplicate data fragments, the balance of seek time and storage resource utilization in sequential storage media is solved, and efficient data storage and recovery is achieved.

CN120188138APending Publication Date: 2025-06-20HUAWEI TECH CO LTD
View PDF 0 Cites 1 Cited by

Patent Information

Application Number
CN202280101808.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-12-15
Publication Date
2025-06-20

AI Technical Summary

Technical Problem

In the prior art, when sequential storage media is used for data storage, it is difficult to effectively balance seeking time and storage resource utilization, especially when deduplication is performed.

Method used

By establishing a global index and media-specific deduplication mechanism between media accessing storage devices sequentially, duplicate data fragments are identified and managed, combining predicted total recovery time is determined, including duplicate fragments, rewrite fragments, and new data fragments, and writing them to the appropriate media.

Benefits of technology

Maximizing the use of existing duplicate data fragments while keeping the predicted total recovery time less than the threshold, balancing the contradictory requirements of seek time and storage resource utilization, and improving the performance of tape drives and the durability of media.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120188138A_ABST
    Figure CN120188138A_ABST
Patent Text Reader

Abstract

A system for managing a sequential storage medium of a plurality of sequential access storage devices for deduplication storage of target data on the sequential storage medium is provided. A processor identifies duplicate segments of segments of target data on a medium. The processor determines a combination of predicted total recovery times less than a threshold. The combination includes one or more of the identified duplicate segment, the rewrite segment, and the new data segment. The rewrite segment is a duplicate segment designated for rewriting onto the medium as new data. The new data segments include data in duplicate segments that are not currently stored on the medium, i.e., non-duplicate segments. New data segments are designated for first writing as new data onto the medium. The processor writes according to the combination indication, i.e., writes a rewrite segment and / or a new data segment onto the identified medium.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND OF THE INVENTION

[0001] In some embodiments of the present invention, the present invention relates to storage systems, and more particularly, but not exclusively, to the management of deduplication-based storage systems for storing data on sequential storage media.

[0002] Deduplication-based storage systems eliminate redundant storage of identical data blocks by storing references to previously stored data blocks instead of storing another duplicate data block of the same data block. However, even with deduplication, the storage requirements have reached a point where disks are no longer large enough to meet the demand. Due to the lower cost of tapes and / or longer data retention times, the focus of secondary storage and archiving is shifting from disks with deduplication capabilities to sequential storage media such as tape technology. The seek time in tapes is relatively long, on the order of tens of seconds, which is the time required for the tape drive to roll the tape to the position where the data needs to be read. According to the Linear Tape Open (LTO) 9 standard, the length of the tape (i.e., the maximum seek time) exceeds 1 kilometer. Due to the relatively long seek time in tapes, most applications use tapes without any optimization other than built-in compression. SUMMARY OF THE INVENTION

[0003] An object of the present invention is to provide a computing device, system, computer program product, and method for managing a sequential storage medium accessed by a plurality of sequential access storage devices for deduplication storage of target data.

[0004] The above and other objects are achieved by the features of the independent claims. Other implementations are apparent from the dependent claims, the description, and the drawings.

[0005] According to a first aspect, a device for deduplicated storage of data includes: a processor configured to perform the following operations: identifying at least one medium by accessing a global index that maps each of a plurality of media of a plurality of sequential access storage devices to data segments stored on the media, the at least one medium storing duplicate segments of at least one segment of target data to be stored on the plurality of media; for each correspondingly identified medium, identifying duplicate segments of segments of the target data stored on the medium by accessing a medium-specific deduplication mechanism; determining a combination for which a predicted total recovery time is less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment to be rewritten, and the at least one new data segment includes a non-duplicate segment to be written for the first time; writing at least one of the (ii) at least one rewritten segment and (iii) at least one new data segment to the identified medium.

[0006] The predicted total recovery time for reconstructing the target data is calculated based on segment positions, optionally defined by the global index mapping and / or the medium-specific deduplication mechanism, to select which segments will be written as new data and which existing duplicate segments can be used. The selection is made to ensure that the data is written in a way that keeps the predicted total recovery time less than the threshold while maximizing the utilization of the duplicate segments.

[0007] Since duplicate segments may be scattered at different positions on the media of the sequential access storage device, the more non-sequential regions where the duplicate segments for reconstructing the target data are located, the longer the total recovery time for reading the duplicate segments. Reusing duplicate segments to reconstruct the target data improves the utilization of existing media resources but at the cost of a longer total recovery time. At the other extreme, the shortest total recovery time for reading the segments is when no duplicate segments are used and all segments of the target data are newly written sequentially. The cost of a shorter total recovery time is the use of a larger amount of media resources to store the target data. The embodiments described herein balance these two conflicting requirements by selecting a combination of segments of the target data predicted to have a total recovery time less than the selected threshold while maximizing the utilization of existing duplicate segments, such that the predicted total recovery time remains below the threshold.

[0008] Rewriting some of the repeated segments of the identifier as new data (i.e., rewritten segments) together with the non-repeated segments (e.g., buffering in other storage media such as HDD or SSD before dumping to tape) can further improve the performance of the tape drive, e.g., prevent "shoe-shining" (back-and-forth tape movement), and reduce repeated stops and starts of the tape movement, which increases the lifespan of the tape and / or increases the durability of the tape.

[0009] According to a second aspect, a device for recovering data includes: a processor configured to perform the following operations: receiving a request to read target data stored on at least one of a plurality of media of a sequential access storage device that stores the target data as a plurality of segments; reading metadata to obtain the locations of the plurality of segments of the target data on the at least one media; wherein the segments of the target data are stored as a combination selected during a write phase to obtain a predicted total recovery time less than a threshold, the combination including at least one of: (i) at least one repeated segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one repeated segment that is rewritten, and the at least one new data segment includes a non-repeated segment that is written for the first time; reading the segments according to the locations obtained from the metadata; and recovering the target data from the read segments.

[0010] When the write is completed according to the selected combination, data recovery is expected to be performed below the threshold.

[0011] According to a third aspect, a method for deduplicating and storing data includes: identifying at least one media that stores repeated segments of at least one segment of target data to be stored on the plurality of media by accessing a global index that maps each of the plurality of media of a plurality of sequential access storage devices to data segments stored on the media; for each correspondingly identified media, identifying repeated segments of the segments of the target data stored on the media by accessing a media-specific deduplication mechanism; determining a combination with a predicted total recovery time less than a threshold, the combination including at least one of: (i) at least one repeated segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one repeated segment to be rewritten, and the at least one new data segment includes a non-repeated segment to be written for the first time; and writing at least one of the (ii) at least one rewritten segment and (iii) at least one new data segment to the identified media.

[0012] According to a fourth aspect, a non-transitory medium storing program instructions for deduplicated storage of data, when the program instructions are executed by at least one processor, causes the at least one processor to perform the following operations: identify at least one medium by accessing a global index that maps each of a plurality of media of a plurality of sequential access storage devices to data segments stored on the media, the at least one medium storing a duplicate segment of at least one segment of target data to be stored on the plurality of media; for each correspondingly identified medium, identify a duplicate segment of a segment of the target data stored on the medium by accessing a medium-specific deduplication mechanism; determine a combination for which a predicted total recovery time is less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment to be rewritten, and the at least one new data segment includes a non-duplicate segment to be written for the first time; write at least one of the (ii) at least one rewritten segment and (iii) at least one new data segment to the identified medium.

[0013] According to a fifth aspect, a method for recovering data includes: receiving a request to read target data stored on at least one of a plurality of media of a sequential access storage device that stores the target data as a plurality of segments; reading metadata to obtain positions of the plurality of segments of the target data on the at least one medium; wherein the segments of the target data are stored as a combination selected during a write phase to obtain a predicted total recovery time less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment that is rewritten, and the at least one new data segment includes a non-duplicate segment that is written for the first time; read the segments according to the positions obtained from the metadata; recover the target data from the read segments.

[0014] According to a sixth aspect, a non-transitory medium stores program instructions for data recovery, which, when executed by at least one processor, cause the at least one processor to perform the following operations: receiving a request for reading target data stored on at least one of a plurality of media of a sequential access storage device that stores the target data as a plurality of segments; reading metadata to obtain the positions of the plurality of segments of the target data on the at least one media; wherein the segments of the target data are stored as a combination selected during a write phase to obtain a predicted total recovery time less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment that is rewritten, and the at least one new data segment includes a non-duplicate segment that is written for the first time; reading the segments according to the positions obtained from the metadata; and recovering the target data from the read segments.

[0015] In further implementations of the first, second, and third aspects, the processor is further configured to write metadata indicating the position of the combination on the media for reading and obtaining the predicted total recovery time less than the threshold.

[0016] The metadata provides the positions of the segments of the combination to obtain the predicted total recovery time less than the threshold during a read phase.

[0017] In further implementations of the first, second, and third aspects, the processor is further configured to read the metadata to determine the positions of the segments of the combination for reading to obtain the predicted total recovery time less than the threshold.

[0018] In further implementations of the first, second, and third aspects, the at least one rewritten segment and the at least one new data segment are sequentially written to the available space on the identified media.

[0019] Writing the duplicate segment and / or the new data sequentially provides a faster sequential data read time compared to reading the duplicate segment, and reading the duplicate segment results in a longer read time due to the movement of the media and / or the read head to different positions of the duplicate segment.

[0020] In further implementations of the first, second, and third aspects, the processor is further configured to: calculate a plurality of combinations, each combination including different combinations of repeated segments and rewritten segments; for each combination, calculate the predicted total recovery time; and select the combination with a predicted total recovery time less than the threshold and having the maximum repetition rate.

[0021] Calculating different combinations enables the selection of the best combination, providing the highest repetition rate while keeping the predicted total recovery time below the threshold.

[0022] In further implementations of the first, second, and third aspects, each combination includes a different subset of the repeated segments, wherein the repeated segments with the excluded identifiers are classified as rewritten segments.

[0023] Excluding the repeated segments of some identifiers and instead writing them sequentially together with the non-repeated segments reduces the total recovery time and keeps the predicted total recovery time below the threshold.

[0024] In further implementations of the first, second, and third aspects, the processor is further configured to: calculate a baseline recovery time for reading the plurality of segments of the target data using a first set of the repeated segments with the identifiers; calculate the difference between the threshold and the baseline recovery time; iteratively delete at least one of the repeated segments with the identifiers from the first set until the predicted total recovery time is less than the threshold, wherein the repeated segments with the identifiers deleted from the first set are added to a second set as rewritten segments.

[0025] A set of repeated segments can be added / deleted according to the prediction result to obtain the best combination of segments. Different combinations can include different numbers of repeated segments. The remaining segments included in the combination are the repeated segments that are rewritten in a different order and the non-repeated segments that are written sequentially.

[0026] In further implementations of the first, second, and third aspects, the threshold defines the maximum time from receiving a recovery request to reconstructing the target data from the read segments and making it ready.

[0027] The threshold is defined based on the time relevant from the user's perspective.

[0028] In further implementations of the first, second, and third aspects, the plurality of sequential access storage devices includes tape drives, the plurality of media includes cassette tapes, and the predicted total recovery time is calculated by determining the order for reading the segments of the target data and based on the maximum seek time for the first segment, the seek time between segments in the order for reading, the read throughput, the read head wrap change, and the tape library load time.

[0029] These parameters depend on the connection type (e.g., cFC, SAS), tape drive / tape library type, inserted cassette tape type (LTO9, LTO8...), and drive compression on / off, thus providing a custom option to select which duplicate segments to use and which duplicate segments to rewrite as new data.

[0030] In further implementations of the first, second, and third aspects, the order for reading is calculated based on the nearest neighbor method, which takes into account the positions of segments on different wraps that are physically close to each other and minimizes the total distance traversed by the read head between the segments.

[0031] Moving the head of the tape drive across multiple wraps may be faster than moving the head of the tape drive across the length of one wrap. By selecting different movements of the head across the wraps to change the order of reading, the predicted total recovery time can be further reduced. Additionally, moving the head of the tape drive across the wraps is more efficient compared to running the tape back and forth (also known as "shoe-shining") and significantly increases the lifespan of the tape. Moreover, moving the head of the tape drive across the wraps can reduce the number of times the tape movement stops and restarts, improve the efficiency of the tape movement, and increase the durability of the tape.

[0032] In further implementations of the first, second, and third aspects, the threshold is defined according to a service level agreement (SLA).

[0033] The selection of the combination can be based on the SLA associated with the target data. For each target data written to the sequential storage system, the client can select the SLA that defines the longest time. The threshold can be customized, with different users selecting different values.

[0034] In further implementations of the first, second, and third aspects, the processor is further configured to: update at least one medium-specific deduplication mechanism of the at least one identified medium to indicate duplicate segments, the at least one rewritten segment, and non-duplicate segments included in the selected combination of the target data; update the global index to indicate the mapping between the segments of the target data used during the access; update the global file mapping to store identifiers of the at least one segment of the target data; and update the identification table to store metadata for each identifier.

[0035] In further implementations of the first, second, and third aspects, when at least two media are identified, a corresponding combination with a corresponding predicted total recovery time less than the threshold is selected for each medium.

[0036] In an environment of deduplicated data stored on multiple media read in parallel, the total reconstruction time remains below the threshold.

[0037] In further implementations of the first, second, and third aspects, the processor is further configured to aggregate duplicate segments that are physically close to each other on the identified medium, wherein the combination includes at least one cluster of duplicate segments, and the new data is included in at least one rewritten cluster.

[0038] Aggregation reduces the number of elements in the combination, thereby optionally reducing the total number of possible combinations to a smaller number. A smaller number of combinations enables efficient selection of a combination.

[0039] In further implementations of the first, second, and third aspects, the predicted total recovery time is calculated based on the seek time between clusters.

[0040] When reading data within a cluster sequentially, the total read and seek time of the cluster is shorter than that of non-aggregated segments. This is because when the segments in a cluster are close to each other, reading the entire data of the cluster sequentially (including the irrelevant data between segments) is faster than stopping at the end of a segment, skipping the irrelevant data between segments, and seeking to the start of the next segment - the latter is much slower.

[0041] In a further implementation of the second aspect, the order of reading segments is based on the order selected during writing to obtain a predicted total recovery time less than the threshold.

[0042] Unless otherwise defined, all technical and / or scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Although methods and materials similar or equivalent to those described herein can be used in the practice or testing of embodiments of the present invention, exemplary methods and / or materials are described below. In case of conflict, the patent specification, including definitions, will control. In addition, these materials, methods, and examples are illustrative only and not necessarily limiting. BRIEF DESCRIPTION OF THE DRAWINGS

[0043] Some embodiments of the present invention are described herein by way of example only, in conjunction with the accompanying drawings. Now, with specific and detailed reference to the drawings, it should be emphasized that the details shown are for purposes of illustration and for the purpose of an illustrative discussion of embodiments of the present invention. In this regard, the description in conjunction with the drawings makes it apparent to those skilled in the art how to practice the embodiments of the present invention.

[0044] In the drawings:

[0045] Figure 1 is a flowchart of a method for calculating a combination of segments of target data having a predicted total recovery time less than a threshold for deduplicated storage of the target data on a sequential storage medium accessed by a sequential access storage device;

[0046] Figure 2 is a block diagram of components of a system for calculating a combination of segments of target data having a predicted total recovery time less than a threshold for deduplicated storage on a sequential storage medium (e.g., a tape);

[0047] Figure 3A is a flowchart of a method for deduplicated storage on a sequential storage medium according to some embodiments;

[0048] Figure 3B is a flowchart of a method for calculating a combination of segments of target data for deduplicated storage on a sequential storage medium according to some embodiments;

[0049] Figure 4 is a method for reading a combination of segments of target data written to have a predicted total recovery time less than a threshold according to some embodiments;

[0050] Figure 5 One schematic diagram helps to explain why the linear recall efficiency is very low, and another schematic diagram helps to explain why the ordered recall efficiency is higher; and

[0051] Figure 6A schematic diagram for helping to explain the calculation of predicted seek time for different combinations of duplicate segments for identification according to some embodiments described herein. Detailed Description

[0052] In some embodiments of the present invention, the present invention relates to a storage system, and more specifically, but not exclusively, to the management of a deduplication-based storage system for storing data on sequential storage media.

[0053] Aspects of some embodiments relate to systems, methods, computing devices, and / or apparatuses, and / or computer program products (storing code instructions executable by one or more processors) for managing sequential storage media of a plurality of sequential access storage devices (also referred to herein as "media") for deduplication storage of target data on the media. The sequential access storage devices are not randomly accessed and can be, for example, a tape library having hundreds of tape drives and thousands of cartridges. The processor divides the target data into a plurality of data segments (also referred to herein as "segments"). The processor identifies duplicate segments of one or more segments of the target data on one or more media. The processor determines a combination for which the predicted total recovery time is less than a threshold (e.g., defined by a service level agreement (SLA)). The combination includes at least one of the following: (i) one or more identified duplicate segments, (ii) one or more rewritten segments, (iii) one or more new data segments. The rewritten segments have the same data as the identified duplicate segments, where the rewritten segments are designated for being rewritten as new data onto the media, e.g., rewritten on available space (e.g., appended to the end of existing written data). The new data segments include data in duplicate segments that are not currently stored on the media, i.e., the new data segments are non-duplicate segments. The new data segments are designated for being first written as new data onto the media. The processor instructs writing according to the combination, i.e., writes the rewritten segments and / or the new data segments onto the identified media.

[0054] One aspect of some embodiments relates to a system, method, computing device, and / or apparatus, and / or computer program product (storing code instructions executable by one or more processors) for recovering data stored on one or more media. A processor receives a request to read target data. The processor reads metadata to obtain the locations of the segments of the target data on the one or more media. The segments of the target data are stored as a combination selected during a write phase to obtain a predicted total recovery time less than a threshold. The processor instructs to read the segments according to the locations obtained from the metadata. It should be noted that according to the indication of the metadata, even if some segments are duplicates, the rewritten segments may be read instead of the duplicate segments in order to obtain a predicted total recovery time less than the threshold. The processor recovers the target data from the read segments.

[0055] The predicted total recovery time for reconstructing the target data is calculated based on the segment locations, optionally defined by the global index mapping and / or a media-specific deduplication mechanism, to select which segments will be written as new data and which existing duplicate segments can be used. The selection is made to ensure that the data is written in a way that makes the predicted total recovery time less than the threshold while maximizing the utilization of the duplicate segments.

[0056] Since the duplicate segments may be scattered at different locations on the media of the sequential access storage device, the more the number of non-sequential regions where the duplicate segments for reconstructing the target data are located, the longer the total recovery time for reading the duplicate segments. Reusing the duplicate segments to reconstruct the target data improves the utilization of existing media resources but at the cost of a longer total recovery time. At the other extreme, the shortest total recovery time for reading the segments is when no duplicate segments are used and all segments of the target data are newly written sequentially. The cost of the shorter total recovery time is the use of a larger amount of media resources to store the target data. The embodiments described herein balance these two conflicting requirements by selecting a combination of segments of the target data predicted to have a total recovery time less than the selected threshold while maximizing the utilization of existing duplicate segments, such that the predicted total recovery time remains below the threshold.

[0057] Writing some of the identified duplicate segments as new data (i.e., rewritten segments) together with the non-duplicate segments (e.g., buffered in other storage media such as HDD or SSD before dumping to tape) can further improve the performance of the tape drive, for example, prevent "shoe-shining" (back-and-forth tape movement), and reduce the repeated stops and starts of the tape movement, which increases the lifespan and / or increases the durability of the tape.

[0058] At least some of the embodiments described herein address the following technical problem: balancing the conflicting requirements of reducing seek time on deduplicated segments scattered across one or more different sequential storage devices (e.g., magnetic tapes) and increasing data deduplication to reduce the amount of storage media used. At least some of the embodiments described herein select the lowest seek time for data recovery in the case of possible deduplication (optionally the best possible or near-best possible deduplication), which is less than a defined maximum seek time threshold, e.g., as defined by a service level agreement (SLA).

[0059] Despite different deduplication systems, such a technical solution is designed for disk-based storage systems (i.e., random access data storage devices such as hard disks and / or solid state drives (SSDs)). Deduplication designed for disk-based storage cannot be easily migrated to tape storage because the amount of data stored on tape is large (e.g., at least about 100 times that of disk storage) and / or the operating methods of tape and disk storage are different.

[0060] There are existing methods for managing data stored on tapes. In the most common method, deduplication is not used. When data is written to tape, the data is written in its original (i.e., non-deduplicated) form. Even if the data is moved in a deduplicated form (e.g., on disk), the data is first inflated to its original non-deduplicated form and stored in a non-deduplicated format. In another example of a method, data is sent to tape in such a way that the data sent together is only deduplicated with other parts of the group. For such an operation, the data is processed to find matches within the group, and these matches are saved as a unit. For example, one such method focuses on how to save this group of data in a way that reduces recovery time. In another example, a full backup and a series of incremental data are created and saved together as a unit (referred to as a SILO). The limitation of this method is the need for a closed group. Such a closed group requires a large amount of computational preprocessing and significantly reduces the deduplication rate. For example, the SILO method with monthly full data (assuming a 2% daily varying portion that falls on previous changes) will achieve a deduplication rate close to 1:1 because the incremental data has a low common block with the full data (i.e., if they do not change, they are not included in the incremental data). The main benefit will come from deduplication between full backups. Monthly full data and daily incremental data for a year will achieve a ratio of approximately 1:12 because the full data is also much larger (in the normal case).

[0061] An exemplary physical structure of tape storage is now described. A tape includes tracks on which data is written and read. The tracks run along the length of the tape, from the start of the tape to the end of the tape. The head of a tape drive is used for reading and writing, and the head includes multiple read and write elements that assist in reading / writing multiple adjacent tracks. A set of such adjacent tracks is called a wrap. Additionally, the tape is divided into multiple bands. The tape drive head covers the width of a single band. Each band consists of an even number of wraps. Data is recorded on the tape in a linear serpentine manner: the first wrap is written from the start to the end, then the second wrap is written from the end to the start, then the third wrap is written from the start to the end, and so on. The direction of recording and reading is the direction of the relevant wrap. So wraps 0, 2, 4... go from the start of the tape to the end of the tape, while wraps 1, 3, 5... go from the end of the tape to the start of the tape. A band consists of an equal number of wraps from start to end and wraps from end to start. In an LTO 9 tape (a tape constructed according to the 9th generation of the Linear Tape Open specification), each wrap has 32 tracks, each band has 52 wraps (26 wraps from start to end and 26 wraps from end to start) and 4 bands. In modern tapes, the length of the tape (i.e., the length of each wrap) can exceed 1 kilometer (1035 meters in LTO 9).

[0062] Before explaining in detail at least one embodiment of the present invention, it is to be understood that the present invention in its application is not necessarily limited to the details of the construction and arrangement of components and / or methods set forth in the following description and / or illustrated in the drawings and / or examples. The present invention is capable of other embodiments or of being practiced or carried out in various ways.

[0063] The present invention can be a system, a method, and / or a computer program product. The computer program product may include a computer-readable storage medium having computer-readable program instructions that cause a processor to execute aspects of the present invention.

[0064] The computer-readable storage medium can be a tangible device that is capable of retaining and storing instructions for use by an instruction execution device. The computer-readable storage medium can be, but is not limited to, for example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing devices.

[0065] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network such as the Internet, a local area network, a wide area network, and / or a wireless network.

[0066] Computer-readable program instructions may be executed entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network connection, and any type of network includes a local area network (LAN) or a wide area network (WAN); or it may be connected to an external computer (e.g., through the Internet using an Internet service provider). In some embodiments, an electronic circuit including a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA), etc., may execute the computer-readable program instructions by utilizing the status information of the computer-readable program instructions to customize the electronic circuit, thereby implementing various aspects of the present invention.

[0067] Aspects of the present invention are described herein in conjunction with the flowcharts and / or block diagrams of methods, apparatuses (systems), and computer program products according to embodiments of the present 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.

[0068] The flowcharts and block diagrams in the figures illustrate the structure, functions, and operations of the possible implementations of the systems, methods, and computer program products provided by various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, a section, or a part of an instruction, including one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions described in the blocks may not be executed in the order illustrated in the figures. For example, in fact, two consecutive blocks shown may be executed almost simultaneously, or sometimes, the blocks may be executed in the reverse order, depending on the functions involved. It should also be noted that each block in the block diagram and / or flowchart, and combinations of blocks in the block diagram and / or flowchart, can be executed by a system based on dedicated hardware that performs specific functions or actions, or by a combination of dedicated hardware and computer instructions.

[0069] Now refer to Figure 1 , Figure 1 is a flowchart of a method of components of a system 100 for computing a combination of segments of target data whose predicted total recovery time is less than a threshold for deduplication storage of target data 112A on a sequential storage medium 160 accessed by a sequential access storage device 150. Also refer to Figure 2 ,Figure 2 is a block diagram of components of a system 200 for computing combinations of segments of target data having a predicted total recovery time less than a threshold for deduplicated storage on a sequential storage medium (e.g., magnetic tape) 252. Also refer to Figure 3A , Figure 3A is a flowchart of a method for deduplicated storage on a sequential storage medium according to some embodiments. Also refer to Figure 3B , Figure 3B is a flowchart of a method for computing combinations of segments of target data for deduplicated storage on a sequential storage medium according to some embodiments. Also refer to Figure 4 , Figure 4 is a method for reading combinations of segments of target data written to have a predicted total recovery time less than a threshold according to some embodiments. Also refer to Figure 5 , Figure 5 Schematic diagram 502 helps to explain why linear backtracking efficiency is very low, and another schematic diagram 504 helps to explain why ordered backtracking efficiency is higher. Also refer to Figure 6 , Figure 6 includes schematic diagrams that help to explain the calculation of predicted seek times for different combinations of identified duplicate segments according to some embodiments described herein.

[0070] The components of system 100 and / or 200 may implement the actions of the methods referred to in Figure 3A and Figure 3B and Figures 4 to 6 described, e.g., by one or more processors 102 of a computing device 104 executing code instructions (e.g., code 106A) stored in a memory 106.

[0071] The computing device 104 obtains target data 112A for deduplicated storage on a sequential access storage device 150, optionally on a medium 160 accessed by the sequential access storage device 150.

[0072] The sequential access storage device 150 and / or the medium 160 may herein be referred to as sequential access memory and / or non-random access memory, such as a tape tier.

[0073] The medium 160 may herein be referred to as a sequential access storage medium and / or a non-random access storage medium. A sequential access storage device reads and / or writes data sequentially, i.e., does not provide random access to read and / or write data in any order (e.g., in random access memory). The medium 160 may include cassette magnetic storage media such as magnetic tape, sequential access memory (SAM), and / or optical storage media. Sequential access storage devices may include tape drives and / or optical disk drives for optical storage media.

[0074] For example, the target data 112A may be obtained from the client 112 and / or the server 110. The computing device 104 processes the target data 112A, e.g., performs calculations to segment, hash, and / or maintain different accessed data structures as described herein. The global index 116A is accessed to identify which media of the medium 160 may store duplicate segments of the target data 112A as described herein. For each identified medium, the corresponding target-specific deduplication mechanism 150A is accessed to confirm duplicate segments of the target data 112A. The selected duplicate segments, new writes of the duplicated segments, and non-duplicate segments are stored on the identified medium 160. The global index 116A, the global file map 116B, the associated medium-specific deduplication mechanism 150A, and the associated identification table 150B (e.g., metadata) are updated to indicate the presence of duplicate segments and / or newly stored non-duplicate segments such that segments of the target data can be read below a time threshold.

[0075] For example, the computing device 104 may be implemented as one or more of the following: a computing cloud, a cloud network, a computer network, one or more virtual machines (e.g., a hypervisor, a virtual server), a network node (e.g., a switch, a virtual network, a router, a virtual router), a single computing device (e.g., a client terminal), a group of parallel arranged computing devices, a network server, a web server, a storage server, a local server, a remote server, a client terminal, a mobile device, and a fixed device.

[0076] Different architectures of the system 100 may be implemented. For example, the computing device 104 may act as a server to provide centralized storage for the target data 112A obtained from different client terminals 112 and / or servers 110. In another example, the computing device 104 may act as a local manager of the medium 160 for local storage of the target data 112A.

[0077] The computing device 104 includes one or more processors 102, for example, implemented as one or more central processing units (CPUs), one or more graphics processing units (GPUs), one or more field programmable gate arrays (FPGAs), one or more digital signal processors (DSPs), one or more application-specific integrated circuits (ASICs), one or more custom circuits, processors connected to other units, and / or dedicated hardware accelerators. The one or more processors 102 may be implemented as a single processor, a multi-core processor, and / or a processor cluster for parallel processing (which may include homogeneous and / or heterogeneous processor architectures). It should be noted that the one or more processors 102 may be designed to implement one or more features stored as code instructions 106A in hardware.

[0078] The memory 106 stores code instructions executable by the one or more processors 202, for example, random access memory (RAM), dynamic random access memory (DRAM), and / or storage class memory (SCM), non-volatile memory, magnetic media, semiconductor memory devices, hard disk drives, removable memories, and optical media (e.g., DVD or CD-ROM). For example, the memory 106 stores one or more of the following: code 106A, which, when executed by the processor 102, implements one or more features and / or actions of the method described with reference to Figure 3A and Figure 3B as well as Figures 4 to 6 and. A memory large enough to store the global index 116A may be selected.

[0079] The computing device 104 may include a data storage device 116 for storing data, e.g., a queue that accumulates target data 112A to be stored on a medium 160, a global index 116A, a global file map 116B, and / or one or more medium-specific deduplication mechanisms 150A, each of which may be associated with an identification table 150B, as described herein. For example, the data storage device 116 may be implemented as a fast storage layer of a solid state drive (SSD), memory, a local hard disk drive, virtual memory, a solid state device, a storage device, etc. and / or a remote server and / or a computing cloud (e.g., accessed using a network connection).

[0080] The computing device 104 communicates with one or more sequential access storage devices 150 that access (i.e., read and / or write) on one or more media 160. For example, the sequential access storage device 150 may be implemented as a tape drive. The sequential access medium 160 may be accessed, e.g., may be implemented as a tape library, a cartridge tape (e.g., a cartridge tape in a drive and / or a cartridge tape in a slot), e.g., an LTO-9 cartridge tape that stores 18 terabytes (TB). The sequential access storage device 150 may include built-in compression, e.g., an average of 1:2.5 as in the LTO-9 specification.

[0081] The computing device 104 may include a network interface 118 for connecting to a network 114, e.g., a network interface card, a wireless interface for connecting to a wireless network, a physical interface for connecting to a cable for network connection, a virtual interface implemented in software, network communication software that provides a higher layer network connection, and / or one or more in other implementations.

[0082] For example, the network 114 may be implemented as the Internet, a local area network, a virtual private network, a wireless network, a cellular network, a local bus, a point-to-point link (e.g., wired), and / or a combination of the above.

[0083] For example, the computing device 104 may communicate with the sequential access storage device 150 via the network interface 118 on the network 114 and / or using a wireless and / or physical cable link via another interface such as a virtual and / or physical interface (e.g., for reading data from the medium 160 and / or storing data on the medium 160).

[0084] The computing device 104 may include one or more physical user interfaces 108 and / or communicate with one or more physical user interfaces 108, the one or more physical user interfaces 108 including mechanisms that facilitate user input of data and / or viewing of data. For example, exemplary user interfaces 108 include one or more of a touch screen, a display, a keyboard, a mouse, and voice activation software using a speaker and a microphone.

[0085] Now return to reference Figure 2 , the components described in reference system 200 may correspond to, incorporate, include, and / or may represent exemplary implementations of the components of the reference Figure 1 described system 100. System 200 may include a fast storage layer 202, and the fast storage layer 202 includes one or more fast data storage devices 204, such as SSDs. For example, the fast storage layer 202 may store target data that is being processed for storage on the tape storage layer 250. It should be noted that the tape represents an exemplary implementation of a sequential access storage device and / or a sequential storage medium, and tape drives and / or cartridges are not necessarily a limitation on other implementations of sequential access storage devices and / or sequential storage media. System 200 includes a tape storage layer 250, and the tape storage layer 250 includes a global index 216A (e.g., a global sparse index) as described herein. The global sparse index 216A may be stored on a fast data storage device (e.g., SSD 206). The tape storage layer 250 includes a plurality of cartridges 252, and each cartridge 252 is read and / or written by a tape drive (not shown). Each cartridge 252 is associated with a tape-specific deduplication mechanism as described herein. For example, each tape-specific deduplication mechanism may include a sparse index 254 and a full index 256 as described herein. It should be noted that other deduplication mechanisms described herein may be used, and the sparse index and the full index represent a non-limiting example. Each set of sparse index 254 and full index 256 may be stored, for example, on the fast data storage device 206.

[0086] Now return to reference Figure 3A , in 302, target data for storage on the medium of a sequential access storage device is obtained. Among them, the target data may be, for example, data for archiving.

[0087] In 304, the target data may be processed by dividing the target data into segments, calculating the fingerprints of the segments, and selecting representatives of the segments.

[0088] The target data may be divided into smaller parts, herein referred to as segments, that is, the target data is divided into data segments (target segments).

[0089] For example, the target data can be partitioned into data segments of constant size and / or variable size. Constant-size segmentation is the process of partitioning data into segments of exactly the same size (e.g., 16 KB or 32 KB or other sizes). It should be noted that in a deduplication-based system, constant segmentation is not widely used because inserting or deleting a few bytes will change all segments starting from the change point, and deduplication will not occur. Variable-size segmentation is the process of partitioning data into segments according to a window of the data. For example, a rolling hash function is used for a rolling window of 64 to 256 bytes. When the hash value of the rolling hash meets certain conditions, the segment is cut and a new segment starts. The condition can be selected such that the minimum / average / maximum size of the segment is an expected value.

[0090] A representation of the target data can be extracted. Optionally, samples of the data segments are identified and a representation is calculated for the sampled data segments.

[0091] As used herein, the term fingerprint (or data fingerprint) refers to a representation extracted from the target data and / or from data stored on the sequential access media described herein. For example, a fingerprint can be extracted by feeding data segments sampled from the target data into a strong hash function (e.g., SHA1 that outputs a 20-byte cryptographic hash, or a newer version of the Secure Hash Algorithm (SHA) that outputs a longer hash value). Fingerprints are used to quickly compare the fingerprint of the target data with the fingerprints of one or more indexes of the global index and / or the media-specific deduplication mechanism, i.e., without comparing the actual target data byte by byte. It should be noted that the chance of false positives can be selected. For example, when using a strong hash, the chance of false positives is very low (for 1 PB of storage, with segments of approximately 16 kilobytes (KB), obtaining 2 36 segments, where the SHA1 signature is 20 bytes = 2 160 , which gives a false positive chance of 1:2 124 .

[0092] It should be noted that the target data can be segmented and / or hashed using the same segmentation and / or hashing as used by the media-specific deduplication mechanism of the media. For example, when disk deduplication and media deduplication use the same values, the segmentation and / or hashing can be skipped, but in general, the segmentation for disk deduplication may be smaller.

[0093] The incoming target data can be written to a fast tier (with or without deduplication), such as a fast data storage device. The target data can accumulate on the fast data storage device, such as in a buffer. For example, the target data can be moved to a medium according to a threshold defined for the fast data storage device and / or a data retention policy. A certain amount of the accumulated target data can be moved to the medium. For example, the target data may be moved in chunks of hundreds of GB each time. For example, the size of the data storage device storing the target data is 10TB, and its threshold rule is that whenever the data passes the 8TB mark, 2TB of the target data will be moved to the medium. Alternatively, the target data can also be written directly to the medium. The fast tier (or, for example, an HDD within a tape tier) can be used as a staging area until enough target data is written.

[0094] In 306, the global index can be accessed. In some embodiments, without using the global index, the method proceeds to feature 308.

[0095] The global index maps between the fingerprints of the representatives and the media storing the data segments corresponding to the representative fingerprints. The global index is used for efficient searching to match fingerprints, which indicates the media with the highest possible number of matching fingerprints for further evaluation to determine actual matches. Search (e.g., look up) one or more target segments (e.g., their fingerprints) of the target data in the global index to determine whether duplicate segments of the corresponding target segments may be stored on one or more media, i.e., candidate matches with one or more target fingerprints. The fingerprints of the target data that can be searched include: all fingerprints, a subset of fingerprints selected using the same method as that for selecting global index entries and / or media-specific deduplication mechanisms, or a combination thereof, such as if the number of matches found is insufficient.

[0096] The global index enables fast lookup of target data set segments to quickly identify which media need to be more carefully inspected to verify the storage of duplicate data segments. For example, an operation without a global index would require accessing all indexes of all deduplication mechanisms of all media, which is computationally intensive and / or inefficient when looking for duplicate segments of a large number of data segments and / or on a large number of media storing a large amount of data.

[0097] Obtain search results indicating a subset of media that may store matching data segments, where the matching data segments are duplicate segments of the target data segment. For example, obtain a list of media, where each media indicates how many target data segments may have duplicate segments stored on the media. The best-matching media can be selected. For example, select a predefined number of media with the highest number of matches (indicating the highest number of data segments that are duplicates of the target segment), such as the best 4 or 5 (or other number) of media. Other searches of media-specific deduplication mechanisms can be limited to the best-matching media to avoid excessive search time and / or improve the efficiency of the processor in performing the search.

[0098] For example, as described herein, the global index can be stored on a high-performance storage device (e.g., fast memory, such as RAM, SSD, etc.) that communicates with the processor accessing the global index. The global index can be stored on fast memory to improve memory utilization and / or system performance by enabling fast lookups to quickly identify which media are relevant for further analysis to verify the storage of duplicate segments of the corresponding target segments.

[0099] Optionally, the global index is implemented as a sparse index. The sparse index includes sparsely obtained data segments (e.g., their fingerprints) selected from each medium, i.e., a subset of the fingerprints of the data segments stored on the medium. For example, 2 fingerprint entries are selected for every 4 megabytes (MB) of data or other value. The sparse design of the global index supports storing a sample of data segments from all data segments stored on all media, which may be very large, for quickly identifying which media may store duplicate segments.

[0100] The global index (optionally, the sparse index) can be implemented as a key-value database (KVDB) and / or other searchable data structures that include entries for all media storing related data entries. For example, the search key can be a fingerprint (or a portion thereof), or a weak hash created from the fingerprint. For each key, there can be multiple values indicating one or more media that may store duplicate segments of the data segment represented by the key, i.e., the same data segment can be stored on one or more media.

[0101] A sparse index can map the weak hashes of the fingerprints of target data segments to one or more media, and there is a certain probability of false positive results, which need to be verified to determine whether the target data segment is actually stored on the mapped media. The weak hash can be implemented as part of a strong hash (e.g., bytes 10 to 17 in a 20-byte full hash). The weak hash can be used to detect regions in the data stored on the media that have a high probability of containing similar data. It should be noted that the weak hash is not necessarily used to determine the actual identity of duplicate data, because the false positive chance may not be low enough to confirm the existence of duplicate data. However, since the number of entries in the global index is large enough (e.g., in the range of 10s×G), even with a 64-bit hash, the collision probability is low enough to send to the correct storage area.

[0102] The storage confirmation of the target segment on the media is provided by the media-specific deduplication mechanism of the mapped media, as described herein. The relatively small weak hash design supports quickly determining the media that is most likely to store the duplicate segment of the target data. Using a relatively small weak hash can improve the utilization of the memory for storing the global index.

[0103] The data segments represented in the global index are sampled from the data segments represented in the multiple media-specific deduplication mechanisms of multiple media. Sampling the data segments represented in the multiple media-specific deduplication mechanisms to be included in the global index can efficiently cover a large amount of data stored in multiple media while improving the utilization of the memory for storing the global index.

[0104] The global index is independent of the implementation of the deduplication mechanism of each medium, providing compatibility with different implementation methods of the deduplication mechanisms of different media.

[0105] The values of the segment size and / or resolution of the global index can be configurable.

[0106] Now an exemplary calculation of the global index as a sparse index is provided. The global index includes a subset of the index entries of the media-specific deduplication mechanisms of multiple media. There are M entries per 10GB, e.g., 10GB / M >> 1GB / N. Each entry of the global index can include the following fields: [weak hash (8 to 16 bytes), media ID (4 bytes)].

[0107] In 308, for each corresponding medium of one or more duplicate segments identified by the global index as possibly storing the target data segment, the media-specific deduplication mechanism is accessed.

[0108] Each corresponding media-specific deduplication mechanism may be stored on a high-performance storage device communicating with the specific media to improve memory utilization and / or system performance by enabling fast lookup to quickly identify which media actually stores duplicate fragments of the target data segment. For example, each media-specific deduplication mechanism may be stored on its own separate high-performance data storage device, which can enable parallel access to multiple media-specific deduplication mechanisms. In another example, multiple media-specific deduplication mechanisms may be stored on a common high-performance data storage device.

[0109] An exemplary method for searching for a media-specific deduplication mechanism is now described. Search for a representation (e.g., fingerprint) of the target data in the sparse index of the media-specific deduplication mechanism. For example, search all fingerprints, search a subset of fingerprints that may be stored by the media as indicated by the global index, search a subset of fingerprints selected using the same method used to select fingerprints to include in the sparse index, or a combination thereof, e.g., if an insufficient number of matches are found. The search result indicates which regions of the media may store data segments that are duplicate segments of the target data segment. Read the entries of the full index corresponding to the matches in the sparse index and compare them with the target data segment (e.g., its fingerprint) to determine if there is a match. A match indicates a duplicate segment of the target data segment stored on the media.

[0110] An exemplary implementation of a searchable media-specific deduplication mechanism is now described. It should be noted that there may be different implementations of different media-specific deduplication mechanisms for different media. The media-specific deduplication mechanism may include a full index, which includes all representations (e.g., fingerprints) of all data segments stored on the media. For all data segments stored on the media, the full index may map a strong hash (e.g., fingerprint) of the data segment stored on the media to the offset storage location on the media. The full index may be stored on a fast data storage device. An exemplary calculation of the full index size is now provided. The number of entries per full media = 45TB / segment size (45KB) = approximately 1G entries. Each entry includes the following fields: [ID (8 bytes), offset in the media (8 bytes), size (4 bytes), hash (20 bytes SHA1)]. Without optimization, each entry is 40 bytes. The total size of a full media (e.g., a cassette tape) is 40GB.

[0111] Since the full index is typically too large for efficient and / or fast searching, one or more of the following data structures (associated with the full index) may be accessed before accessing the full index:

[0112] *Sparse index, including samples representing positions of one or more fingerprints in a full index that may include target data. Then, the full index is accessed to compare full fingerprints to confirm the existence of duplicate segments of the target data segment. Now, an exemplary calculation of the sparse index size is provided. The sparse index of the medium is at a ratio of N hashes (e.g., partial fingerprints of strong hashes) per GB of data. For example, the hash can be selected based on local minima or maxima (this ratio can be adjusted as a trade - off between precision and size). The number of entries in the sparse index is 45TB × N / 1GB = 45K × N. Each entry includes the following fields: [weak hash (8 to 16 bytes), block ID in the tape (4 bytes)]. The total size of the sparse index for each full medium < 1MB × N.

[0113] The number of data segments represented in the sparse index can be a defined percentage of the number of data segments represented in the full index. For example, for every 100 data segments in the full index, there are approximately 1 data segment in the sparse index, or other values. The number of data segments represented in the global index can be a defined percentage of the number of data segments represented in the sparse index of the medium. For example, for every 100 to 1000 data segments in the sparse index of the medium, there is approximately 1 data segment in the global index.

[0114] For example, the medium sparse index can reside as an array in a fast disk and / or as a separate table in a global sparse index DB (e.g., using fast data storage devices).

[0115] *Weak hash table, including a mapping from the weak hash of a data segment (e.g., a part of the full fingerprint) to the segment ID of the data segment in the full index. When a weak hash is found in the weak hash table, a series of IDs around the found ID can be loaded into the cache and the fingerprint is looked up in the cache. If the weak hash is not found, the process may return to the weak hash table until all unfound fingerprints have been searched in the weak hash table.

[0116] *Bloom filter, indicating whether a fingerprint may be stored in the full index. The Bloom filter may give false positive answers.

[0117] In 310, based on the analysis of the matching results, one or more media are selected for deduplicated storage of the target data.

[0118] Optionally, a single identified medium is selected for deduplicated storage of the target data. A single medium with the largest number of stored data segments that match the target data segments (i.e., are duplicate segments of the target data segments) can be selected. A single tape can efficiently store the target data using a deduplication mechanism.

[0119] Alternatively, a combination of two or more identified media is selected for deduplicated storage of target data. Using multiple media enables parallel write access to the media, which may be faster than multiple sequential accesses to the same single medium. The number of media in the combination can be limited (e.g., by a maximum value) to avoid involving too many media in the case of data recovery, which can be inefficient.

[0120] Using multiple media may result in a higher deduplication rate than a single medium, while not necessarily increasing the time to perform a recovery. For example, when multiple media match more target segments than a single medium. Additionally, using multiple media can improve memory utilization and / or reduce memory consumption by reducing the case of storing the same data segment on multiple media in the global sparse index.

[0121] A combination of identified media can be selected to obtain the highest target deduplication rate for the target data under defined constraints. The constraints for selecting a combination of identified media can be, for example, partitioning the target data into predefined units (e.g., files), and / or writing partitions of the same unit to the same medium in order to recover a predefined unit from a single medium. Ensuring that partitions of the same data unit (e.g., a file) are stored on the same medium allows for efficient recovery of that unit from a single medium. For example, it is more efficient to reconstruct the same file from a single tape and enables faster access to the reconstructed file compared to accessing multiple tapes to reconstruct the file. In contrast, recovering a file across multiple different tapes is less efficient.

[0122] In 312, the processor determines a combination of segments for which the predicted total recovery time is less than a threshold. The combination includes one or more of the following: one or more identified duplicate segments, one or more rewritten segments, one or more new data segments. A rewritten segment has the same data as an identified duplicate segment, where the rewritten segment is designated for being rewritten as new data onto the medium, e.g., rewritten on available space (e.g., appended to the end of existing written data). The cost of a rewritten segment is the use of additional storage space on the medium, and its advantage is reducing the seek time in order to obtain a predicted total recovery time less than the threshold compared to the seek time of existing replicated segments. New data segments (i.e., non-duplicate segments) include data in duplicate segments that are not currently stored on the medium, i.e., non-duplicate target segments are the portions of the target medium where no duplicate segments (i.e., no matching data segments) are found on the selected medium by searching the global index and / or a medium-specific deduplication mechanism. The new data segments are designated for being written as new data onto the medium for the first time.

[0123] Now return to the reference Figure 3B , which describes an exemplary method for determining a combination of segments.

[0124] In 350, a reception threshold is received. The threshold can be obtained, for example, by manual input by a user, reading from a memory, and / or automatic calculation. The threshold can be defined for each target data or globally for all target data. The threshold can be defined for each client or globally for multiple clients.

[0125] The threshold can be defined according to a service level agreement (SLA). The SLA can be used to customize the threshold for each user. For example, different users select different values.

[0126] The threshold can define the maximum time from receiving a recovery request to reconstructing the target data from read segments and being ready. The threshold can represent the time relevant from the user's perspective. For example, how long does the user need to wait from requesting the target data until the target data is available to the user.

[0127] In an implementation where the sequential access storage device is a tape drive and the medium is a cassette tape, the predicted total recovery time can be calculated by determining the order of reading segments of the target data and based on one or more (optionally all) of the following parameters: the maximum seek time for the first segment, the seek time between segments according to the order used for reading, the read throughput, the read head wrap change, and the tape library load time. These parameters depend on the connection type (e.g., cFC, SAS), the tape drive / tape library type, the inserted cassette tape type (LTO9, LTO8...), and the drive compression on / off, thus providing a custom selection of which duplicate segments to use and which duplicate segments to rewrite as new data.

[0128] The order of reading can be calculated based on the nearest neighbor method, which takes into account the positions of segments on different wraps that are physically close to each other and minimizes the total distance traversed by the read head between the segments. Moving the head of the tape drive across multiple wraps may be faster than moving the head of the tape drive across the length of one wrap. By selecting different movements of the head across the wraps to change the order of reading, the predicted total recovery time can be further reduced. In addition, moving the head of the tape drive across the wraps is more efficient compared to running the tape back and forth (also known as "shoe shining") and greatly increases the lifespan of the tape. In addition, moving the head of the tape drive across the wraps reduces the number of times the tape movement stops and restarts, improves the efficiency of the tape movement, and increases the durability of the tape.

[0129] Exemplary methods for calculating the optimal read order of a magnetic tape include the Time-based Access Order System (TAOS) and the Recommended Access Order (RAO).

[0130] Figure 5 Explains how the read time of a segment based on the nearest neighbor method is lower than linear read.

[0131] In 352, the processor may cluster together duplicate segments that are physically close to each other on the identified medium. The gaps between duplicate segments that include data not relevant to the target data are included in the cluster. The combinations described herein are calculated based on the clusters rather than individual segments.

[0132] As used herein, the term duplicate segment may refer to a cluster of duplicate segments. For example, the combinations described herein may include clusters of duplicate segments rather than individual duplicate segments.

[0133] Clustering reduces the number of elements in the combination, thereby reducing the total number of possible combinations, optionally reducing to a smaller number. A smaller number of combinations enables an efficient selection of a combination. For example, when 100 duplicate segments are found and clustered into 4 clusters, finding the best combination using 4 elements is computationally more efficient than using 100 elements.

[0134] The predicted total recovery time is calculated based on the seek time between the clusters. When reading the data within a cluster in sequence, the total read and seek time of the cluster is shorter than that of the unclustered segments. This is because when the segments in the cluster are close to each other, reading the entire data of the cluster (including the non-relevant data between the segments) in sequence is faster than stopping at the end of a segment, skipping the non-relevant data between the segments, and seeking to the start of the next segment - the latter is much slower. For example, for a magnetic tape that reads 32MB to 64MB of data in advance after reaching repositioning, the time to read a single segment of a 32MB cluster is the same.

[0135] In 354, the processor may calculate one or more candidate combinations. The predicted total recovery time for each candidate combination is calculated.

[0136] Calculating different combinations enables the selection of the best combination, providing the highest repetition rate while keeping the predicted total recovery time below the threshold.

[0137] Different methods may be used to calculate the candidate combinations.

[0138] In one method, multiple candidate combinations are calculated sequentially and / or in parallel, where each combination includes different repeating segments and different rewritten segments. Each combination includes a different subset of the repeating segments (e.g., different numbers, different data), and the identified repeating segments excluded from the subset are classified as rewritten segments. Excluding some identified repeating segments and instead writing them sequentially with the non-repeating segments reduces the total recovery time and keeps the predicted total recovery time below the threshold.

[0139] When clustering is performed and the number of clusters is small, all cluster combinations can optionally be calculated. When the number of elements (e.g., clusters, segments) is so large that it is computationally prohibitive to evaluate all combinations (e.g., the calculation time is too long), a small number of candidate combinations can be evaluated, such as randomly selected and / or using heuristic methods. For each candidate combination, the predicted total recovery time is calculated.

[0140] In another method, a baseline recovery time for reading segments of the target data using a baseline set of identified repeating segments (optionally, all identified repeating segments) is calculated. The baseline recovery time represents the recovery time in the case of maximum repetition. When the baseline recovery time is less than the threshold, the identified repeating segments (e.g., all segments) are used. When the baseline recovery time is greater than the threshold, the difference between the threshold and the baseline recovery time is calculated. One or more identified repeating segments are iteratively removed from the baseline set to obtain a candidate set. The identified repeating segments removed from the baseline / candidate set are added as rewritten segments to another set. For the combination of the candidate set of repeating segments and the other set of rewritten segments, the predicted total recovery time is calculated. The iteration continues until the predicted total recovery time of the candidate set is less than the threshold. One or more of the removed repeating segments can be added back to the candidate set to try to minimize the gap between the total recovery time of the candidate set and the threshold.

[0141] In 356, a candidate combination with a predicted total recovery time less than the threshold and the maximum repetition rate is selected.

[0142] Assuming that the reading of multiple media is done in parallel, when two or more media are identified, a corresponding combination with a corresponding predicted total recovery time less than the threshold is selected for each medium. In an environment with duplicate data stored on multiple media read in parallel, the total reconstruction time remains below the threshold.

[0143] Now return to reference Figure 3A , in 314, the rewritten segments of the combination and / or the new data segments (i.e., non-repeating target segments) are written on the identified medium, optionally sequentially on the available space of the identified medium, and the segments can be appended to the end of the existing written data.

[0144] Sequential writing of the duplicate segments and / or the new data provides a faster sequential data read time compared to reading the duplicate segments, which results in a longer read time due to media and / or read head movement to different locations of the duplicate segments.

[0145] In the case of a selected media combination, storage on different media can be performed in parallel.

[0146] In 316, the process indicates writing metadata that indicates the location of the segment combinations on the media for reading and obtaining a predicted total recovery time less than a threshold. The metadata provides the location of the segments of the combination such that the predicted total recovery time less than the threshold can be obtained during the read phase.

[0147] The processor is also used to indicate reading metadata for determining the location of the combined segments, so as to perform reading to obtain a predicted total recovery time less than a threshold.

[0148] In 318, the media-specific deduplication mechanism of the selected media is updated to indicate duplicate segments that identify the target stored on the selected media, and rewritten segments and non-duplicate segments that indicate new storage of the target data.

[0149] In the case of a combination of selected media, the updates of different media-specific deduplication mechanisms can be performed in parallel.

[0150] The complete index and related data structures (e.g., sparse index, weak hash table, Bloom filter) of each media-specific deduplication mechanism associated with a selected single media or media combination are updated.

[0151] To make the data readable again, the update includes adding metadata that indicates how to construct the target data from different segments on a single media or media combination, the segments including newly added non-duplicate segments, rewritten segments, and previously existing duplicate data segments. The metadata can be a mapping of the data segments stored on the media that are combined to reconstruct the target data. The metadata can be stored on the fast layer.

[0152] The identification table of the media-specific deduplication mechanism is updated to store metadata for each new segment identifier. Each metadata of each data segment stored in the identification table can include, for example, one or more of the following: an indication of the media storing the data segment, the offset of the media storing the data segment, the size of the data segment, a fingerprint. The identifier of the media can be included in the metadata and / or calculated using a fingerprint. The fingerprint included in the metadata is used to determine the fingerprint of the media, for example, as described herein.

[0153] In 320, the global index is updated to indicate the mapping between the segments of the target data.

[0154] In 312, the global file mapping for storing the identifiers of the segments of the target data is updated. The identifier can be a code that uniquely identifies each data segment, such as numbers, letters, symbols, and / or combinations thereof.

[0155] Now return to the reference Figure 4 , in 402, the processor receives a request to read target data stored as segments on one or more media of a sequential access storage device.

[0156] In 404, the processor reads the metadata (written during the write phase as described herein) to obtain the locations of the segments of the target data on the media.

[0157] The segments of the target data are stored as a combination selected during the write phase to obtain a predicted total recovery time less than a threshold.

[0158] Other relevant data can be read, such as obtaining the identifiers of the data segments of the target data from the global file mapping. The metadata for each data segment can be obtained, for example, from an identification table.

[0159] In 406, the processor instructs to read the segments according to the locations obtained from the metadata.

[0160] It should be noted that the metadata indicates reading the rewritten segments written during the write phase, rather than the duplicate segments including the same data, in order to obtain a predicted total recovery time less than a threshold, as described herein.

[0161] Optionally, the order of reading the segments is according to the order selected during the write to obtain a predicted total recovery time less than a threshold. This order can be based on the nearest neighbor method determined during the write phase, as described herein.

[0162] In 408, the processor recovers the target data from the read segments. When the write is completed according to the selected combination, it is expected that the data recovery will be performed below the threshold.

[0163] Now return to the reference Figure 5, Diagram 502 helps to explain why linear rewind is very inefficient, and diagram 504 helps to explain why ordered rewind is more efficient. Diagram 502 depicts the reading based on the original order of files / fragments, reading from the tape in the order of the winding. This causes the tape to be moved back and forth, which is inefficient and wears out the tape, as described herein. Diagram 504 depicts the optimal reading order based on the nearest neighbor method, considering that sometimes it is faster to move the tape drive's head between windings than to move the head along the length of a winding. Visually, it is obvious that the total length traversed by the read head in 504 is much shorter than in 502.

[0164] Now return to reference Figure 6 , including diagrams 602, 604, 606, and 608 that help to explain the calculation of the predicted seek time for different combinations of duplicate fragments for an identity according to some embodiments described herein. Each combination includes an increasing number of duplicate fragments used and a decreasing number of duplicate fragments written as the new data order. These combinations increase the deduplication rate but at the cost of increasing the seek time. The combination with the maximum seek time less than the threshold and the maximum deduplication rate is selected.

[0165] It should be understood that the read throughput and seek time depend on the tape drive and cartridge type. The numbers here are just examples of the calculations. For simplicity, the cartridge loading time in the library is ignored.

[0166] Four combinations of duplicate and non-duplicate fragments of the identity of the target data are depicted in diagrams 602, 604, 606, and 608.

[0167] Diagram 602 depicts the first combination, where no duplicate fragments of the identity are used. All incoming target data 650 is written as new fragments at the end of winding 2 652, which requires almost about 90 seconds of full seek 654 time. The data read time is calculated as 10 gigabytes (GB) / 300 megabytes (MB) / second (S) = 33 seconds. The total predicted seek time is 123 seconds.

[0168] Diagram 604 depicts the second combination, where approximately 25% deduplication is achieved. Fragments 135 - 136660 are duplicates. The first seek 662 to fragment 135 increases by approximately 75 seconds. The second seek 664 from fragment 136 to fragment 241 increases by approximately 70 seconds. The data read time is 33 seconds. The predicted total seek time is 178 seconds.

[0169] The schematic diagram 606 depicts a third combination, in which approximately 40% data deduplication is achieved. Fragments 1 - 5 670 are duplicates. The first seek 672 to fragment 1 takes 100 seconds. The second seek 674 from fragment 5 to fragment 241 adds approximately 80 seconds. The data read time is 33 seconds. The predicted total seek time is 213 seconds.

[0170] The schematic diagram 608 depicts a fourth combination, in which approximately 63% data deduplication is achieved. Fragments 1 - 5 and fragments 135 - 136 are duplicates. The first seek 682 to fragment 1 adds 100 seconds. The second seek 684 from fragment 5 to fragment 135 adds 25 seconds. The third seek 686 from fragment 135 to fragment 241 adds 70 seconds. The data read time is 33 seconds. The predicted total seek time is 228 seconds.

[0171] The selected combination is the one with the highest data deduplication percentage and still meeting the threshold (e.g., defined by the SLA). If the threshold is greater than 228 seconds, the fourth combination is selected. If the threshold is between 213 and 228 seconds, the third combination is selected. If the threshold is between 178 and 213 seconds, the second combination is selected. Otherwise, the first combination will be selected.

[0172] After studying the following drawings and detailed description, other systems, methods, features, and advantages of the present invention will be apparent or will become apparent to those skilled in the art. All such other systems, methods, features, and advantages are intended to be included in this specification, within the scope of the present invention, and protected by the appended claims.

[0173] The description of the various embodiments of the present invention is for illustrative purposes only and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used herein are chosen to better explain the principles of the embodiments, practical applications, or technical improvements over technologies found in the market, or to enable other skilled artisans in the art to understand the embodiments disclosed herein.

[0174] It is expected that many related data deduplication mechanisms and media will be developed during the term of the patents expiring from this application, and the scope of the terms data deduplication mechanism and media is intended to include all such new technologies a priori.

[0175] The term "about" as used herein means ±10%.

[0176] The terms "comprising", "having", and their derivatives mean "including but not limited to". This term encompasses the terms "consisting of" and "consisting essentially of".

[0177] The phrase "consisting essentially of" means that a composition or method may include additional ingredients and / or steps, provided that the additional ingredients and / or steps do not materially alter the basic and novel characteristics of the claimed composition or method.

[0178] Unless the context clearly dictates otherwise, the singular forms "a" and "the" as used herein include plural referents. For example, the term "a complex" or "at least one complex" can include multiple complexes, including mixtures thereof.

[0179] As used herein, the word "exemplary" means "serving as an example, instance, or illustration." Any embodiment described as "exemplary" is not necessarily to be construed as preferred or superior to other embodiments and / or does not preclude the combination of features with other embodiments.

[0180] As used herein, the term "optionally" means "provided in some embodiments and not in others." Any particular embodiment of the invention may include a plurality of "optional" features, unless such features are mutually inconsistent.

[0181] In this application, various embodiments of the invention may be presented in a range format. It should be understood that the description in range format is merely for convenience and brevity and should not be construed as a limiting of the scope of the invention. Thus, the description of a range should be considered to have specifically disclosed all the possible sub-ranges as well as the individual numerical values within that range. For example, a description of a range such as from 1 to 6 should be considered to have specifically disclosed sub-ranges such as from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6, etc., as well as the individual numbers within that range, for example, 1, 2, 3, 4, 5, and 6. This applies regardless of how broad the range is.

[0182] When a numerical range is recited herein, it includes any recited number (fractional or integral) within the recited range. The phrases "a range between a first indicated number and a second indicated number" and "a range from a first indicated number to a second indicated number" are used interchangeably herein to mean including the first and second indicated numbers and all the fractional and integral numbers therebetween.

[0183] It should be understood that, for the sake of brevity of description, certain features of the invention that are described in the context of separate embodiments may also be provided in combination in a single embodiment. Conversely, for the sake of brevity of description, the various features of the invention that are described in the context of a single embodiment may also be provided separately or in any suitable sub-combination or as any suitable other embodiment of the invention. Certain features described in the context of various embodiments are not considered essential features of those embodiments unless the embodiment is rendered inoperative without those elements.

[0184] It is the intention of the applicant that all publications, patents, and patent applications mentioned in this specification are incorporated herein by reference in their entirety as if each individual publication, patent, or patent application was specifically and individually indicated to be incorporated by reference herein. Further, the citation or identification of any reference in this application shall not be construed as an admission that such reference is available as prior art to the present invention. With respect to the use of section headings, the section headings should not be construed as necessarily limiting. In addition, one or more of any priority documents of this application are incorporated herein by reference in their entirety.

Claims

1. An apparatus (104) for deduplication storage of data, characterized in that, Comprising: A processor (102) for: Identifying at least one medium (160) by accessing a global index (116A) that maps each medium among a plurality of media of a plurality of sequential access storage devices (150) to a data segment stored on the medium, the at least one medium (160) storing a duplicate segment of at least one segment of target data (112A) to be stored on the plurality of media; For each correspondingly identified medium, identifying a duplicate segment of a segment of the target data stored on the medium by accessing a medium-specific deduplication mechanism (150A); Determining a combination for which a predicted total recovery time is less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment to be rewritten, and the at least one new data segment includes a non-duplicate segment to be written for the first time; and Writing at least one of the (ii) at least one rewritten segment and the (iii) at least one new data segment to the identified medium.

2. The apparatus according to claim 1, characterized in that, The processor is further configured to write metadata indicating a location of the combination on the medium for reading and obtaining the predicted total recovery time less than the threshold.

3. The apparatus according to claim 2, characterized in that, The processor is further configured to read the metadata to determine a location of the segments of the combination, so as to perform reading to obtain the predicted total recovery time less than the threshold.

4. The apparatus according to claim 1, characterized in that, The at least one rewritten segment and the at least one new data segment are sequentially written to available space of the identified medium.

5. The apparatus according to any one of the above claims, characterized in that, The processor is further configured to: Calculate a plurality of combinations, each combination including a different combination of duplicate segments and rewritten segments; For each combination, calculate the predicted total recovery time; and Select a combination for which the predicted total recovery time is less than the threshold and has the maximum duplication rate.

6. The apparatus according to claim 5, characterized in that, Each combination includes a different subset of the duplicate segments, wherein the identified duplicate segments excluded from the subset are classified as rewritten segments.

7. The apparatus according to any one of the above claims, characterized in that, The processor is further configured to: Calculate a baseline recovery time for reading a plurality of segments of the target data using a first set of the identified duplicate segments; Calculate a difference between the threshold and the baseline recovery time; And Iteratively delete at least one of the identified duplicate segments from the first set until the predicted total recovery time is less than the threshold, wherein the identified duplicate segments deleted from the first set are added to a second set as rewritten segments.

8. The apparatus according to any one of the above claims, characterized in that, The threshold defines a maximum time from receiving a recovery request to reconstructing the target data from the read segments and making it ready.

9. The apparatus according to any one of the above claims, characterized in that, The plurality of sequential access storage devices includes tape drives, the plurality of media includes cartridge tapes (252), and the predicted total recovery time is calculated by determining the order for reading the segments of the target data and based on the maximum seek time for the first segment, the seek times between segments according to the order for reading, the read throughput, the read head wrap change, and the tape library load time.

10. The apparatus according to claim 9, characterized in that, The order for reading is calculated based on a nearest neighbor method that takes into account the positions of segments on different wraps that are physically close to each other and minimizes the total distance traversed by the read head between the segments.

11. The apparatus according to any one of the above claims, characterized in that, The threshold is defined according to a service level agreement (SLA).

12. The apparatus according to any one of the above claims, characterized in that, The processor is further configured to: Update at least one media-specific deduplication mechanism of at least one identified media to indicate the identified duplicate segments, the at least one rewritten segment, and the non-duplicate segments included in the selected combination of the target data. Update the global index to indicate the mapping between the segments of the target data used during the access. Update the global file mapping (116B) to store the identifiers of the at least one segment of the target data. And Update the identification table (150B) to store the metadata for each identifier.

13. The device according to any one of the above claims, characterized in that, When at least two media are identified, select a corresponding combination for each media with a corresponding predicted total recovery time less than the threshold.

14. The device according to any one of the above claims, characterized in that, The processor is further configured to aggregate duplicate segments that are physically close to each other on the identified media, wherein the combination includes at least one cluster of duplicate segments, and the new data is included in at least one rewritten cluster.

15. The device according to claim 14, characterized in that, The predicted total recovery time is calculated based on the seek time between clusters.

16. A device (104) for recovering data, characterized in that, Comprising: A processor (102) configured to: Receive a request to read target data stored on at least one of a plurality of media of a sequential access storage device that stores the target data as a plurality of segments. Read metadata to obtain the positions of the plurality of segments of the target data on the at least one media. Wherein the segments of the target data are stored as a combination selected during a write phase to obtain a predicted total recovery time less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment that has been rewritten, and the at least one new data segment includes non-duplicate segments that are written for the first time. Read the segments according to the positions obtained from the metadata; and Recover the target data from the read segments.

17. The device according to claim 16, characterized in that, The order of reading the segments is according to the order selected during the write to obtain the predicted total recovery time less than the threshold.

18. A method for deduplicating and storing data, characterized in that, Comprising: Identifying at least one medium by accessing a global index that maps each of a plurality of media of a plurality of sequential access storage devices to data segments stored on the media, the at least one medium storing a duplicate segment (306) of at least one segment of target data to be stored on the plurality of media; For each correspondingly identified medium, identifying duplicate segments of segments of the target data stored on the medium by accessing a medium-specific deduplication mechanism; Determining a combination having a predicted total recovery time less than a threshold, the combination including at least one of: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment (312), wherein the at least one rewritten segment includes at least one duplicate segment to be rewritten, and the at least one new data segment includes a non-duplicate segment to be written for the first time; and Writing at least one of the (ii) at least one rewritten segment and the (iii) at least one new data segment to the identified medium (314).

19. A non-transitory medium (106) storing program instructions (106A) for deduplicating and storing data, characterized in that, When the program instructions are executed by at least one processor (102), causing the at least one processor to: Identifying at least one medium by accessing a global index that maps each of a plurality of media of a plurality of sequential access storage devices to data segments stored on the media, the at least one medium storing a duplicate segment of at least one segment of target data to be stored on the plurality of media; For each correspondingly identified medium, identifying duplicate segments of segments of the target data stored on the medium by accessing a medium-specific deduplication mechanism; Determining a combination having a predicted total recovery time less than a threshold, the combination including at least one of: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment to be rewritten, and the at least one new data segment includes a non-duplicate segment to be written for the first time; and Writing at least one of the (ii) at least one rewritten segment and the (iii) at least one new data segment to the identified medium.

20. A method for recovering data, characterized in that, Comprising: Receiving a request to read target data stored on at least one of a plurality of media of a sequential access storage device that stores the target data as a plurality of segments (402); Reading metadata to obtain the locations of the plurality of segments of the target data on the at least one medium (404); Wherein, the segment of the target data is stored as a combination selected during a write phase to obtain a predicted total recovery time less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment that is rewritten, and the at least one new data segment includes a non-duplicate segment that is written for the first time; Read the segment (406) according to the location obtained from the metadata; and Recover the target data from the read segment (408).

21. A non-transitory medium (106) storing program instructions (106A) for recovering data, characterized in that, When the program instruction is executed by at least one processor (102), the at least one processor is caused to perform the following operations: Receive a request for reading target data, the target data being stored on at least one of a plurality of media of a sequential access storage device that stores the target data as a plurality of segments; Read metadata to obtain the locations of the plurality of segments of the target data on the at least one media; Wherein, the segment of the target data is stored as a combination selected during a write phase to obtain a predicted total recovery time less than a threshold, the combination including at least one of the following: (i) at least one duplicate segment, (ii) at least one rewritten segment, and (iii) at least one new data segment, wherein the at least one rewritten segment includes at least one duplicate segment that is rewritten, and the at least one new data segment includes a non-duplicate segment that is written for the first time; Read the segment according to the location obtained from the metadata; and Recover the target data from the read segment.

Citation Information

Cited By

  • Data processing method and electronic equipment

    CN120891988A