1. A method comprising: decomposing, by a computer system, a virtual machine into a first storage subunit and a second storage subunit; encrypting, by the computer system, the first storage subunit and the second storage subunit; transmitting, by the computer system, the encrypted first storage subunit to a first storage host; transmitting, by the computer system, the encrypted second storage subunit to a second storage host; storing, by the computer system, a record that associates the virtual machine with a first network location of the first remote storage host and a second network location of the second storage host; receiving, by the computer system, a request for the virtual machine; and in response to the request: retrieving from the record, by the computer system, the first network location and the second network location, transmitting, by the computer system, a request to the first network location for the encrypted first storage subunit, transmitting, by the computer system, a request to the second network location for the encrypted second storage subunit, decrypting, by the computer system, the encrypted first storage subunit to obtain the first storage subunit, decrypting, by the computer system, the encrypted second storage subunit to obtain the second storage subunit, and reconstructing the virtual machine from the first storage subunit and the second storage subunit.