---
title: "How to create and configure an additional disk on an instance"
description: "You can create additional disks for your Public Cloud instances. This can be useful in cases where:"
url: https://docs.us.ovhcloud.com/en/storage-and-backup/block-storage/create-and-configure-an-additional-disk-on-an-instance
lang: en
---
> For AI agents: the complete documentation index is available at https://docs.us.ovhcloud.com/en/llms.txt, the full documentation bundle is available at https://docs.us.ovhcloud.com/en/llms-full.txt.

# How to create and configure an additional disk on an instance

You can create additional disks for your Public Cloud instances. This can be useful in cases where:

- You want to increase your storage capacity without changing the instance model.
- You want to have highly available, high-performance storage.
- You want to move your storage and data to another instance.
- You want to prepare the environment if you want to use [Terraform](https://docs.us.ovhcloud.com/en/public-cloud/cross-functional/how-to-use-terraform.md).

 

## Requirements

- A [Public Cloud instance](https://docs.us.ovhcloud.com/en/public-cloud/compute/getting-started.md) in your account
- Administrative (sudo) access to your instance via SSH (Linux) or RDP (Windows)

#### OVHcloud Control Panel Access

- **Direct link:** [Public Cloud Projects](https://manager.us.ovhcloud.com/#/public-cloud/pci/projects)
- **Navigation path:** `Public Cloud` > Select your project

 

## Instructions

### The different types of volumes

OVHcloud offers three types of Block Storage volumes, each tailored to specific needs in terms of performance, capacity, and cost. These solutions enable you to attach persistent storage volumes to your instances, guaranteeing a high level of reliability and availability.

For more information about the types of volumes, please visit [our website](https://us.ovhcloud.com/public-cloud/block-storage/).

**Note:**

**You can no longer order High Speed (Gen1) volumes via the OVHcloud Control Panel.** They have been replaced by High Speed Gen2 volumes at the same price, with better performance for volumes above 100 GB. High Speed volumes remain available via the API, Terraform, and OpenStack.

Existing High Speed volumes remain supported. You can also [change your Block Storage volume type](https://docs.us.ovhcloud.com/en/storage-and-backup/block-storage/switch-volume-type.md) to migrate them to Gen2.

**Note:**

All volume types are also available in an encrypted version (LUKS). These volumes ensure data confidentiality without impacting performance. They are available through the OVHcloud Control Panel as well as via the tools presented in the next section, by specifying the types `<volume_type>-luks`.

 

### Adding a new volume

#### Via the OVHcloud Control Panel

#### Via the OVHcloud Control Panel

Open `Block Storage` in the left-hand menu under **Storage** and click `Create a volume`.
On the following screen, choose your configuration settings:
**Select a region:** Select the location for your block storage volume. For more information about Local Zones, see [this guide](https://docs.us.ovhcloud.com/en/public-cloud/compute/getting-started-local-zones.md).

**Warning:** **NOTE:** Your volume must be created in the same region as the instance to which you wish to attach it. If you create it in another region, you can delete it and recreate it in the correct region.

**Volume type:** Choose your volume type and select your encryption level. More information about the types of volumes is available on [our website](https://us.ovhcloud.com/public-cloud/block-storage/).
From here, complete your volume's configuration by selecting the **Volume capacity** and **Volume name**, and then clicking `Create the volume`.
Once your new disk is available, click the _more options_ `...` button to the right of the disk and select `Attach to instance`.
In the pop-up window, choose an available instance and click `Confirm`. If no instances are available it is because you do not have an instance in a region matching that of the additional disk.
The process may take a few minutes to complete.

**Warning:** **NOTE:** Navigating away from the page during creation may interrupt the process.

##### Via Terraform

#### Via Terraform

**Warning:** **NOTE:** Please not that the "high-speed-gen-2" or "luks" volume types may not be available in all regions.

Type of volumes:
- Classic
- HIgh-speed
- High-speed-gen2
- Classic-luks
- High-speed-luks
- High-speed-gen2-luks

The types ending in -luks are encrypted (LUKS).

**Warning:** **NOTE:** Creating a **-luks** volume automatically generates a dedicated key.
Do not modify or delete this key it is linked to a Block Storage volume. Doing so would make the data on that volume and all it's snapshots permanently unrecoverable.

To create a simple block storage volume, you need three elements:
- The name of the volume
- The region
- The size of the volume in GB

In our example, we will create a block storage in the **US-EAST-VA-1** region with a size of **10 GB**. Add the following lines to a file named _simple\_blockstorage.tf_:
```python

# Creation of a block storage volume

resource "openstack_blockstorage_volume_v3" "terraform_blockstorage" {
name   = "terraform_blockstorage" # Name of the block storage volume
size   = 10                       # Volume size
region = "US-EAST-VA-1"           # Region where the volume must be created
volume_type = "volume_type"       # Classic, high-speed, high-speed-gen2, or equivalent '-luks'
}
```
Then we will attach it to the target instance.

**Warning:** **NOTE:** The instance and the volume must be in the same region.

Add the following lines below the previous ones:
```python

# Attach the volume to the instance

resource "openstack_compute_volume_attach_v2" "volume_attach" {
  instance_id = "<your_instance_id>"
  volume_id   = openstack_blockstorage_volume_v3.terraform_volume.id
}
```
Create and attach the volume by running:
```
terraform apply
```
The output should look like this:
```
terraform apply
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # openstack_blockstorage_volume_v3.terraform_blockstorage will be created
  + resource "openstack_blockstorage_volume_v3" "terraform_blockstorage" {
      + attachment        = (known after apply)
      + availability_zone = (known after apply)
      + id                = (known after apply)
      + metadata          = (known after apply)
      + name              = "terraform_blockstorage"
      + region            = "US-EAST-VA-1"
      + size              = 10
      + volume_type       = "high-speed-gen2"
    }

  # openstack_compute_volume_attach_v2.volume_attach will be created
  + resource "openstack_compute_volume_attach_v2" "volume_attach" {
      + device      = (known after apply)
      + id          = (known after apply)
      + instance_id = "11cc1279-xxxx-xxxx-xxxx-3ace4c954780"
      + region      = (known after apply)
      + volume_id   = (known after apply)
    }

Plan: 2 to add, 0 to change, 0 to destroy.

Do you want to perform these actions in workspace "test_terraform"?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

openstack_blockstorage_volume_v3.terraform_blockstorage: Creating...
openstack_blockstorage_volume_v3.terraform_blockstorage: Still creating... [10s elapsed]
openstack_blockstorage_volume_v3.terraform_blockstorage: Creation complete after 12s [id=daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806]
openstack_compute_volume_attach_v2.volume_attach: Creating...
openstack_compute_volume_attach_v2.volume_attach: Still creating... [10s elapsed]
openstack_compute_volume_attach_v2.volume_attach: Creation complete after 14s [id=11cc1279-xxxx-xxxx-xxxx-3ace4c954780/daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
```

##### Via the Horizon interface

#### Via the Horizon interface

Go to the `Volumes` drop-down section, click `Volumes` and then `+ Create Volume`.

Fill in the `Volume Name` field and select the type of volume you want. Then click on `Create Volume`.

**Warning:** **NOTE:** Please note that if the volume type "high-speed-gen2" or "luks" does not appear in the list, this means that it is not available in this region.

To attach this volume to an instance, on your volume line, click the _drop-down menu_ `▼` next to `Edit Volume`. Then click on `Manage Attachments`.

Select the instance to which you wish to attach your volume, then click on `Attach Volume`.

##### Via the OpenStack CLI

#### Via the OpenStack CLI

**Warning:** **NOTE:** Please note that if the volume type "high-speed-gen2" or "luks" does not appear in the list, this means that it is not available in this region.

Types of volumes:
- Classic
- High-speed
- High-speed-gen2
- Classic-luks
- High-speed-luks
- High-speed-gen2-luks

The types ending in -luks are encrypted (LUKS).

**Warning:** **NOTE:** Creating a **-luks** volume automatically generates a dedicated key.
Do not modify or delete this key it is linked to a Block Storage volume. Doing so would make the data on that voolume and all it's snapshots permanently unrecoverable.

List the volume types available in the region:
```bash
openstack volume type list
```
Create a volume with at least a size (in GB) and a type. Optionally, add a name.
```bash
openstack volume create --size 1 --type high-speed-gen2 volumeName # classic, high-speed, high-speed-gen2 or equivalent `-luks`
```
To attach a volume to an instance available in the region, use the following command:
```bash
openstack server add volume <server-id|server-name> <volume-id|volume-name>
```
```

+-----------+-------------------------------------+
| Field     | Value                               |
+-----------+-------------------------------------+
| ID        | 7d3d670f- ****-****-****-60dd1e6****|
| Server ID | 74317f97-****-****-80cf2d4****      |
| Volume ID | 7d3d670f-****-****-****-60dd1e6**** |
| Device    | /dev/sdb                            |
| Tag       | None                                |
+-----------+-------------------------------------+
```

 

### Configuring the new disk

The examples below presume you are logged in as a user with elevated permissions.

#### Using Linux

#### Using Linux

Establish an [SSH connection to your instance](https://docs.us.ovhcloud.com/en/public-cloud/compute/getting-started.md), then use the command below to list the attached disks.

**Note:**
`sda` in this example refers to the default disk of the instance. The additional disk will then be labeled `sdb`.

```
lsblk
```
```
NAME    MAJ:MIN  RM    SIZE  RO  TYPE  MOUNTPOINTS
sda       8:0     0     50G   0  disk 
└─sda1    8:1     0   49.9G   0  part  /
sdb       8:16    0     10G   0  disk
```
Create a partition on the additional disk using the commands below.
If your additional disk is less than 2TB:
```bash
sudo fdisk /dev/sdb
```
```
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x95c4adcc.

Command (m for help): n

Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
```
If your additional disk is larger than 2TB:
```bash
sudo parted /dev/sdb
```
```
GNU Parted 3.5
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                       check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all]            display the partition table, or available devices, or free space, or all found partitions
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) mklabel gpt                                                      
(parted) mkpart primary 0 3750G                                           
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? I                                                          
(parted) quit
```
Format partition `sdb1`:
```bash
sudo mkfs.ext4 /dev/sdb1
```
```
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 2621184 4k blocks and 655360 inodes
Filesystem UUID: 781be788-c4be-462b-b946-88429a43c0cf
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
```
Mount the partition:
```bash
sudo mkdir /mnt/disk
```
```bash
sudo mount /dev/sdb1 /mnt/disk/
```
Verify the mount point:
```bash
df -h
```
```
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.8G 840M 8.6G 9% /
udev 10M 0 10M 0% /dev
tmpfs 393M 5.2M 388M 2% /run
tmpfs 982M 0 982M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 982M 0 982M 0% /sys/fs/cgroup
/dev/sdb1 9.8G 23M 9.2G 1% /mnt/disk
```

**Note:** The mount is not persistent after reboot. To automate  mounting, edit the `fstab` file.

Retrieve the UUID of the new volume:
```bash
sudo blkid
```
```
/dev/sda1: UUID="51ba13e7-398b-45f3-b5f3-fdfbe556f62c" TYPE="ext4" PARTUUID="000132ff-01"
/dev/sdb1: UUID="2e4a9012-bf0e-41ef-bf9a-fbf350803ac5" TYPE="ext4" PARTUUID="95c4adcc-01"
```
Open `/etc/fstab`:
```bash
sudo nano /etc/fstab
```
Add the line below, replacing the UUID with your own:
```
UUID=2e4a9012-bf0e-41ef-bf9a-fbf350803ac5 /mnt/disk ext4 nofail 0 0
```
Save and exit the editor. The disk will mount automatically after each reboot.

##### Using Windows

#### Using Windows

Establish a remote desktop (RDP) connection to your Windows instance.
Right-click on the `Start Menu` button and open `Disk Management`.

The disk appears as an unknown volume with unallocated space.

If offline, initialized it via [Windows GUI](#wGUI) or the [DISKPART](#diskpart). Otherwise, proceed to [formatting](#DiskManagement).
 
##### **Initializing the disk in Disk Management**

Right-click on the disk and select `Online`.
If offline, right-click on the disk and select `Online`.

Right-click again and select `Initialize Disk`.

Next, select `MBR (Master Boot Record)` if your additional disk is less than 2TB, or `GPT (GUID Partition Table)` if it is more than 2 TB, then click `OK`.

 
##### **Initializing the disk with DISKPART**

Right-click `Start Menu` and open `Run`.

Type `cmd` and click `OK`.

At the command prompt, open DISKPART:
```
C:\> diskpart
```
Run these DISKPART commands to bring the disk to `online`:
```
DISKPART> san

SAN Policy : Offline Shared

DISKPART> san policy = OnlineAll

DiskPart successfully changed the SAN policy for the current operating system .

- Implementation of the strategy on the extra disk:

[Code] DISKPART> list disk

Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 200 GB 0 B
* Disk 1 Offline 10 GB 1024 KB

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> attributes disk clear readonly

Disk attributes cleared successfully.

DISKPART> attributes disk

Current Read-only State : No
Read-only : No
Boot Disk : No
Pagefile Disk : No
Hibernation File Disk : No
Crashdump Disk : No
Clustered Disk : No

DISKPART> online disk

DiskPart successfully onlined the selected disk.
```
 
##### **Formatting the disk**

In `Disk Management`, right-click the disk and select `New Simple Volume...`.

In the wizard, click `Next` to confirm the volume size (maximum by default), then `Next` again.

Accept the drive letter or select another, then click `Next`.

Label the volume (optional) and click `Next`.

Click `Finish` to format the disk.

The disk appears in File Explorer as a drive.

 

### Detach a volume

Before detaching a volume, unmount in the operating system.

**Warning:**

**NOTE:** An error message may appear if you have software or processes running on the additional disk. In this case, it is recommended to stop all processes before continuing.

Here is how to **unmount the volume** from the operating system before detaching it from the instance:

#### On Linux

#### On Linux

[Connect via SSH](https://docs.us.ovhcloud.com/en/public-cloud/compute/getting-started.md), then list the attached disks.
```bash
lsblk
```
```
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda       254:0   0   10G  0  disk
└─sda1    254:1   0   10G  0  part  /
sdb       8:0     0   10G  0  disk
└─sdb1    8:1     0   10G  0  part  /mnt/disk
```
Unmount the partition:
```bash
sudo umount /dev/sdb1
```
Remove the device ID from the fstab; otherwise the partition remounts after reboot.
```bash
sudo nano /etc/fstab
```
Save and exit the editor.

##### On Windows

#### On Windows

Establish a remote desktop (RDP) connection to your Windows instance.
Right-click the `Start Menu` and open `Disk Management`.

Right-click the volume and select `Change Drive Letter and Paths...`.

Click `Remove`.

Click `Yes` to confirm.

When finished, you can close the Disk Management window.

 

Finally, we will detach the volume from the instance:

##### Via OVHcloud Control Panel

#### Via OVHcloud Control Panel

Open `Block Storage` in the left-hand menu under **Storage**.
Click the _more options_ `...` button next to the corresponding volume and select `Detach from instance`.

**Warning:** **NOTE:** You can also cancel your Block Storage volume using this menu.

Click `Confirm` in the pop-up window to start the process.

##### Via Terraform

#### Via Terraform

Delete these lines from your Terraform file:
```python

# Attach the volume to the instance

resource "openstack_compute_volume_attach_v2" "volume_attach" {
  instance_id = "<your_instance_id>"
  volume_id   = openstack_blockstorage_volume_v3.terraform_volume.id
}
```
Run this command to verify the planned deletion:
```
terraform plan
```
The output should look like this:
```
$ terraform plan
openstack_compute_volume_attach_v2.va_1: Refreshing state... [id=11cc1279-xxxx-xxxx-xxxx-3ace4c954780/daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806]
openstack_blockstorage_volume_v3.terraform_volume: Refreshing state... [id=daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # openstack_compute_volume_attach_v2.va_1 will be destroyed
  # (because openstack_compute_volume_attach_v2.va_1 is not in configuration)
  - resource "openstack_compute_volume_attach_v2" "va_1" {
      - device      = "/dev/sdb" -> null
      - id          = "11cc1279-xxxx-xxxx-xxxx-3ace4c954780/daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806" -> null
      - instance_id = "11cc1279-xxxx-xxxx-xxxx-3ace4c954780" -> null
      - region      = "US-EAST-VA-1" -> null
      - volume_id   = "daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806" -> null
    }

Plan: 0 to add, 0 to change, 1 to destroy.
```
Apply the changes:
```
terraform apply
```
The output should look like this:
```
$ terraform apply
openstack_compute_volume_attach_v2.va_1: Refreshing state... [id=11cc1279-xxxx-xxxx-xxxx-3ace4c954780/daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806]
openstack_blockstorage_volume_v3.terraform_volume: Refreshing state... [id=daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # openstack_compute_volume_attach_v2.va_1 will be destroyed
  # (because openstack_compute_volume_attach_v2.va_1 is not in configuration)
  - resource "openstack_compute_volume_attach_v2" "va_1" {
      - device      = "/dev/sdb" -> null
      - id          = "11cc1279-xxxx-xxxx-xxxx-3ace4c954780/daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806" -> null
      - instance_id = "11cc1279-xxxx-xxxx-xxxx-3ace4c954780" -> null
      - region      = "US-EAST-VA-1" -> null
      - volume_id   = "daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806" -> null
    }

Plan: 0 to add, 0 to change, 1 to destroy.

Do you want to perform these actions in workspace "test_terraform"?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

openstack_compute_volume_attach_v2.va_1: Destroying... [id=11cc1279-xxxx-xxxx-xxxx-3ace4c954780/daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806]
openstack_compute_volume_attach_v2.va_1: Still destroying... [id=11cc1279-xxxx-xxxx-xxxx-3ace4c954780/daf3a86e-xxxx-xxxx-xxxx-ac7b6ffbb806, 10s elapsed]
openstack_compute_volume_attach_v2.va_1: Destruction complete after 17s

Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
```

 

## Go further

Browse all the [Block Storage guides](https://docs.us.ovhcloud.com/en/storage-and-backup/block-storage/landing-page-block-storage.md).

Browse the rest of the [OVHcloud US documentation](https://docs.us.ovhcloud.com/en/index.md) for guides on our other products and services.

Learn more about [Block Storage](https://us.ovhcloud.com/public-cloud/block-storage/) on the OVHcloud US website.
