Patent ID: 8229886

Claim:
A method for replicating a program and data storage, the method comprising: sending program replication data from a first program to a second program, the second program having an application program that is a replica of an application program of the first program; sending data storage requests from the first program to a first storage system; and replicating data stored in the first storage system in a second storage system, wherein outputs of the first program are sent to a user or application, if the first program fails, enabling user or application interaction with the second program as if it were the first program, outputs of the second program being sent to the user or program, wherein, upon detecting failure of the first program, the second program suspends program replication and sends data storage requests to at least one of the first and second storage systems, wherein, upon detecting failure of the first storage system, the first program uses the second storage system as the primary storage system.