Create Volume from snapshot_id not respecting size

February 17, 2018 1.1k views
Block Storage API

According to the API it’s possible to create a volume of an arbitrary size from a volume snapshot. I have done this via the web interface. However, I can’t seem to get the API to create a volume from a snapshot with any other size than 5gb (the size of the volume when the snapshot was taken).

I’ve tried to do this using cURL and Python. The attributes I’m sending are these:

  • size_gigabytes: 10 (I’ve tried lots of values for this, up to 2tb)
  • name: “example”
  • snapshot_id: “ae-deadbeef-etc”

The API states that the region and snapshot_id attributes are mutually exclusive, but I’ve tried sending both, just in case. No dice.

I’ve been looking around all night for an answer to this. Anyone have any insight?

Thanks much.

1 Answer

You need to create a volume from the snapshot (as you have been doing) and then resize the new volume to the size you want with a separate resize API call.

Note that, this resizes the volume container as far as DO is concerned. You will still need to resize the filesystem (and/or adjust partition table if the original volume was partitioned) after you attach the new volume to a droplet to be able to use the additional space.

( )

by Justin Ellingwood
By attaching a DigitalOcean Block Storage volume to a Droplet, you can easily increase your server's capacity as your requirements change. While it's possible to attach multiple volumes to a single Droplet to expand the available capacity of your server, it's also possible to expand the size of an existing volume. This process involves increasing the size of the volume in your DigitalOcean account, followed by some operations on the server itself to expand any partitions and filesystems.
  • Hmm.. ok. Thanks much for the info.

    Seems odd that the web-based interface allows the creation of a volume with a size, but the REST API doesn’t. Is the web interface doing a create/resize in the background, and we just don’t see it?

Have another answer? Share your knowledge.