Source: https://patents.google.com/patent/WO2007047346A2/en
Timestamp: 2020-01-18 07:30:08
Document Index: 108522153

Matched Legal Cases: ['Application No. 60', 'Application No. 10', 'Application No.\n10', 'Application No. 10', 'Application No. 10', 'Application No. 10', 'Application No. 10']

WO2007047346A2 - Technique for timeline compression in a data store - Google Patents
WO2007047346A2
WO2007047346A2 PCT/US2006/039857 US2006039857W WO2007047346A2 WO 2007047346 A2 WO2007047346 A2 WO 2007047346A2 US 2006039857 W US2006039857 W US 2006039857W WO 2007047346 A2 WO2007047346 A2 WO 2007047346A2
PCT/US2006/039857
WO2007047346A3 (en
2005-10-14 Priority to US72618705P priority Critical
2005-10-14 Priority to US60/726,187 priority
2006-10-13 Application filed by Symantec Operating Corporation filed Critical Symantec Operating Corporation
2007-04-26 Publication of WO2007047346A2 publication Critical patent/WO2007047346A2/en
2007-09-07 Publication of WO2007047346A3 publication Critical patent/WO2007047346A3/en
238000007906 compression Methods 0 abstract claims description title 33
238000003860 storage Methods 0 abstract claims description 147
238000004581 coalescence Methods 0 description 10
230000003442 weekly Effects 0 description 6
A technique for timeline compression in a data store is disclosed. In one particular exemplary embodiment, the technique may be realized as a method for timeline compression in a storage system, wherein digital content of the storage system is backed up to enable restoration of the digital content to one or more points in a timeline. The method may comprise selecting a time interval in the timeline, one or more sets of backup data recorded for the selected time interval. The method may further comprise discarding other backup data recorded for the selected time interval, thereby reducing a granularity level of the timeline in the selected time interval.
TECHNIQUE FOR TIMELINE COMPRESSION IN A DATA STORE
This patent application claims priority to U.S. Provisional Patent Application No. 60/726,187, filed October 14, 2005, which is hereby incorporated by reference herein in its entirety.
This patent application is related to U.S. Patent
Application No. 10/924,652, filed August 24, 2004, which is a continuation-in-part of U.S. Patent Application No.
10/668,833, filed September 23, 2003, each of which is hereby incorporated by reference herein in its entirety.
BACKGROUND OF THE DISCLOSURE In related U.S. Patent Application No. 10/924,652 and U.S. Patent Application No. 10/668,833, a time-dependent data storage and recovery technique is disclosed. Embodiments of such a technique provide a solution for continuous data protection (CDP) wherein write commands directed to a storage system are intercepted by a storage management system having a current store and a time store. The current store may maintain or have access to a current (or mirror) copy of the storage system's digital content. The time store may record information associated with each intercepted write command, such as new data in the write command's payload or old data to be overwritten in the current store in response to the write command. Recordation of the new or old data in response to a write command may be referred to as a copy-on-write (COW) operation, and the new or old data recorded may be referred to as COW data. The time store may also record other information (i.e., metadata) associated with an intercepted write command and/or the corresponding COW operation, such as, for example, a timestamp, an original location in the current store where the old data are overwritten, and a destination location in the time store to which the COW data are copied. Each COW operation typically backs up one or more blocks of COW data, thereby creating one set of COW data and corresponding metadata. Over a period of time, multiple sets of COW data and corresponding metadata (including timestamps) may be accumulated as a collection of historical records of what have been written or overwritten in the current store or the storage system. The content of the time store may be indexed based on the metadata to facilitate efficient access to the COW data.
With a current copy of the storage system' s digital content in the current store and the historical records in the time store, the storage management system adds a new dimension, i.e., time, to the storage system. Assuming the storage management system has been operatively coupled to the storage system since a past time, the storage management system may quickly and accurately restore any addressable content in the storage system to any point in time between the past time and a present time. Ideally, it might be desirable to maintain such a data recovery capability for as long a timeline as possible. However, to accommodate an extended timeline, a significant amount of storage space is needed to store the COW data and corresponding metadata for every write command in that timeline. Even more storage space is needed if the storage system sees a relatively high write rate (i.e., number of write operations per unit time) . One temporary solution may be to simply increase storage capacity of the time store. However, apart from a higher cost, a simple storage increase may not scale well with the rest of the system and tends to create a deluge of other problems, such as a performance degradation due to difficulties of parsing through an additional amount of data. Without an infinite storage capacity, most storage systems have to settle for the reality that only a finite length of timeline (e.g., ten days or two weeks) can be maintained. In conventional data protection systems, it is typical to keep a few days' worth of backup data and completely discard the backup data that are more than a few days old. In these systems, data recovery capabilities are limited to the past few days for which backup data are available. Alternatively, the backup data that are more than a few days old may be moved off site on a regular basis. Such a brute-force solution can be costly and disruptive, not to mention its slow response to data recovery requests where off- site data are needed.
In accordance with further aspects of this particular exemplary embodiment, a length of the time interval may be selected based at least in part on a desired granularity level of the timeline. In accordance with additional aspects of this particular exemplary embodiment, the step of identifying may further comprise: determining whether a storage unit in the storage system has been overwritten more than once during the selected time interval; if the storage unit has been overwritten once during the selected time interval causing a sole set of copy- on-write data and corresponding metadata to be recorded, selecting the sole set; and if the storage unit has been overwritten more than once during the selected time interval causing multiple sets of copy-on-write data and corresponding metadata to be recorded, selecting one of the multiple sets.
In accordance with yet another aspect of this particular exemplary embodiment, the method may further comprise coalescing metadata in the one or more identified sets of copy-on-write data and corresponding metadata. In accordance with still another aspect of this particular exemplary embodiment, the method may further comprise: identifying copy-on-write data that correspond to the coalesced metadata; and replacing all sets of copy-on- write data and corresponding metadata previously recorded for the selected time interval with a new set comprising the identified copy-on-write data and the coalesced metadata.
In yet another particular exemplary embodiment, the techniques may be realized as at least one processor readable carrier for storing a computer program of instructions configured to be readable by at least one processor for instructing the at least one processor to execute a computer process for performing the method as recited above. In still another particular exemplary embodiment, the techniques may be realized as a system for timeline compression in a storage system, wherein digital content of the storage system is backed up to enable restoration of the digital content to one or more points in a timeline. The system may comprise means for selecting a time interval in the timeline. The system may also comprise means for identifying one or more sets of backup data recorded for the selected time interval, wherein the identified one or more sets of backup data represent at least a portion of old data overwritten during the selected time interval. The system may further comprise means for discarding other backup data recorded for the selected time interval, thereby reducing a granularity level of the timeline in the selected time interval.
In a further particular exemplary embodiment, the techniques may be realized as a system for timeline compression in a storage system, wherein digital content of the storage system is backed up to enable restoration of the digital content to one or more points in a timeline. The system may comprise a storage medium for storing instructions . The system may also comprise at least one processor for: selecting a time interval in the timeline; identifying one or more sets of backup data recorded for the selected time interval, wherein the identified one or more sets of backup data represent at least a portion of old data overwritten during the selected time interval; and discarding other backup data recorded for the selected time interval, thereby reducing a granularity level of the timeline in the selected time interval . The present disclosure will now be described in more detail with reference to exemplary embodiments thereof as shown in the accompanying drawings . While the present disclosure is described below with reference to exemplary embodiments, it should be understood that the present disclosure is not limited thereto. Those of ordinary skill in the art having access to the teachings herein will recognize additional implementations, modifications, and embodiments, as well as other fields of use, which are within the scope of the present disclosure as described herein, and with respect to which the present disclosure may be of significant utility.
Figure Ia shows a timeline maintained for a storage system based on a traditional method. Figure Ib shows a timeline maintained for a storage system in accordance with an embodiment of the present disclosure .
Figure 2 shows a flow chart illustrating an exemplary timeline compression method in accordance with an embodiment of the present disclosure.
Figure 3 shows a state diagram illustrating an exemplary method for timeline compression in accordance with an embodiment of the present disclosure. Figure 4 shows an exemplary timeline for three related LUs in accordance with an embodiment of the present disclosure .
Figure 5 shows another exemplary timeline for three related LUs in accordance with an embodiment of the present disclosure.
Figure 6 shows major objects involved in an exemplary program for timeline compression in accordance with embodiments of the present disclosure.
As used herein, "backup data" refers generally to data that have been recorded and/or organized (or even reorganized) with a purpose of restoring or recovering digital content of a storage system. "Copy-on-write data" (or "COW data") refers to substantive data (e.g., new data to be written or old data to be overwritten in response to a write command) that have been recorded in a copy-on-write operation. New data to be written in response to a write command are sometimes referred to as "after image data" or "after image," while old data to be overwritten in response to a write command are sometimes referred to as "before image data" or "before image." The copy-on-write operation may be an actual operation performed in response to an actual write command. Or, the copy-on-write operation may be a virtual operation that includes the collective effect of multiple copy-on-write operations that occur during a selected time interval.
"Corresponding metadata" refers to informational data (e.g., timestamps) regarding the associated COW data in a copy-on-write operation. Typically, one copy-on-write operation causes one set of COW data and corresponding metadata to be created. Despite their correlation, COW data and corresponding metadata may be stored in separate storage devices or segments. In a time store, COW data may be organized in one or more timestamped "data chunks."
"Raw data" refers to one or more sets of COW data and corresponding metadata that have been recorded in response to actual write commands and have not been coalesced or otherwise modified since their recordation. In some circumstances, "COW data" and "corresponding metadata" may refer to COW data and corresponding metadata, respectively, that have been coalesced, re-organized or otherwise modified in a timeline compression process, wherein a resulting set of COW data and corresponding metadata may be considered as originating from a virtual copy-on-write operation in response to one or more write commands during a selected time interval. In other words, "COW data" and "corresponding metadata" may sometimes refer to backup data that are not on the raw data level. "Granularity level" of a timeline refers to a time scale
(e.g., weekly, daily, hourly, by the second, or by the millisecond) with which digital content of a storage system can be restored to a point in the timeline. The granularity level of a timeline is typically determined by the specific mechanism employed to back up digital content, how complete backup data are kept, and how the backup data are organized.
A typical "storage system" may comprise one or more storage devices which may be physical, virtual or logical devices or a combination thereof. According to one embodiment, a storage system may comprise a storage area network (SAN) having one or more datasets, wherein each dataset may comprise one or more nodes, and wherein one or more logical units (LUs) may be coupled to each node. Hereinafter, for ease of illustration, the term "storage system" may refer to an entire storage system or a portion (e.g., dataset or node) thereof. Typically, a timeline may be maintained for all LUs in a same dataset.
"Timeline storage" refers to a storage space for backup data in a time store. Timeline storage is typically organized in terms of quota groups, wherein each quota group allocates a predetermined storage space for a timeline associated with a corresponding dataset.
Embodiments of the present disclosure provide a technique known as "timeline compression" that allows a more extended timeline to be maintained for a storage system (or a dataset) without any substantial increase in timeline storage capacity or complete discarding of older backup data. This may be achieved by selectively decreasing a granularity level of the timeline as backup data are aging. One or more older portions of raw data backed up for a storage system may be coalesced and/or re-organized into one or more data chunks that reflect write operations in the storage system on a coarser level of granularity (e.g., hourly or daily) than the raw data normally would reflect. Such reduction in the granularity level of the timeline may offer a flexible, user-definable tradeoff wherein the timeline storage is economized without sacrificing older data entirely. As a result, a much longer timeline may be maintained for a storage system without any significant impact on its data protection or data recovery capabilities. The coalescence and/or re-organization process of backup data from one granularity level to another may be referred to as a "timeline rollup" or "rollup."
In the detailed description that follows, references will be made to embodiments of the time-dependent data storage and recovery technique as disclosed in U.S. Patent Application No. 10/924,652 and U.S. Patent Application No. 10/668,833. It should be appreciated that embodiments of the present disclosure are easily adaptable to other data protection methods or systems that maintain historical records of digital content of a storage system.
Referring to Figure Ia, there is shown a timeline maintained for a storage system based on a traditional method. In this example, present day may be Monday of Week 0. The timeline may have been continuously maintained for a storage system for a few weeks (i.e., Week -1, Week -2, Week -3, Week -4 and so on) . If several weeks' worth of backup data were all stored in the form of raw data, a large amount of storage space in a time store would be required. If, for example, there is only enough storage space to store fourteen days' worth of raw data, then, according to traditional approaches, those raw data that are more than fourteen days old must be completely discarded. That is, by the beginning of the present day (i.e., Monday of Week 0), all raw data recorded for Week -3 and earlier may have already been discarded. As the present day goes on and new raw data are accumulated, raw data recorded for Monday of Week -2 may have to be sacrificed in order to make room for the newly recorded raw data. Therefore, at any given time, digital content of the storage system is backed up only for the previous two weeks, while no historical record is available beyond that two-week period.
Figure Ib shows a timeline maintained for a storage system in accordance with an embodiment of the present disclosure. This timeline may be generated by subjecting raw data to a timeline compression process that selectively reduces a granularity level of the timeline. It is recognized that, as time goes by, the oldest backup data are the least likely to be needed on the finest granularity level. Therefore, it might suffice to keep only a few days' worth of raw data in order to be able to restore the storage system to any point in time in the past few days . For older backup data, the granularity level of the timeline may be progressively reduced. As shown in Figure Ib, on Monday of Week 0, for example, backup data for the past three days (i.e., Friday, Saturday and Sunday of Week -1) are kept in the form of raw data. In a second time period, that is, more than three days ago and up to the beginning of Week -2, for example, the backup data may be kept in the form of hourly data. That is, the original raw data may be selectively coalesced and/or discarded, as will be described in more detail below, such that only enough backup data is kept to be able to restore digital content of the storage system to any hour during the second time period. In a third time period that spans Week -3 and Week -4, for example, the backup data may be kept in the form of daily data. Prior to the beginning of Week -4, for example, only weekly data may be kept available. As a result of this exemplary timeline compression scheme, it may be possible to maintain a much longer timeline than the traditional approach illustrated in Figure Ia. Even if there is only enough storage space for fourteen days' worth of raw data, a timeline much longer than two weeks, maybe a few months, may be maintained. As a result, digital content of the storage system that is several weeks old may still be restored. The only tradeoff is that such restoration of the older content may be available on a coarser level of granularity than what raw data can facilitate. For example, instead of being able to pick and choose a data recovery point by the second or by the millisecond, a user may only be able to select recovery points on an hourly, daily or weekly scale.
A timeline compression functionality in accordance with embodiments of the present disclosure may be implemented in any type of storage systems, preferably in connection with a storage management system havάng a current store and a time store. A set of parameters, known as Timeline Lifecycle Profile (TLP) , may be configured by a user to control the timeline compression process. According to one embodiment, the TLP may specify four levels of backup data and a user configurable amount of time to keep each level of backup data before that level of backup data may be rolled up to a next level. The TLP may also specify a minimum amount of timeline storage used before a rollup takes place. Referring again to Figure Ib, the timeline illustrated therein reflects one exemplary TLP relating to four levels of backup data. Level-0 TLP may specify conditions that must be fulfilled before raw data can be rolled up to the next level. The conditions may be defined as an amount of raw data, in terms of time length and/or timeline storage capacity, to keep before some raw data may be rolled up to the next level. For example, the Level-0 TLP may require that at least 3 days' worth of raw data using 40% of the timeline storage capacity be accumulated before raw data older than 3 days or beyond the 40% storage limit may be rolled up to the next level. According to this configuration, even if there are more than 3 days of raw data, the raw data older than 3 days will not be rolled up until the raw data have also used up at least 40% of the timeline storage capacity. This configuration may also require that, even if 40% of the timeline storage capacity is occupied by raw data, a rollup is not performed unless more than 3 days' worth of raw data have been accumulated. In the Level-0 TLP, a default value for the time length may be infinite, which means that all other levels may be ignored and there will be no rollup of Level-0 raw data. A default limit for timeline storage capacity may be 0%, which means the amount of timeline storage in use will not be considered in determining whether to initiate a rollup of the raw data.
Level-1 TLP may specify a reduced granularity level (e.g., hourly) of the timeline compared with Level-0, as well as conditions that must be met before Level-1 data (e.g., hourly data) can be rolled up to the next level. Similar to Level-0 TLP, the conditions may be defined as an amount of Level-1 data, in terms of time length and/or timeline storage capacity, to keep before Level-1 data may be rolled up to the next level (e.g., as shown in Figure Ib, 11 days' worth of hourly data using 20% of the timeline storage capacity) . In the Level-1 TLP, a default value for the time length may be infinite, which means that all other levels may be ignored and rollups do not continue beyond Level-1 data. A default limit for timeline storage capacity may be 0%, which means the amount of timeline storage in use will not be considered in determining whether to initiate a rollup of the Level-1 data. Level-2 TLP may specify a further reduced granularity level (e.g., daily) of the timeline as well as conditions that trigger a rollup of the Level-2 data. For example, the Level- 2 TLP may require that at least 14 days' worth of daily data using 20% of the timeline storage capacity be accumulated before the older daily data may be rolled up to the next level .
Level-3 TLP may specify an even further reduced granularity level (e.g., weekly) of the timeline as well as conditions that trigger a rollup of the Level-3 data to the next level (e.g., monthly data) . For example, the Level-3 TLP may require that at least 12 weeks' worth of weekly data using 10% of the timeline storage capacity be accumulated before the older weekly data may be rolled up to the next level.
According to embodiments of the present disclosure, a user typically does not explicitly create a TLP since a default TLP may already exist when a quota group is created in a storage system. Upon creation of the quota group, the user may have the option of modifying the default parameters of the TLP. Similarly, a user typically does not explicitly delete a TLP. The TLP may be deleted when the associated quota group is deleted. A user may modify a TLP in order to change the desired behavior of timeline compression. The TLP may be modified at any time without any immediate effect on the timeline. The default TLP, upon creation of a quota group, may specify that no rollups take place. A user may also modify a TLP when modifying attributes of a quota group. When an LU is added to a dataset, the LU may inherit an existing TLP for the corresponding quota group. The effect on the timeline may be that the start of the timeline may shift forward. This behavior may be the same as when there are no rollups defined. However, rollups may continue at the current rollup level for the entire dataset, and the new LU' s current rollup state may be set to reflect that of the rest of the LUs in the dataset. When an LU is removed from a dataset, the start of remaining timeline may shift backward. This may be the same behavior exhibited when there are no rollups defined.
Referring to Figure 2, there is shown a flow chart illustrating an exemplary timeline compression method in accordance with an embodiment of the present disclosure.
In step 202, a rollup may be started for a storage device in a storage system. The method steps in Figure 2 illustrate a simplest rollup operation of backup data recorded for a portion of a timeline from one level to a next level, wherein it is assumed that the timeline is maintained for a particular storage device only. Timeline compression involving multiple storage devices will be described separately below.
In step 204, a time interval may be selected for a rollup operation. Selection of the time interval is typically based on conditions specified in the TLP. For example, if it is a rollup from raw data to hourly data, the time interval may be one hour long and selected from a portion of the timeline where hourly data are desired. This portion of the timeline may span multiple hours. Thus, the method steps 204 through 212 may be repeated for every hour in this portion of the timeline. Similarly, if it is a rollup from hourly data to daily data, the time interval may be 24 hours long and selected from a portion of the timeline where daily data are desired. In step 206, COW data and corresponding metadata may be identified to represent backup data recorded for the selected time interval. For example, a unit of storage (e.g., a block) in the storage device may have been overwritten one or more times during the selected time interval. If a block has been overwritten only once during the selected time interval, the resultant set of COW data and corresponding metadata may be identified to represent backup data for this block. If a block has been overwritten multiple times during the selected time interval, a set of COW data and corresponding metadata that results from the earliest write operation may be identified to represent backup data for this block. Alternatively, a set of COW data and corresponding metadata that results from the latest write operation during the selected time interval may be identified. Additional or alternative criteria may be used to identify the representative backup data for the storage device during the selected time interval.
In step 208, other backup data that have been recorded for the selected time interval but are not selected in step 206 may be discarded or simply ignored. For example, metadata or other indexing data for the unselected backup data may be deleted or erased such that the unselected backup data are effectively deleted from the timeline. In step 210, the COW data and corresponding metadata identified or selected in step 206 may be coalesced. According to one embodiment, these COW data and/or corresponding metadata are preferably coalesced into fixed size allocation units known as "buckets." For example, when rolling up raw data into hourly data, one hour's worth of raw data may be coalesced into one 512 KB fixed-size hourly- bucket. Later on, 24 hourly buckets of backup data may be coalesced into one 12 MB fixed-size daily bucket. Coalescence of the selected COW data and corresponding metadata may be carried out in a number of ways. According to one embodiment, the metadata for the selected time interval may be coalesced first. Then, the COW data (pointed to by the coalesced metadata) may be coalesced and copied into memory. The coalesced COW data may then be stored as new, higher level COW data for the selected time interval. Accordingly, the coalesced metadata may be modified and stored as corresponding metadata for the new COW data.
In step 212, it may be determined whether the rollup has been done for this storage device. If there are additional time intervals to roll up, the process may loop back to step 204 to repeat the coalescence of backup data until the rollup for all appropriate time intervals has been completed according to the requirements specified in the TLP. Then, in step 214, the rollup may end for this storage device. A timeline rollup operation may be configured (e.g., as a thread or sub-routine) to start or restart upon initiation by a user or upon triggering of one or more events defined in the TLP. For example, the rollup thread may be activated whenever a pre-determined percentage of the timeline storage has been used, before or after a deprecation of timeline, and/or on a periodic basis. A rollup thread may also be awoken when a second rollup thread on another node determines that it must rollup data for an LU on that node . Referring to Figure 3, there is shown a state diagram illustrating an exemplary method for timeline compression in accordance with an embodiment of the present disclosure. The state diagram shows five phases in a timeline rollup operation. As mentioned above, the rollup operation may be preferably a thread running on or in coordination with a storage management system. Once started, the rollup thread may coalesce and/or re-organize backup data for a storage system by going through a Determination Phase, a Scan Phase, a Coalescence Phase, a Copy Phase, and a Replacement Phase. In the Determination Phase, it may be determined what work needs to be done, such as, for example, what level of backup data to perform the rollup for and for which LU. A typical environment for implementation of a timeline compression may be a storage management system coupled to a storage system having a plurality of storage devices (e.g., LUs) . One typical requirement for timeline compression involving multiple LUs is consistency of granularity levels of the timeline across all LUs. Accordingly, there may be a need to determine which level of backup data to roll up and which LU to start with. The level of backup data to perform the rollup for, also known as a "rollup level," may be determined based on rollup state data (described in detail below) that have been maintained for the LUs . In order to determine which LU to perform the rollup for, the LUs may be examined one at a time, typically by analyzing the rollup state data and/or other informational data associated with the LUs. For each LU, the oldest backup data in the timeline may be identified for the current rollup level. If, for example, the LU in question is owned by a local node for which the rollup thread is running, and if there are enough valid, sealed backup data for the time range in question (e.g., at least two data chunks), then the rollup operation may proceed to the next phase (i.e., Scan Phase). Otherwise, another LU may be chosen and analyzed. If no LU is found that meets the criteria defined in the TLP, then the rollup operation may end. If an LU is found that meets the criteria to perform a rollup, then all related LUs (e.g., those associated with the same quota group) may be rolled up as well. If it is determined that a rollup must occur, the rollup thread on other nodes may be awoken using a remote message.
In the Scan Phase, for backup data that can be rolled up, a scan of the metadata may be performed in order to identify the time period defined by the TLP and to retrieve relevant metadata. The scan may be a query of the metadata on a slice by slice basis in time order. According to embodiments of the present disclosure, each LU may be divided into a plurality of fixed-size logical partitions (e.g., 16 Gigabytes (GB) each) for ease of management and for load balancing purposes, wherein each fixed-size logical partition may be referred to as one "slice." When a slice has been scanned, the identified metadata may be coalesced in the Coalescence Phase, after which a next slice may be scanned in the Scan Phase. The slice by slice cycle may repeat until all slices have been exhausted for the LU and time period in question.
In the Coalescence Phase, the metadata that have been identified in the Scan Phase may be coalesced into fixed size allocation units. Coalescence of the metadata may be achieved in any of a variety of ways. According to one embodiment, the identified metadata may first be stored in memory in a time- ascending order according to their timestamps. Then, starting from the oldest metadata, the identified metadata may be inserted into a binary tree (B-tree) that is indexed by starting Logical Block Addresses (LBA' s) recorded in the metadata. The B-tree may be first scanned for LBA overlap before the coalesced metadata are inserted. The newer COW data containing LBA overlaps may be discarded. Splits may also be done on COW data where needed to achieve coalescence. For example, for a particular time interval, if metadata for Blocks 1-5 are already stored in the B-tree, then another metadata row associated with Blocks 3-8 may be split into two portions, one associated with Blocks 3-5 and the other associated with Blocks 6-8, where the former may be discarded ' while the latter may be entered into the B-tree. The resulting metadata may be coalesced into relatively large fixed sized allocation units (e.g., 512 KB), each allocation unit representing a single COW operation. Statistics kept as records may be coalesced and inserted into the B-tree. These statistics may be kept on an LU basis so that a determination can be made in the Copy Phase as to whether to actually copy the COW data into a rollup chunk or simply modify the corresponding (coalesced) metadata. The statistics kept may include, for example, the number of original blocks, the number of duplicate blocks (block savings) , the number of original COW operations, and the number of coalesced COW operations (metadata savings) .
Each resulting metadata row may be that of the earliest original operation in a particular slice. For example, if Block 128 was written twice in a row, once at time Tl and again at time 12, the resulting coalesced metadata may only reflect the write operation at time Tl. Once the metadata for a slice has been coalesced, the next slice may be processed for the same LU in the Scan Phase. This procedure continues until all slices for the LU have been processed, whereupon the Copy Phase may be executed.
In the Copy Phase, the coalesced metadata may be read from memory, and the COW data the coalesced metadata point to may be copied into rollup chunks. Whether or not to actually copy the COW data may depend on an evaluation of the statistics collected in the Coalescence Phase. General, an actual copy of the COW data is performed only when there is some saving of storage space. After the evaluation has passed and all of the metadata have been coalesced for an LU, the COW data may be copied into resulting rollup chunks on a slice by slice basis. The COW data may be copied from a time store (in the storage management system) to the same time store using pre-allocated non-replicated buffers. In order to accomplish the data copy, an event chain may be created and a RollupTimeStoreMove event may be pushed onto the event chain. The RollupTimeStoreMove object may be derived from an SGIO and a WaitableEvent object and may be handled by an IO execution context. The event may have two extents, one for the read of the original COW data and one for the write to the rollup chunk in the time store. The Copy Phase may wait for the event to complete and then update an in-memory array with a data structure representing a new indexing operation. This array may be used in the Replacement Phase to update the coalesced metadata. Once all of the COW data have been copied, the rollup thread may proceed to the Replacement Phase.
The rollup operation runs through a number of phases one of which involves copying COW data to newly rolled-up chunks, which may take a significant amount of time. As a result, other critical components of the system that interfere with rollups or change the state of the timeline, such as Instant Restore, Time Images, or Timeline Deprecation, may cause an in-progress rollup to be canceled. If a rollup is canceled during processing of a particular level, all other levels may¬ be cancelled as well. Therefore, in the state diagram shown in Figure 3, there is a Cancel route from almost every phase to End. The Replacement Phase may not be arbitrarily cancelled and may proceed while the LU in question is locked. To avoid excessive interruption of the rollups, the timeline compression process may be preferably scheduled to start when resources in the storage system and/or the storage management system are in low demand.
The rollup state may be stored in a database table in a global database called "rollup_state, " one example of which is shown in Table 1.
Table 1: Rollup State Table
There may be cases where multiple rollups for the same rollup level and LU may exist in a same rollup chunk. In order to return valid image times for this case, a history of rollups that have taken place may be kept. The start and end time ranges for each rollup may be stored in a table called "rollup_history, " one example of which is shown as Table 2.
Table 2: Rollup History Table.
Since an LU is typically related to or grouped with other LUs, the result of a rollup on one LU may affect how the timeline for a group of LUs is represented. When a timeline rollup' involves a group of LUs (e.g., in a dataset or quota group) , the start of a timeline for the group of LUs may be the earliest common timeline start (ECTS) among all the LUs. However, when there are multiple levels of rollup data, there may be points in time in the timeline that become invalid for the start of an image time. Figure 4 illustrates two different rollup levels across three related LUs. Each tick on the timelines may represent a data chunk in a time store. The start of the timeline for hourly data may be time t3 since it is the ECTS among the three LUs. In this example, valid image times are t3, t4, and t5 for the hourly data. The times tO, tl, and t2 can only be chosen through dissociation with the other related LUs. Since times t3, t4, and t5 are hourly buckets of backup data and are essentially single-point-in- time (SPIT) images, image times chosen in between these times may be invalid. The Level-0 data in this example runs from time t6 through a present time. Any Level-0 time between t6 and the present time may be valid image times.
When rollup levels among multiple LUs are inconsistent, the valid image times may differ from those when the rollup levels are consistent among the LUs. If, in the above example, Level-1 rollup is only completed for LU-I, then points t3 and t4 may not be valid image times. Figure 5 illustrates this scenario. Although the ECTS remains the same, t5 may be the only valid image time across all LUs for Level-1 data. Any image time between t6 and the present time may still be valid.
According to embodiments of the present disclosure, a few primitive application program interfaces (APIs) may be provided to represent a timeline that accommodates transient rollup inconsistencies. For example, primitive APIs may be provided to perform the following functions: (a) retrieve start and end of timeline for an LU across all rollup levels, wherein the start and end time range, as well as the generation number for the last rollup, may be returned for the LU; (b) retrieve start and end time of a timeline for an LU witnm each rollup level for an LU (e.g. start and end of Level-1 data for LU-I) , wherein the start and end time range, as well as the generation number for the last rollup, may be returned for Level-0, Level-1, Level-2 and Level-3 data; (c) retrieve the next and previous image times based on an input image time for an LU, wherein the start time before and the start time after the image time may be returned for each of the two times. Using these primitive APIs, a user or client program that has knowledge about the relationship among the LUs may query the information for each LU and determine the start and end of the timeline for each level.
In the exemplary timeline shown in Figure 4, the primitive APIs may be used to find the start and end of the Level-1 timeline for the related Lus as follows. (1) The ECTS may be found for the set of LUs based on what the latest timeline start is for the set of LUs, in this case time t3.
(2) The Level-1 data with earliest start time past the ECTS, in this case t5, may be the start of the Level-1 timeline.
(3) The Level-1 data with the latest end time past the ECTS, in this case t5, may be the end of the Level-1 timeline .
(4) All image times chosen between the start and end times may be validated by using API(c) above for each LU.
Finding the closest time before and after the image time may yield up to two valid data points for an image time. Similarly, the primitive APIs may be used to find the start of the Level-0 timeline for the related LUs in Figure 4. (1) The ECTS may be found for the set of LUs based on what the latest timeline start is for the set of LUs, in this case time t3.
(2) The Level-0 data with the earliest start time past the latest end time of the Level-1 data, in this case time t6, may be the start of the Level-0 timeline. (3) Any image time from this point forward may be valid for Level-0 data.
In a storage system, each quota group may have an allocated timeline storage space for rollup purposes . According to one embodiment, for example, the amount of storage provisioned may be based on the following formula: (Maximum number of LUs in the storage system x Maximum number of rollup levels possible) + 100 working chunks for doing a rollup .
Starting a capture mode, adding LUs to a capturing dataset, and removing LUs from a capturing dataset all have the same effect on rollup chunks as these events have on normal time store data chunks . Every capturing LU may have an active rollup chunk for every level configured in the TLP. When an LU has capture mode turned on a rollup chunk may be activated for each level configured.
Rolled-up data may typically be deprecated first in the timeline since they may be the oldest data in the timeline. One anomaly in terms of deprecation may be that it is possible for an active rollup chunk to be deprecated. Multiple rollup chunks may contain duplicate start times, much like data chunks copied back during an Instant Restore. The same deprecation rules apply to these rollup chunks as do the copy back chunks . Rollup chunks with duplicate start times may be all deprecated regardless of how much space is needed.
2. Stop rollups when encountering a time image. The danger being that deprecation may delete the time image anyway .
Much like time images, user-defined timeline annotations may be invalidated when timeline is deprecated. The same holds true for rollups .
Figure 6 outlines major objects involved in an exemplary program for timeline compression in accordance with embodiments of the present disclosure. A RollupManager object may be an interface for starting, canceling, maintaining synchronization, and querying state for rollups . In addition, it may be responsible for maintaining TLP objects. The RollupManager may contain an instance of a TimelineRollup object. The TimelineRollup object may be an active object responsible for performing all phases of a rollup. There may also be an object called RollupState which may be an interface for querying and setting state for rollups. It may maintain transient states related to the rollup process as well as the persistent states for LUs which may be stored in a global database. A RegionMaps/lndexing object may be responsible for building B-trees as described above. A tsAlloc object may allocate time store cache for rollup chunks . A tsQuotaGroup object may allocate timeline storage space for a dataset. A TimelineProfile object may record a TLP for a dataset.
At this point it should be noted that the technique for timeline compression in accordance with the present disclosure as described above typically involves the processing of input data and the generation of output data to some extent. This input data processing and output data generation may be implemented in hardware or software. For example, specific electronic components may be employed in a storage area network (SAN) or similar or related circuitry for implementing the functions associated with timeline compression in accordance with the present disclosure as described above. Alternatively, one or more processors operating in accordance with stored instructions may implement the functions associated with timeline compression in accordance with the present disclosure as described above. If such is the case, it is within the scope of the present disclosure that such instructions may be stored on one or more processor readable carriers (e.g., a magnetic disk), or transmitted to one or more processors via one or more signals.
1. A method for timeline compression in a storage system, wherein digital content of the storage system is backed up to enable restoration of the digital content to one or more points in a timeline, the method comprising: selecting a time interval in the timeline; identifying one or more sets of backup data recorded for the selected time interval, wherein the identified one or more sets of backup data represent at least a portion of old data overwritten during the selected time interval; and discarding other backup data recorded for the selected time interval, thereby reducing a granularity level of the timeline in the selected time interval.
2. The method according to claim 1, wherein the digital content of the storage system is backed up through copy-on- write operations into a plurality of sets of copy-on-write data and corresponding metadata, and wherein the step of identifying further comprises identifying one or more sets of copy-on-write data and corresponding metadata recorded for the selected time interval.
4. The method according to claim 2, wherein the step of identifying further comprises: determining whether a storage unit in the storage system has been overwritten more than once during the selected time interval; if the storage unit has been overwritten once during the selected time interval causing a sole set of copy-on-write αata and corresponding metadata to be recorded, selecting the sole set; and if the storage unit has been overwritten more than once during the selected time interval causing multiple sets of copy-on-write data and corresponding metadata to be recorded, selecting one of the multiple sets.
6. The method according to claim 2, further comprising: coalescing metadata in the one or more identified sets of copy-on-write data and corresponding metadata.
7. The method according to claim 6, further comprising: identifying copy-on-write data that correspond to the coalesced metadata; and replacing all sets of copy-on-write data and corresponding metadata previously recorded for the selected time interval with a new set comprising the identified copy- on-write data and the coalesced metadata.
8. The method according to claim 2, further comprising: selecting multiple time intervals in a portion of the timeline based on a desired granularity level for the portion of the timeline; and repeating the steps of identifying and discarding for the selected multiple time intervals .
9. The method according to claim 2, wherein the storage system comprises a plurality of storage devices, the method further comprising: repeating the steps of identifying and discarding for one or more of the plurality of storage devices to cause the plurality of storage devices to have a consistent granularity level of the timeline with respect to one another.
10. The method according to claim 2, wherein the steps of selecting, identifying and discarding are triggered when one or more of the following conditions are met: a predetermined storage capacity for the timeline has been consumed; a predetermined amount of data have been accumulated for a granularity level of the timeline; granularity levels of the timeline for at least two storage devices in the storage system are inconsistent; an instruction to reduce the granularity of the timeline is received; and a scheduled time for reducing the granularity of the timeline is reached.
11. The method according to claim 2, further comprising: scanning the storage system for a storage device for which the granularity of the timeline can be reduced.
12. At least one signal embodied in at least one carrier wave for transmitting a computer program of instructions configured to be readable by at least one processor for instructing the at least one processor to execute a computer process for performing the method as recited in claim 1.
13. At least one processor readable carrier for storing a computer program of instructions configured to be readable by at least one processor for instructing the at least one processor to execute a computer process for performing the method as recited in claim 1.
14. A system for timeline compression in a storage system, wherein digital content of the storage system is backed up to enable restoration of the digital content to one or more points in a timeline, the system comprising: means for selecting a time interval in the timeline; means for identifying one or more sets of backup data recorded for the selected time interval, wherein the identified one or more sets of backup data represent at least a portion of old data overwritten during the selected time interval; and means for discarding other backup data recorded for the selected time interval, thereby reducing a granularity level of the timeline in the selected time interval.
15. A system for timeline compression in a storage system, wherein digital content of the storage system is backed up to enable restoration of the digital content to one or more points in a timeline, the system comprising: a storage medium for storing instructions; and ' at least one processor for: selecting a time interval in the timeline; identifying one or more sets of backup data recorded for the selected time interval, wherein the identified one or more sets of backup data represent at least a portion of old data overwritten during the selected time interval; and discarding other backup data recorded for the selected time interval, thereby reducing a granularity level of the timeline in the selected time interval.
PCT/US2006/039857 2005-10-14 2006-10-13 Technique for timeline compression in a data store WO2007047346A2 (en)
US72618705P true 2005-10-14 2005-10-14
US60/726,187 2005-10-14
EP06816785.7A EP1952236B1 (en) 2005-10-14 2006-10-13 Technique for timeline compression in a data store
WO2007047346A2 true WO2007047346A2 (en) 2007-04-26
WO2007047346A3 WO2007047346A3 (en) 2007-09-07
PCT/US2006/039857 WO2007047346A2 (en) 2005-10-14 2006-10-13 Technique for timeline compression in a data store
CN (2) CN101313279A (en)
WO (1) WO2007047346A2 (en)
US8214332B2 (en) 2009-06-08 2012-07-03 International Business Machines Corporation Data retention using logical objects
CN105224546A (en) * 2014-06-04 2016-01-06 阿里巴巴集团控股有限公司 Data storage and query method and apparatus
US10007352B2 (en) 2015-08-21 2018-06-26 Microsoft Technology Licensing, Llc Holographic display system with undo functionality
CN106407295A (en) * 2016-08-31 2017-02-15 成都九华圆通科技发展有限公司 Method for storing data of grid monitoring system based on radio stations
US20010034737A1 (en) 2000-01-10 2001-10-25 Cane David A. Administration of a differential backup system in a client-server environment
US6513065B1 (en) 1999-03-04 2003-01-28 Bmc Software, Inc. Enterprise management system and method which includes summarization having a plurality of levels of varying granularity
EP1522926A2 (en) 2003-09-30 2005-04-13 Live Vault Corporation Systems and methods for backing up data files
GB1509193A (en) 1974-04-17 1978-05-04 Nat Res Dev Computer systems
DE3275595D1 (en) 1981-10-01 1987-04-09 Stratus Computer Inc Digital data processor with fault-tolerant bus protocol
DE3215177A1 (en) * 1982-04-23 1983-10-27 Hartmann & Braun Ag Monitoring system for one or more process stations of similar structure
JPH046017B2 (en) * 1982-09-30 1992-02-04 Hitachi Ltd
EP0128945B1 (en) * 1982-12-09 1991-01-30 Sequoia Systems, Inc. Memory backup system
DE69032614D1 (en) * 1989-11-03 1998-10-08 Compaq Computer Corp A method for data distribution in a disk array
JP2603757B2 (en) 1990-11-30 1997-04-23 富士通株式会社 Array - method of controlling a disk device
DE69119222D1 (en) * 1991-06-04 1996-06-05 Ibm Data backup and disposal in a data processing system
JPH05341918A (en) 1992-05-12 1993-12-24 Internatl Business Mach Corp <Ibm> Connector for constituting duplex disk storage device system
AU2663095A (en) 1994-06-10 1996-01-05 Sequoia Systems, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5715438A (en) * 1995-07-19 1998-02-03 International Business Machines Corporation System and method for providing time base adjustment
WO1997008623A1 (en) 1995-08-23 1997-03-06 Symantec Corporation Coherent file system access during defragmentation operations on a storage media
DE69721825D1 (en) * 1997-10-27 2003-06-12 Mitsubishi Electric Corp Data interface and high-speed communication with this interface
AU5424600A (en) * 1999-06-28 2001-01-31 Shashikant Prabhudas Kurani Antiseptic and antimicrobial pharmaceutical preparation of feracrylum
2006-10-13 WO PCT/US2006/039857 patent/WO2007047346A2/en active Application Filing
2006-10-13 CN CNA2006800433425A patent/CN101313279A/en not_active Application Discontinuation
2006-10-13 US US11/549,386 patent/US7536583B2/en active Active
2006-10-13 CN CN201410105539.3A patent/CN103927238B/en active IP Right Grant
2006-10-13 EP EP06816785.7A patent/EP1952236B1/en active Active
See also references of EP1952236A4
US7536583B2 (en) 2009-05-19
CN103927238B (en) 2017-04-12
EP1952236A2 (en) 2008-08-06
US20070088973A1 (en) 2007-04-19
CN103927238A (en) 2014-07-16
EP1952236A4 (en) 2009-04-01
EP1952236B1 (en) 2017-06-14
WO2007047346A3 (en) 2007-09-07
CN101313279A (en) 2008-11-26
US7287133B2 (en) 2007-10-23 Systems and methods for providing a modification history for a location within a data store
JP3593366B2 (en) 2004-11-24 Database management method
US7331000B2 (en) 2008-02-12 Apparatus and storage system for controlling acquisition of snapshot
US7577807B2 (en) 2009-08-18 Methods and devices for restoring a portion of a data store
US7239581B2 (en) 2007-07-03 Systems and methods for synchronizing the internal clocks of a plurality of processor modules
US7159072B2 (en) 2007-01-02 Method and apparatus for monitoring the quantity of differential data in a storage system
JP4128641B2 (en) 2008-07-30 Data backup method
JP2004287648A (en) 2004-10-14 External storage device and method for restoring data of the same external storage device and program
US20070198608A1 (en) 2007-08-23 Systems and methods for classifying and transferring information in a storage network
Ref document number: 200680043342.5
Ref document number: 2006816785