Language selection

Search

Patent 2201859 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 2201859
(54) English Title: SNAPSHOT OF DATA STORED ON A MASS STORAGE SYSTEM
(54) French Title: IMAGE INSTANTANEE STATIQUE DES DONNEES STOCKEES DANS UN SYSTEME DE MEMOIRE DE MASSE
Status: Expired and beyond the Period of Reversal
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 12/16 (2006.01)
(72) Inventors :
  • OHRAN, RICHARD S. (United States of America)
  • OHRAN, MICHAEL R. (United States of America)
(73) Owners :
  • EMC CORPORATION
(71) Applicants :
  • EMC CORPORATION (United States of America)
(74) Agent: CASSAN MACLEAN
(74) Associate agent:
(45) Issued: 2000-12-19
(86) PCT Filing Date: 1995-10-10
(87) Open to Public Inspection: 1996-04-25
Examination requested: 1997-09-17
Availability of licence: N/A
Dedicated to the Public: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US1995/013324
(87) International Publication Number: US1995013324
(85) National Entry: 1997-04-04

(30) Application Priority Data:
Application No. Country/Territory Date
08/322,697 (United States of America) 1994-10-13

Abstracts

English 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.


French Abstract

L'invention est une méthode de production d'instantanés statiques ou d'images des données stockées dans une mémoire de masse (104). Au départ, le contenu d'une mémoire de préservation (106) est effacé et un dispositif virtuel est créé. Quand une opération d'enregistrement doit être effectuée dans la mémoire de masse (104), la mémoire de préservation (106) est examinée pour déterminer si elle contient un enregistrement de bloc associé à l'adresse d'enregistrement dans la mémoire de masse. Si elle ne contient pas ce type d'enregistrement, une copie du bloc stocké à l'adresse d'enregistrement de bloc dans la mémoire de masse (104) est versée dans la mémoire de préservation (106). Quand une opération de lecture doit être effectuée sur le dispositif virtuel, la mémoire de préservation (106) est examinée pour déterminer si elle contient un bloc associé à l'adresse de lecture du dispositif virtuel. Si elle contient un bloc de ce type, celui-ci est retransmis comme résultat de la lecture dans le dispositif virtuel. Autrement, le bloc qui se trouve à l'adresse de lecture du bloc du dispositif virtuel est retransmis comme résultat.

Claims

Note: Claims are shown in the official language in which they were submitted.


WE CLAIM:
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.
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.
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.
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-

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.
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
Page 5

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:
Page 6

(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
-Page 7-

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.
Page 8

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02201859 1999-11-18
- 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
_____~___ _~ ~_ _ _____~;... ~~
25
35
1

2201859
WO 96/12232 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 '
2

CA 02201859 1999-11-18
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
30
3

WO 96/12232 PCT/US95113324
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 .
4
SUBSTITUTE SHEET ~~ULE 26)

~~01~59
WO 96/12232 PCT/US95/13324
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,
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,
6

CA 02201859 1999-11-18
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
25
35
7

