Mirroring write operations across data storage devices

By performing mirrored write operations in parallel between the primary and secondary data storage devices and coordinating the write operation status using metadata, the problems of increased processing overhead and data copy asynchrony in conventional systems are solved, achieving efficient data retention and performance improvement.

CN114096957BActive Publication Date: 2025-12-12INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202080049508.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-07-08
Filing Date
2020-06-25
Publication Date
2025-12-12
Estimated Expiration
2040-06-25

AI Technical Summary

Technical Problem

Conventional data replication systems incur significantly increased processing overhead when fulfilling user I/O requests across multiple storage devices, and data copies are prone to becoming out of sync, leading to performance delays and complex recovery processes.

Method used

By performing mirrored write operations in parallel between the primary and secondary data storage devices, and using metadata to coordinate the completion status of write operations, data is kept synchronized between the two devices, reducing network traffic and processing overhead.

Benefits of technology

It effectively maintains data retention without increasing performance latency, reduces network traffic, and improves the operational efficiency and reliability of the data storage system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114096957B_ABST
    Figure CN114096957B_ABST
Patent Text Reader

Abstract

According to one aspect, a computer-implemented method includes receiving a first request from a host to perform a write operation and performing the write operation. Metadata corresponding to the first request is sent to a secondary data storage device and metadata corresponding to a second request to perform the write operation is received from the secondary data storage device, where the second request is received from the host at the secondary data storage device. The metadata corresponding to the first and second requests is used to determine whether the write operation has been mirrored across a primary data storage device and the secondary data storage device. In response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, a response is sent to the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present invention relates to data storage systems, and more particularly, to mirroring write operations across more than one data storage device. BACKGROUND

[0002] In conventional data replication systems, a user issues an input / output (I / O) request to a single storage location, such as a primary storage location, which ultimately modifies data in accordance with the received I / O request. To increase data retention, conventional data replication systems sometimes also implement a secondary storage location that maintains a secondary (e.g., backup) copy of the data stored at the primary storage location. Such a redundant data copy at a recovery storage location is particularly useful in the event that the primary storage location becomes unavailable and / or experiences data loss. In some cases, the recovery storage location can even assume operational responsibilities in response to a determination that the primary storage location is unable to do so.

[0003] In such conventional systems, the primary storage location forwards I / O requests received from a user to the secondary storage location for implementation. While this data storage scheme does improve data retention, the result is a significant increase in processing overhead to satisfy the additional requests. For example, I / O requests are transmitted between each location, resulting in increased performance latency as the number of locations implemented increases. Moreover, failure events experienced on any location and / or connections extending therebetween interrupt the transmission of I / O requests therebetween, resulting in multiple copies of data becoming out of sync. This, in turn, must be remedied before the system can function properly, introducing additional performance latency. SUMMARY

[0004] According to one aspect of the present invention, a computer-implemented method is used to mirror write operations across a primary data storage device and a secondary data storage device. The computer-implemented method includes receiving a first request from a host to perform a write operation and performing the write operation. Metadata corresponding to the first request is sent to the secondary data storage device and metadata corresponding to a second request from the secondary data storage device to perform the write operation is also received. Next, the second request is received from the host at the secondary data storage device. The metadata corresponding to the first and second requests is used to determine whether the write operation has been mirrored across the primary data storage device and the secondary data storage device. In response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, a response is sent to the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device.

[0005] Accordingly, by allowing the host to communicate with the primary and secondary data storage devices in parallel, the number of executions is reduced. For example, various of the schemes described herein are able to achieve a reduction in overhead. Similarly, the primary and secondary data storage devices are able to operate in parallel, as well as synchronize processes between executions, without relying on input from the host. This allows the data storage devices to assume the responsibility of ensuring that data is propagated in accordance with the intended data storage scheme. As a result of proactively ensuring that data is mirrored across multiple data storage devices, network traffic is reduced and data retention is also improved. Accordingly, it is desirable to apply the different processes included in these methods to all write operations received from the host (e.g., all application writes).

[0006] In some embodiments, the computer-implemented method further includes receiving a read request and determining whether data specified in the read request has been reconciled between the primary and secondary data storage devices. In response to determining that the data specified in the read request has not been reconciled between the primary and secondary data storage devices, delaying execution of the read request. However, in response to determining that the data specified in the read request has been reconciled between the primary and secondary data storage devices, executing the read operation.

[0007] Accordingly, by substantially eliminating situations in which a read operation is attempted, only to find that the data to be read has not been stored in memory, has not been updated in accordance with a modification write operation, etc., the efficiency of operation of the overall system is further improved. Moreover, these operations can be implemented without causing any performance disruption. The reduction in latency and data retention achieved by the above-described schemes can be combined with the improvement in read performance achieved by the present schemes, which is particularly desirable.

[0008] According to another aspect of the present application, a computer program product is for mirroring write operations across a primary data storage device and a secondary data storage device. The computer program product includes a computer readable storage medium having program instructions embodied therewith. Further, the program instructions can be read and / or executed by a processor to cause the processor to perform the above-described method.

[0009] According to yet another aspect, a primary data storage device includes a processor and logic integrated with the processor, executable by the processor, or integrated with and executable by the processor. The logic is configured to perform the above-described method.

[0010] According to another aspect, a computer-implemented method is for mirroring a write operation across a primary data storage device and a secondary data storage device. The computer-implemented method includes receiving a first request from a host to perform a write operation, and performing the write operation. Metadata corresponding to the first request is sent to the primary data storage device. Metadata corresponding to a second request to perform the write operation is also received from the primary data storage device, where the second request is received from the host at the primary data storage device. The metadata corresponding to the first and second requests is used to determine whether the write operation has been mirrored across the primary data storage device and the secondary data storage device. Further, in response to determining that the write operation has been mirrored across the primary and secondary data storage devices, a response is sent to the primary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device.

[0011] According to yet another aspect, a computer-implemented method is for mirroring a write operation across a primary data storage device and a secondary data storage device. Here, the computer-implemented method includes sending a first request to perform a write operation to a primary data storage device, and sending a second request to perform the write operation to a secondary data storage device. A first response is received from the primary data storage device indicating that the write operation has been performed. Further, a second response is received from the secondary data storage device indicating that the write operation has been performed.

[0012] As noted above, by allowing the host to communicate in parallel with the primary and secondary data storage devices, the number of executions is reduced. For example, various ones of the schemes described herein are capable of achieving a reduction in overhead. Similarly, the primary and secondary data storage devices are capable of operating in parallel, and performing synchronization procedures between themselves independent of input from the host. This allows the data storage devices to assume the responsibility of ensuring that data is propagated in accordance with the intended data storage scheme. By proactively ensuring that data is mirrored across multiple data storage devices, network traffic is reduced and data retention is also improved. Thus, it is desirable to apply the different procedures included in these schemes to all write operations received from the host (e.g., all application writes).

