IP Library Granted Patent US 7,577,806
Granted Patent B2
US 7,577,806 · App. 10/668,833 · Granted Aug 18, 2009

Systems and methods for time dependent data storage and recovery

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,577,806
App. No.
10/668,833
Granted
Aug 18, 2009
Kind
B2
Abstract

A method, apparatus, and system for accessing units of storage that depends at least in part on an address of the unit of storage and the time that data was written to the unit of storage.

Claims (49)

1. A storage management system for backing up a plurality of units of storage, the storage management system comprising:

at least one current store, separate from the plurality of units of storage, representing a current state of at least one of the plurality of units of storage; and

at least one time store, separate from the plurality of units of storage and the at least one current store, the at least one time store storing old data copied from the at least one current store and associated timestamps;

wherein the storage management system automatically records information associated with all write commands directed to the plurality of units of storage within the at least one time store, each write command comprising an instruction to overwrite at least one of the plurality of units of storage with new data;

wherein the storage management system copies, prior to overwriting the at least one unit of storage, old data in the at least one current store, representing old data present at the at least one unit of storage, into the at least one time store, wherein the old data is timestamped in the at least one time store, thereby continuously indexing by timestamp in the at least one time store old data to be overwritten with new data prior to execution of each write command;

wherein the storage management system is further configured to identify old data that were present in a specified portion of the plurality of units of storage at a specified time prior to being overwritten based at least in part on a timestamp corresponding to the specified time and associated with the old data in the at least one time store, without the use of a snapshot containing the old data at the specified time;

wherein the at least one time store does not store the new data.

2. The storage management system of claim 1 , wherein the plurality of units of storage comprises one or more physical storage devices on which data of the plurality of units of storage is stored.

3. The storage management system of claim 2 , wherein an address for accessing the plurality of units of storage comprises a device identifier and a location identifier.

4. The storage management system of claim 3 , wherein the device identifier identifies a physical storage device.

5. The storage management system of claim 3 , wherein the device identifier identifies a logical device.

6. The storage management system of claim 1 , wherein data of the plurality of units of storage can be accessed by specifying an address and a given time, wherein the given time is specified to allow data retrieved from the address to be the most recent data that was written to the address at or before the given time.

7. The storage management system of claim 6 , wherein the given time is explicitly specified in a request to access at least one of the plurality of units of storage.

8. The storage management system of claim 6 , wherein the given time is specified in a command to the plurality of units of storage separate from a request to read a unit of storage.

9. The storage management system of claim 6 , wherein the storage management system creates a virtual device, wherein the given time is specified when the virtual device is created, and is applied when the virtual device is accessed.

10. The storage management system of claim 9 , wherein new data is written to the virtual device without overwriting data that was written to the plurality of units of storage after the given time specified when the virtual device was created.

11. The storage management system of claim 6 , wherein a command to the plurality of units of storage specifies that the given time is implicitly a current time.

12. The storage management system of claim 6 , wherein the given time is specified relative to a current time.

13. The storage management system of claim 1 , wherein at least some of the plurality of units of storage are blocks.

14. The storage management system of claim 1 , wherein the at least one current store maintains a current mirror copy of data stored in the plurality of units of storage, and wherein the at least one time store contains the old data and a timestamped record of the old data.

15. The storage management system of claim 14 , wherein, after the old data is copied to the at least one time store, the at least one unit of storage is overwritten with the new data, and the current mirror copy in the at least one current store is updated with the new data.

16. A method for backing up a plurality of units of storage, the method comprising:

recording, in at least one time store, information associated with all write commands directed to the plurality of units of storage, wherein each write command comprises an instruction to overwrite at least one of the plurality of units of storage with new data;

copying, prior to overwriting the at least one unit of storage, old data in at least one current store, representing old data present at the at least one unit of storage, into the at least one time store, wherein the old data is timestamped in the at least one time store, thereby continuously indexing by timestamp in the at least one time store old data to be overwritten with new data prior to execution of each write command, wherein the at least one time store and the at least one current store are separate from the plurality of units of storage and from each other; and

identifying old data that were present in a specified portion of the plurality of units of storage at a specified time prior to being overwritten based at least in part on a timestamp corresponding to the specified time and associated with the old data in the at least one time store, without the use of a snapshot that includes the old data at the specified time, wherein the at least one time store does not store the new data.

