| CPC G06F 11/2094 (2013.01) [G06F 2201/805 (2013.01)] | 20 Claims |

|
1. A computer system comprising:
one or more processors; and
one or more computer system-readable hardware storage devices having stored thereon computer system-executable instructions that are structured such that when the computer system-executable instructions are executed by the one or more processors, the computer system is configured to:
provision a plurality of storage volumes at a plurality of fault domains;
thinly provision a plurality of cache volumes at the plurality of fault domains;
perform a write operation in a resilient manner that maintains a plurality of copies of data associated with the write operation, performing the write operation in the resilient manner comprising, for each fault domain in the plurality of fault domains:
allocating a portion of storage in a cache volume at a fault domain;
caching the data associated with the write operation in the portion of storage in the cache volume at the fault domain;
persistently storing the data that is cached in the cache volume in a storage volume at the fault domain; and
after persistently storing the data, deallocating the portion of storage in the cache volume at the fault domain;
in response to determining that at least one fault domain in the plurality of fault domains is unavailable,
allocate an extra portion of storage in a cache volume at an available fault domain; and
cache an extra copy of the data associated with the write operation in the extra portion of storage in the cache volume; and
in response to determining that the at least one fault domain becomes available,
persistently store the data cached in the extra portion of storage of the cache volume in a storage volume at the at least one fault domain; and
deallocate the extra portion of storage in the cache volume.
|