[0013] Other aspects and schemes of the present application will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating the principles of the application by way of example and

[0014] BRIEF DESCRIPTION OF DRAWINGS

[0015] Figure 1 is a network architecture according to a scheme.

[0016] Figure 2 is a server and / or client associated representative hardware environment that can be used in accordance with a scheme. Figure 1

[0017] Figure 3 ​is a hierarchical data storage system according to an aspect.

[0018] Figure 4 is a partial schematic diagram of a distributed data storage system according to an aspect.

[0019] Figure 5A is a flowchart of a method according to an aspect.

[0020] Figure 5B is a flowchart of a method according to an aspect. DETAILED DESCRIPTION

[0021] The following description is made for the purposes of illustrating the general principles of the present application and is not meant to limit the inventive concepts claimed herein. Further, particular features described herein can be used in combination with other described features in each of the many possible variations and permutations not specified but implied herein.

[0022] Unless specifically noted otherwise, all terms are to be given their broadest possible interpretation, including meanings implied from the specification as a whole and meanings understood by those skilled in the art and / or as defined in dictionaries, treatises, and the like.

[0023] It must also be noted that, as used in the specification and the appended claims, the singular forms "a," "an" and "the" include plural referents unless otherwise specified. It should also be understood that, when the term "comprising" or "comprises" is used in this specification, it is intended to mean that the stated features, integers, steps, components, and / or elements are present, but not excluding the presence of one or more other features, integers, steps, components, and / or elements, or groups thereof.

[0024] The following description discloses several preferred aspects of systems, methods, and computer program products for mirroring write operations across more than one data storage device. It should be noted that, for example, as will be appreciated by those skilled in the art upon reading the present descriptions, a "mirroring" write operation across storage devices refers to a process that mediates differences in copies of the same data at two different storage locations. Thus, it is desirable that the various aspects included herein be able to reduce the number of operations by allowing a host to communicate with multiple data storage devices in parallel. Similarly, the data storage devices can operate in parallel, and perform data synchronization processes therebetween independent of input from the host. This allows a control unit in each data storage device to assume responsibility for ensuring that data is propagated according to an intended data storage scheme, resulting in significant improvements over conventional processes, for example, as will be described in further detail below.

[0025] In one general aspect, a computer-implemented method is for mirroring a write operation across a primary data storage device and a secondary data storage device. The computer-implemented method includes receiving a first request from a host to perform a write operation, and performing the write operation. Metadata corresponding to the first request is sent to the secondary data storage device, and metadata corresponding to a second request to perform the write operation is also received from the secondary data storage device. Next, the second request is received from the host at the secondary data storage device. The metadata corresponding to the first and second requests is used to determine whether the write operation has been mirrored across the primary data storage device and the secondary data storage device. In response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, a response is sent to the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device.

[0026] In another general aspect, a computer program product is for mirroring a write operation across a primary data storage device and a secondary data storage device. The computer program product includes a computer readable storage medium having program instructions embodied therewith. Moreover, the program instructions can be read and / or executed by a processor to cause the processor to carry out the above method.

[0027] In yet another general aspect, a primary data storage device includes a processor and logic integrated with the processor, executable by the processor, or integrated with and executable by the processor. The logic is configured to perform the above method.

[0028] In another general aspect, a computer-implemented method is for mirroring a write operation across a primary data storage device and a secondary data storage device. The computer-implemented method includes receiving a first request from a host to perform a write operation, and performing the write operation. Metadata corresponding to the first request is sent to the primary data storage device. Metadata corresponding to a second request to perform the write operation is also received from the primary data storage device, where the second request is received from the host at the primary data storage device. The metadata corresponding to the first and second requests is used to determine whether the write operation has been mirrored across the primary data storage device and the secondary data storage device. Moreover, in response to determining that the write operation has been mirrored across the primary and secondary data storage devices, a response is sent to the primary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device.

[0029] In yet another general aspect, a computer-implemented method is for mirroring a write operation across a primary data storage device and a secondary data storage device. Here, the computer-implemented method includes sending a first request to perform a write operation to the primary data storage device, and sending a second request to perform the write operation to the secondary data storage device. A first response is received from the primary data storage device indicating that the write operation has been performed. Moreover, a second response is received from the secondary data storage device indicating that the write operation has been performed.

[0030] Figure 1 An architecture 100 is shown in accordance with an aspect. As shown Figure 1 A plurality of remote networks 102, including a first remote network 104 and a second remote network 106, are provided. A gateway 101 can be coupled between the remote networks 102 and a proximate network 108. In the context of the present architecture 100, the networks 104, 106 can each take any form including, but not limited to, a local area network (LAN), a wide area network (WAN) such as the Internet, public switched telephone network (PSTN), internal telephone network, etc.

[0031] In use, the gateway 101 acts as an entry point from the remote networks 102 to the proximate network 108. As such, the gateway 101 can function as a router that directs a given data packet to the gateway 101 and a switch that provides the actual path for the given packet to enter and exit the gateway 101.

[0032] Also included are at least one data server 114 coupled to the proximate network 108, and which is accessible from the remote networks 102 via the gateway 101. It should be noted that the data server(s) 114 can include any type of computing device / groupware. Coupled to each data server 114 is a plurality of user devices 116. The user devices 116 can also be directly connected to one of the networks 104, 106, 108. Depending on the specific aspect, such user devices 116 can include a host (e.g., as described herein), a desktop computer, a laptop computer, a handheld computer, a printer or any other type of logic. It should be noted that the user devices 111 can also be directly coupled to any of the networks in an aspect.

[0033] Peripheral devices 120 or a series of peripheral devices 120 (e.g., facsimile machines, printers, networked and / or local storage units or systems, etc.) can be coupled to one or more of the networks 104, 106, 108. It should be noted that databases and / or additional components can be utilized with and / or integrated into any type of network element coupled to the networks 104, 106, 108. In the context of the present description, a network element can refer to any component of a network.

[0034] In accordance with some aspects, the methods and systems described herein can be implemented on and / or emulate one or more other systems— such as a UNIX system emulating an IBM z / OS environment, a UNIX system hosting a MICROSOFT WINDOWS environment, a MICROSOFT WINDOWS system emulating an IBM z / OS environment, etc. In some aspects, such virtualization and / or emulation can be facilitated through the use of VMWARE software.

[0035] In more scenarios, one or more of the networks 104, 106, 108 can represent a cluster of systems commonly referred to as a "cloud." In cloud computing, shared resources, such as processing power, peripherals, software, data, servers, etc., are provided to any system in the cloud in an on-demand relationship, thereby allowing access and distribution of services across many computing systems. Cloud computing typically involves Internet connections between systems running in the cloud, but other technologies connecting the systems can also be used.

[0036] Figure 2 A representative hardware environment associated with a user device 116 and / or server 114 of Figure 1 is shown in accordance with one scenario. Such a figure illustrates a typical hardware configuration of a workstation having a central processing unit 210, such as a microprocessor, and a number of other units interconnected via a system bus 212.

