Restoring a Storage Volume Across Sites
In this example, let???s consider that your domain contains two sites: site A and site B. /Compute-acme/jack.jones@example.com/vol1
is a storage volume in site A. Back up this storage volume by creating a remote snapshot of this storage volume. Remote snapshots are stored in an associated Oracle Cloud Infrastructure Object Storage Classic instance. In this example, /Compute-acme/cloud_storage
is the Oracle Cloud Infrastructure Object Storage Classic account associated with sites A and B. The Oracle Cloud Infrastructure Object Storage Classic account, /Compute-acme/cloud_storage
, should be available on both sites so that the storage volume can be restored. In site B, you can create a storage volume using the remote snapshot stored in /Compute-acme/cloud_storage
to restore the storage volume.
To restore a storage volume across sites:
-
Create a remote snapshot of
/Compute-acme/jack.jones@example.com/vol1
storage volume by sending thePOST /storage/snapshot/
HTTP request.Sample command
curl -i -X POST -H "Cookie: $COMPUTE_COOKIE" -H "Content-Type: application/oracle-compute-v3+json" -H "Accept: application/oracle-compute-v3+json" -d "@requestbody.json" https://api-z999.compute.us0.oraclecloud.com/storage/snapshot/
-
COMPUTE_COOKIE
is the name of the variable in which you stored the authentication cookie earlier. For information about retrieving the authentication cookie and storing it in a variable, see Authentication. -
api-z999.compute.us0.oraclecloud.com
is an example REST endpoint URL. Change this value to the REST endpoint URL of your Compute Classic site. For information about finding out REST endpoint URL for your site, see Send Requests. -
acme
andjack.jones@example.com
are example values. Replaceacme
with the identity domain ID of your Compute Classic account, andjack.jones@example.com
with your user name. -
/Compute-acme/jack.jones@example.com/vol1
is the name of the storage volume. In this example, we are finding the name of the instance that is attached to this storage volume. Replace this with the multipart name of the storage volume in your environment.
Sample request body
The following shows an example of the request body content in the
requestbody.json
file. While creating a remote storage snapshot, don???t specify a value for theproperty
parameter.{ "volume": "/Compute-acme/jack.jones@example.com/vol1", "description": "Remote snapshot of vol1" }
Sample response body
{ "status": "initializing", "start_timestamp": "2017-05-19T10:14:03Z", "account": "/Compute-acme/cloud_storage", "repl_target_regions": null, "description": "Remote snapshot of vol1", "tags": [], "snapshot_timestamp": null, "snapshot_id": "a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0", "image_metadata_bag": null, "uri": "https://api-z999.compute.us0.oraclecloud.com/storage/snapshot/Compute-acme/jack.jones@example.com/vol1/a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0", "status_detail": "The storage snapshot is currently being initialized.", "volume": "/Compute-acme/jack.jones@example.com/vol1", "platform": null, "machineimage_name": null, "size": "10737418240", "status_timestamp": "2017-05-19T10:14:03Z", "repl_source_region": "us0", "property": "/oracle/public/storage/snapshot/default", "parent_volume_bootable": "false", "name": "/Compute-acme/jack.jones@example.com/vol1/a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0" }
In the response body, note down the multi-part name of the remote storage snapshot. You???ll need to provide this name while sending the
GET /storage/snapshot/{name}
HTTP request to track the status of the storage snapshot. -
-
Creating a remote snapshot can take quite a long time depending on the size of the storage volume, as data is written to and from the Oracle Cloud Infrastructure Object Storage Classic instance. Check the status of the remote snapshot by sending the
GET /storage/snapshot/{name}
HTTP request.When the status changes to
completed
, the remote snapshot has been created. In the response body, note down thesnapshot_id
and. You???ll need to provide this information when you are restoring a storage volume from this remote snapshot.
Sample command
curl -X GET -H "Cookie: $COMPUTE_COOKIE" -H "Accept: application/oracle-compute-v3+json" https://api-z999.compute.us0.oraclecloud.com/storage/snapshot/Compute-acme/jack.jones@example.com/vol1/a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0
Sample response body
{ "status": "completed", "start_timestamp": "2017-05-19T10:14:03Z", "account": "/Compute-acme/cloud_storage", "repl_target_regions": null, "description": "Remote snapshot of vol1", "tags": [], "snapshot_timestamp": "2017-05-19T09:58:58Z", "snapshot_id": "a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0", "image_metadata_bag": null, "uri": "https://10.252.131.5/storage/snapshot/Compute-acme/sylaja.kannan%40oracle.com/vol1/a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0", "status_detail": "The storage snapshot is in completed state", "volume": "/Compute-acme/jack.jones@example.com/vol1", "platform": null, "machineimage_name": null, "size": "10737418240", "status_timestamp": "2017-05-19T10:15:26Z", "repl_source_region": "us0", "property": "/oracle/public/storage/snapshot/default", "parent_volume_bootable": "false", "name": "/Compute-acme/jack.jones@example.com/vol1/a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0" }
-
Get an authentication cookie from Compute Classic by submitting a POST request on the REST endpoint URL of site B.
Sample command
curl -i -X POST -H "Content-Type: application/oracle-compute-v3+json" -d '{"user":"/Compute-acme/jack.jones@example.com","password":"pwd-siteB"}' https://api-z888.compute.us0.oraclecloud.com/authenticate/
In the response body, note the value of the
Set-Cookie
header, and then save this value in an environment variable,COMPUTE_COOKIE
. -
Create the restored storage volume by sending the
POST /storage/volume/
HTTP request.Sample command
curl -i -X POST -H "Cookie: $COMPUTE_COOKIE" -H "Content-Type: application/oracle-compute-v3+json" -d "@restore.json" https://api-z888.compute.us0.oraclecloud.com/storage/volume/
Sample request body
The following shows an example of the request body content in the
restore.json
file. You must specify values for the following parameters:name
,size
,snapshot_id
, andproperties
. If you are restoring a bootable storage volume from a snapshot, then you must specify thebootable
parameter as well. You must specify thesnapshot_id
of the snapshot from which you want to restore the storage volume. For size, specify a size which is same or greater than the size of the snapshot.{ "snapshot_id": "a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0", "name": "/Compute-acme/jack.jones@example.com/remote-restored-vol1" "properties": ["/oracle/public/storage/default"], "size": "12G", }
Sample response body
{ "managed": true, "snapshot_id": "a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0", "image_metadata_bag": null, "snapshot_account": "/Compute-acme/cloud_storage", "machineimage_name": null, "status_timestamp": "2017-05-19T20:23:41Z", "imagelist": null, "writecache": false, "size": "12884901888", "platform": null, "readonly": false, "storage_pool": null, "shared": false, "status": "Initializing", "description": null, "tags": [], "quota": null, "status_detail": "The storage volume is currently being initialized.", "properties": [ "/oracle/public/storage/default" ], "account": "/Compute-acme/default", "name": "/Compute-acme/jack.jones@example.com/remote-restored-vol1", "bootable": false, "hypervisor": null, "uri": "https://api-z888.compute.us0.oraclecloud.com/storage/volume/Compute-acme/jack.jones@example.com/remote-restored-vol1", "imagelist_entry": -1, "snapshot": "/Compute-acme/jack.jones@example.com/vol1/a365de8c2a092d06bea549ff4e3f7508b42c6a2fad3c57b8e055d38b5b9cbded-us0" }
When the status of the storage volume changes from
Initializing
toOnline
, the storage volume has been created.
See Also:
-
About Storage Volumes in Using Oracle Cloud Infrastructure Compute Classic.