2201859
WO 96/12232 PCT/CTS95/13324
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
8
SUBSTITUTE SHEET (RULE 2~

CA 02201859 2000-07-12
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
9

CA 02201859 2000-07-12
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

CA 02201859 2000-07-12
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

CA 02201859 2000-07-12
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

CA 02201859 2000-07-12
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
11
suesnru~ st~~ ~u~E ~s~

~~O~~J~
WO 96112232 PCT/US95/13324
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
12

~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.
13
SUBSTITUTE SHEET (RULE 2fi~

2201859
WO 96/12232 PCT/U595/13324
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
Z4
SUBSTITUTE SHEf)' (B(JZE 26~

WO 96/12232
PCT/US95/13324
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
16
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
17
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
18
~~"

2201859
WO 96/12232 PCT/US95/13324
. 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
19
SUBSTITUTE SHE'~1' (!~E 26~

CA 02201859 1999-11-18
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"________ ~.,.,
25
35

WO 96/12232 2 2 018 5 9 PCT/U895/13324
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
21

CA 02201859 2000-07-12
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
20
30
22

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

2024-08-01:As part of the Next Generation Patents (NGP) transition, the Canadian Patents Database (CPD) now contains a more detailed Event History, which replicates the Event Log of our new back-office solution.

Please note that "Inactive:" events refers to events no longer in use in our new back-office solution.

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Event History , Maintenance Fee  and Payment History  should be consulted.

Event History

Description Date
Inactive: IPC expired 2016-01-01
Inactive: IPC removed 2015-11-19
Time Limit for Reversal Expired 2005-10-11
Letter Sent 2004-10-12
Letter Sent 2004-03-23
Inactive: Multiple transfers 2004-02-25
Grant by Issuance 2000-12-19
Inactive: Cover page published 2000-12-18
Amendment After Allowance Requirements Determined Compliant 2000-08-16
Letter Sent 2000-08-16
Letter Sent 2000-08-08
Inactive: Final fee received 2000-07-12
Pre-grant 2000-07-12
Inactive: Amendment after Allowance Fee Processed 2000-07-12
Inactive: Multiple transfers 2000-07-12
Inactive: Correspondence - Transfer 2000-07-12
Amendment After Allowance (AAA) Received 2000-07-12
Letter Sent 2000-01-13
Notice of Allowance is Issued 2000-01-13
Notice of Allowance is Issued 2000-01-13
Inactive: Approved for allowance (AFA) 1999-12-07
Inactive: Correction to amendment 1999-11-26
Amendment Received - Voluntary Amendment 1999-11-18
Amendment Received - Voluntary Amendment 1999-08-06
Inactive: S.30(2) Rules - Examiner requisition 1999-05-06
Inactive: RFE acknowledged - Prior art enquiry 1998-03-18
Request for Examination Received 1997-09-17
Request for Examination Requirements Determined Compliant 1997-09-17
All Requirements for Examination Determined Compliant 1997-09-17
Amendment Received - Voluntary Amendment 1997-09-17
Inactive: First IPC assigned 1997-07-03
Inactive: IPC assigned 1997-07-03
Inactive: IPC assigned 1997-07-03
Inactive: Notice - National entry - No RFE 1997-06-23
Letter Sent 1997-06-23
Application Published (Open to Public Inspection) 1996-04-25

Abandonment History

There is no abandonment history.

Maintenance Fee

The last payment was received on 2000-10-03

Note : If the full payment has not been received on or before the date indicated, a further fee may be required which may be one of the following

  • the reinstatement fee;
  • the late payment fee; or
  • additional fee to reverse deemed expiry.

Patent fees are adjusted on the 1st of January every year. The amounts above are the current amounts if received by December 31 of the current year.
Please refer to the CIPO Patent Fees web page to see all current fee amounts.

Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
EMC CORPORATION
Past Owners on Record
MICHAEL R. OHRAN
RICHARD S. OHRAN
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Claims 1997-04-03 13 602
Drawings 1997-04-03 4 69
Abstract 1997-04-03 1 66
Description 1997-04-03 22 785
Description 2000-07-11 26 969
Claims 2000-07-11 8 392
Claims 1997-09-16 8 392
Description 1999-11-17 22 793
Representative drawing 1997-07-08 1 5
Representative drawing 2000-12-04 1 7
Notice of National Entry 1997-06-22 1 202
Courtesy - Certificate of registration (related document(s)) 1997-06-22 1 129
Acknowledgement of Request for Examination 1998-03-17 1 173
Commissioner's Notice - Application Found Allowable 2000-01-12 1 166
Courtesy - Certificate of registration (related document(s)) 2000-08-07 1 115
Courtesy - Certificate of registration (related document(s)) 2004-03-22 1 105
Maintenance Fee Notice 2004-12-06 1 173
PCT 1997-04-03 38 1,338
Correspondence 2000-07-11 3 72
Fees 1997-04-03 1 41
Correspondence 2000-01-12 1 104
Fees 1997-10-05 1 40
Fees 2000-10-02 1 32