[0037] Figure 2 The workstation shown in FIG. 1 includes a random access memory (RAM) 214, a read only memory (ROM) 216, an I / O adapter 218 for connecting peripheral devices such as disk storage units 220 to the bus 212, a user interface adapter 222 for connecting a keyboard 224, a mouse 226, a speaker 228, a microphone 232, and / or other user interface devices such as a touch screen and a digital camera (not shown) to the bus 212, communication adapter 234 for connecting the workstation to a communication network 235 (e.g., an Ethernet network), and a display adapter 236 for connecting the bus 212 to a display device 238. In one exemplary scenario, not limiting of the application, the disk storage unit 220 can be incorporated in a DS8000 disk storage provided by IBM (marketing offices at 1 New Orchard Rd., Armonk, New York 10504).

[0038] The workstation can have an operating system such as Microsoft Windows®, a MAC OS, a UNIX OS, etc. residing therein. It will be appreciated that a preferred scenario can also be implemented on platforms and operating systems other than those mentioned. A preferred scenario can be written using assembly language, C, and / or C++ language, or other programming languages, along with an object-oriented programming methodology. Object-oriented programming (OOP), which has become increasingly used to develop complex applications, can be used.

[0039] Referring now to Figure 3 , a storage system 300 is shown in accordance with one scenario. It is noted that, in accordance with various scenarios, Figure 3Some of the elements shown in FIG. 3 can be implemented as hardware and / or software. Storage system 300 can include a storage system manager 312 for communicating with a plurality of media and / or drives on at least one higher storage tier 302 and at least one lower storage tier 306. Higher storage tier 302 can preferably include one or more random and / or direct access media 304, such as hard disks in a hard disk drive (HDD), non-volatile memory (NVM), solid state memory in a solid state drive (SSD), flash memory, arrays of SSDs, arrays of flash memory, and / or other storage media as noted herein or known in the art. Lower storage tier 306 can preferably include one or more lower performance storage media 308, including sequential access media such as magnetic tape in a tape drive and / or optical media, slower access HDDs, slower access SSDs, and / or other storage media as noted herein or known in the art. One or more additional storage tiers 316 can contain any combination of storage media as desired by the designer of system 300. Also, any of higher storage tier 302 and / or lower storage tier 306 can contain some combination of storage devices and / or storage media.

[0040] Storage system manager 312 can communicate with drives and / or storage media 304, 308 on higher storage tier 302 and lower storage tier 306 over a network 310, such as a storage area network (SAN) as shown, or some other suitable network type. Storage system manager 312 can also communicate with one or more host systems (not shown) over a host interface 314, which can or can not be part of storage system manager 312. Storage system manager 312 and / or any other component of storage system 300 can be implemented in hardware and / or software, and can utilize a processor (not shown) for executing commands of the type known in the art, such as a central processing unit (CPU), field programmable gate array (FPGA), application specific integrated circuit (ASIC), and / or the like. Of course, any arrangement of storage system can be used, as will be apparent to those skilled in the art upon reading the present specification. Figure 3

[0041] ​In more schemes, the storage system 300 can include any number of data storage tiers, and can include the same or different storage media within each storage tier. For example, each data storage tier can include the same type of storage media, such as HDDs, SSDs, sequential access media (magnetic tape in a tape drive, optical disk in an optical disk drive, etc.), direct access media (CD-ROM, DVD-ROM, etc.), or any combination of media storage types. In one such configuration, the higher storage tier 302 can include a majority of SSD storage media for storing data in a higher performance storage environment, and the remaining storage tiers, including the lower storage tier 306 and the additional storage tier 316, can include any combination of SSDs, HDDs, tape drives, etc. for storing data in a lower performance storage environment. In this scheme, more frequently accessed data, data having a higher priority, data requiring more rapid access, etc. can be stored to the higher storage tier 302, while data not having one of these attributes can be stored to the additional storage tier 316, including the lower storage tier 306. Of course, one skilled in the art, upon reading this description, can devise many other combinations of storage media types to implement different storage schemes in accordance with the schemes presented herein.

[0042] According to some schemes, a storage system, such as 300, can include logic configured to receive a request to open a data set, logic configured to determine whether the requested data set is divided into a plurality of associated portions stored to a lower storage tier 306 of the tiered data storage system 300, logic configured to transfer each associated portion of the requested data set to a higher storage tier 302 of the tiered data storage system 300, and logic configured to assemble the requested data set from the associated portions on the higher storage tier 302 of the tiered data storage system 300.

[0043] Of course, according to various schemes, this logic can be implemented as a method or computer program product on any device and / or system.

[0044] As previously mentioned, multiple storage devices are implemented to maintain one or more redundant copies of data, increasing data preservation. These redundant copies of data are particularly useful in the event that a primary storage location becomes unavailable and / or experiences data loss. In some cases, a recovery storage location is able to assume operational responsibilities in response to a determination that the primary storage location is unable to assume operational responsibilities.

[0045] However, conventional data replication systems do experience some performance setbacks in implementing user I / O requests across multiple storage devices. In such conventional systems, a primary storage location forwards I / O requests received from a user to a secondary storage location for implementation. While this data storage scheme does improve data preservation, the result is a significant increase in processing overhead to satisfy additional requests. For example, I / O requests are transmitted between each location, resulting in performance delays that increase as the number of locations implemented increases.

[0046] Further, failure events experienced at any location and / or connections extending therebetween interrupt the transmission of I / O requests therebetween, causing more than one copy of the data to become out of sync. In turn, this must be remedied before the system resumes operation, introducing additional performance delays. However, the manner in which the data becomes out of sync and the area to which it extends varies depending on when and where the failure event is experienced. This increases the complexity of the recovery process. For example, once the failure is repaired, all I / O requests in progress when the failure event occurred are repeated at all locations.

[0047] In contrast to the foregoing drawbacks experienced by conventional data replication systems, various of the schemes included herein are capable of efficiently maintaining more than one copy of data across more than one data storage location. Thus, for example, the implementation of I / O requests received from a user (e.g., host) across data storage locations, as will be described in further detail below, does not experience the performance delays that plague conventional systems nor does it compromise data preservation.

[0048] Referring to Figure 4 , a distributed data storage system 400 according to one scheme is shown. As an option, the present distributed data storage system 400 can be implemented in conjunction with features of any other scheme listed herein— such as those described with reference to other figures— as appropriate. However, such distributed data storage system 400 and other systems presented herein can be used in a variety of applications and / or permutations that can or can not be specifically described in the illustrative schemes listed herein. Further, the distributed data storage system 400 presented herein can be used in any desired environment. Thus, Figure 4 (and other figures) can be considered to include any possible permutations.