17. The method of claim 16 , wherein an address for accessing the plurality of units of storage comprises a device identifier and a location identifier.

18. The method of claim 17 , wherein the storage management system creates a virtual device, wherein the time is specified when the virtual device is created, and is applied when the virtual device is accessed.

19. The method of claim 18 , further comprising writing data to the virtual storage device.

20. The method of claim 16 , wherein data of the plurality of units of storage can be accessed by specifying an address and a time, wherein the time is specified to allow the data retrieved from the address to be the most recent data that was written to the address at or before the time.

21. The method of claim 20 , wherein the specified time is explicitly specified in a request to access a unit of storage.

22. The method of claim 16 , wherein specifying the time comprises specifying the time relative to a current time.

23. The method of claim 16 , further comprising:

maintaining, in the at least one current store, a current mirror copy of the content of the plurality of units of storage; and

overwriting the at least one unit of storage with the new data and updating the current mirror copy in the current store with the new data, wherein the overwriting and the updating occur after the old data is copied to the time store.

24. An apparatus for storing data, the apparatus comprising:

a storage appliance that interfaces with a computer;

one or more physical storage devices that interface with the storage appliance, the one or more physical storage devices having a plurality of storage units, each such physical storage device controlled by the storage appliance;

wherein the storage appliance comprises at least one current store and at least one time store, the at least one current store and the at least one time store being separate from each other and from the plurality of storage units, the at least one current store maintaining a current mirror copy of digital content in the one or more physical storage devices, wherein before a storage unit in the plurality of storage units is overwritten by write command with new data, old data present at the storage unit is copied from the current store and timestamped and stored in the at least one time store, thereby continuously indexing by timestamp in the at least one time store old data to be overwritten with new data prior to execution of each write command; and

wherein the storage appliance is further configured to identify old data that were present in a specified portion of the plurality of storage units during a specified time prior to being overwritten based at least in part on a timestamp corresponding to the specified time and associated with the old data in the at least one time store, without the use of a snapshot that includes the old data at the specified time, wherein the at least one time store does not store the new data.

25. The apparatus of claim 24 , wherein data of the plurality of storage units can be accessed by specifying an address and a time, wherein the time is specified to allow data retrieved from the address to be the most recent data that was written to the address at or before the time.

26. A computer readable storage medium storing code to cause a processor to control a plurality of units of storage, the computer readable storage medium comprising:

code adapted to record, in at least one time store, information associated with all write commands issued to the plurality of units of storage, wherein each write command comprises an instruction to overwrite at least one of the plurality of units of storage with new data; and

code adapted to copy, prior to overwriting the at least one unit of storage, old data in at least one current store, representing old data present at the at least one unit of storage, into the at least one time store, wherein the old data is timestamped in the at least one time store, thereby continuously indexing by timestamp in the at least one time store old data to be overwritten with new data prior to execution of each write command, wherein the at least one time store and the at least one current store are separate from the plurality of units of storage and from each other; and

code adapted to identify old data that were present in a specified portion of the plurality of units of storage at a specified time period prior to being overwritten based at least in part on a timestamp corresponding to the specified time and associated with the old data in the at least one time store, without the use of a snapshot that includes the old data at the specified time, wherein the at least one time store does not store the new data.

27. The computer readable storage medium of claim 26 , wherein data of the plurality of units of storage can be accessed by specifying an address and a time, wherein the time is specified to allow data retrieved from the address to be the most recent data that was written to the address at or before the time.

28. The computer readable storage medium of claim 26 , wherein the specified time period is explicitly specified in a request to access at least one of the plurality of units of storage.

29. The computer readable storage medium of claim 26 , further comprising:

code adapted to maintain, in a current store, a current mirror copy of the content of the plurality of units of storage; and

code adapted to overwrite the at least one unit of storage with the new data and update the current mirror copy in the current store with the new data after the old data is copied to the time store.

Assignments (14)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2007
From: REVIVIO, INC.
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 019032/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2004
From: ROWAN, MICHAEL T.; RODGERS, KEVIN F.
To: REVIVIO, INC.
Reel/Frame 015142/0247 →