BACKGROUND

A distributed storage system may include a plurality of storage devices (e.g., storage arrays) to provide data storage to a plurality of nodes. The plurality of storage devices and the plurality of nodes may be situated in the same physical location, or in one or more physically remote locations. The plurality of nodes may be coupled to the storage devices by a high-speed interconnect, such as a switch fabric.

SUMMARY

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

According to aspects of the disclosure, a method for use in a storage system is provided, the storage system including a source system that is coupled to a target system via a communications network, the method comprising: transitioning the storage system into a first state, the first state including a state in which the source system performs synchronous replication; detecting a first event while the source system is in the first state, the first event indicating that the source system is unable to meet a constraint that is associated with the synchronous replication; in response to the first event, transitioning the storage system from the first state into a second state, the second state being a state in which the source system performs asynchronous replication; detecting a second event while the storage system is in the second state, the second event indicating that the storage system is again able to meet the constraint; in response to the second event, transitioning the source system from the second state into a third state, the third state including a state in which the source system performs both synchronous replication and asynchronous replication.

According to aspects of the disclosure, an apparatus is provided, comprising: a memory, and at least one processor operatively coupled to the memory, the at least one processor being configured to perform the operations of transitioning a storage system into a first state, the storage system including a source system that is coupled to a target system via a communications network, the first state including a state in which the source system performs synchronous replication; detecting a first event while the source system is in the first state, the first event indicating that the source system is unable to meet a constraint that is associated with the synchronous replication; in response to the first event, transitioning the storage system from the first state into a second state, the second state being a state in which the source system performs asynchronous replication; detecting a second event while the storage system is in the second state, the second event indicating that the storage system is again able to meet the constraint; in response to the second event, transitioning the source system from the second state into a third state, the third state including a state in which the source system performs both synchronous replication and asynchronous replication.

According to aspects of the disclosure, a non-transitory computer-readable storage medium that is configured to store one or more processor-executable instructions, which when executed by at least one processor cause the at least one processor to perform the operations of transitioning a storage system into a first state, the storage system including a source system that is coupled to a target system via a communications network, the first state including a state in which the source system performs synchronous replication; detecting a first event while the source system is in the first state, the first event indicating that the source system is unable to meet a constraint that is associated with the synchronous replication; in response to the first event, transitioning the storage system from the first state into a second state, the second state being a state in which the source system performs asynchronous replication; detecting a second event while the storage system is in the second state, the second event indicating that the storage system is again able to meet the constraint; in response to the second event, transitioning the source system from the second state into a third state, the third state including a state in which the source system performs both synchronous replication and asynchronous replication.

