IP Library Granted Patent US 7,047,380
Granted Patent B2
US 7,047,380 · App. 10/925,928 · Granted May 16, 2006

System and method for using file system snapshots for online data backup

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,047,380
App. No.
10/925,928
Granted
May 16, 2006
Kind
B2
Abstract

A system for data backup includes a storage device, a backup storage device, and an intermediate storage device. Backup procedure is performed on-line and copies data blocks from the storage device into the backup storage device. When a write command is directed to a data storage block identified for backup that has not yet been backed up, the identified data storage block is copied from the storage device to the intermediate storage device, the write command is executed on the identified data storage block from the storage device, and the data storage block is copied from the intermediate storage device to the backup storage device. In case of an error accessing a block on the storage device, the block is marked as invalid. The intermediate storage device can be external to a file system of a computer that includes the storage device, or can be located in the storage device, or can be a separate partition of the storage device, or can be a file within a file system. The system suspends a write command to the storage device during the data backup process if the intermediate storage device has reached a selected data capacity; and copies a selected amount of data from the intermediate storage device to the backup storage device.

Claims (114)

1. A computer system operable to provide data backup, comprising:

a storage device operable to store block data;

a backup storage device operable to store block data; and

an intermediate block data container operable to store block data, wherein the computer system is operable to copy a data block from the storage device into the intermediate block data container and to copy a data block from the intermediate block data container into the backup storage device during an online data backup process,

wherein the computer system is operable to:

create a lockable bitmap of data storage blocks located in the storage device that are subject to the backup process;

copy a data storage block to the backup storage device pursuant to the data storage blocks identified by the bitmap; and

in case of error when accessing the storage device, indicate, in the bitmap, that the data storage block is invalid.

2. The computer system of claim 1 , wherein the intermediate block data container is located in a memory location that is external to the computer file system.

3. The computer system of claim 2 , wherein the intermediate block data container is located in the storage device.

4. The computer system of claim 3 , wherein the intermediate block data container is a separate partition of the storage device.

5. The computer system of claim 1 , wherein the intermediate block data container is a file within a file system on the storage device.

6. The computer system of claim 5 , wherein the file system is further operable to write dirty pages to the storage device before initiating a data backup process.

7. The computer system of claim 1 , wherein the computer system is operable to:

suspend a write command to the storage device during the data backup process if the intermediate block data container has reached a selected data capacity; and

copy a selected amount of data from the intermediate block data container to the backup storage device.

8. The computer system of claim 7 , further comprising:

a file system driver operable to transmit a write request to write to the storage device; and

a storage device driver program operable to read from the storage device and write to the storage device in block mode in response to the write request.

9. The computer system of claim 8 , wherein the file system driver translates a write request addressed to a file located in the storage device and received from a user process into one or more block write operations.

10. The computer system of claim 8 , wherein the file system driver transmits a write request received from an operating system process.

11. The computer system of claim 8 , wherein the file system driver provides a data block number associated with a block in response to a write command directed to the data block during the online data backup process.

12. The computer system of claim 7 , wherein the computer system suspends a write command that is directed to a data storage block that is subject to the data backup process but has not yet been copied, copies the data storage block that is the subject of the write command to the intermediate storage device, executes the write command and copies the data storage block from the intermediate storage device to the backup storage device.

13. The computer system of claim 1 , wherein, in the case of error during a write operation, the system continues the copy process.

14. The computer system of claim 1 , wherein, in the case of error during a read operation, the system continues the read process.

15. A method for providing an online data backup process for backing up data stored on a storage device associated with a computer system to a backup storage device, comprising:

informing an operating system driver that the data is in a backup state;

creating a lockable bitmap of data blocks located in the storage device that are subject to the online data backup process;

receiving a write operation directed to a block identified by the bitmap;

determining if the data block identified by the bitmap has been copied;

executing the write operation if the data block identified by the bitmap has been copied; and

in case of error of accessing the storage device, marking the block as invalid.

16. The method of claim 15 , further comprising:

providing an intermediate data container; and

copying the data block identified by the bitmap from the intermediate data container to the backup storage device.

17. The method of claim 15 , further comprising flagging a data block once the data block has been copied to the backup storage device.

18. The method of claim 15 , further comprising informing the operating system driver that all of the data blocks subject to the online data backup process have been copied to the backup storage device.

19. The method of claim 15 , further comprising receiving a data block number associated with the listed data block upon receiving a write operation directed to a listed data block.

20. The method of claim 15 , further comprising writing a dirty page to the storage device before informing an operating system driver that the data is in a backup state.

