Disk synchronizing
In one aspect, a method includes performing synchronization between a source disk and a target disk. The performing includes reading data, in a first read, with a first size from a source disk, writing the data from the first to a target disk, reading data, in a second read, with the first size from the source disk, determining if the data from the first read is equal to the data from the second read, reducing the first size if the data from the first read is not equal to the data in the second read and repeating the reading data in the first read, the writing, the reading data in the second read and the determining.
Latest EMC Corporation Patents:
- Combining explicit and implicit feedback in self-learning fraud detection systems
- System and method to enhance phrase search with nested thesaurus parsing
- Systems and methods for bi-directional replication of cloud tiered data across incompatible clusters
- Method and system for adaptive wear leveling in solid state memory
- Handling deletes with distributed erasure coding
Computer systems are constantly improving in terms of speed, reliability, and processing capability. As is known in the art, computer systems which process and store large amounts of data typically include a one or more processors in communication with a shared data storage system in which the data is stored. The data storage system may include one or more storage devices, usually of a fairly robust nature and useful for storage typically include an array of a plurality of disks with on-board intelligence and communications electronics and software for making the data on the disks available.
Disks migration enables non-disruptive or minimally disruptive data migration between data storage systems. The major part of the time in migration is consumed by synchronization of the source and target disks. For any solution which provides the functionality for migrating data it is important to minimize the time needed to synchronize the disks which are being migrated.
SUMMARYIn one aspect, a method includes performing synchronization between a source disk and a target disk. The performing includes reading data, in a first read, with a first size from a source disk, writing the data from the first to a target disk, reading data, in a second read, with the first size from the source disk, determining if the data from the first read is equal to the data from the second read, reducing the first size if the data from the first read is not equal to the data in the second read and repeating the reading data in the first read, the writing, the reading data in the second read and the determining.
In another aspect, an apparatus includes electronic hardware circuitry configured to perform synchronization between a source disk and a target disk. The circuitry configured to perform the synchronization includes circuitry configured to read data, in a first read, with a first size from a source disk, write the data from the first to a target disk, read data, in a second read, with the first size from the source disk, determine if the data from the first read is equal to the data from the second read, reduce the first size if the data from the first read, is not equal to the data in the second read and repeat the reading data in the first read, the writing, reading data in the second read and the determining.
In a further aspect, an article includes a non-transitory computer-readable medium that stores computer-executable instructions. The instructions cause a machine to perform synchronization between a source disk and a target disk. The instructions causing the machine to perform the synchronization include instructions causing the machine to read data, in a first read, with a first size from a source disk, write the data from the first to a target disk, read data, in a second read, with the first size from the source disk, determine if the data from the first read is equal to the data from the second read, reduce the first size if the data from the first read is not equal to the data in the second read and repeat the reading data in the first read, the writing, reading data in the second read and the determining.
Objects, features, and advantages of embodiments disclosed herein may be better understood by referring to the following description in conjunction with the accompanying drawings. The drawings are not meant to limit the scope of the claims included herewith. For clarity, not every element may be labeled in every figure. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments, principles, and concepts.
Thus, features and advantages of the present disclosure will become more apparent from the following detailed description of exemplary embodiments thereof taken in conjunction with the accompanying drawings in which:
Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTIONActive-Active clusters enable multiple nodes in a high availability cluster to simultaneously have read-write access to the same LUN (disk). High availability clusters provide continued service for the users. Most products which provide functionality to non-disruptively migrate one disk (source) to another (target) should solve the problem of synchronizing the disks. Synchronization of the disk usually involves cloning new I/Os to both the source and the target while copying disk block by block. The synchronization problem becomes more difficult to solve in active-active cluster environment when several hosts can access the source disk, because the node which performs copy sweep should handle conflicts between I/O from all nodes to the disk with the currently running copy sweep to guarantee that the disks will be synchronized correctly.
Described herein are techniques for source and target disk synchronization in an active-active cluster environment which does not involve communication between nodes for copy sweep. That is, synchronization of source and target disks is performed by one node without communication with other nodes in the cluster. With this approach copy sweep efficiency may be achieved without cost-consuming communication between nodes while ensuring consistency of the data on the source and target disks during synchronization on copy sweep.
Referring to
When migration starts the source disk 102 and the target disk 104 are not synchronized. The migrator 106 synchronizes the source disk 102 and the target disk (e.g., using a process 200 (
During this synchronization process, the system 100 is configured to clone any new application write I/Os from source disk 102 to the target disk 104. Even after synchronization is complete system 100 continues to clone any new application write I/Os from source to target to keep the disks synchronized. In one particular, the cloned write I/Os are saved in the order that they are received. In one particular example, cloning write I/Os may be performed before, during or after the performing the synchronization process or any combination thereof. In one particular example, the write I/Os from an application are cloned after they are written to the source disk 102.
System 100 is also configured to prevent writes to the target 104 by the applications 116, 118, 120; however, the migrator 106 does have access to the target 104.
Referring to
Process 200 reads data (data1) from a source disk (204). For example, the data has a size equal to the copy sweep size is read from the source disk 102.
Process 200 writes the data (data1) to a target disk (206). For example, the data read from processing block 204 is written to processing the target disk 104.
Process 200 reads data from the source disk (208). The data read is in the same location as data read in processing block 204.
Process 200 determines if data1 equals data2 (212). If data1 does equal data2, process determines is synchronization is complete (214) and if synchronization is not complete, process 200 goes to the next unsynchronized area (216), and repeats processing blocks 202, 204, 206, 208 and 212. In particular, the copy sweep size is reset or remains at the largest value copy sweep size at the beginning of the process 200 that is set in processing block 202.
If data1 does not equal data2, process 200 determines if the smallest copy sweep size is being used (222) and if the smallest copy sweep size is not being used, process 200 reduces the copy sweep size (226) and repeats processing blocks 204, 206, 208 and 212 with this new value. In one example, the copy sweep size is reduced by half. In one example, the smallest copy sweep size is a size of the smallest data block, which is one disk sector size. In one particular example, the smallest copy sweep size is 4 kB.
If the smallest copy sweep size is being used, process 200 determines if the number of retries at the smallest copy size have been reached (232) and if the number of retries at the smallest copy size has not been reached, process 200 repeats processing blocks 204, 206, 208 and 212.
If the number of retries at the smallest copy size has been reached, process 200 uses another synchronization method (236). In other examples, an evaluation process is initiated to determine the failure.
Referring to
The processes described herein (e.g., process 200) are not limited to use with the hardware and software of
The system may be implemented, at least in part, via a computer program product, (e.g., in a non-transitory machine-readable storage medium such as, for example, a non-transitory computer-readable medium), for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers)). Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs may be implemented in assembly or machine language. The language may be a compiled or an interpreted language and, it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. A computer program may be stored on a non-transitory machine-readable medium that is readable by a general or special purpose programmable computer for configuring and operating the computer when the non-transitory machine-readable medium is read by the computer to perform the processes described herein. For example, the processes described herein may also be implemented as a non-transitory machine-readable storage medium, configured with a computer program, where upon execution, instructions in the computer program cause the computer to operate in accordance with the processes. Anon-transitory machine-readable medium may include but is not limited to a hard drive, compact disc, flash memory, non-volatile memory, volatile memory; magnetic diskette and so forth but does not include a transitory signal per se.
The processes described herein are not limited to the specific examples described. For example, the process 200 is not limited to the specific processing order of
The processing blocks (for example, in the process 200) associated with implementing the system may be performed by one or more programmable processors executing one or more computer programs to perform the functions of the system. All or part of the system may be implemented as, special purpose logic circuitry (e.g., an FPGA (field-programmable gate array) and/or an ASIC (application-specific integrated circuit)). All or part of the system may be implemented using electronic hardware circuitry that include electronic devices such as, for example, at least one of a processor, a memory, a programmable logic device or a logic gate.
Elements of different embodiments described herein may be combined to form, other embodiments not specifically set forth above. Various elements, which are described in the context of a single embodiment may also be provided separately or in any suitable subcombination. Other embodiments not specifically described herein are also within the scope of the following claims.
Claims
1. A method, comprising:
- performing synchronization between a source disk and a target disk, the performing comprising:
- reading data, in a first read, with a first size from a source disk;
- writing the data from the first to a target disk;
- reading data, in a second read, with the first size from the source disk;
- determining if the data from the first read is equal to the data from the second read;
- reducing the first size if the data from the first read is not equal to the data in the second read; and
- repeating the reading data in the first read, the writing, the reading data in the second read and the determining.
2. The method of claim 1, wherein the performing further comprises synchronizing a next unsynchronized portion of the source and target disks and repeating the reading data in the first read, the writing, the reading data in the second read and the determining if the data from the first read is equal to the data from the second read.
3. The method of claim 1, further comprising cloning write I/Os from an application written to the source disk and writing the write I/Os to the target disk.
4. The method of claim 3, wherein cloning write I/Os Os comprises cloning write I/Os before, during or after the performing the synchronizing.
5. The method of claim 1 wherein reducing the first size comprises reducing the first size no smaller than a size of a sector of storage.
6. The method of claim 1, further comprising limiting a number of retries at the first size equal to the size of the sector of storage.
7. An apparatus, comprising:
- electronic hardware circuitry configured to: perform synchronization between a source disk and a target disk, the circuitry configured to perform the synchronization comprises circuitry configured to: read data, in a first read, with a first size from a source disk; write the data from the first to a target disk; read data, in a second read, with the first size from the source disk; determine if the data from the first read is equal to the data from the second read; reduce the first size if the data from the first read is not equal to the data in the second read; and repeat the reading data in the first read, the writing, reading data in the second read and the determining.
8. The apparatus of claim 7, wherein the circuitry comprises at least one of a processor, a memory, a programmable logic device or a logic gate.
9. The apparatus of claim 7, wherein the circuitry configured to perform the synchronization further comprises circuitry configured to synchronize a next unsynchronized portion of the source and target disks and repeating the reading data in the first read, the writing, the reading data in the second read and the determining if the data from the first read is equal to the data from the second read.
10. The apparatus of claim 7, further comprising circuitry configured to clone write I/Os from an application written to the source disk and writing the write I/Os to the target disk.
11. The apparatus of claim 10, wherein the circuitry configured to clone write I/Os comprises circuitry configured to clone write I/Os before, during or after the performing the synchronizing.
12. The apparatus of claim 7, wherein the circuitry configured to reduce the first size comprises circuitry configured to reduce the first size no smaller than a size of a sector of storage.
13. The apparatus of claim 7, further comprising circuitry configured to limit a number of retries at the first size equal to the size of the sector of storage.
14. An article comprising:
- a non-transitory computer-readable medium that stores computer-executable instructions, the instructions causing a machine to perform synchronization between a source disk and a target disk, the instructions causing the machine to perform the synchronization comprises the instructions causing the machine to: read data, in a first read, with a first size from a source disk; write the data from the first to a target disk; read data, in a second read, with the first size from the source disk; determine if the data from the first read is equal to the data from the second read; reduce the first size if the data from the first read is not equal to the data in the second read; and repeat the reading data in the first read, the writing, reading data in the second read and the determining.
15. The article of claim 14, wherein the circuitry configured to perform the synchronization further comprises instructions causing the machine to synchronize a next unsynchronized portion of the source and target disks and repeating the reading data in the first read, the writing, the reading data in the second read and the determining if the data from the first read is equal to the data from the second read.
16. The article of claim 14, further comprising instructions causing the machine to clone write I/Os from an application written to the source disk and writing the write I/Os to the target disk.
17. The article of claim 16, wherein the instructions causing the machine to clone write I/Os comprises instructions causing the machine to clone write i/Os before, during or after the performing the synchronizing.
18. The article of claim 14, wherein the instructions causing the machine to reduce the first size comprises instructions causing the machine to reduce the first size no smaller than a size of a sector of storage.
19. The article of claim 14, further comprising instructions causing the machine to limit a number of retries at the first size equal to the size of the sector of storage.
8134798 | March 13, 2012 | Thelin et al. |
- Vazhenin et al., “Disk Synchronizing;” U.S. Appl. No. 14/315,414, filed Jun. 26, 2014; 19 Pages.
Type: Grant
Filed: Sep 22, 2014
Date of Patent: Apr 14, 2015
Assignee: EMC Corporation (Hopkinton, MA)
Inventors: Maksim Vazhenin (Saint Petersburg), Sergey Storozhevykh (Saint Petersburg), Ilya Volzhev (Saint Petersburg), Vadim Agarkov (Saint Petersburg)
Primary Examiner: Ali Neyzari
Application Number: 14/492,185
International Classification: G11B 5/02 (20060101); G11B 20/10 (20060101); G11B 20/12 (20060101); G06F 3/06 (20060101);