Embodiments will now be described, by way of example only, with reference to the accompanying drawing figures, in which:
Certain described embodiments are broadly directed to a CDP scheme which is tightly integrated with remote copy. This may be achieved as described below, with reference to the figures.
With respect to
The controller also maintains a Directory 10 for each logical volume so that it can locate the contents of a Page in the Journal when it receives a read command. The Directory 10 is hardened on disk. It may also be cached in memory so that Pages 6a, 6b, 6c, 6d which are accessed frequently can be located quickly. The controller must update the Directory 10 for each write command 2 it receives.
There are many possible designs for the Directory 10. In the simplest case the Directory 8 is just a linear array of Pointers 12a, 12b, 12c, 12d to the current Record 4a, 4b, 4c, 4d for each Page 6a, 6b, 6c, 6d. A null Pointer 12a, 12b, 12c, 12d indicates that the corresponding Page 6a, 6b, 6c, 6d has never been written. More complex Directories could be designed with a time dimension in order to rapidly locate the contents of each Page at previous points in time.
With respect to
Initially the Journal 8 is empty and the Directory 10 contains an array of null Pointers 12a, 12b, 12c, 12d. When the controller receives a write command 2 for a single Page 6a, 6b, 6c, 6d, it appends a Record 4a, 4b, 4c, 4d to the Journal 8 and then it updates the corresponding Pointer 12a, 12b, 12c, 12d in the Directory 10. Longer writes cause the same action for each Page 6a, 6b, 6c, 6d. Unaligned or short writes are processed by reading a Page 6a, 6b, 6c, 6d, modifying one or more blocks and then writing the Page.
Reads 14 are processed by indexing down the Directory 10 to locate the corresponding Pointer 12a, 12b, 12c, 12d and then following it to a Record 4a, 4b, 4c, 4d in the Journal 8. When the data has been rolled back to a previous point in time it is necessary to follow the backward pointers 60 in each Header 50 to find the Record 4a, 4b, 4c, 4d with the correct Timestamp 58. Subsequently a new Directory could be constructed to restore full performance. This will take some time but it can be done concurrently while data access continues using the old Directory and the backward Pointers 60.
Eventually the Journal 8 will fill up and space must be freed by deleting some previous versions of the data. This is done by a background Garbage Collector which scans the Journal 8 from the beginning and deletes some previous Records 4a, 4b, 4c, 4d for each Page 6a, 6b, 6c, 6d according to a policy; in one exemplary embodiment, the policy might be “keep one version for each previous week up to a month”. The Garbage Collector copies each Record 4a, 4b, 4c, 4d that is retained to the first available empty slot in the Journal 8 in order to defragment it, and it updates the Directory 10 accordingly.
Remote copy is implemented by copying each new Record 4a, 4b, 4c, 4d from the primary Journal 8 to a secondary Journal 16 at the remote site. This can be done synchronously with each write command 2 before returning completion status to the host. Alternatively, it can be an asynchronous process which may run some Records behind when the link speed cannot keep up with the I/O rate. In both cases, a secondary Directory 18 is updated to point 20a, 20b, 20c, 20d to each record 22a, 22b, 22c, 22d which is received at the remote site. In some situations the controller may switch automatically from synchronous remote copy to asynchronous remote copy and vice versa, for example if the link fails and is later repaired.
If the controller has a cache then the functions described here may be implemented in a layer above the cache. This avoids the ordering issues potentially caused by fast write and allows the usual benefits of a read cache. A Freeze/Thaw protocol can be used to ensure consistency across multiple controllers by entering sync points into each Journal.
With respect to
Primary controller 100 comprises an I/O receiving component 104 for receiving read and write commands and a continuous data protection control component 106 operatively coupled to the I/O receiving component 104 for maintaining a continuous data protection journal 108 and a directory 102.
Continuous data protection journal 108 is operable to retain the write I/O data for access by subsequent read commands and to roll back the data at the primary site. Primary controller 100 further comprises a remote copy controller component 110 adapted either to read the write I/O data from the continuous data protection journal or otherwise to receive the write I/O data—this may be by using a split write technique, for example. Primary controller 100 further comprises a remote copy transmission component 112 operatively coupled to the remote copy controller component 110 to transmit the write I/O data to the secondary 150 of the remote copy pair.
The storage control system described may be operated with a secondary 150 of the remote copy pair, wherein the secondary 150 of the remote copy pair comprises a copy continuous data protection journal 118 to maintain a single copy of each item of write I/O data for use in remote recovery. In such an arrangement, remote copy receive component 114 receives the copy of the write I/O data from the primary and passes it to remote copy control component 116, which writes the copy write I/O data to copy journal 118 and updates directory 120.
The storage control system described may further comprise a compression component to convert the write I/O data to a compressed form and a decompression component to convert the write I/O data in its compressed form to a decompressed form. The compression component may be incorporated into any of the control components at the primary or the secondary, or it may comprise an additional component either in the primary or secondary controller or incorporated into a transmission path of the write I/O data.
The described embodiments may addresses the problem of providing a technological means for maintaining local continuous data protection integrated with a remote copy facility, using commonly-available components and with minimal additional resource use.
With respect to
The exemplary method begins as START step 200. The primary controller receives a write command at step 202. At step 204, a test is made to determine whether there is space available in the primary CDP journal 108 (
Certain of the described embodiments may provide a technological means for maintaining local continuous data protection integrated with a remote copy facility, using commonly-available components and with minimal additional resource use.
All or part of the method of the described embodiments may suitably and usefully be embodied in a logic apparatus, or a plurality of logic apparatus, comprising logic elements arranged to perform the operations of the method and that such logic elements may comprise hardware components, firmware components or a combination thereof.
Further, all or part of a logic arrangement may be embodied in a logic apparatus comprising logic elements to perform the described, and that such logic elements may comprise components such as logic gates in, for example a programmable logic array or application-specific integrated circuit. Such a logic arrangement may further be embodied in enabling elements for temporarily or permanently establishing logic structures in such an array or circuit using, for example, a virtual hardware descriptor language, which may be stored and transmitted using fixed or transmittable carrier media.
Yet further, the method and arrangement described above may also suitably be carried out fully or partially in software running on one or more processors (not shown in the figures), and that the software may be provided in the form of one or more computer program elements carried on any suitable data-carrier (also not shown in the figures) such as a magnetic or optical disk or the like. Channels for the transmission of data may likewise comprise storage media of all descriptions as well as signal-carrying media, such as wired or wireless signal-carrying media.
The described embodiments may further be embodied as a computer program product for use with a computer system. Such an implementation may comprise a series of computer-readable instructions either fixed on a tangible medium, such as a computer readable medium, for example, diskette, CD-ROM, ROM, or hard disk, or transmittable to a computer system, using a modem or other interface device, over either a tangible medium, including but not limited to optical or analogue communications lines, or intangibly using wireless techniques, including but not limited to microwave, infrared or other transmission techniques. The series of computer readable instructions embodies all or part of the functionality previously described herein.
Those skilled in the art will appreciate that such computer readable instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Further, such instructions may be stored using any memory technology, present or future, including but not limited to, semiconductor, magnetic, or optical, or transmitted using any communications technology, present or future, including but not limited to optical, infrared, or microwave. It is contemplated that such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation, for example, shrink-wrapped software, pre-loaded with a computer system, for example, on a system. ROM or fixed disk, or distributed from a server or electronic bulletin board over a network, for example, the Internet or World Wide Web.
In an alternative, the described embodiments may be realized in the form of a computer implemented method of deploying a service comprising steps of deploying computer program code operable to, when deployed into a computer infrastructure and executed thereon, cause said computer system to perform all the method operations.
In a further alternative, the described embodiments may be realized in the form of a data carrier having functional data thereon, said functional data comprising functional computer data structures to, when loaded into a computer system and operated upon thereby, enable said computer system to perform all the steps of the method.
It will be clear to one skilled in the art that many improvements and modifications can be made to the foregoing exemplary embodiments without departing from the scope of the present invention.
| Number | Date | Country | Kind |
|---|---|---|---|
| GB0615779.6 | Aug 2006 | GB | national |