[0049] As shown, the distributed data storage system 400 includes a primary data storage device 402 and a secondary data storage device 404, both of which are connected to a network 406. A host 408 location is also connected to the network 406, which can be any type of network as desired. For example, in some aspects, the network 406 is a WAN, such as the Internet. However, an illustrative list of other network types that the network 406 can implement includes, but is not limited to, a LAN, a PSTN, a SAN, an internal telephone network, etc. Thus, the primary data storage device 402, the secondary data storage device 404, and the host 408 are able to communicate with one another despite the degree of separation between them, e.g., despite being located in different geographic locations.

[0050] While in some aspects each of the data storage devices 402, 404 and the host 408 can communicate with one another over the same single network 406, it should be noted that more than one network can be implemented between any two or more of the data storage devices 402, 404 and the host 408. For example, the host 408 can communicate with each of the data storage devices 402, 404 over the network 406, while the primary data storage device 402 and the secondary data storage device 404 can communicate with one another over a separate network and / or physical electrical connection that can extend therebetween. Thus, as shown, the network 406 is by no means limiting and can in fact include multiple different networks, e.g., as shown. Figure 4 Figure 1

[0051] Each of the primary and secondary data storage devices 402, 404 includes a controller 410 (e.g., a processor) coupled to a memory array 412. Depending on the particular aspect, the memory array 412 included in each of the primary and secondary data storage devices 402, 404 can be composed of different types of storage components 414. For example, in some aspects, the memory array 412 in the primary data storage device 402 includes higher performance storage components than those included in the secondary data storage device 404. It should be noted that for purposes of this description, "higher performance" can be measured with respect to achievable throughput, performance latency, reliability factors, etc. In other words, the primary data storage device 402 includes storage components having higher achievable throughput, lower performance latency, higher reliability factors, etc. than those included in the secondary data storage device 404.

[0052] ​​In some aspects, the host 408 serves as an interface between users and the distributed data storage system 400. As such, the host 408 receives and processes I / O requests initiated by one or more users. As such, the host 408 includes a controller 416 (e.g., a processor) having a sufficiently high achievable throughput to process the received data. The controller 416 is further coupled to a memory 418, which can be used to at least temporarily store information (e.g., data, I / O requests, metadata, etc.) in a queue. However, in some aspects, the host 408 can actually be a z14 mainframe provided by IBM (sales office located at 1 New Orchard Rd., Armonk, New York 10504).

[0053] Again, various aspects of the aspects contained herein can effectively maintain more than one copy of data across more than one data storage location. As such, the distributed data storage system 400 and the components included therein can desirably mirror I / O operations across primary and secondary data storage devices in an efficient and effective manner. Each of the primary and secondary data storage devices maintains a copy of the same data and assumes responsibility for keeping the copies synchronized, even in the event of a failure event during which an update (e.g., a write operation) is performed, for example, as will be described in further detail below.

[0054] For example, now referring to Figure 5A , a flowchart of a computer-implemented method 500 for mirroring write operations across more than one data storage device is shown, in accordance with one aspect. The method 500 can be performed in accordance with the present disclosure in any of the environments depicted in Figures 1-4 , in accordance with various aspects. Of course, as will be appreciated by one of ordinary skill in the art after reading the present descriptions, more or fewer operations can be included in the method 500 than those specifically described in Figure 5A .

[0055] Each step of the method 500 can be performed by any suitable component of the operating environment. For example, each of the nodes 501, 502, 503 shown in the flowchart of the method 500 can correspond to one or more processors located at different locations in a multi-tiered data storage system. Further, each of the one or more processors is preferably configured to communicate with one another.

[0056] In various aspects, the method 500 can be performed in part or in whole by a controller, processor, or the like, or some other device having one or more processors therein. A processor (e.g., processing circuitry, a chip, and / or a module implemented in hardware and / or software and preferably having at least one hardware component) can be used in any device to perform one or more steps of the method 500. Illustrative processors include, but are not limited to, a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc., combinations thereof, or any other suitable computing device known in the art.

[0057] As noted above, Figure 5A include different nodes 501, 502, 503, each of which represents one or more processors, controllers, computers, or the like positioned at different locations in a multi-tiered data storage system. For example, the node 501 can include one or more processors electrically coupled to a host location (e.g., see host 408 above Figure 4 ) of a distributed data storage system. The node 502 can include one or more processors electrically coupled to a primary data storage device (e.g., see 402 above Figure 4 ) of a distributed data storage system. Further, the node 503 can include one or more processors electrically coupled to a secondary data storage device (e.g., see 404 above Figure 4 ) of a distributed data storage system. Thus, depending on the particular aspect, commands, data, requests, and the like can be sent between each of the nodes 501, 502, 503. Further, it should be noted that the different processes included in the method 500 are not limiting, e.g., as will be appreciated by one of skill in the art upon reading the present specification. For example, in some aspects, the data sent from the node 502 to the node 503 is preceded by a request sent from the node 503 to the node 502.

[0058] As shown, operation 504 of the method 500 is performed by one or more processors at the node 501 and includes sending a first request to perform a write operation to the node 502. Similarly, a second request to perform the same write operation is sent to the node 503 in operation 506. It should be noted that the requests sent in operations 504 and 506 correspond to the same write operation. In other words, the same write operation is sent to the node 502 as well as the node 503. In some aspects, the first and second requests to perform the write operation are sent in parallel, while in other aspects, the first and second requests to perform the write operation are sent sequentially, separately, or the like, depending on the desired aspect.

[0059] Each of the requests to perform the write operation also contains metadata that is received with the request itself. For example, the first and second requests sent in operations 504 and 506, respectively, correspond to the same write operation and are thus related to each other. This relationship between the first and second requests is reflected in the metadata received with the requests and can be used to identify how the two requests correspond to each other.

[0060] Furthermore, the first and second requests preferably result in the same write operation being performed at the primary data storage device and the secondary data storage device, which can be viewed as a form of mirroring (e.g., software mirroring). Thus, the term "mirroring" as used herein refers to the process of selectively performing the same write operation at more than one different data storage device. By querying the data storage devices to which the write operation was sent, it can be further determined (e.g., by the control unit) whether the write operation has been "coordinated." For example, as will be described in further detail below, in response to successfully mirroring the write operation, the data storage devices can respond by indicating that the write operation has in fact been "coordinated."

[0061] Looking at node 502, in response to receiving the first request to perform the write operation from the host at node 501, operation 508 includes actually performing the write operation. The write operation can be performed using any data logging process that would be apparent to one of skill in the art upon reading the present specification. Furthermore, operation 510 includes sending a response to the host at node 501 indicating that the write operation has been successfully performed at the primary data storage device.

[0062] Now looking at node 503, in response to receiving the second request to perform the write operation from node 501, operation 512 includes actually performing the write operation at the secondary data storage device. Again, the write operation can be performed using any data logging process that would be apparent to one of skill in the art upon reading the present specification. Furthermore, operation 514 includes sending another response to the host at node 501 indicating that the write operation has been successfully performed at the secondary data storage device.

