CA2201859C - Snapshot of data stored on a mass storage system - Google Patents
Snapshot of data stored on a mass storage system Download PDFInfo
- Publication number
- CA2201859C CA2201859C CA002201859A CA2201859A CA2201859C CA 2201859 C CA2201859 C CA 2201859C CA 002201859 A CA002201859 A CA 002201859A CA 2201859 A CA2201859 A CA 2201859A CA 2201859 C CA2201859 C CA 2201859C
- Authority
- CA
- Canada
- Prior art keywords
- mass storage
- block
- storage system
- data
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A method for providing a static snapshot, or image, of data stored on a mass storage system (104). At the start of the method, a preservation memory (106) is cleared and a virtual device is created. Whenever a write is to be performed on the mass storage system (104), a check is made of the preservation memory (106) to determine if it contains a block associated with the mass storage write address.
If there is not, a copy of the block in the mass storage system (104) at the block write address is placed in the preservation memory (106).
Whenever a read is to be performed on the virtual device, a check is made of the preservation memory (106) to determine if it contains a block associated with the virtual device read address. If there is such a block, that block is returned as the result of the virtual device read.
Otherwise, the block at the virtual device block read address is returned as the result.
If there is not, a copy of the block in the mass storage system (104) at the block write address is placed in the preservation memory (106).
Whenever a read is to be performed on the virtual device, a check is made of the preservation memory (106) to determine if it contains a block associated with the virtual device read address. If there is such a block, that block is returned as the result of the virtual device read.
Otherwise, the block at the virtual device block read address is returned as the result.
Description
- Specification To all whom it may concern:
Be it known that Richard S. Ohran and Michael R. Ohran, citizens of the United States of America, have invented a new and useful invention entitled METHOD AND SYSTEM FOR PROVIDING
A STATIC SNAPSHOT OF DATA STORED ON A MASS STORAGE SYSTEM of which the following comprises' a complete specification.
Background of the Invention Field of the Invention. This invention relates mass storage systems for digital computers, and in particular to a method for providing a static snapshot or image of a mass storage system.
Description of Related Art. It is desirable during the operation of a computer system with a mass storage system, such as a magnetic disk, to periodically make a backup copy of the data stored on the mass storage system to allow for recovery in the event of a failure of the mass storage system. This is commonly done by reading the data stored on the mass storage _____~___ _~ ~_ _ _____~;... ~~
Be it known that Richard S. Ohran and Michael R. Ohran, citizens of the United States of America, have invented a new and useful invention entitled METHOD AND SYSTEM FOR PROVIDING
A STATIC SNAPSHOT OF DATA STORED ON A MASS STORAGE SYSTEM of which the following comprises' a complete specification.
Background of the Invention Field of the Invention. This invention relates mass storage systems for digital computers, and in particular to a method for providing a static snapshot or image of a mass storage system.
Description of Related Art. It is desirable during the operation of a computer system with a mass storage system, such as a magnetic disk, to periodically make a backup copy of the data stored on the mass storage system to allow for recovery in the event of a failure of the mass storage system. This is commonly done by reading the data stored on the mass storage _____~___ _~ ~_ _ _____~;... ~~
2 PCTlUS95/13324 1 However, if the data stored on the mass storage 2 system is being updated by other programs as the backup
3 copy is being made, the image of the data on the mass
4 storage system written to tape may be inconsistent. This is because normal backup techniques either copy the 6 blocks from the mass storage system sequentially to the 7 linear-access tape, or walk the file system stored on the 8 mass storage system, starting with the first block of the 9 first file in the first directory and proceeding in order to the last block of the last file of the last directory.
11 The backup program is not aware of updates performed to a 12 block of the mass storage system after that block has 13 been written to tape.
14 This problem of inconsistent data being written to tape is particularly likely to occur if the mass storage 16 system is being used by a database management system, 17 where an update may involve changing information stored 18 on different parts of the mass storage system. If a 19 database update is made while the backup tape is being written, the image of the database management system 21 written to tape will have the ald values for any data 22 already written to tape at the time of the database 23 update, and the new values for any data written to tape 24 following the database update. A restoration based on ' the tape image of the database would yield an inconsistent database.
Horton et al., United States Patent No. 5,089,958, discloses a technique for producing an image of a mass storage system at any point in time after the technique is started.
This is done by establishing a base image of the mass storage system at the start of the technique and a log indicating each change made to the mass storage system. An image at any point in time can then be produced by starting with the base image and making all the changes indicated in the log up to that point in time. To improve performance, the Horton system also provides for differential images so that the compilation of changes to form an image does not have to start with the base image.
There are two difficulties with using the technique of Horton to provide an image for backup operations. First, the technique is not designed to provide a static snapshot or image of the mass storage system, but to allow an image from any point in time to be created at some later time. This increases the complexity of the technique and requires the compilation .. , __,_ ___ ______ _ ___ ~~.__, __"_..... . .. a...~",....a 1 The second difficulty with using the technique of 2 Horton is that the log must store a copy of each change 3 made to the mass storage system in order to produce an 4 image of the mass storage system as it was at a specified time. This means that the size of the log can grow 6 without bound, eventually exhausting the space available 7 for its storage. At this point, updates to the mass 8 storage system are not possible without compromising the 9 ability to produce an image from any previous point in time.
11 With many database systems or file systems, certain 12 key blocks (such as master directory blacks) are 13 frequently updated, perhaps with every update to any 14 other block. A copy of these blocks must be written to the log each time they are changed. This will, of 16 course, result in a very large log file, with many of the 17 entries being copies of the key blocks as they changed 18 over time.
19 Another approach to creating a static image of a mass storage system is possible if the mass storage 21 system has the ability to produce a mirror, ar identical 22 copy, of one disk's data on a second disk. At the time 23 the static image is needed, mirroring of data is stopped 24 and the mirror disk is used as the static image. When .
SUBSTITUTE SHEET ~~ULE 26) ~~01~59 1 the static image is no longer necessary (for example, 2 when the tape backup has been completed), the two disks 3 are resynchronized, by copying any changes made during 4 the time mirroring was not active to the mirror disk, and mirroring is resumed.
6 This approach also has problems. Unless there are 7 three or more disks mirroring the information on the main 8 disk, when mirroring is stopped to produce the static 9 image there is no longer the redundancy of mirrored disk or disks and updates can be lost if there is a disk 11 failure. Furthermore, it requires an entire disk to be 12 devoted to the storage of the static image.
13 But the major disadvantage of this mirror disk 14 approach is the time necessary to restart mirroring after the static image is no longer needed. This requires 16 updating the mirror disk with all the changes that have 17 been made since mirroring was stopped. 2f a log of these 18 changes is not available, this means that all the data on 19 the mirror disk must be copied from the disk which has been updated. For large disks such as would be found on 21 a database system, this could take many hours.
22 For more general background reference materials, the 23 reader is directed to United States Patent Nos.
24 3,444,528, 3,533,082, 4,141,066, 4,156,901, 4,164,017,
11 The backup program is not aware of updates performed to a 12 block of the mass storage system after that block has 13 been written to tape.
14 This problem of inconsistent data being written to tape is particularly likely to occur if the mass storage 16 system is being used by a database management system, 17 where an update may involve changing information stored 18 on different parts of the mass storage system. If a 19 database update is made while the backup tape is being written, the image of the database management system 21 written to tape will have the ald values for any data 22 already written to tape at the time of the database 23 update, and the new values for any data written to tape 24 following the database update. A restoration based on ' the tape image of the database would yield an inconsistent database.
Horton et al., United States Patent No. 5,089,958, discloses a technique for producing an image of a mass storage system at any point in time after the technique is started.
This is done by establishing a base image of the mass storage system at the start of the technique and a log indicating each change made to the mass storage system. An image at any point in time can then be produced by starting with the base image and making all the changes indicated in the log up to that point in time. To improve performance, the Horton system also provides for differential images so that the compilation of changes to form an image does not have to start with the base image.
There are two difficulties with using the technique of Horton to provide an image for backup operations. First, the technique is not designed to provide a static snapshot or image of the mass storage system, but to allow an image from any point in time to be created at some later time. This increases the complexity of the technique and requires the compilation .. , __,_ ___ ______ _ ___ ~~.__, __"_..... . .. a...~",....a 1 The second difficulty with using the technique of 2 Horton is that the log must store a copy of each change 3 made to the mass storage system in order to produce an 4 image of the mass storage system as it was at a specified time. This means that the size of the log can grow 6 without bound, eventually exhausting the space available 7 for its storage. At this point, updates to the mass 8 storage system are not possible without compromising the 9 ability to produce an image from any previous point in time.
11 With many database systems or file systems, certain 12 key blocks (such as master directory blacks) are 13 frequently updated, perhaps with every update to any 14 other block. A copy of these blocks must be written to the log each time they are changed. This will, of 16 course, result in a very large log file, with many of the 17 entries being copies of the key blocks as they changed 18 over time.
19 Another approach to creating a static image of a mass storage system is possible if the mass storage 21 system has the ability to produce a mirror, ar identical 22 copy, of one disk's data on a second disk. At the time 23 the static image is needed, mirroring of data is stopped 24 and the mirror disk is used as the static image. When .
SUBSTITUTE SHEET ~~ULE 26) ~~01~59 1 the static image is no longer necessary (for example, 2 when the tape backup has been completed), the two disks 3 are resynchronized, by copying any changes made during 4 the time mirroring was not active to the mirror disk, and mirroring is resumed.
6 This approach also has problems. Unless there are 7 three or more disks mirroring the information on the main 8 disk, when mirroring is stopped to produce the static 9 image there is no longer the redundancy of mirrored disk or disks and updates can be lost if there is a disk 11 failure. Furthermore, it requires an entire disk to be 12 devoted to the storage of the static image.
13 But the major disadvantage of this mirror disk 14 approach is the time necessary to restart mirroring after the static image is no longer needed. This requires 16 updating the mirror disk with all the changes that have 17 been made since mirroring was stopped. 2f a log of these 18 changes is not available, this means that all the data on 19 the mirror disk must be copied from the disk which has been updated. For large disks such as would be found on 21 a database system, this could take many hours.
22 For more general background reference materials, the 23 reader is directed to United States Patent Nos.
24 3,444,528, 3,533,082, 4,141,066, 4,156,901, 4,164,017,
5 SUBSTITUTE SHEET (R1JLE 26) ~zo~T ~~~
WO 96112232 PC."T/LIS95/13324 1 4,191,996, 4,352,023, 4,378,588, 4,403,303, 4,453,215, 2 4,459,658, 4,479,214, 4,483,001, 4,484,275, 4,486,826, 3 4,498,145, 4,507,751, 4,521,847, 4,581,701, 4,607,365, 4 4,608,688, 4,639,856, 4,648,031, 4,652,940, 4,654,819, 4,654,857, 4,674,038, 4,703,421, 4,703,481, 4,713,811,
WO 96112232 PC."T/LIS95/13324 1 4,191,996, 4,352,023, 4,378,588, 4,403,303, 4,453,215, 2 4,459,658, 4,479,214, 4,483,001, 4,484,275, 4,486,826, 3 4,498,145, 4,507,751, 4,521,847, 4,581,701, 4,607,365, 4 4,608,688, 4,639,856, 4,648,031, 4,652,940, 4,654,819, 4,654,857, 4,674,038, 4,703,421, 4,703,481, 4,713,811,
6 4,727,516, 4,736,339, 4,750,177, 4,754,397, 4,878,167,
7 5,307,481, 5,235,700, 5,079,740, 4,823,256, 5,295,258,
8 5,157,663, 4,471,429, 4,530,052, 4,615,001, 4,941,087,
9 4,959,768, 4,979,108, 4,800,488, 4,656,596, 4,866,707, 3,771,137, 4,402,046, 4,423,414, 4,430,699, 4,477,882, 11 4,480,304, 4,562,535, 4,604,690, 4,630,224, 4,644,470, 12 4,64$,061, 3,754,211, 3,824,54?, 4,439,859, 4,445,214, 13 4,691,314, 3,754,211, 4,332,027, 4,516,121, 4,583,089, 14 4,646,300, 5,060,185, 5,123,099, 3,602,900, 3,665,173, 3,681,578, 3,735,356, 3,760,364, 3,761,884, 3,810,119, 16 3,828,321, 3,054,560, 3,303,474, 3,544,477, 3,623,014, 17 3,636,331, 3,725,861, 3,803,568, 4,012,717, 4,076,961, 18 4,099,241, 4,118,772, 4,358,823, 4,359,?18, 4,455,645, 19 4,477,895, 4,589,090, 4,590,554, 4,610,013, 4,623,883, 4,639,852, 4,654,846, 4,680,581, 3,557,315, 3,636,331, 21 3,810,121, 3,812,469, 3,820,085, 3,828,321, 3,864,670, 22 3,865,999, 3,889,237, 3,959,638, 3,991,407, 4,073,005, 23 4,099,241, 4,152,764, 4,208,715, 4,228,503, 4,257,009, 24 4,270,167, 4,282,572, 4,318,173, 4,358,823, 4,371,754, 4, 403, 286, 4, 428, 044, 4, 455, 601, 4, 530, 051, 4, 590, 554, and 4,628,508. The reader's attention is also directed to the following publications : Lyon, "Tandem' s Remote Data Facility, "
IEEE (1990); and Molina et al., "Issues in Disaster Recovery,"
IEEE (1990) .
Summary of the Invention It is an object of this invention to provide a static image of data stored on a mass storage system as it existed at a particular point in time.
This is accomplished by creating a virtual device that will appear as a mass storage device containing the static image. Write operations to the mass storage system are also intercepted by the method. Copies of blocks on the mass storage system are placed in a preservation memory whenever they are going to be changed by a write operation, unless an entry for that block is already in the preservation memory.
During a read of the virtual device, the preservation memory is first checked, either directly or using a table of contents ~. .~ ~ w 1 preservation memory, to see if it contains a copy of the 2 block from the specified location. If the preservation 3 memory has such a copy, that copy is returned as the 4 result of the read. Otherwise, the block is read from the mass storage system.
6 It is a further object of the invention to reduce 7 the amount of storage required to provide the static 8 image. The technique of Norton requires the storage of 9 all changes from the time the technique is started. The mirror disk technique requires storage equal to the size 11 of the mass storage being imaged. In contrast, the 12 method of the invention only requires storage equal to 13 the number of mass storage blacks that have been changed 14 since the static image was created.
It is a further object of the invention to reduce 16 the time necessary for generating the static image and 17 for returning to normal operation when the static image 18 is no longer needed. Unlike the technique of Norton, 1~ where the static image at a particular time needs to be compiled from the base image and Iog entries, all that is 21 necessary for creating a static image using the method of 22 this invention is to create the virtual device and 23 establish the interception of writes to the mass storage 24 system. No copying of data or compilation of an image is SUBSTITUTE SHEET (RULE 2~
necessary.
When the static image is no longer necessary, the virtual device is removed from the system and the contents of tha preservation memory deleted if recovery of that space is desirable. No synchronization to the mass storage system is necessary nor is it necessary to merge updates into a base image to create a new base image.
In one preferred aspect, the invention therefore provides a method for providing a static snapshot of data used by a computer system configured to include: a digital computer executing the steps of the method; a mass storage system connected to the digital computer, the mass storage system storing blocks of data each located at a unique mass storage write address; and a preservation memory connected to the digital computer and used for storing a copy of any of the blocks of data, each of the copies being associated with one of the unique addresses. The method is characterized by the steps of:
(A) clearing the preservation memory so that no copies of blocks of data are in the preservation memory;
(B) creating a virtual device;
(C) whenever a write operation to the mass storage system occurs, and the write operation specifies one of the unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to the mass storage system, then (1) if and only if there is not already found within the preservation memory a copy of a block of data associated with the unique mass storage write address, then placing in the preservation memory a copy of the block of data located in the mass storage system at the unique mass storage write address prior to writing the new block of data in the mass storage system at that same address; and (2) writing the new block of data to the mass storage system at the location specified by the unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) whenever a read operation to the virtual device occurs, and the read operation specifies a virtual device read address, then (1) if there is not a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the block of data associated with the virtual read address from the mass storage system; and (2) if there is a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the copy of the block of data associated with the virtual device read address in the preservation memory.
In another preferred aspect, the invention provides a system for providing a static snapshot of data, the system including a mass storage system for storing blocks of data each located at a unique mass storage write address; a preservation memory used for storing a copy of any of the blocks of data, each of the copies being associated with one of the unique addresses; and a digital computer connected to the mass storage system and to the preservation memory. The system is characterized in that the digital computer includes:
(A) means for clearing the preservation memory so that no copies of blocks of data are in the preservation memory;
(B) means for creating a virtual device;
(C) means for creating a static snapshot of the data blocks of the mass storage system whenever a write operation to the mass storage system occurs, and the 9a write operation specifies one of the unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to the mass storage system, by performing the steps of:
(1) if and only if there is not already found within a preservation memory a copy of a block of data associated with the unique mass storage write address, then placing in the preservation memory a copy of the block of data located in the mass storage system at the unique mass storage write address prior to writing the new block of data in the mass storage system at that same address; and (2) writing the new block of data to the mass storage system at the location specified by the unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) means for outputting data blocks of the static snapshot whenever a read operation to the virtual device occurs, and the read operation specifies a virtual device read address, by performing the steps of:
(1) if there is not a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the block of data associated with the virtual read address from the mass storage system; and (2) if there is a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the copy of the block of data associated with the virtual device read address in the preservation memory.
In another preferred aspect, the invention provides, in a computer system having a processor, a mass storage system for 9b storing blocks of data in response to write operations, and a preservation memory means, a method of providing a static snapshot of the mass storage system at a particular point in time so that the static snapshot does not change even though the contents of the mass storage system change. The method is characterized by the steps of:
clearing the preservation memory means so that the preservation memory means is ready to preserve data blocks of the mass storage system;
preserving a snapshot of the mass storage system at a particular point in time by executing at least the following steps:
( 1 ) when a data block is to be over-written by a new data block at the same write address, checking the preservation memory means to determine if the data block specified by the address has already been stored in the preservation memory means;
(2) if and only if the data block has already been stored in the preservation memory means, performing the over-write operation so that the new data block replaces the data block at the address;
and (3) if the data block that is to be over-written has not been already stored in the preservation memory means, preserving the data block by first copying the data block into the preservation memory means prior to performing the over-write operation, thereby permitting the mass storage system to be updated as each data block is preserved at a given snapshot moment in the preservation memory means.
In yet another preferred aspect, the invention provides a system for providing a static snapshot of mass storage system at a particular point in time so that the static snapshot does not change even though the contents of the mass storage system 9c subsequently change, the system including a mass storage system for storing a plurality of data blocks, each of the plurality of data blocks being specified by a unique write address;
preservation memory means for storing the data blocks of the mass storage system so as to store a static snapshot of the mass storage system at a particular point in time; and being characterized by a processor means that includes a first means for identifying whether each data block of the mass storage system has been preserved in the preservation memory means, and a second means for ensuring that each data block of the mass storage system is copied to the preservation memory means the first time the data block is to be over-written by a new data block when the static snapshot of the mass storage system is taken, and a third means for writing a new data block to the mass storage system without first preserving the data block if the data block has already been preserved in the preservation memory means.
These and other features of the invention will be more readily understood upon consideration of the attached drawings and of the following detailed description of those drawings and the presently preferred embodiments of the invention.
Brief Description of the Drawings Figure 1 is a block diagram of a representative digital computer configuration on which the preferred embodiment of the invention operates.
Figure 2 is a flow diagram showing the preferred steps of the method of the invention.
Figure 3 is a block diagram of a client-server configuration using the preferred method.
Figure 4 is a block diagram of the currently 9d 22Q185~
WO 96/12232 PC'T/ZJS95/13324 1 preferred embodiment of the method in a client-server -2 configuration.
3 Figure 5 is variant of the configuration of Figure 4 4.
6 Detailed Description of the Invention 7 Referring to Figure 1, which illustrates a 8 representative computer configuration on which the method 9 of the invention runs, it can be seen that digital computer 102 has connected to it mass storage system 104 11 and preservation memory 106. In some embodiments of the 12 invention, association memory 108 may also be connected 13 to digital computer 102.
14 Mass storage system 104 can be any writable block-addressable storage system, such as one or more disks or 16 a partition of a disk. (If mass storage system 104 were 17 not writable, such as a CD-ROM, its contents would not 18 change and there would be no need for the invention of 19 this application.) A partition of a disk can be a fixed area of a disk. The disks can store their information 21 using magnetic, optical, or any other technique that 22 allows writing and reading of data without departing from 23 the scope and spirit of this invention.
24 In the currently-preferred embodiment of the sussrirurE sit ~mE ~s~
~W096/12232 ~ p ~ g ~ 9 PCT/US95/13324 1 invention, digital computer 102 is a PC-compatible 2 computer based on an Intel X86 series or compatible 3 processor and mass storage device 104 is a SCSI or IDE
4 magnetic disk connected to digital computer 102 through an appropriate controller.
6 Preservation memory 106 can be an area in the 7 random-access memory (RAM) of digital computer 102, one 8 or more disks, a partition of a disk, or a file stored on 9 a disk. Optimal selection of the implementation of preservation memory 106 depends of the number of blocks 11 of the mass storage system that will be changed during 12 the time the static image is needed. The use of RAM
13 provides faster performance, but may limit the number of 14 entries in the preservation memory. If the preservation memory runs out of space when a new entry must be stored, 16 the method fails and the static image is no longer 17 available or remains in the state it was at the time the 18 preservation memory ran out of space. It is important to 19 note that if this occurs, no data from the mass storage system is lost, and the method can be restarted to 21 produce a new static image.
22 Referring to Figure 2, which is a flow diagram 23 showing the steps of the method, the method starts at 24 step 202 when a static image of the mass storage system suesnru~ st~~ ~u~E ~s~
~~O~~J~
1 is desired. This can be indicated by the running of a -2 special program, an operating system call, or an operator 3 command, as appropriate for the operating system and 4 application.
In step 202, preservation memory 106 is cleared. In 6 general, this will consist of setting the control 7 information describing the contents of preservation 8 memory 106 to indicate that there are no valid entries in 9 preservation memory 106.
In step 204, a virtual device appearing as a mass 11 storage device is created. The method for creating a 12 virtual device will depend on the particular operating 13 system running on digital computer 102, but will be known 14 by one skilled in the art of that particular operating system. In addition, it may be necessary in step 204 to 16 configure the operating system so that the method of this 17 invention intercepts any read or write operation directed 18 to mass storage system 104. Again, how this is done will 19 be dependent on the particular operating system running on digital computer 102.
21 In step 206, the method waits until there is a write 22 operation directed to mass storage system 104 or a read 23 operation directed to the virtual device created in step 24 204. In variants of the method, step 206 also reacts to ~WO 96112232 2 2 018 5 9 PC"T/LTS95/13324 . 1 a read operation directed to mass storage system 104 or a 2 write operation directed to the virtual device created in 3 step 204.
4 If the operation is a write to mass storage system 104, step 210 is entered. Using the mass storage write 6 address specified in the write operation, step 210 7 determines if there is a block of data associated with 8 that mass storage write address in preservation memory 9 106. If there isn't, step 212 of the method is executed.
Otherwise, step 212 is skipped and step 214 is executed.
11 There are a number of ways for determining whether 12 there is a block of data associated with the mass storage 13 address in the preservation memory 106. In the 14 currently-preferred embodiment of the invention, there is a block association memory 108 also connected to digital 16 computer 102. (Block association memory 108 may be a 17 separate memory connected to digital computer 102, or may 18 be a portion of the RAM of digital computer 102.} Block 19 association memory 108 is used to associate blocks stored in preservation memory 106 with the unique addresses of 21 blocks on mass storage system 104. Block association 22 memory 108 does this by containing entries indicating a ~ 23 unique address and the location in preservation memory 24 106 for the block associated with that unique address.
SUBSTITUTE SHEET (RULE 2fi~
1 Entries in block association memory 108 can be .
2 stored unordered, in which case they must be linearly 3 searched for a matching unique address. If no entry is 4 found with a matching address, there is not a block in preservation memory 106 associated with that address.
6 Alternatively, the entries could be stored ordered by 7 unique addresses, in which case a binary search could be 8 used to locate the matching entry in block association 9 memory 108. A hashing scheme could also be used to find a matching entry.
11 The block association memory 108 can also be 12 organized as an array with an element for each unique 13 address of mass storage system 104. Each element of the 14 array stores a preservation memory location, or a special value that indicates that there is not a block in 16 preservation memory 106 associated with that unique 17 address.
18 The selection of a technique for storing entries in 19 block association memory 108 depends on the characteristics of accessing the entries. Using an array 21 provides the highest speed for accessing an entry or 22 adding an entry corresponding to a block just copied into 23 preservation memory 106, at the expense of a large block 24 association memory 108. Ordering the entries by unique SUBSTITUTE SHEf)' (B(JZE 26~
1 address provides faster access than for unordered 2 entries, but requires more time when an entry is added to 3 block association memory 108. In the currently-preferred 4 embodiment, entries are stored unordered in block association memory 108.
6 In this discussion, the term block refers to the 7 data stored at a particular location in mass storage 8 system 104 or preservation memory 106. Blocks are 9 generally of a fixed size (e. g. 512 bytes for disks used with MS-DOS), although blocks of different sizes, or 11 variable sizes, are within the scope of this invention.
12 On mass storage system 104, each block has a unique 13 address, specified in read or write operations. A block 14 in preservation memory 106 is a copy of a block of data stored in mass storage system 104, and that block in 16 preservation memory 106 is associated with the unique 17 address of the block in mass storage system 104 of which 18 it is a copy.
19 For efficiency, it may be convenient to treat one or more contiguous blocks on mass storage system 104 as if 21 it were a single, large block. Often operating systems 22 perform their mass storage operations on contiguous 23 blocks (called clusters in MS-DOS). The extensions to 24 handle clusters of blocks should be clear to one with SIiBSTITUTE SHEET (RULE 2b~
WO 96/12232 PCT/US951i3324 1 ordinary skills in computer programming.
2 If block association memory 108 is being used, step 3 202 (clearing preservation memory 106) consists of 4 removing all entries from block association memory 108 or setting them to the special entry that indicates that 6 there is no block in preservation memory 106 associated 7 with each unique address.
8 Returning to Figure 2, step 212 is executed if there 9 is not a block associated with the mass storage write 20 address in preservation memory 106. Step 212 places a 11 copy of the block of data currently located at the mass 12 storage write address in preservation memory 106, 13 updating block association memory 108 as necessary. It 14 is important to note that step 212 will be executed at most once for each unique address on mass storage system 16 104, since the next time step 210 tests to see if there 17 is a block in preservation memory 106 associated with 18 that mass storage write address if will find the copy 19 made by step 212. Because of this, preservation memory 106 will contain only copies of blocks as they were when 21 the method was started.
22 In step 214, the data to be written by the mass 23 storage write operation is written to the location on 24 mass storage system 104 specified by the mass storage SUBSTITUTE StIEET (RULE 2b~
~WO 96/12232 PCT/US95I13324 1 write address. This completes the steps for a mass 2 storage write, and step 206 is reentered to wait for the 3 next operation.
4 If the operation is a virtual device read, step 220 is entered. Again, a check is made to determine if a 6 block associated with the virtual device read address is 7 in preservation memory 106. If there is such a block, 8 step 224 is executed. If not, step 222 is executed.
9 Step 222 returns the data from the block in mass storage system 104 specified by the virtual device read 11 address as the result of the read operation. Step 224 12 returns the block from preservation memory 106 associated 13 with the virtual address read address as the result of 14 the read operation. This completes the steps for a virtual device read, and step 206 is reentered to wait 16 for the next operation.
1~ If the operation is a mass storage read, step 230 is 18 entered, which returns the data from the block of mass 19 storage system 104 specified by the mass storage read address as the result of the read operation. This 21 completes the steps for a mass storage read, and step 206 22 is reentered to wait for the next operation.
23 It may be desirable to allow write operations to the 24 virtual device, changing the image as specified by the SU&STITUZE SH~~? (RULE 26) 22ai8~9 WO 96/12232 PCTIUS95/1332d 1 write operations. For example, it may be necessary to -2 write a different label or other control information on 3 the virtual device image so the operating system can 4 differentiate it from mass storage system 104.
If the operation is a virtual device write, step 240 6 is entered. Step 240 checks to see if the virtual device 7 is read-only, and if it is step 242 is entered to return 8 an appropriate error indication to the operating system 9 or user.
Step 244 checks to determine if a block associated 11 with the virtual device write address is in preservation 12 memory 106. If there is such a block, step 248 is 13 executed. If not, step 246 is executed. In step 246, 14 the data from the virtual device write operation is placed in preservation memory 106, associated with the 16 virtual device write address from the virtual device 17 write operation. Block association memory i08 is updated 18 as necessary. In step 248, the data from the virtual 19 device write operation replaces the block associated with the virtual device write address of the virtual device 21 write operation. This completes the steps of the virtual 22 device write, and step 206 is reentered to wait for the 23 next operation.
24 While the description above describes the basic ~~"
. 1 operation of the method of the invention, there are a 2 number of other embodiments possible. For example, the 3 same preservation memory 106 can be shared so that a 4 second virtual device provides a snapshot image of a second mass storage system. In another embodiment, a 6 second preservation memory and second virtual device can 7 be used to provide a second image whose snapshot was 8 taken at a different time of mass storage system 104.
9 The computer system running the method of the invention can also be used as a file server for client I1 computers connected to it by a network or other means.
12 As a file server, it can export its mass storage system, 13 the virtual device created by the method, or both. Such 14 as system is illustrated in Figure 3.
File server computer 312, with mass storage system 16 314, runs the method of the invention. It exports the 17 virtual device (and probably mass storage system 314) to 18 client computer 302, communicating over network 300.
19 Computer 302 can run a tape backup program that copies the information from the exported virtual device to tape 21 drive 304. No change is necessary for the tape backup 22 program running on client computer 302, which sees the 23 virtual device as just another mass storage device.
24 Figure 4 illustrates the currently-preferred SUBSTITUTE SHE'~1' (!~E 26~
configuration for running the method of the invention. Network 400 connects client computer 402, with tape drive 404, to file server computer 412, with mass storage. system 414. File server computer communicates with standby server computer 422 over data link 420. Standby server computer 422 has mass storage system 424. Through software running on file server computer 412 and standby server computer 422, mass storage system 424 appears as a disk to file server computer 412 and mirrors the data on mass storage system 414. In the event of a failure of either file server computer 412 or mass storage system 414, standby computer 422 can be restarted as the file server.
In the configuration of Figure 4, standby server 422 runs the method of the invention, and can export the virtual device either to file server computer 412, which can then export it to client computers on network 400, or standby server 422 can directly export the virtual device to client computers. The virtual device can also be accessed by programs running on L"________ ~.,., 1 Figure 5 illustrates a variant of the configuration 2 of Figure 4. Instead of client computer 502 having a 3 tape drive, as was the case for client computer 402, 4 backup computer 532 has tape drive 534. Backup computer 532 communicates with standby server computer 522 over 6 data link 530. Standby server computer exports mass '1 storage system 524 to file server computer 512 (whether 8 mirrored or not). Standby server computer exports the 9 virtual device with the snapshot image of mass storage system 524 to backup computer 532.
11 Backup computer 532 can now copy the snapshot image 12 of mass storage system 524 by reading the virtual device 13 exported to it by standby server computer 522. Neither 14 file server computer 512 nor standby server computer 522 has the overhead of the tape backup process, which can 16 result in a degradation of performance if data 1~ compression needs to be performed before the data is 18 written to tape. Also, a fault in the tape backup 19 program will not affect either file server computer 512 or standby server computer 522.
21 It is to be understood that the above described 22 embodiments are merely illustrative of numerous and 23 varied other embodiments which may constitute 24 applications of the principles of the invention. Such other embodiments may be readily devised by those skilled in the art without departing from the spirit or scope of this invention and it is our intent they be deemed within the scope Or _____ _ ~___~.v _ _~
IEEE (1990); and Molina et al., "Issues in Disaster Recovery,"
IEEE (1990) .
Summary of the Invention It is an object of this invention to provide a static image of data stored on a mass storage system as it existed at a particular point in time.
This is accomplished by creating a virtual device that will appear as a mass storage device containing the static image. Write operations to the mass storage system are also intercepted by the method. Copies of blocks on the mass storage system are placed in a preservation memory whenever they are going to be changed by a write operation, unless an entry for that block is already in the preservation memory.
During a read of the virtual device, the preservation memory is first checked, either directly or using a table of contents ~. .~ ~ w 1 preservation memory, to see if it contains a copy of the 2 block from the specified location. If the preservation 3 memory has such a copy, that copy is returned as the 4 result of the read. Otherwise, the block is read from the mass storage system.
6 It is a further object of the invention to reduce 7 the amount of storage required to provide the static 8 image. The technique of Norton requires the storage of 9 all changes from the time the technique is started. The mirror disk technique requires storage equal to the size 11 of the mass storage being imaged. In contrast, the 12 method of the invention only requires storage equal to 13 the number of mass storage blacks that have been changed 14 since the static image was created.
It is a further object of the invention to reduce 16 the time necessary for generating the static image and 17 for returning to normal operation when the static image 18 is no longer needed. Unlike the technique of Norton, 1~ where the static image at a particular time needs to be compiled from the base image and Iog entries, all that is 21 necessary for creating a static image using the method of 22 this invention is to create the virtual device and 23 establish the interception of writes to the mass storage 24 system. No copying of data or compilation of an image is SUBSTITUTE SHEET (RULE 2~
necessary.
When the static image is no longer necessary, the virtual device is removed from the system and the contents of tha preservation memory deleted if recovery of that space is desirable. No synchronization to the mass storage system is necessary nor is it necessary to merge updates into a base image to create a new base image.
In one preferred aspect, the invention therefore provides a method for providing a static snapshot of data used by a computer system configured to include: a digital computer executing the steps of the method; a mass storage system connected to the digital computer, the mass storage system storing blocks of data each located at a unique mass storage write address; and a preservation memory connected to the digital computer and used for storing a copy of any of the blocks of data, each of the copies being associated with one of the unique addresses. The method is characterized by the steps of:
(A) clearing the preservation memory so that no copies of blocks of data are in the preservation memory;
(B) creating a virtual device;
(C) whenever a write operation to the mass storage system occurs, and the write operation specifies one of the unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to the mass storage system, then (1) if and only if there is not already found within the preservation memory a copy of a block of data associated with the unique mass storage write address, then placing in the preservation memory a copy of the block of data located in the mass storage system at the unique mass storage write address prior to writing the new block of data in the mass storage system at that same address; and (2) writing the new block of data to the mass storage system at the location specified by the unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) whenever a read operation to the virtual device occurs, and the read operation specifies a virtual device read address, then (1) if there is not a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the block of data associated with the virtual read address from the mass storage system; and (2) if there is a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the copy of the block of data associated with the virtual device read address in the preservation memory.
In another preferred aspect, the invention provides a system for providing a static snapshot of data, the system including a mass storage system for storing blocks of data each located at a unique mass storage write address; a preservation memory used for storing a copy of any of the blocks of data, each of the copies being associated with one of the unique addresses; and a digital computer connected to the mass storage system and to the preservation memory. The system is characterized in that the digital computer includes:
(A) means for clearing the preservation memory so that no copies of blocks of data are in the preservation memory;
(B) means for creating a virtual device;
(C) means for creating a static snapshot of the data blocks of the mass storage system whenever a write operation to the mass storage system occurs, and the 9a write operation specifies one of the unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to the mass storage system, by performing the steps of:
(1) if and only if there is not already found within a preservation memory a copy of a block of data associated with the unique mass storage write address, then placing in the preservation memory a copy of the block of data located in the mass storage system at the unique mass storage write address prior to writing the new block of data in the mass storage system at that same address; and (2) writing the new block of data to the mass storage system at the location specified by the unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) means for outputting data blocks of the static snapshot whenever a read operation to the virtual device occurs, and the read operation specifies a virtual device read address, by performing the steps of:
(1) if there is not a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the block of data associated with the virtual read address from the mass storage system; and (2) if there is a copy of a block of data associated with the virtual device read address in the preservation memory, then returning in response to the read operation the copy of the block of data associated with the virtual device read address in the preservation memory.
In another preferred aspect, the invention provides, in a computer system having a processor, a mass storage system for 9b storing blocks of data in response to write operations, and a preservation memory means, a method of providing a static snapshot of the mass storage system at a particular point in time so that the static snapshot does not change even though the contents of the mass storage system change. The method is characterized by the steps of:
clearing the preservation memory means so that the preservation memory means is ready to preserve data blocks of the mass storage system;
preserving a snapshot of the mass storage system at a particular point in time by executing at least the following steps:
( 1 ) when a data block is to be over-written by a new data block at the same write address, checking the preservation memory means to determine if the data block specified by the address has already been stored in the preservation memory means;
(2) if and only if the data block has already been stored in the preservation memory means, performing the over-write operation so that the new data block replaces the data block at the address;
and (3) if the data block that is to be over-written has not been already stored in the preservation memory means, preserving the data block by first copying the data block into the preservation memory means prior to performing the over-write operation, thereby permitting the mass storage system to be updated as each data block is preserved at a given snapshot moment in the preservation memory means.
In yet another preferred aspect, the invention provides a system for providing a static snapshot of mass storage system at a particular point in time so that the static snapshot does not change even though the contents of the mass storage system 9c subsequently change, the system including a mass storage system for storing a plurality of data blocks, each of the plurality of data blocks being specified by a unique write address;
preservation memory means for storing the data blocks of the mass storage system so as to store a static snapshot of the mass storage system at a particular point in time; and being characterized by a processor means that includes a first means for identifying whether each data block of the mass storage system has been preserved in the preservation memory means, and a second means for ensuring that each data block of the mass storage system is copied to the preservation memory means the first time the data block is to be over-written by a new data block when the static snapshot of the mass storage system is taken, and a third means for writing a new data block to the mass storage system without first preserving the data block if the data block has already been preserved in the preservation memory means.
These and other features of the invention will be more readily understood upon consideration of the attached drawings and of the following detailed description of those drawings and the presently preferred embodiments of the invention.
Brief Description of the Drawings Figure 1 is a block diagram of a representative digital computer configuration on which the preferred embodiment of the invention operates.
Figure 2 is a flow diagram showing the preferred steps of the method of the invention.
Figure 3 is a block diagram of a client-server configuration using the preferred method.
Figure 4 is a block diagram of the currently 9d 22Q185~
WO 96/12232 PC'T/ZJS95/13324 1 preferred embodiment of the method in a client-server -2 configuration.
3 Figure 5 is variant of the configuration of Figure 4 4.
6 Detailed Description of the Invention 7 Referring to Figure 1, which illustrates a 8 representative computer configuration on which the method 9 of the invention runs, it can be seen that digital computer 102 has connected to it mass storage system 104 11 and preservation memory 106. In some embodiments of the 12 invention, association memory 108 may also be connected 13 to digital computer 102.
14 Mass storage system 104 can be any writable block-addressable storage system, such as one or more disks or 16 a partition of a disk. (If mass storage system 104 were 17 not writable, such as a CD-ROM, its contents would not 18 change and there would be no need for the invention of 19 this application.) A partition of a disk can be a fixed area of a disk. The disks can store their information 21 using magnetic, optical, or any other technique that 22 allows writing and reading of data without departing from 23 the scope and spirit of this invention.
24 In the currently-preferred embodiment of the sussrirurE sit ~mE ~s~
~W096/12232 ~ p ~ g ~ 9 PCT/US95/13324 1 invention, digital computer 102 is a PC-compatible 2 computer based on an Intel X86 series or compatible 3 processor and mass storage device 104 is a SCSI or IDE
4 magnetic disk connected to digital computer 102 through an appropriate controller.
6 Preservation memory 106 can be an area in the 7 random-access memory (RAM) of digital computer 102, one 8 or more disks, a partition of a disk, or a file stored on 9 a disk. Optimal selection of the implementation of preservation memory 106 depends of the number of blocks 11 of the mass storage system that will be changed during 12 the time the static image is needed. The use of RAM
13 provides faster performance, but may limit the number of 14 entries in the preservation memory. If the preservation memory runs out of space when a new entry must be stored, 16 the method fails and the static image is no longer 17 available or remains in the state it was at the time the 18 preservation memory ran out of space. It is important to 19 note that if this occurs, no data from the mass storage system is lost, and the method can be restarted to 21 produce a new static image.
22 Referring to Figure 2, which is a flow diagram 23 showing the steps of the method, the method starts at 24 step 202 when a static image of the mass storage system suesnru~ st~~ ~u~E ~s~
~~O~~J~
1 is desired. This can be indicated by the running of a -2 special program, an operating system call, or an operator 3 command, as appropriate for the operating system and 4 application.
In step 202, preservation memory 106 is cleared. In 6 general, this will consist of setting the control 7 information describing the contents of preservation 8 memory 106 to indicate that there are no valid entries in 9 preservation memory 106.
In step 204, a virtual device appearing as a mass 11 storage device is created. The method for creating a 12 virtual device will depend on the particular operating 13 system running on digital computer 102, but will be known 14 by one skilled in the art of that particular operating system. In addition, it may be necessary in step 204 to 16 configure the operating system so that the method of this 17 invention intercepts any read or write operation directed 18 to mass storage system 104. Again, how this is done will 19 be dependent on the particular operating system running on digital computer 102.
21 In step 206, the method waits until there is a write 22 operation directed to mass storage system 104 or a read 23 operation directed to the virtual device created in step 24 204. In variants of the method, step 206 also reacts to ~WO 96112232 2 2 018 5 9 PC"T/LTS95/13324 . 1 a read operation directed to mass storage system 104 or a 2 write operation directed to the virtual device created in 3 step 204.
4 If the operation is a write to mass storage system 104, step 210 is entered. Using the mass storage write 6 address specified in the write operation, step 210 7 determines if there is a block of data associated with 8 that mass storage write address in preservation memory 9 106. If there isn't, step 212 of the method is executed.
Otherwise, step 212 is skipped and step 214 is executed.
11 There are a number of ways for determining whether 12 there is a block of data associated with the mass storage 13 address in the preservation memory 106. In the 14 currently-preferred embodiment of the invention, there is a block association memory 108 also connected to digital 16 computer 102. (Block association memory 108 may be a 17 separate memory connected to digital computer 102, or may 18 be a portion of the RAM of digital computer 102.} Block 19 association memory 108 is used to associate blocks stored in preservation memory 106 with the unique addresses of 21 blocks on mass storage system 104. Block association 22 memory 108 does this by containing entries indicating a ~ 23 unique address and the location in preservation memory 24 106 for the block associated with that unique address.
SUBSTITUTE SHEET (RULE 2fi~
1 Entries in block association memory 108 can be .
2 stored unordered, in which case they must be linearly 3 searched for a matching unique address. If no entry is 4 found with a matching address, there is not a block in preservation memory 106 associated with that address.
6 Alternatively, the entries could be stored ordered by 7 unique addresses, in which case a binary search could be 8 used to locate the matching entry in block association 9 memory 108. A hashing scheme could also be used to find a matching entry.
11 The block association memory 108 can also be 12 organized as an array with an element for each unique 13 address of mass storage system 104. Each element of the 14 array stores a preservation memory location, or a special value that indicates that there is not a block in 16 preservation memory 106 associated with that unique 17 address.
18 The selection of a technique for storing entries in 19 block association memory 108 depends on the characteristics of accessing the entries. Using an array 21 provides the highest speed for accessing an entry or 22 adding an entry corresponding to a block just copied into 23 preservation memory 106, at the expense of a large block 24 association memory 108. Ordering the entries by unique SUBSTITUTE SHEf)' (B(JZE 26~
1 address provides faster access than for unordered 2 entries, but requires more time when an entry is added to 3 block association memory 108. In the currently-preferred 4 embodiment, entries are stored unordered in block association memory 108.
6 In this discussion, the term block refers to the 7 data stored at a particular location in mass storage 8 system 104 or preservation memory 106. Blocks are 9 generally of a fixed size (e. g. 512 bytes for disks used with MS-DOS), although blocks of different sizes, or 11 variable sizes, are within the scope of this invention.
12 On mass storage system 104, each block has a unique 13 address, specified in read or write operations. A block 14 in preservation memory 106 is a copy of a block of data stored in mass storage system 104, and that block in 16 preservation memory 106 is associated with the unique 17 address of the block in mass storage system 104 of which 18 it is a copy.
19 For efficiency, it may be convenient to treat one or more contiguous blocks on mass storage system 104 as if 21 it were a single, large block. Often operating systems 22 perform their mass storage operations on contiguous 23 blocks (called clusters in MS-DOS). The extensions to 24 handle clusters of blocks should be clear to one with SIiBSTITUTE SHEET (RULE 2b~
WO 96/12232 PCT/US951i3324 1 ordinary skills in computer programming.
2 If block association memory 108 is being used, step 3 202 (clearing preservation memory 106) consists of 4 removing all entries from block association memory 108 or setting them to the special entry that indicates that 6 there is no block in preservation memory 106 associated 7 with each unique address.
8 Returning to Figure 2, step 212 is executed if there 9 is not a block associated with the mass storage write 20 address in preservation memory 106. Step 212 places a 11 copy of the block of data currently located at the mass 12 storage write address in preservation memory 106, 13 updating block association memory 108 as necessary. It 14 is important to note that step 212 will be executed at most once for each unique address on mass storage system 16 104, since the next time step 210 tests to see if there 17 is a block in preservation memory 106 associated with 18 that mass storage write address if will find the copy 19 made by step 212. Because of this, preservation memory 106 will contain only copies of blocks as they were when 21 the method was started.
22 In step 214, the data to be written by the mass 23 storage write operation is written to the location on 24 mass storage system 104 specified by the mass storage SUBSTITUTE StIEET (RULE 2b~
~WO 96/12232 PCT/US95I13324 1 write address. This completes the steps for a mass 2 storage write, and step 206 is reentered to wait for the 3 next operation.
4 If the operation is a virtual device read, step 220 is entered. Again, a check is made to determine if a 6 block associated with the virtual device read address is 7 in preservation memory 106. If there is such a block, 8 step 224 is executed. If not, step 222 is executed.
9 Step 222 returns the data from the block in mass storage system 104 specified by the virtual device read 11 address as the result of the read operation. Step 224 12 returns the block from preservation memory 106 associated 13 with the virtual address read address as the result of 14 the read operation. This completes the steps for a virtual device read, and step 206 is reentered to wait 16 for the next operation.
1~ If the operation is a mass storage read, step 230 is 18 entered, which returns the data from the block of mass 19 storage system 104 specified by the mass storage read address as the result of the read operation. This 21 completes the steps for a mass storage read, and step 206 22 is reentered to wait for the next operation.
23 It may be desirable to allow write operations to the 24 virtual device, changing the image as specified by the SU&STITUZE SH~~? (RULE 26) 22ai8~9 WO 96/12232 PCTIUS95/1332d 1 write operations. For example, it may be necessary to -2 write a different label or other control information on 3 the virtual device image so the operating system can 4 differentiate it from mass storage system 104.
If the operation is a virtual device write, step 240 6 is entered. Step 240 checks to see if the virtual device 7 is read-only, and if it is step 242 is entered to return 8 an appropriate error indication to the operating system 9 or user.
Step 244 checks to determine if a block associated 11 with the virtual device write address is in preservation 12 memory 106. If there is such a block, step 248 is 13 executed. If not, step 246 is executed. In step 246, 14 the data from the virtual device write operation is placed in preservation memory 106, associated with the 16 virtual device write address from the virtual device 17 write operation. Block association memory i08 is updated 18 as necessary. In step 248, the data from the virtual 19 device write operation replaces the block associated with the virtual device write address of the virtual device 21 write operation. This completes the steps of the virtual 22 device write, and step 206 is reentered to wait for the 23 next operation.
24 While the description above describes the basic ~~"
. 1 operation of the method of the invention, there are a 2 number of other embodiments possible. For example, the 3 same preservation memory 106 can be shared so that a 4 second virtual device provides a snapshot image of a second mass storage system. In another embodiment, a 6 second preservation memory and second virtual device can 7 be used to provide a second image whose snapshot was 8 taken at a different time of mass storage system 104.
9 The computer system running the method of the invention can also be used as a file server for client I1 computers connected to it by a network or other means.
12 As a file server, it can export its mass storage system, 13 the virtual device created by the method, or both. Such 14 as system is illustrated in Figure 3.
File server computer 312, with mass storage system 16 314, runs the method of the invention. It exports the 17 virtual device (and probably mass storage system 314) to 18 client computer 302, communicating over network 300.
19 Computer 302 can run a tape backup program that copies the information from the exported virtual device to tape 21 drive 304. No change is necessary for the tape backup 22 program running on client computer 302, which sees the 23 virtual device as just another mass storage device.
24 Figure 4 illustrates the currently-preferred SUBSTITUTE SHE'~1' (!~E 26~
configuration for running the method of the invention. Network 400 connects client computer 402, with tape drive 404, to file server computer 412, with mass storage. system 414. File server computer communicates with standby server computer 422 over data link 420. Standby server computer 422 has mass storage system 424. Through software running on file server computer 412 and standby server computer 422, mass storage system 424 appears as a disk to file server computer 412 and mirrors the data on mass storage system 414. In the event of a failure of either file server computer 412 or mass storage system 414, standby computer 422 can be restarted as the file server.
In the configuration of Figure 4, standby server 422 runs the method of the invention, and can export the virtual device either to file server computer 412, which can then export it to client computers on network 400, or standby server 422 can directly export the virtual device to client computers. The virtual device can also be accessed by programs running on L"________ ~.,., 1 Figure 5 illustrates a variant of the configuration 2 of Figure 4. Instead of client computer 502 having a 3 tape drive, as was the case for client computer 402, 4 backup computer 532 has tape drive 534. Backup computer 532 communicates with standby server computer 522 over 6 data link 530. Standby server computer exports mass '1 storage system 524 to file server computer 512 (whether 8 mirrored or not). Standby server computer exports the 9 virtual device with the snapshot image of mass storage system 524 to backup computer 532.
11 Backup computer 532 can now copy the snapshot image 12 of mass storage system 524 by reading the virtual device 13 exported to it by standby server computer 522. Neither 14 file server computer 512 nor standby server computer 522 has the overhead of the tape backup process, which can 16 result in a degradation of performance if data 1~ compression needs to be performed before the data is 18 written to tape. Also, a fault in the tape backup 19 program will not affect either file server computer 512 or standby server computer 522.
21 It is to be understood that the above described 22 embodiments are merely illustrative of numerous and 23 varied other embodiments which may constitute 24 applications of the principles of the invention. Such other embodiments may be readily devised by those skilled in the art without departing from the spirit or scope of this invention and it is our intent they be deemed within the scope Or _____ _ ~___~.v _ _~
10
Claims (22)
1. A method for providing a static snapshot of data used by a computer system configured to include: a digital computer executing the steps of the method; a mass storage system connected to said digital computer, said mass storage system storing blocks of data each located at a unique mass storage write address; and a preservation memory connected to said digital computer and used for storing a copy of any of said blocks of data, each of said copies being associated with one of said unique addresses; and wherein the method is characterized by the steps of:
(A) clearing said preservation memory so that no copies of blocks of data are in said preservation memory;
(B) creating a virtual device;
(C) whenever a write operation to said mass storage system occurs, and said write operation specifies one of said unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to said mass storage system, then (1) if and only if there is not already found within the preservation memory a copy of a block of data associated with said unique mass storage write address, then placing in said preservation memory a copy of the block of data located in said mass storage system at said unique mass storage write address prior to writing the new block of data in said mass storage system at that same address; and (2) writing said new block of data to said mass storage system at the location specified by said unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) whenever a read operation to said virtual device occurs, and said read operation specifies a virtual device read address, then (1) if there is not a copy of a block of data associated with said virtual device read address in -Page 1 of Claims-said preservation memory, then returning in response to said read operation said block of data associated with said virtual read address from said mass storage system; and (2) if there is a copy of a block of data associated with said virtual device read address in said preservation memory, then returning in response to said read operation said copy of the block of data associated with said virtual device read address in said preservation memory.
(A) clearing said preservation memory so that no copies of blocks of data are in said preservation memory;
(B) creating a virtual device;
(C) whenever a write operation to said mass storage system occurs, and said write operation specifies one of said unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to said mass storage system, then (1) if and only if there is not already found within the preservation memory a copy of a block of data associated with said unique mass storage write address, then placing in said preservation memory a copy of the block of data located in said mass storage system at said unique mass storage write address prior to writing the new block of data in said mass storage system at that same address; and (2) writing said new block of data to said mass storage system at the location specified by said unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) whenever a read operation to said virtual device occurs, and said read operation specifies a virtual device read address, then (1) if there is not a copy of a block of data associated with said virtual device read address in -Page 1 of Claims-said preservation memory, then returning in response to said read operation said block of data associated with said virtual read address from said mass storage system; and (2) if there is a copy of a block of data associated with said virtual device read address in said preservation memory, then returning in response to said read operation said copy of the block of data associated with said virtual device read address in said preservation memory.
2. A method as in claim 1, wherein said mass storage system comprises one or more disks.
3. A method as in any preceding claim, wherein said mass storage system is a partition of a disk.
4. A method as in any preceding claim, wherein said preservation memory is a random-access memory.
5. A method as in any preceding claim, wherein said preservation memory is one or more disks.
6. A method as in any preceding claim, wherein said preservation memory is a partition of a disk.
7. A method as in any preceding claim, wherein said preservation memory is a file stored on the mass storage system.
8. A method as in any preceding claim, further comprising the steps of:
whenever a write operation to said virtual device occurs, and said write operation specifies a virtual device write address and a new block of data to be written to said virtual device, then (1) if there is not a copy of a block of data associated with said virtual device write address in said preservation memory, placing in said preservation memory said new block of data to be written to said virtual device; and (2) if there is a copy of a block of data associated with said virtual device write address in said preservation memory, replacing in said preservation memory said copy of the block of data associated with said virtual device write address with -Page 2 of Claims-said new block of data to be written to said virtual device.
whenever a write operation to said virtual device occurs, and said write operation specifies a virtual device write address and a new block of data to be written to said virtual device, then (1) if there is not a copy of a block of data associated with said virtual device write address in said preservation memory, placing in said preservation memory said new block of data to be written to said virtual device; and (2) if there is a copy of a block of data associated with said virtual device write address in said preservation memory, replacing in said preservation memory said copy of the block of data associated with said virtual device write address with -Page 2 of Claims-said new block of data to be written to said virtual device.
9. A method as in any preceding claim comprising the steps of:
whenever a read operation to said mass storage system occurs, and said read operation specifies a unique mass storage read address, then returning as the result of said read operation a block of data located in said mass storage system at said unique mass storage read address.
whenever a read operation to said mass storage system occurs, and said read operation specifies a unique mass storage read address, then returning as the result of said read operation a block of data located in said mass storage system at said unique mass storage read address.
10. A method as in any preceding claim, said computer system further including a block association memory, said block association memory used to associate said copies of blocks stored in said preservation memory with said unique addresses.
11. A method as in claim 10, wherein said block association memory contains entries, each entry indicating a unique address in said mass storage system and a location in said preservation memory of a copy of a block associated with said unique address.
12. A method as in claim 11, wherein said copies of blocks of data in said preservation memory are associated with a unique address by searching said block association memory entries for a matching address.
13. A method as in claim 12, wherein there is not a copy of a block of data associated with an address if there is no entry in said block association memory with a matching address.
14. A method as in claim 11, wherein said block association memory contains an entry for each unique address in said mass storage system.
15. A method as in claim 14, where a special value for said preservation memory location in one of said entries indicates that there is not a copy of a block of data in said preservation memory associated with the unique address indicated by said one of said entries.
16. A method as in any preceding claim, wherein said digital computer acts as a file server, and said virtual device is exported to other computers.
17. A method as in claim 16, wherein said mass storage system is exported to other computers.
-Page 3 of Claims-
-Page 3 of Claims-
18. A method as in any preceding claim, said computer system further including a second mass storage system storing blocks of data each located at a unique storage write address, and the method being further characterized by the steps of:
creating a second virtual device in addition to the virtual device created in step (B);
whenever a write operation to said second mass storage system occurs, and said write operation specifies a unique mass storage write address of the second mass storage system and a new block of data to be written to said second mass storage system, then (1) if and only if there is not already found within the preservation memory a copy of a block of data associated with said unique mass storage write address of the second mass storage system, then placing in said preservation memory a copy of the block of data located in said second mass storage system at said unique mass storage write address of the second mass storage system: and (2) writing said new block of data to said second mass storage system at the location specified by said unique mass storage write address of the second mass storage system only after the preceding step (1) has been performed at least once for a given unique mass storage write address of the second mass storage system; and whenever a read operation to said second virtual device occurs, and said read operation specifies a second virtual device read address, then (1) if there is not a copy of a block of data associated with said second virtual device read address in said preservation memory, then returning in response to said read operation said block of data associated with said second virtual device read address from said second mass storage system; and (2) if there is a copy of a block of data associated with said second virtual device read -Page 4 of Claims-address in said preservation memory, then returning in response to said read operation said copy of the block of data associated with said second virtual device read address in said preservation memory.
creating a second virtual device in addition to the virtual device created in step (B);
whenever a write operation to said second mass storage system occurs, and said write operation specifies a unique mass storage write address of the second mass storage system and a new block of data to be written to said second mass storage system, then (1) if and only if there is not already found within the preservation memory a copy of a block of data associated with said unique mass storage write address of the second mass storage system, then placing in said preservation memory a copy of the block of data located in said second mass storage system at said unique mass storage write address of the second mass storage system: and (2) writing said new block of data to said second mass storage system at the location specified by said unique mass storage write address of the second mass storage system only after the preceding step (1) has been performed at least once for a given unique mass storage write address of the second mass storage system; and whenever a read operation to said second virtual device occurs, and said read operation specifies a second virtual device read address, then (1) if there is not a copy of a block of data associated with said second virtual device read address in said preservation memory, then returning in response to said read operation said block of data associated with said second virtual device read address from said second mass storage system; and (2) if there is a copy of a block of data associated with said second virtual device read -Page 4 of Claims-address in said preservation memory, then returning in response to said read operation said copy of the block of data associated with said second virtual device read address in said preservation memory.
19. A method as in any preceding claim, said computer system further including a second preservation memory, the method being further characterized by the steps of:
creating a second virtual device in addition to the virtual device created in step (B);
whenever a write operation to said mass storage system occurs, and said write operation specifies a unique mass storage write address and a new block of data to be written to said unique mass storage system, then (1) if and only if there is not already found within the second preservation memory a copy of a block of data associated with said unique mass storage write address, the placing in said second preservation memory a copy of the block of data located in said mass storage system at said unique mass storage write address; and (2) writing said new block of data to said mass storage system at the location specified by said unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and whenever a read operation to said second virtual device occurs, and said read operation specifies a second virtual device read address, then (1) if there is not a copy of a block of data associated with said second virtual device read address in said second preservation memory, then returning in response to said read operation said block of data associated with said second virtual read address from said mass storage system; and (2) if there is copy of a block of data associated with said second virtual device read address in said second preservation memory, then returning in response to said read operation said copy of the block of data associated with said second virtual device read address in said second preservation memory.
creating a second virtual device in addition to the virtual device created in step (B);
whenever a write operation to said mass storage system occurs, and said write operation specifies a unique mass storage write address and a new block of data to be written to said unique mass storage system, then (1) if and only if there is not already found within the second preservation memory a copy of a block of data associated with said unique mass storage write address, the placing in said second preservation memory a copy of the block of data located in said mass storage system at said unique mass storage write address; and (2) writing said new block of data to said mass storage system at the location specified by said unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and whenever a read operation to said second virtual device occurs, and said read operation specifies a second virtual device read address, then (1) if there is not a copy of a block of data associated with said second virtual device read address in said second preservation memory, then returning in response to said read operation said block of data associated with said second virtual read address from said mass storage system; and (2) if there is copy of a block of data associated with said second virtual device read address in said second preservation memory, then returning in response to said read operation said copy of the block of data associated with said second virtual device read address in said second preservation memory.
20. A system for providing a static snapshot of data, said system including a mass storage system for storing blocks of data each located at a unique mass storage write address; a preservation memory used for storing a copy of any of said blocks of data, each of said copies being associated with one of said unique addresses; and a digital computer connected to said mass storage system and to said preservation memory; and said system being characterized in that said digital computer includes:
(A) means for clearing said preservation memory so that no copies of blocks of data are in said preservation memory;
(B) means for creating a virtual device;
(C) means for creating a static snapshot of the data blocks of said mass storage system whenever a write operation to said mass storage system occurs, and said write operation specifies one of said unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to said mass storage system, by performing the steps of:
(1) if and only if there is not already found within a preservation memory a copy of a block of data associated with said unique mass storage write address, then placing in said preservation memory a copy of the block of data located in said mass storage system at said unique mass storage write address prior to writing the new block of data in said mass storage system at that same address; and (2) writing said new block of data to said mass storage system at the location specified by said unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) means for outputting data blocks of the static snapshot whenever a read operation to said virtual device occurs, and said read operation specifies a virtual device read address, by perforating the steps of:
(1) if there is not a copy of a block of data associated with said virtual device read address in said preservation memory, then returning in response to said read operation said block of data associated with said virtual read address from said mass storage system; and (2) if there is a copy of a block of data associated with said virtual device read address in said preservation memory, then returning in response to said read operation said copy of the block of data associated with said virtual device read address in said preservation memory.
(A) means for clearing said preservation memory so that no copies of blocks of data are in said preservation memory;
(B) means for creating a virtual device;
(C) means for creating a static snapshot of the data blocks of said mass storage system whenever a write operation to said mass storage system occurs, and said write operation specifies one of said unique write addresses for receiving at that unique address of the mass storage system a new block of data to be written to said mass storage system, by performing the steps of:
(1) if and only if there is not already found within a preservation memory a copy of a block of data associated with said unique mass storage write address, then placing in said preservation memory a copy of the block of data located in said mass storage system at said unique mass storage write address prior to writing the new block of data in said mass storage system at that same address; and (2) writing said new block of data to said mass storage system at the location specified by said unique mass storage write address only after the preceding step (1) has been performed at least once for a given unique mass storage write address; and (D) means for outputting data blocks of the static snapshot whenever a read operation to said virtual device occurs, and said read operation specifies a virtual device read address, by perforating the steps of:
(1) if there is not a copy of a block of data associated with said virtual device read address in said preservation memory, then returning in response to said read operation said block of data associated with said virtual read address from said mass storage system; and (2) if there is a copy of a block of data associated with said virtual device read address in said preservation memory, then returning in response to said read operation said copy of the block of data associated with said virtual device read address in said preservation memory.
21. In a computer system having a processor, a mass storage system for storing blocks of data in response to write operations, and a preservation memory means, a method of providing a static snapshot of the mass storage system at a particular point in time so that said static snapshot does not change even though the contents of said mass storage system change, the method being characterized by the steps of:
clearing the preservation memory means so that the preservation memory means is ready to preserve data blocks of said mass storage system;
preserving a snapshot of the mass storage system at a particular point in time by executing at least the following steps:
(1) when a data block is to be over-written by a new data block at said same write address, checking said preservation memory means to determine if the data block specified by said address has already been stored in the preservation memory means;
(2) if and only if said data block has already been stored in said preservation memory means, performing the over-write operation so that said new data block replaces the data block at said address;
and (3) if the data block that is to be over-written has not been already stored in said preservation memory means, preserving the data block by first copying said data block into said preservation memory means prior to performing the over-write operation, thereby permitting said mass storage system to be updated as each data block is preserved at a given snapshot moment in the preservation memory means.
clearing the preservation memory means so that the preservation memory means is ready to preserve data blocks of said mass storage system;
preserving a snapshot of the mass storage system at a particular point in time by executing at least the following steps:
(1) when a data block is to be over-written by a new data block at said same write address, checking said preservation memory means to determine if the data block specified by said address has already been stored in the preservation memory means;
(2) if and only if said data block has already been stored in said preservation memory means, performing the over-write operation so that said new data block replaces the data block at said address;
and (3) if the data block that is to be over-written has not been already stored in said preservation memory means, preserving the data block by first copying said data block into said preservation memory means prior to performing the over-write operation, thereby permitting said mass storage system to be updated as each data block is preserved at a given snapshot moment in the preservation memory means.
22. A system for providing a static snapshot of mass storage system at a particular point in time so that said static snapshot does not change even though the contents of said mass storage system subsequently change, said system including a mass storage system for storing a plurality of data blocks, each of said plurality of data blocks being specified by a unique write address; preservation memory means for storing the data blocks of said mass storage system so as to store a static snapshot of the mass storage system at a particular point in time; and being characterized by a processor means that includes a first means for identifying whether each data block of said mass storage system has been preserved in said preservation memory means, and a second means for ensuring that each data block of said mass storage system is copied to said preservation memory means the first time said data block is to be over-written by a new data block when said static snapshot of said mass storage system is taken, and a third means for writing a new data block to said mass storage system without first preserving said data block if said data block has already been preserved in said preservation memory means.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/322,697 US5649152A (en) | 1994-10-13 | 1994-10-13 | Method and system for providing a static snapshot of data stored on a mass storage system |
US08/322,697 | 1994-10-13 | ||
PCT/US1995/013324 WO1996012232A1 (en) | 1994-10-13 | 1995-10-10 | Snapshot of data stored on a mass storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2201859A1 CA2201859A1 (en) | 1996-04-25 |
CA2201859C true CA2201859C (en) | 2000-12-19 |
Family
ID=29422765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002201859A Expired - Fee Related CA2201859C (en) | 1994-10-13 | 1995-10-10 | Snapshot of data stored on a mass storage system |
Country Status (1)
Country | Link |
---|---|
CA (1) | CA2201859C (en) |
-
1995
- 1995-10-10 CA CA002201859A patent/CA2201859C/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CA2201859A1 (en) | 1996-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5649152A (en) | Method and system for providing a static snapshot of data stored on a mass storage system | |
WO1996012232A9 (en) | Snapshot of data stored on a mass storage system | |
US6460054B1 (en) | System and method for data storage archive bit update after snapshot backup | |
US5499367A (en) | System for database integrity with multiple logs assigned to client subsets | |
US5086502A (en) | Method of operating a data processing system | |
EP1942414B1 (en) | Snapshot system and method | |
US6341341B1 (en) | System and method for disk control with snapshot feature including read-write snapshot half | |
JP4292882B2 (en) | Plural snapshot maintaining method, server apparatus and storage apparatus | |
US7287045B2 (en) | Backup method, storage system, and program for backup | |
US6061770A (en) | System and method for real-time data backup using snapshot copying with selective compaction of backup data | |
JP2719464B2 (en) | File management system | |
US7266654B2 (en) | Storage system, server apparatus, and method for creating a plurality of snapshots | |
US7337288B2 (en) | Instant refresh of a data volume copy | |
US20040254964A1 (en) | Data replication with rollback | |
US7774316B2 (en) | Filesystem snapshot enhancement to improve system performance | |
US7743227B1 (en) | Volume restoration using an accumulator map | |
JP2003223287A (en) | Storage device, backup method of the same, and program therefor | |
JP2003280964A (en) | Method for acquiring snapshot, storage system and disk device | |
JPH1074168A (en) | Device and method for generating copy of data file | |
US8140886B2 (en) | Apparatus, system, and method for virtual storage access method volume data set recovery | |
US7093090B1 (en) | Method for creating a virtual data copy of a volume being restored | |
JP4394467B2 (en) | Storage system, server apparatus, and preceding copy data generation method | |
JP4390618B2 (en) | Database reorganization program, database reorganization method, and database reorganization apparatus | |
CA2201859C (en) | Snapshot of data stored on a mass storage system | |
JPS6358556A (en) | File system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
MKLA | Lapsed |