1. A computer-implemented method comprising: upon receiving an indication that a first virtual machine will be brought out of service: moving at least a portion of cache data from a first cache storage device coupled to a first computing device included within the first virtual machine to a shared flash storage device of a plurality of storage targets, wherein the cache data includes cache user data and cache metadata, wherein the cache metadata includes location data regarding which data segments of the cache user data are included within which of the plurality of storage targets and location in the first cache storage device; once moving the cache user data from the first cache storage device coupled to the first computing device to the shared flash storage device is partially complete, moving the cache user data from the shared flash storage device to a second cache storage device coupled to a second computing device included within a second virtual machine; moving the cache metadata from the first cache storage device included within the first virtual machine directly to the second cache storage device included within the second virtual machine; configuring the second cache storage device to replicate the an overprovisioning functionality of the first cache storage device; and after all of the cache data is moved from the shared flash storage device to the second cache storage device, shutting down the first virtual machine; wherein transition of the cache data and the cache metadata from the first virtual machine to the second virtual machine occurs without interruption to a user using an application executing on the first virtual machine.