[0063] From the perspective of the host at node 501, in response to receiving the successfully completed response (e.g., notification), it is determined that the write operation has been effectively mirrored (e.g., in the context of software mirroring). Thus, from the perspective of the host at node 501, in response to receiving the responses in operations 510, 514, it is determined that the write operation has been successfully completed. However, looking at the primary storage device and the secondary storage device at nodes 502, 503, respectively, the write operation is not considered to have been completed until each device receives an indication from the other device that the write operation has been successfully completed, as will be described in further detail below (e.g., see operations 532, 534).

[0064] The responses sent to the host in operations 510 and 514 can be the same, similar or different from each other. In other words, the type of response sent in operations 510 and 514, the amount of information included in each response, the type of information included in each response, etc., can be the same, similar or different from each other. According to one arrangement, which is not limiting of the present application, the responses sent to the host in operations 510 and 514 are channel end / device end completion status.

[0065] Continuing to operation 516, a copy of the metadata corresponding to the second request to perform a write operation is sent from node 503 to node 502. The metadata received from node 503 is thereby stored in memory at node 502. Similarly, a copy of the metadata corresponding to the first request to perform a write operation is sent from node 502 to node 503. See operation 520. Further to operation 522, the metadata received at node 503 is further stored in memory. Thus, each of nodes 502, 503 includes metadata corresponding to both requests issued by the host at node 501. At least some of the metadata sent between the primary and secondary data storage devices is preferably of the same type, thereby allowing meaningful comparisons to be made. Further, depending on the desired arrangement, the metadata corresponding to the first and / or second request to perform a write operation can include a time stamp (e.g., "time of day" information), a hash table or table of contents uniquely identifying the request, a storage location identification (e.g., in cccccCCChr format), etc.

[0066] The process of storing metadata in memory at each of the primary and secondary data storage devices can also vary from arrangement to arrangement. For example, in some arrangements, metadata can accumulate in memory over time. In other arrangements, the consumption of data storage capacity can be more of a priority, whereby only a certain amount of metadata can be stored in memory. In yet other arrangements, metadata corresponding to data that has been overwritten, deleted, modified, etc. as a result of performing a write operation, is overwritten by metadata corresponding to the write operation performed. In other words, metadata corresponding to a previous write operation request is overwritten by metadata corresponding to a subsequent write operation request involving the same record (e.g., file) as the previous request. Thus, any I / O requests received corresponding to metadata that has been overwritten since can be confidently ignored.

[0067] Continuing with reference to Figure 5AThus, each of the corresponding nodes 502 and 503 can evaluate the combination of metadata corresponding to the first and second requests for performing the write operation to determine whether the write operation has been successfully mirrored across the primary and secondary data storage devices. For example, decision 524, performed by node 502, includes determining whether the write operation has been mirrored across the primary and secondary data storage devices. In other words, decision 524 includes determining whether any differences between the copies of data at the primary and secondary data storage devices have been reconciled. In a preferred embodiment, this determination is made using metadata corresponding to the first and second requests for performing the write operation. For example, in some embodiments, hash values ​​corresponding to the first and second requests are used to identify what data has been written to memory. Furthermore, in some embodiments, metadata identifying the location in memory where the data in the write operation is actually stored is compared between the primary and secondary data storage devices.

[0068] Similarly, node 503 performs decision 526, which includes determining whether the write operation has been successfully mirrored across the primary and secondary data storage devices. As described above, this determination is preferably performed using metadata corresponding to the first and second requests that performed the write operation (e.g., using any scheme described herein).

[0069] Therefore, determinations 524 and 526 involve making the same or similar determinations regarding whether the data at both the primary and secondary data storage devices matches due to the execution of write operations corresponding to the requests initially received from the host. In other words, the primary and secondary data storage devices are synchronized with each other (e.g., cross-validated) to determine whether the data has been coordinated at both locations, thereby ensuring that the data is identical at both locations.

[0070] It should also be noted that, although Figure 5A The processes shown appear to be executed in a specific order or sequence, but this is by no means limiting. For example, looking at operations 504 and 506, the first and second requests to perform the same write operation can be sent together (e.g., in parallel), asynchronously, sequentially, and so on. Similarly, for example, depending on when a corresponding request to perform a write operation is received, the write operation can be performed asynchronously at each of the primary and secondary data storage devices.

[0071] As noted above, determining whether a write operation has been mirrored across the primary and secondary data storage devices involves utilizing metadata corresponding to the requests sent to each of the devices. Thus, in some approaches, performing decisions 524 and / or 526 involves whether the metadata was actually received by the respective data storage device. However, in other approaches, decisions 524 and / or 526 can be performed in response to waiting a predetermined amount of time after receiving the respective request to perform the write operation, receiving the command from the host, etc.

[0072] In response to determining that the write operation has not been mirrored on the primary and secondary data storage devices, method 500 proceeds from decision 524 to operation 528. Here, operation 528 involves waiting a predetermined amount of time before returning to decision 524 to determine whether the discrepancy in the data has been reconciled. Similarly, method 500 proceeds from decision 526 to operation 530 in response to determining that the write operation has not been mirrored on the primary and secondary data storage devices. Here, operation 530 also involves waiting a predetermined amount of time before returning to decision 526 to determine whether the discrepancy in the data has been reconciled.

[0073] The inability to properly reconcile the copies of the data at the primary and secondary data storage devices can be caused by a number of different circumstances. For example, the connection between the host and one or more of the data storage devices can be impaired, thereby preventing the receipt of the request to perform the write operation at one or more of the data storage devices. In such a case, method 500 can simply continue to wait for the impaired connection to be repaired. In other instances, the connection between the primary and secondary data storage devices themselves can be impaired, thereby preventing the transfer of the metadata between them. In these cases, method 500 can continue to wait for the connection extending between the data storage devices themselves to be repaired. In yet other approaches, the host, primary data storage device, and / or secondary data storage device can be offline, e.g., in response to experiencing a failure event. Thus, method 500 can continue to wait for one or more of the physical components themselves to be restarted and / or repaired. In response to resuming normal operation, the write operations performed on the functioning device during the time the failing device was offline can be specifically identified (e.g., in the incremental update document) and performed in an incremental resynchronization type of process.

[0074] In the event that operations 528 and / or 530 are repeated a predetermined number of times, method 500 can take other actions. For example, in response to determining that the data at each of the primary and secondary data storage devices remains out of sync after the predetermined number of retries, the mirroring relationship between the primary and secondary data storage devices can be terminated, at least temporarily, for example, so that a data recovery protocol can be entered. The data recovery protocol implemented depends on the reason that the write operation was not successfully mirrored across the data storage devices. For example, the data recovery protocol can involve checking and repairing the connection between the host and the data storage devices. In other arrangements, the transfer of metadata corresponding to the write operation request between the primary and secondary data storage devices can be retried. In still other arrangements, the host can also be prompted to reissue the write operation request together.