21. The method of claim 16 , wherein the step of providing the intermediate data container further comprises providing a storage device external to the computer system.

22. The method of claim 16 , wherein the step of providing the intermediate data container further comprises providing a selected section of the storage device.

23. The method of claim 16 , wherein the step of providing the intermediate data container further comprises providing a selected file located in a file system associated with the computer system.

24. The method of claim 16 , further comprising:

suspending the write operation if the data block identified by the bitmap has not been copied;

copying the data block identified by the bitmap to the intermediate block data container; and

executing the write operation.

25. The method of claim 24 , wherein the step of suspending the write operation if the listed data block has not been copied, further comprises:

determining whether the intermediate block data storage has reached a selected capacity; and

copying a selected portion of the intermediate block data storage to the backup storage device if the intermediate block data storage has reached the selected capacity.

26. The method of claim 16 , further comprising, upon receiving an indication that the intermediate data container is close to overload, initiating a temporary slowdown of write operations by slowing down processes whose activity results in write operations into a non-backed-up area.

27. The method of claim 15 , wherein the data blocks in the storage device that are subject to the data backup process are all blocks of an underlying storage device used by file system data but not free space blocks.

28. The method of claim 15 , further comprising, in the case of error during a write operation, continuing the copy process.

29. The method of claim 15 , further comprising, in the case of error during a write operation, continuing the read process.

30. A system for data backup, comprising:

a storage device;

a backup storage device; and

an intermediate storage device,

wherein, a backup procedure is performed on-line and copies data blocks from the storage device into the backup storage device,

wherein, when a write command is directed to a data storage block identified for backup that has not yet been backed up, the identified data storage block is copied from the storage device to the intermediate storage device, the write command is executed on the identified data storage block from the storage device, and the data storage block is copied from the intermediate storage device to the backup storage device, and

wherein, in case of an error accessing a block on the storage device, the block is marked as invalid.

31. The system of claim 30 , wherein the intermediate storage device is external to a file system of a computer that includes the storage device.

32. The system of claim 31 , wherein the intermediate storage device is located in the storage device.

33. The system of claim 32 , wherein the intermediate storage device is a separate partition of the storage device.

34. The system of claim 31 , wherein the intermediate storage device is a file within a file system.

35. The system of claim 34 , wherein the file system writes dirty pages to the storage device before initiating a data backup process.

36. The system of claim 31 , wherein the system:

suspends a write command to the storage device during the data backup process if the intermediate storage device has reached a selected data capacity; and

copies a selected amount of data from the intermediate storage device to the backup storage device.

37. The system of claim 31 , further comprising:

a file system driver used for transmitting the write command to the storage device; and

a storage device driver used for reading from the storage device and writing to the storage device in block mode in response to the write command.

38. The system of claim 37 , wherein the file system driver translates the write command received from a user process and addressed to a file located in the storage device into one or more block write operations.

39. The system of claim 37 , wherein the file system driver transmits the write command received from an operating system process.

40. The system of claim 37 , wherein the file system driver provides a data block number associated with a block in response to the write command directed to the data block during an online backup.

41. The system of claim 30 , further comprising means for slowing down processes whose activity results in write operations into a non-backed-up area, in response to an indication that the intermediate storage device is close to overload.

42. The system of claim 30 , wherein data blocks in the storage device that are subject to the online data backup process includes all blocks of an underlying storage device used by file system data and does not include free space blocks.

43. The system of claim 30 , wherein backed up data blocks are restored on-the-fly to a different storage device.

44. The system of claim 30 , wherein an order in which data blocks are scheduled for backup is changed based on information received from an external source.

45. The system of claim 30 , wherein, in the case of error during a write operation, the system continues the copy process.

46. The system of claim 30 , wherein, in the case of error during a read operation, the system continues the read process.

47. A method for providing an online data backup, comprising:

identifying data blocks in a storage device subject to online data backup;

receiving a write command directed to an identified data block;

determining if the identified data block has been copied;

proceeding with a write operation if the identified data block has been copied; and

in case of error accessing the storage device, computer program code means for marking corresponding blocks as invalid and continuing access operations with other blocks in the storage device.

48. The method of claim 47 , further comprising the step of copying the identified data block from the intermediate storage to a backup storage device.

49. The method of claim 47 , further comprising flagging a data block once the data block has been copied to the backup storage device.

50. The method of claim 47 , further comprising informing an operating system driver that all the identified data blocks have been copied to the backup storage device.

51. The method of claim 47 , further comprising receiving a data block number associated with the identified data block upon receiving the write command directed to the identified data block.

52. The method of claim 47 , further comprising writing a dirty page to the storage device before informing an operating system driver that the data is in the backup state.

