When a computer system is up and running the data on the disk is in transient state. There are lots of changes happening to the data directly or indirectly because of user actions. After finishing the work when that computer system is shut down the data on the disk is typically in a state where backup is highly desired so that the system can be recovered back to that same state if something goes wrong with it. Since the machine is shut down user can perform an offline backup of all data by connecting the disks of the computer to other system. But this cannot be practically done every day. More desirable solution would be to automatically perform the backup of the machine when it is shut down every time. However back up of a machine can take potentially very long time and it would block the shutdown of the system for that long.
A computer implemented method includes monitoring blocks of data on a storage device that are changing as the computer operates. On detecting a computer shut down event, a copy of changes to the monitored blocks are saved. Upon startup of the computer, a backup of the changed blocks of data is performed.
In one embodiment, a computer readable device stores instructions to cause a computer to perform the method.
In a further embodiment, a computer system includes a monitor to monitor blocks of data on a storage device that are changing as the computer operates. An event detector detects a computer shut down event. A storage device saves a copy of changes to the monitored blocks of data following detection of the shut down event. A backup module running on the computer system performs a backup of the changed blocks of data upon startup of the computer system.
In the following description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific embodiments which may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that structural, logical and electrical changes may be made without departing from the scope of the present invention. The following description of example embodiments is, therefore, not to be taken in a limited sense, and the scope of the present invention is defined by the appended claims.
The functions or algorithms described herein may be implemented in software or a combination of software and human implemented procedures in one embodiment. The software may consist of computer executable instructions stored on computer readable media such as memory or other type of storage devices. Further, such functions correspond to modules, which are software, hardware, firmware or any combination thereof. Multiple functions may be performed in one or more modules as desired, and the embodiments described are merely examples. The software may be executed on a digital signal processor, ASIC, microprocessor, or other type of processor operating on a computer system, such as a personal computer, server or other computer system.
A computer implemented method 100 as shown in
In one embodiment, saving a copy of all the changes to the monitored blocks of data includes creating a snapshot such as by using a volume shadow copy service of the computer. Volume shadow copy services in one embodiment is a service such as that provided in a Microsoft Windows® operating system. Snapshots allow the creation of consistent backups of a volume, ensuring that the contents cannot be changed while the snapshot is being made. The snapshot may be point in time and application level consistent without the need for specific knowledge about the application program invoking the services. The snapshot allows any file to be retrieved as it existed at the time any snapshot was made. In one embodiment, the backup program is an application that tracked change data to be applied during a backup. The snapshot allows the backup to be made upon startup.
In one embodiment as illustrated in method 200 in
A method 300 is illustrated in
The backup may take many different forms, such as incremental backups, complete backups, various levels of RAID, and other types of backups.
In one embodiment, the backups may be incremental backups. The incremental backups may be made periodically in one embodiment, and may be scheduled after a system has been shut down. In such a case, the incremental backup is run on startup from the snapshot data. If the next incremental backup is scheduled after the computer has been started up again, the backup may be run at the scheduled time, utilizing the snapshot data and further saved changes to data blocks. The incremental backups may or may not be merged as described below.
At a time T1, storage device 410 may be modified as shown at 420. Blocks 422 and 424, the second and fifth blocks may be changed from time T0. An incremental sync or backup is then performed, resulting in blocks 422 and 424 being stored as indicated at incremental backup 425. The same container or storage device used for backup copy 415 may also be used for incremental backups. The remaining blocks need not be stored in incremental backup 425, because they remain the same as stored in full backup copy 415.
At a time T2, more blocks of storage device 410 may have been modified as shown at 430. Blocks 432 and 434, corresponding to the second and eighth blocks have been modified. The second block was modified both by times T1 and T2. Both blocks 432 and 434 are stored in a further incremental backup 435. The other, unmodified blocks need not stored in incremental backup 435. Note that several blocks have not been modified yet, and are thus not included in the incremental backups 425 and 435. Many more incremental backups may be performed at set times or as otherwise desired.
At some point, to reduce the number of incremental backups that must be processed to recover data, the two oldest backups, 415 and 425 may be optionally merged. Merging results in block 422 in backup 425 being stored over the second block in backup 415, and block 424 in backup 425 being stored over the fifth block in backup 415. The overall number of backups is reduced by as a result of the merge, making recovery shorter, as fewer backups need to be processed to recover data.
In one embodiment, n incremental backups are kept. When incremental backup 518 is made or is scheduled to be made, the changed blocks 520 and 534 of incremental backup 512 are merged into the full backup 510, replacing corresponding blocks. The merging of the two oldest backups, 510 and 512 ensure that at most only n backups need be merged to recover data prior to a next backup. When incremental backup at time T(n+2) is to be performed, incremental backup 514 from time T2 may be merged into full backup 510, maintaining the number of backups at n. This process may continue ad infinitum, without the need to make a second full backup, saving storage space, and recovery time.
As one example, consider that the storage device needs to be recovered after time T(n+1). With the previous merger of incremental backup 512, only n backups need to be processed to recover data that had been stored on the storage device. At time T(n+m), the mergers reduce by m the number of backups to be processed to recover the data. Over time, m, can be very large, such 1000 or more if backups are scheduled periodically. In some embodiments, scheduled backups may be set by users, and may be performed several times week, day or hour as desired, resulting in very large numbers of incremental backups if merges are not performed. However, mergers help keep the number of backups to be processed to recover data to a manageable number.
In some embodiments, rather than a fixed number, n, of incremental backups being kept, backups may instead be merged based on time periods. For instance, a user may desire to keep all incremental backups for a period of a week, or some other user selected period. Rather than merging the oldest two backups, intermediate incremental backups may be merged, such as to merge daily backups into weekly backups that may be kept for a longer period of time. Regardless of the incremental backup rate, incremental backups may be merged when they are older than the selected period. They may be merged in batch, so that they may occur at slow periods, such as late evenings or early mornings in one embodiment, or individually as the selected period for each incremental backup is past.
At 620, a user configures the number of recovery points, x, to keep. The number may be a default number set by a manufacturer, or may be selected to allow recovery to selected points within a desired time frame, such as a few days or weeks, or even minutes depending on the frequency of backups and the application being implemented by the computer system. Once the number of recovery points is selected backups may be started as indicated at 630. Backups may be scheduled periodically, or on demand, or a combination of both.
At 640, a backup is performed, creating a new recovery point. The initial backup is referred to as the oldest recovery point, with subsequent backups being referred to as incremental recovery points. At 650, the number of recovery points is checked to see if it is greater than x. If so, the oldest two recovery points are merged at 660, creating an updated oldest recovery point. The process 600 ends at 670.
In the embodiment shown in
As shown in
The system bus 923 can be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory can also be referred to as simply the memory, and, in some embodiments, includes read-only memory (ROM) 924 and random-access memory (RAM) 925. A basic input/output system (BIOS) program 926, containing the basic routines that help to transfer information between elements within the computer 900, such as during start-up, may be stored in ROM 924. The computer 900 further includes a hard disk drive 927 for reading from and writing to a hard disk, not shown, a magnetic disk drive 928 for reading from or writing to a removable magnetic disk 929, and an optical disk drive 930 for reading from or writing to a removable optical disk 931 such as a CD ROM or other optical media.
The hard disk drive 927, magnetic disk drive 928, and optical disk drive 930 couple with a hard disk drive interface 932, a magnetic disk drive interface 933, and an optical disk drive interface 934, respectively. The drives and their associated computer-readable media provide non volatile storage of computer-readable instructions, data structures, program modules and other data for the computer 900. It should be appreciated by those skilled in the art that any type of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read only memories (ROMs), redundant arrays of independent disks (e.g., RAID storage devices) and the like, can be used in the exemplary operating environment.
A plurality of program modules can be stored on the hard disk, magnetic disk 929, optical disk 931, ROM 924, or RAM 925, including an operating system 935, one or more application programs 936, other program modules 937, and program data 938. Programming for implementing one or more processes or method described herein may be resident on any one or number of these computer-readable media.
A user may enter commands and information into computer 900 through input devices such as a keyboard 940 and pointing device 942. Other input devices (not shown) can include a microphone, joystick, game pad, satellite dish, scanner, or the like. These other input devices are often connected to the processing unit 921 through a serial port interface 946 that is coupled to the system bus 923, but can be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). A monitor 947 or other type of display device can also be connected to the system bus 923 via an interface, such as a video adapter 948. The monitor 947 can display a graphical user interface for the user. In addition to the monitor 947, computers typically include other peripheral output devices (not shown), such as speakers and printers.
The computer 900 may operate in a networked environment using logical connections to one or more remote computers or servers, such as remote computer 949. These logical connections are achieved by a communication device coupled to or a part of the computer 900; the invention is not limited to a particular type of communications device. The remote computer 949 can be another computer, a server, a router, a network PC, a client, a peer device or other common network node, and typically includes many or all of the elements described above I/O relative to the computer 900, although only a memory storage device 950 has been illustrated. The logical connections depicted in
When used in a LAN-networking environment, the computer 900 is connected to the LAN 951 through a network interface or adapter 953, which is one type of communications device. In some embodiments, when used in a WAN-networking environment, the computer 900 typically includes a modem 954 (another type of communications device) or any other type of communications device, e.g., a wireless transceiver, for establishing communications over the wide-area network 952, such as the internet. The modem 954, which may be internal or external, is connected to the system bus 923 via the serial port interface 946. In a networked environment, program modules depicted relative to the computer 900 can be stored in the remote memory storage device 950 of remote computer, or server 949. It is appreciated that the network connections shown are exemplary and other means of, and communications devices for, establishing a communications link between the computers may be used including hybrid fiber-coax connections, T1-T3 lines, DSL's, OC-3 and/or OC-12, TCP/IP, microwave, wireless application protocol, and any other electronic media through any suitable switches, routers, outlets and power lines, as the same are known and understood by one of ordinary skill in the art.
The Abstract is provided to comply with 37 C.F.R. § 1.72(b) is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
Number | Name | Date | Kind |
---|---|---|---|
5111413 | Lazansky | May 1992 | A |
5163148 | Walls | Nov 1992 | A |
5924102 | Perks | Jul 1999 | A |
6546403 | Carlson, Jr. | Apr 2003 | B1 |
6799189 | Huxoll | Apr 2004 | B2 |
6785786 | Gold et al. | Aug 2004 | B1 |
7069402 | Coulter et al. | Jun 2006 | B2 |
7178061 | Aasheim | Feb 2007 | B2 |
7197665 | Goldstein et al. | Mar 2007 | B2 |
7266574 | Boudrie et al. | Sep 2007 | B1 |
7295960 | Rappaport | Nov 2007 | B2 |
7797279 | Starling et al. | Sep 2010 | B1 |
7934064 | Per et al. | Apr 2011 | B1 |
8037032 | Pershin et al. | Oct 2011 | B2 |
8051044 | Dyatlov et al. | Nov 2011 | B1 |
8069320 | Per et al. | Nov 2011 | B1 |
8117410 | Lu et al. | Feb 2012 | B2 |
8190574 | Barnes et al. | May 2012 | B2 |
8615489 | Pershin | Dec 2013 | B2 |
8677491 | Turbin | Mar 2014 | B2 |
8700363 | Heinzerling | Apr 2014 | B2 |
8793217 | Karonde et al. | Jul 2014 | B2 |
20030200480 | Beattie | Oct 2003 | A1 |
20040078666 | Aasheim | Apr 2004 | A1 |
20040143428 | Rappaport | Jul 2004 | A1 |
20040268068 | Curran et al. | Dec 2004 | A1 |
20060064444 | Van Ingen et al. | Mar 2006 | A1 |
20070083722 | Per et al. | Apr 2007 | A1 |
20070112895 | Ahrens et al. | May 2007 | A1 |
20070276885 | Valiyaparambil et al. | Nov 2007 | A1 |
20080126722 | Korlepara | May 2008 | A1 |
20080133613 | Werner et al. | Jun 2008 | A1 |
20080275923 | Haselton et al. | Nov 2008 | A1 |
20090307286 | Laffin | Dec 2009 | A1 |
20100070747 | Iyigun et al. | Mar 2010 | A1 |
20100076934 | Pershin et al. | Mar 2010 | A1 |
20100280994 | Radon et al. | Nov 2010 | A1 |
20100299312 | Suryanarayanan et al. | Nov 2010 | A1 |
20110218966 | Barnes et al. | Sep 2011 | A1 |
20120016841 | Karonde et al. | Jan 2012 | A1 |
20140337294 | Karonde et al. | Nov 2014 | A1 |
Entry |
---|
“U.S. Appl. No. 12/837,829 , Response filed May 15, 2013 to Non Final Office Action dated Feb. 15, 2013”, 9 pgs. |
“U.S. Appl. No. 12/837,829, Final Office Action dated Sep. 3, 2013”, 22 pgs. |
“U.S. Appl. No. 12/837,829, Notice of Allowance dated Mar. 17, 2014”, 8 pgs. |
“U.S. Appl. No. 12/837,829, Response filed Feb. 28, 2014 to Non Final Office Action dated Sep. 3, 2013”, 11 pgs. |
“U.S. Appl. No. 14/444,050, Non Final Office Action dated Oct. 6, 2014”, 20 pgs. |
“U.S. Appl. No. 14/444,050, Notice of Allowance dated Apr. 29, 2015”, 18 pgs. |
“U.S. Appl. No. 14/444,050, Response filed Jan. 6, 2015 to Non Final Office Action dated Oct. 6, 2014”, 9 pgs. |
U.S. Appl. No. 12/837,829 , Response filed Dec. 5, 2012 to Final Office Action dated Oct. 26, 2012, 10 pgs. |
U.S. Appl. No. 12/837,829, Advisory Action dated Dec. 14, 2012, 3 pgs. |
U.S. Appl. No. 12/837,829, Examiner Interview Summary dated May 7, 2013, 3 pgs. |
U.S. Appl. No. 12/837,829, Examiner Interview Summary dated Dec. 4, 2012, 4 pgs. |
U.S. Appl. No. 12/837,829, Final Office Action dated Oct. 26, 2012, 19 pgs. |
U.S. Appl. No. 12/837,829, Non Final Office Action dated Feb. 15, 2013, 21 pgs. |
U.S. Appl. No. 12/837,829, Non Final Office Action dated Apr. 2, 2012, 14 pgs. |
U.S. Appl. No. 12/837,829, Response filed Jul. 2, 2012 to Non Final Office Action dated Apr. 2, 2012, 9 pgs. |
Number | Date | Country | |
---|---|---|---|
20120084258 A1 | Apr 2012 | US |