[0075] In still other arrangements, the recovery protocol can ensure that the data corresponding to the write operation is successfully mirrored across the primary and secondary data storage devices, whereupon method 500 can end. However, it should be noted that while method 500 can effectively end upon the performance of a given operation, any one or more of the processes included in method 500 can be repeated for the mirroring of other write operations across the data storage devices. In other words, any one or more of the processes included in method 500 can be repeated for a subsequently received write operation.

[0076] Returning to decision 526, the method proceeds to operation 532 in response to determining that the write operation has been mirrored across the primary and secondary data storage devices. Here, operation 532 includes sending a response to the primary data storage device at node 502 that indicates that the secondary data storage device has determined that the write operation has been successfully reconciled on the primary and secondary data storage devices. In other words, a write completion acknowledgement is sent from the secondary data storage device to the primary data storage device that indicates that the data has been reconciled between the data storage devices as determined by the secondary data storage device. As such, the primary data storage device is informed that the data stored in each of the primary and secondary data storage devices has been updated in accordance with the write operation. Similarly, method 500 proceeds from decision 524 to operation 534 in response to determining that the write operation has been mirrored across the primary and secondary data storage devices. Here, operation 534 includes sending another response to the secondary data storage device at node 503 that indicates that the primary data storage device has determined that the write operation has been successfully reconciled on the primary and secondary data storage devices.

[0077] In response to the primary and secondary data storage devices receiving responses from each other that indicate that the write operation has been successfully coordinated between them, in response to these responses indicating that the write operation has been successfully coordinated between them, it can be concluded that the data has been successfully coordinated in each data storage device. Thus, other steps based on this information can be performed as needed, such as sending subsequent write commands, advancing I / O buffers, updating logical-to-physical tables, etc.

[0078] Thus, it is expected that the various schemes described above with respect to method 500 can reduce the number of operations by allowing the host to communicate with the primary and secondary data storage devices in parallel. For example, various ones of the schemes described herein can enable a reduction in overhead as compared to conventional data replication systems. Similarly, the primary and secondary data storage devices can operate in parallel and perform synchronization procedures therebetween independent of input from the host. This allows the data storage devices to assume responsibility for ensuring that data is propagated in accordance with the intended data storage scheme. As a result of proactively ensuring that data is mirrored across multiple data storage devices, network traffic is reduced, and data retention is improved. Thus, it is preferable to apply various ones of the processes of these schemes to all write operations received from the host (e.g., all application writes).

[0079] As noted above, a failure can occur during the process of mirroring a write operation across the primary and secondary data storage devices, in which case various data recovery protocols can be implemented to repair the communication channels between locations in the overall distributed storage system, the central network, failed physical components and / or software implemented thereon, etc. Further, a subsequent write operation request can be received prior to the current write operation having been successfully implemented. These write operation requests are preferably processed and staged such that metadata corresponding thereto is stored in memory and scheduled for implementation. Further, read operation requests received while a write operation is being performed are preferably deferred for execution at a later time, as will be disclosed shortly below.

[0080] For example, Figure 5B A method 550 for evaluating received read requests is shown in accordance with one scheme. Method 550 is introduced below in the context of the distributed data storage system referenced above in method 500, and is thus incorporated by reference with respect to the various components shown in Figure 4 However, in various schemes, any of the processes included in method 550 can be performed in any of the environments shown in Figures 1-5A and / or the like in accordance with the present application. Of course, as will be appreciated by one of ordinary skill in the art upon reading the present disclosure, more or less operations can be included in method 550 than those specifically described in Figure 5B

[0081] ​Each step of the method 550 can be performed by any suitable component of the operating environment. For example, in various approaches, the method 550 can be performed in part or in whole by a controller, a processor, or some other device having one or more processors therein. A processor (e.g., processing circuitry, a chip, and / or a module implemented in hardware and / or software and preferably having at least one hardware component) can be used in any device to perform one or more steps of the method 550. Illustrative processors include, but are not limited to, a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc., combinations thereof, or any other suitable computing device known in the art.

[0082] As shown, operation 552 of the method 550 includes actually receiving the read request. The read request can be received at the primary and / or secondary data storage devices depending on the given approach. For example, the primary data storage device can act as the active data storage device responsible for satisfying data queries, such as read requests received during system operation. Moreover, the read request can be received from the host at any point in time. A request to read a particular data set (e.g., file or record) can even be received before the data has been coordinated across the primary and secondary data storage devices. Figure 5B

[0083] Accordingly, the decision 554 includes determining whether the data specified in the read request has been coordinated between the primary and secondary data storage devices. In other words, the decision 554 involves determining whether the data specified in the read request has been written to both the primary and secondary data storage devices and, thus, whether the data has been coordinated from the perspective of the storage devices before allowing the read request to be satisfied. In some approaches, this determination is made by checking a logical-to-physical table that tracks what data has been coordinated between the primary and secondary data storage devices. In other approaches, the determination can also be made by checking an I / O log that stores write operation requests received at the storage devices, actually checking the memory (e.g., performing a probing read operation), etc. It should also be noted that the mirroring relationship between the primary and secondary data storage devices remains valid, thereby ensuring that the data in each data storage device remains successfully coordinated.

[0084] In response to determining that the data specified in the read request has not been coordinated between the primary and secondary data storage devices, the method 550 proceeds from the decision 554 to an operation 556. Here, the operation 556 includes delaying the read request. Preferably, the read request is delayed until the data specified in the read request is coordinated between the primary and secondary data storage devices. Thus, the read request can be temporarily held in a buffer for a predetermined amount of time.

[0085] ​Method 550 returns from operation 556 to decision 554, such that the determination for data corresponding to a read request can be repeated. Processes 554 and 556 can then be repeated any number of times until it is determined that the data specified in the read request has been reconciled between the primary and secondary data storage devices. However, in some arrangements, a response indicating that the read request failed can be returned to the host in response to performing a predetermined number of determinations 554, after a predetermined amount of time has elapsed, after a pre-specified amount of time has elapsed, upon an inability to access the requested data (e.g., recognizing a memory failure and / or data loss), etc.

[0086] Method 550, however, proceeds from decision 554 to operation 558 in response to determining that the data specified in the read request has been reconciled across the primary data storage device and the secondary data storage device. Here, operation 558 includes actually performing the read operation by accessing the requested data from memory and providing (e.g., returning) the requested data to the host. As described above, one of the primary data storage device and the secondary data storage device acts as the "active" device for performing received read requests, while the other of the data storage devices acts as the "redundant" device. Thus, the processes in method 550 can be performed by the active one of the data storage devices. However, if the active one of the data storage devices goes offline, e.g., in response to experiencing a failure event, the redundant device can assume the operational responsibilities, at least temporarily becoming the active device. Similarly, any permanent errors experienced on the active device are preferably redirected to the redundant device for implementation.

