You can use any volume snapshot to create new volumes in the same region.
Create a Volume from a Snapshot using the Control Panel
In the control panel’s left menu, click Backups & Snapshots, then click the Snapshots tab. In the Snapshots section, click the Volumes tab to view all volume snapshots in your account.
From there, open the More menu of the snapshot you want to use and click Create Volume to create a new volume based on it. In the window that opens, you can choose options for the new volume.
Choose a preset volume size or enter a custom volume size, either of which must be at least as big as the original volume used to create the snapshot. Next, select a Droplet to attach the volume to. The Droplet must be in a region which supports block storage. Finally, enter a name for the volume, and click Create Volume to create a new volume from the snapshot.
Create a Volume from a Snapshot using Automation
To create a new volume from a snapshot, use the following volume creation doctl
command or API endpoint, and set the snapshot
field the snapshot’s image ID.
How to Create a Block Storage Volume Using the DigitalOcean CLI
- Install
doctl
, the official DigitalOcean CLI.
- Create a personal access token and save it for use with
doctl
.
- Use the token to grant
doctl
access to your DigitalOcean account.
- Finally, run
doctl compute volume create
. Basic usage looks like this, but you can read the usage docs for more details:
doctl compute volume create <volume-name> [flags]
The following example creates a 4TiB volume named example-volume
in the nyc1
region. The command also applies two tags to the volume:
doctl compute volume create example-volume --region nyc1 --size 4TiB --tag frontend,backend
How to Create a New Block Storage Volume Using the DigitalOcean API
- Create a personal access token and save it for use with the API.
- Send a POST request to
https://api.digitalocean.com/v2/volumes
.
cURL
Using cURL:
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"size_gigabytes":10, "name": "example", "description": "Block store for examples", "region": "nyc1", "filesystem_type": "ext4", "filesystem_label": "example"}' \
"https://api.digitalocean.com/v2/volumes"
Go
Using Godo, the official DigitalOcean API client for Go:
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &VolumeCreateRequest{
Region: "nyc1",
Name: "example",
Description: "Block store for examples",
SizeGigaBytes: 10,
}
volume, _, err := client.Storage.CreateVolume(ctx, createRequest)
}
Ruby
Using DropletKit, the official DigitalOcean API client for Ruby:
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
volume = DropletKit::Volume.new(
size_gigabytes: 10,
name: 'Example',
description: 'Block store for examples',
region: 'nyc1'
)
client.volumes.create(volume)
Python
Using PyDo, the official DigitalOcean API client for Python:
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"size_gigabytes": 10,
"name": "ext4-example",
"description": "Block store for examples",
"region": "nyc1",
"filesystem_type": "ext4",
"filesystem_label": "ext4_volume_01"
}
resp = client.volumes.create(body=req)