53. The method of claim 47 , wherein the step of copying comprises copying the identified data block to intermediate storage, wherein the intermediate storage comprises an external storage device.

54. The method of claim 47 , wherein the step of copying comprises copying the identified data block to intermediate storage, wherein the intermediate storage comprises a selected partition of the storage device.

55. The method of claim 47 , wherein the step of copying comprises copying the identified data block to intermediate storage, wherein the intermediate storage comprises a selected file located in a file system associated with the computer system.

56. The method of claim 47 , further comprising:

suspending the write operation if the identified data block has not been copied;

copying the identified data block to an intermediate storage; and

executing the write operation on the data block in the intermediate storage.

57. The method of claim 56 , wherein suspending the write operation comprises:

determining whether the intermediate storage has reached a selected capacity;

copying a selected portion of the intermediate storage to the backup storage device if the intermediate storage has reached the selected capacity; and

freeing up available space in the intermediate storage.

58. The method of claim 56 , further comprising, upon receiving an indication that the intermediate data storage is close to overload, slowing down processes whose activity results in write operations into a non-backed-up area.

59. The method of claim 47 , wherein data blocks located in the storage device that are subject to the online data backup process are all blocks of an underlying storage device used by file system data but not free space blocks.

60. The method of claim 47 , further comprising informing an operating system driver that data in a storage device is in a backup state.

61. The method of claim 47 , wherein backed up data blocks are restored on the fly to a different storage device.

62. The method of claim 47 , wherein an order in which data blocks are scheduled for backup is changed based on information received from an external source.

63. The method of claim 47 , further comprising creating a lockable bitmap of data blocks located in the storage device that are subject to the backup process.

64. A computer program product for providing an online data backup, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:

computer program code means for identifying data blocks in a storage device subject to online data backup;

computer program code means for receiving a write command directed to an identified data block;

computer program code means for determining if the identified data block has been copied;

computer program code means for proceeding with a write operation if the identified data block has been copied; and

computer program code means for marking corresponding blocks as invalid in case of error accessing the storage device, and continuing access operations with other blocks in the storage device.

Assignments (10)
REAFFIRMATION AGREEMENT Recorded Aug 28, 2022
From: ACRONIS AG; ACRONIS INTERNATIONAL GMBH; ACRONIS SCS, INC.; ACRONIS, INC.; GROUPLOGIC, INC.; NSCALED INC.; ACRONIS MANAGEMENT LLC; 5NINE SOFTWARE, INC.; ACRONIS GERMANY GMBH; ACRONIS NETHERLANDS B.V.; ACRONIS BULGARIA EOOD; DEVICELOCK, INC.; DEVLOCKCORP LTD; ACRONIS INC.
To: MIDCAP FINANCIAL TRUST
Reel/Frame 061330/0818 →
SECURITY INTEREST Recorded Dec 19, 2019
From: ACRONIS INTERNATIONAL GMBH
To: MIDCAP FINANCIAL TRUST
Reel/Frame 051418/0119 →
RELEASE OF SECURITY INTEREST Recorded Oct 21, 2019
From: OBSIDIAN AGENCY SERVICES, INC.
To: ACRONIS INTERNATIONAL GMBH; GROUPLOGIC, INC.
Reel/Frame 050783/0893 →
PATENT SECURITY AGREEMENT Recorded Feb 27, 2014
From: ACRONIS INTERNATIONAL GMBH
To: OBSIDIAN AGENCY SERVICES, INC.
Reel/Frame 032366/0328 →
RELEASE OF SECURITY INTEREST Recorded Feb 25, 2014
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: ACRONIS INC.; ACRONIS, INC.; ACRONIS INTERNATIONAL GMBH
Reel/Frame 032296/0397 →
SECURITY AGREEMENT Recorded Apr 20, 2012
From: ACRONIS INTERNATIONAL GMBH
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 028081/0061 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2012
From: ACRONIS INC.
To: ACRONIS INC. LTD.
Reel/Frame 027898/0764 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2012
From: ACRONIS INC. LTD.
To: ACRONIS INTERNATIONAL GMBH
Reel/Frame 027898/0795 →
SECURITY AGREEMENT Recorded Jun 20, 2011
From: ACRONIS INC.
To: SILICON VALLEY BANK
Reel/Frame 026465/0559 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL LIEN Recorded Mar 15, 2011
From: CAPITALSOURCE FINANCE LLC
To: ACRONIS, INC.; ACRONIS INC.; ACRONIS INTERNATIONAL GMBH
Reel/Frame 025956/0576 →