[0087] Thus, the processes in method 550 allow for operational efficiency of the overall system by substantially eliminating situations in which a read operation is attempted only to find that the data intended to be read has not yet been stored in memory, has not yet been updated in accordance with a modification write operation, etc. Moreover, method 550 can be implemented in conjunction with the processes in method 500 without causing any disruption to performance. The latency reduction and data preservation achieved by the arrangements described above with respect to method 500 can be combined with the read performance improvements achieved by the arrangements described with respect to method 550, which is particularly desirable.

[0088] Again, it is expected that various ones of the schemes included herein can reduce the number of operations by allowing the host to communicate in parallel with multiple data storage devices. Similarly, the data storage devices can operate in parallel, and perform data synchronization processes therebetween independent of input from the host. This allows the control unit in each data storage device to assume the responsibility of ensuring that data is propagated as expected by the data storage scheme. Moreover, the control unit can communicate asynchronously in implementing I / O requests. As a result of proactively ensuring that data is mirrored across multiple data storage devices, this reduces network traffic and also improves data retention. Thus, it is desirable that various ones of the schemes be applied to all write operations received from the host (e.g., all application writes).

[0089] It should also be noted that the various schemes included herein are not intended to limit the present application. For example, although many of the schemes are described above in the context of a distributed data storage system having a host and two data storage devices, any number of data storage devices can be implemented. For example, a third copy of certain data (e.g., data deemed to be particularly "important") can be maintained in a third data storage device connected to the same network as the other storage devices. Similarly, although various ones of the processes described above are performed for each I / O request received, any number of I / O requests can be aggregated for processing together.

[0090] The present application can be a system, a method, and / or a computer program product at any possible technical detail level of integration. The computer program product can include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present application.

[0091] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium can be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non- exhaustive list of more specific examples of the computer readable storage medium include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.

[0092] Computer readable program instructions described herein can be downloaded to respective computing / processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and / or a wireless network. The network can comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the network and forwards the computer readable program instructions to a computer readable storage medium within the respective computing / processing device for storage and / or execution.

[0093] Computer readable program instructions for carrying out operations of the present application can be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like and procedural programming languages such as the "C" programming language or similar programming languages. The computer readable program instructions can execute entirely on a user's computing device, partly on the user's computing device, as a stand-alone software package, partly on the user's computing device and partly on a remote computing device or entirely on the remote computing device or server. In the latter scenario, the remote computing device can be connected to the user's computing device through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection can be made to an external computing device, for example, through the Internet using an Internet Service Provider. In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) can execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present application.

[0094] The computer readable program instructions can also be loaded onto a computing / processing device, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computing / processing device, other programmable apparatus or other device to produce a computer implemented process such that the instructions which execute on the computing / processing device, other programmable apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0095] These computer readable program instructions can be provided to a processor of a computer, or other programmable data processing apparatus, to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks. These computer readable program instructions can also be stored in a computer readable storage medium that can include, without limitation, random access memory (RAM), read only memory (ROM), electrically erasable programmable read only memory (EEPROM), flash memory or other data storage device. When the computer readable program instructions are executed by the computer or other programmable data processing apparatus, the computer readable program instructions, more specifically functions / acts, direct the computer or other programmable data processing apparatus to implement the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0096] The computer readable program instructions can also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable data processing apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0097] The flow diagrams and block diagrams in the drawings are representative of the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to the present application. In this regard, each block in the flow diagrams or block diagrams can represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical functions (or action). In some alternative implementations, the functions noted in the blocks can occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks can sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

[0098] Further, systems according to different embodiments can include a processor and logic integrated with the processor and / or executable by the processor, the logic being configured to perform one or more of the processing steps described herein. The processor can have any configuration as described herein, such as a discrete processor or processing circuit including many components (such as processing hardware, memory, I / O interfaces, etc.). Integrated with the processor means that the processor has logic embedded therein as hardware logic, such as an application specific integrated circuit (ASIC), FPGA, etc. Executable by the processor means that the logic is hardware logic; software logic such as a part of firmware, a part of an operating system, a part of an application, etc.; or some combination of hardware and software logic, accessible to the processor and configured so as to cause the processor to perform some function when executed by the processor. The software logic can be stored on local and / or remote memories of any type as known in the art. Any processor as known in the art can be used, such as a software processor module and / or a hardware processor such as an ASIC, FPGA, central processing unit (CPU), integrated circuit (IC), graphics processing unit (GPU), etc.

[0099] It will be clear that different features of the foregoing systems and / or methods can be combined in any combination, creating a plurality of combinations from the descriptions presented above.

[0100] It should also be appreciated that embodiments of the application can be provided in the form of services deployed on behalf of customers to provide services on demand.

[0101] The description of various embodiments of the application has been presented for purposes of illustration but is not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technology found in the marketplace, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. A computer-implemented method for mirroring write operations across a primary data storage device and a secondary data storage device, comprising: receiving a first request from a host to perform a write operation; performing the write operation; sending metadata corresponding to the first request to the secondary data storage device; receiving metadata corresponding to a second request from the secondary data storage device to perform the write operation, wherein the second request is received at the secondary data storage device from the host; determining, using the metadata corresponding to the first request and the second request, whether the write operation has been mirrored across the primary data storage device and the secondary data storage device; and in response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, sending a response to the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device, in response to the secondary data storage device determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, receiving a response from the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device.

2. The computer-implemented method of claim 1, comprising: wherein, the secondary data storage device performs the write operation in response to receiving the second request to perform the write operation, wherein the secondary data storage device uses the metadata corresponding to the first request and the second request to determine whether the write operation has been coordinated between the primary data storage device and the secondary data storage device.

3. The computer-implemented method of claim 1, comprising: receiving a read request; determining whether data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device; in response to determining that the data specified in the read request has not been coordinated between the primary data storage device and the secondary data storage device, delaying performance of the read request; and in response to determining that the data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device, performing the read operation.

4. The computer-implemented method of claim 1, comprising: sending a response to the host indicating that the write operation has been performed prior to determining whether the write operation has been coordinated between the primary data storage device and the secondary data storage device. The metadata corresponding to the first request comprises information selected from the group consisting of a timestamp, a hash value, and a storage location identifier, wherein the metadata corresponding to the second request comprises information selected from the group consisting of a timestamp, a hash value, and a storage location identifier.

5. The computer-implemented method of claim 1, wherein, 6. The computer-implemented method of claim 1, comprising: storing the metadata corresponding to the first request in a memory, wherein the metadata corresponding to the first request is overwritten by metadata corresponding to a subsequent request to perform a write operation to a same record as the first request. The process of determining, using the metadata corresponding to the first request and the second request, whether the write operation has been mirrored across the primary data storage device and the secondary data storage device is performed for all write operation requests received from the host.

7. The computer-implemented method of claim 1, wherein, ​ 8. A computer program product for mirroring write operations across a primary data storage device and a secondary data storage device, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions readable and / or executable by a processor to cause the processor to: receive, by the processor, a first request from a host to perform a write operation; perform, by the processor, the write operation; send, by the processor, metadata corresponding to the first request to the secondary data storage device; receive, by the processor, metadata corresponding to a second request to perform the write operation from the secondary data storage device, wherein the second request is received at the secondary data storage device from the host; determine, by the processor, using the metadata corresponding to the first request and the second request, whether the write operation has been mirrored across the primary data storage device and the secondary data storage device; and in response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, send, by the processor, a response to the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device, receive, by the processor, a response from the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device in response to the secondary data storage device determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device.

9. The computer program product of claim 8, the program instructions readable and / or executable by the processor to cause the processor to: perform, by the secondary data storage device, the write operation in response to receiving the second request to perform the write operation, wherein the secondary data storage device determines, using the metadata corresponding to the first request and the second request, whether the write operation has been mirrored across the primary data storage device and the secondary data storage device.

10. The computer program product of claim 8, the program instructions readable and / or executable by the processor to cause the processor to: receive, by the processor, a read request; determine, by the processor, whether data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device; in response to determining that the data specified in the read request has not been coordinated between the primary data storage device and the secondary data storage device, delay, by the processor, performance of the read request; and in response to determining that the data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device, perform, by the processor, the read operation.

11. The computer program product of claim 8, the program instructions readable and / or executable by the processor to cause the processor to: send, by the processor, a response to the host indicating that the write operation has been performed prior to determining whether the write operation has been coordinated between the primary data storage device and the secondary data storage device. The metadata corresponding to the first request includes information selected from the group consisting of: a timestamp, a hash value, and a storage location identification, wherein the metadata corresponding to the second request includes information selected from the group consisting of: a timestamp, a hash value, and a storage location identification.

13. The computer program product of claim 8, the program instructions readable and / or executable by the processor to cause the processor to: ​ ​ ​ wherein ​ ​ ​ ​ ​ ​ ​ ​ ​ 12. The computer program product of claim 8, wherein, ​ ​ storing, by the processor, metadata corresponding to the first request in the memory, wherein overwriting, by the metadata corresponding to a subsequent request to perform a write operation to the same record as the first request, the metadata corresponding to the first request.

14. The computer program product of claim 8, wherein, performing, for all write operation requests received from the host, a process to determine whether a write operation has been mirrored across the primary data storage device and the secondary data storage device using metadata corresponding to the first request and the second request.

15. A primary data storage device, comprising: a processor; and logic integrated with the processor, executable by the processor, or integrated with and executable by the processor, the logic being configured to: receive, by the processor from the host, a first request to perform a write operation; perform, by the processor, the write operation; send, by the processor to the secondary data storage device, metadata corresponding to the first request; receive, by the processor from the secondary data storage device, metadata corresponding to a second request to perform the write operation, wherein the second request is received from the host at the secondary data storage device; determine, by the processor using the metadata corresponding to the first request and the second request, whether the write operation has been mirrored across the primary data storage device and the secondary data storage device; and in response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, send, by the processor to the secondary data storage device, a response indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device, the logic being further configured to: receive, by the processor from the secondary data storage device, a response indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device in response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device.

16. The master data storage device of claim 15, wherein, the secondary data storage device performs the write operation in response to receiving the second request to perform the write operation, wherein the secondary data storage device determines whether the write operation has been mirrored across the primary data storage device and the secondary data storage device using the metadata corresponding to the first request and the second request.

17. The primary data storage device of claim 15, the logic being configured to: receive, by the processor, a read request; determine, by the processor, whether data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device; in response to determining that the data specified in the read request has not been coordinated between the primary data storage device and the secondary data storage device, delay, by the processor, performance of the read request; and in response to determining that the data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device, perform, by the processor, the read operation.

18. The primary data storage device of claim 15, the logic being configured to: send, by the processor to the host, a response indicating that the write operation has been performed prior to determining whether the write operation has been coordinated between the primary data storage device and the secondary data storage device.

19. The master data storage device of claim 15, wherein, the metadata corresponding to the first request contains information selected from the group consisting of: a timestamp, a hash value, and a storage location identification, wherein the metadata corresponding to the second request contains information selected from the group consisting of: a timestamp, a hash value, and a storage location identification.

20. The primary data storage device of claim 15, the logic configured to: store, by the processor, metadata corresponding to the first request in the memory, wherein, overwrite the metadata corresponding to the first request with metadata corresponding to a subsequent request that performs a write operation to the same record as the first request.

21. The master data storage device of claim 15, wherein, perform, for all write operation requests received from the host, a process that uses metadata corresponding to the first request and the second request to determine whether the write operation has been mirrored across the primary data storage device and the secondary data storage device.

22. A computer-implemented method for mirroring write operations across a primary data storage device and a secondary data storage device, comprising: receiving, from a host, a first request to perform a write operation; performing the write operation; sending metadata corresponding to the first request to the primary data storage device; receiving, from the primary data storage device, metadata corresponding to a second request to perform the write operation, wherein the second request is received from the host at the primary data storage device; using the metadata corresponding to the first request and the second request to determine whether the write operation has been mirrored across the primary data storage device and the secondary data storage device; and in response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, sending, to the primary data storage device, a response indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device, in response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, receiving, from the primary data storage device, a response indicating that the write operation has been coordinated across the primary data storage device and the secondary data storage device.

23. The computer-implemented method of claim 22, wherein, the primary data storage device performing the write operation in response to receiving the second request to perform the write operation, wherein the primary data storage device uses the metadata corresponding to the first request and the second request to determine whether the write operation has been mirrored across the primary data storage device and the secondary data storage device.

24. The computer-implemented method of claim 22, comprising: receiving a read request; determining whether data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device; in response to determining that the data specified in the read request has not been coordinated between the primary data storage device and the secondary data storage device, delaying performance of the read request until the data specified in the read request has been coordinated on the primary data storage device and the secondary data storage device; and in response to determining that the data specified in the read request has been coordinated between the primary data storage device and the secondary data storage device, performing the read operation.

25. A computer-implemented method for mirroring write operations across a primary data storage device and a secondary data storage device, comprising: sending, to the primary data storage device, a first request to perform a write operation; sending, to the secondary data storage device, a second request to perform the write operation; receiving, from the primary data storage device, a first response indicating that the write operation has been performed; and receiving, from the secondary data storage device, a second response indicating that the write operation has been performed, ​ wherein the primary data storage device is further capable of sending, in response to determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, a response to the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device, wherein the primary data storage device is further capable of receiving, in response to the secondary data storage device determining that the write operation has been mirrored across the primary data storage device and the secondary data storage device, a response from the secondary data storage device indicating that the write operation has been coordinated between the primary data storage device and the secondary data storage device.

Citation Information

Patent Citations

  • Detecting and repairing inconsistencies in storage mirrors

    US7809898B1