Vultr Block Storage

Updated on February 29, 2024
Vultr Block Storage header image

Introduction

Vultr's Cloud Block Storage technology lets you mount high-performance, scalable storage to your instance to provide flexible space management. Block storage is highly available, redundant, and available as either high-performance NVMe or affordable HDD. Use this guide to manage your Big Data storage needs with Vultr Block Storage.

Block Storage Technology

Vultr offers two block storage technologies: HDD and NVMe.

HDD Block Storage is an affordable option that uses traditional rotating hard drives and supports volumes larger than 10 TB.

  • Minimum volume size: 40 GB
  • Maximum volume size: 40 TB
  • Technology: Rotating hard disk drive
  • Availability: Most Vultr locations
  • Key Feature: Affordable storage and largest volumes

NVMe Block Storage is a higher-performance option for workloads that require rapid I/O.

  • Minimum volume size: 10 GB
  • Maximum volume size: 10 TB
  • Technology: Solid-state NVMe
  • Availability: Many Vultr locations
  • Key Feature: Highest performance I/O

How to Create a Block Storage Volume

Navigate to the Add Block Storage page in the customer portal.

  1. Select your technology, either HDD or NVMe.
  2. Select the desired location. Your server and the attached block storage volume must be in the same location.
  3. Select the block storage size.
  4. Enter a descriptive label.
  5. Click Add Block Storage.

In a short time, your volume will be available for use. Wait until you see Active in the status column before proceeding.

Attach to a Server Instance

You can attach block storage to one server at a time. However, the server and block storage volumes must be in the same location.

  1. Go to https://my.vultr.com/blockstorage/
  2. Click on the pencil icon next to the volume to attach.
  3. Select the server instance from the drop-down.
  4. Click Attach.

The block storage will be available as a new device.

Mount Block Storage on Linux

Warning: The commands below may destroy data on existing volumes. These instructions are for newly deployed block storage volumes without data. Before proceeding, back up your files. Vultr does not have any backups of your block storage. Verify your backups and store them separately from the server instance.

Vultr snapshots and backups of server instances do not include block storage.

By default, Vultr does not create any filesystems on block storage volumes. Use these steps to initialize, delete all data, and mount the block storage volume.

  1. Verify the new device name. The first block storage device connected to your server is /dev/vdb. Additional devices increment the device name as /dev/vdc, /dev/vdd, and so forth. Use the lsblk command to verify your device name. This example shows a 10 GB volume available as /dev/vdb.

    console
    # lsblk
    
    output
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0     11:0    1 1024M  0 rom
    vda    252:0    0   55G  0 disk
    └─vda1 252:1    0   55G  0 part /
    vdb    252:16   0   10G  0 disk
    
  2. Create a new disk label using parted.

    console
    # parted -s /dev/vdb mklabel gpt
    
  3. Make a primary partition to fill the entire disk.

    console
    # parted -s /dev/vdb unit mib mkpart primary 0% 100%
    
  4. Create an EXT4 filesystem on the primary partition and format it.

    console
    # mkfs.ext4 /dev/vdb1
    
  5. Make a mount point.

    console
    # mkdir /mnt/blockstorage
    
  6. Retrieve information for the created partition.

    console
    blkid /dev/vdb1
    

    Copy the value of UUID from the output.

  7. Add a blank line and a mount entry to /etc/fstab, which automatically mounts the block storage at /mnt/blockstorage at each reboot.

    console
    # echo >> /etc/fstab
    # echo "UUID=<ACTUAL UUID> /mnt/blockstorage ext4 defaults,noatime,nofail 0 0" >> /etc/fstab
    

    You can also manually mount the block storage without rebooting.

    console
    # mount /mnt/blockstorage
    

Mount Block Storage on Windows

Warning: The commands below may destroy data on existing volumes. These instructions are for newly deployed block storage volumes without data. Before proceeding, back up your files. Vultr does not have any backups of your block storage. Verify your backups and store them separately from the server instance.

Vultr snapshots and backups of server instances do not include block storage.

By default, Vultr does not create any filesystems on block storage volumes. Use these steps to initialize, delete all data, and mount the block storage volume. The following steps are based on Windows Server 2016; however, the basic process is very similar on all current versions of Windows.

  1. Click Start, search for Computer Management, and launch it.

  2. Select Storage -> Disk Management on the left side menu.

  3. The right pane displays the current disk configuration. The first block storage device connected to your server is usually Disk 1. Additional devices will be Disk 2, Disk 3, and so forth. This example shows a 10 GB volume as Disk 1.

    Computer Management

  4. If the disk is offline, right-click on the new disk volume and select Online.

    Online

  5. Right-click on the new disk volume and select Initialize.

    Initialize

  6. Select MBR or GPT partition style and click OK.

    OK

  7. Right-click Unallocated Space and select New Simple Volume.

    Simple Volume

    Follow the wizard to format and attach the volume.

Mount Block Storage on OpenBSD

Please see the OpenBSD FAQ for detailed instructions.

Mount Block Storage on FreeBSD

Warning: The commands below may destroy data on existing volumes. These instructions are for newly deployed block storage volumes without data. Before proceeding, back up your files. Vultr does not have any backups of your block storage. Verify your backups and store them separately from the server instance.

Vultr snapshots and backups of server instances do not include block storage.

Identify the Block Storage devices

Vultr block storage shows up as /dev/vtbd* devices (VirtIO Block Device)

You can view current /dev/vtbd entries with ls -al /dev/vtbd*

console
# ls -al /dev/vtbd*
crw-r-----  1 root  operator  0x43 Mar 25 09:55 /dev/vtbd0
crw-r-----  1 root  operator  0x45 Mar 25 09:55 /dev/vtbd0p1
crw-r-----  1 root  operator  0x46 Mar 25 05:55 /dev/vtbd0p2
crw-r-----  1 root  operator  0x44 Mar 25 09:55 /dev/vtbd1

vtbd0 and vtbd1 are individual devices. vtbd0p1 and vtbd0p2 are two partitions on the vtbd0 device.

Determine which is the new Vultr Block Storage device

Because the newly added block storage hasn't been partitioned yet, it's probably vtbd1, but you can verify by viewing the current GPT partitions with gpart show (or gpart list for more details) to show all GPT partitions on all devices.

console
# gpart show
=>       34  335544253  vtbd0  GPT  (160G)
        34         94      1  freebsd-boot  (47K)
        128  335544159      2  freebsd-ufs  (160G)

There are two existing partitions and their filesystems on vtbd0, the existing boot device and root filesystem. You can also verify this by running mount to see what partition is mounted as /.

console
# mount
/dev/vtbd0p2 on / (ufs, local, soft-updates)
devfs on /dev (devfs, local, multilabel)

This confirms that vtbd0 contains the root filesystem.

Partition and Mount the Block Storage

To use a new Vultr block storage device, it must be partitioned, a filesystem initialized, and then mounted.

You already determined the name of your new block storage device in the previous step is vtbd1. Follow these steps to create one partition with a GPT partition scheme for the entire block storage (50GB).

  1. Create the partition table for vtbd1.

    console
    # gpart create -s GPT vtbd1
        vtbd1 created
    
  2. Add one partition with the label vultr_block_storage and set it to freebsd-ufs.

    console
    # gpart add -t freebsd-ufs -l vultr\\_block\\_storage vtbd1
    vtbd1p1 added
    

    This should have created a new device called /dev/vtbd1p1 and you can verify that by running gpart list vtbd1p1.

  3. Initialize the UFS2 filesystem on the new partition. If you use an alternate filesystem such as ZFS, please see the official documentation for initialization instructions.

    console
    # newfs -U vtbd1p1
    /dev/vtbd1p1: 51200.0MB (104857528 sectors) block size 32768, fragment size 4096
        using 82 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
        with soft updates
    super-block backups (for fsck_ffs -b #) at:
     192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352, 12822592, 14104832, 15387072, 16669312, 17951552, 19233792, 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209472, 29491712,
     30773952, 32056192, 33338432, 34620672, 35902912, 37185152, 38467392, 39749632, 41031872, 42314112, 43596352, 44878592, 46160832, 47443072, 48725312, 50007552, 51289792, 52572032, 53854272, 55136512, 56418752, 57700992, 58983232,
     60265472, 61547712, 62829952, 64112192, 65394432, 66676672, 67958912, 69241152, 70523392, 71805632, 73087872, 74370112, 75652352, 76934592, 78216832, 79499072, 80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,
     89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432, 98732672, 100014912, 101297152, 102579392, 103861632
    

    Now you're ready to mount the new device for use.

  4. Create a mount point.

    console
    # mkdir /mnt/blockstorage
    
  5. Retrieve information for the created partition.

    console
    blkid /dev/vtbd1p1
    

    Copy the value of UUID from the output.

  6. Add a blank line and a mount entry to /etc/fstab, which automatically mounts the block storage at /mnt/blockstorage at each reboot.

    console
    # echo >> /etc/fstab
    # echo "UUID=<ACTUAL UUID> /mnt/blockstorage ext4 defaults,noatime,nofail 0 0" >> /etc/fstab
    
  7. Mount the new block storage device.

    console
    # mount /mnt/blockstorage
    
  8. The storage is now available and ready for use at /mnt/blockstorage.

    console
    # df -h /mnt/blockstorage/
    Filesystem      Size    Used   Avail Capacity  Mounted on
    /dev/vtbd1p1     48G    8.0K     45G     0%    /mnt/blockstorage
    

Detach a Block Storage

Note: Linux instances need to remove any references to the block storage volume from the /etc/fstab file before detaching to prevent system boot failure due to the OS waiting on a drive that no longer exists.

  1. Go to https://my.vultr.com/blockstorage/
  2. Click on the pencil icon next to the volume you wish to detach.
  3. Click Detach.

Move Block Storage to a New Server

You can move block storage between servers, but take care to properly dismount the volume and remount it on the new server.

Attention: If you need to preserve data, do not re-partition, create a new filesystem, or perform the initialization steps that delete data.

How to Upgrade Block Storage

Expanding block storage requires two steps:

  • Upgrade block storage size in the customer portal
  • Resize your filesystem in the instance OS

Upgrade block storage size

Don't skip the final step! After you expand the block storage you must restart the server from the server control panel. Rebooting the operating system from the web console or an SSH session will not apply the changes.

  1. Navigate to your Vultr customer portal.

  2. Select Products.

  3. Click Block Storage.

  4. Click the Manage icon on the desired Block Storage instance.

    Block Storage

  5. Click the Size link to adjust the size.

    Edit Block Storage

  6. Enter the new size, type YES in the confirmation field, then click Continue.

    Upgrade Block Storage

  7. You must restart the server from the server control panel for the new size to be recognized by the server. Rebooting the operating system from the web console or an SSH session will not apply the changes.

Resize the filesystem - Linux

You can resize your block storage to reflect the changes made in your panel with the growpart utility, which is provided by cloud-init and is available for all major Linux distributions and *BSD.

  1. Unmount the block storage.

    console
    # umount /mnt/blockstorage
    
  2. Use the lsblk command to verify the partition name. This example shows a 10 GB partition as /dev/vdb1. The mount point is blank because it was dismounted in step 1.

    console
    # lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0     11:0    1 1024M  0 rom
    vda    252:0    0   55G  0 disk
    └─vda1 252:1    0   55G  0 part /
    vdb    252:16   0   10G  0 disk
    └─vdb1 252:17   0   10G  0 part
    
  3. Grow the partition to fill all available block storage space.

    console
    # growpart /dev/vdb 1
    
  4. Force a filesystem check before resizing.

    console
    # e2fsck -fp /dev/vdb1
    
  5. Remount the block storage.

    console
    # mount /mnt/blockstorage
    
  6. Resize the filesystem to fill the entire partition.

    console
    # resize2fs /dev/vdb1
    

Resize the filesystem - Windows

  1. Click Start, search for Computer Management, and launch it.

  2. Select Storage -> Disk Management on the left side menu.

  3. The right pane displays the current disk configuration. The block storage device will have new unallocated space available. Right-click on the volume and select Extend Volume... as shown.

    Extend Volume

    Follow the wizard to extend the volume.

How to Shrink Block Storage

It's not possible to shrink block storage. If you'd like to move your files to a smaller block storage subscription, perform these steps:

  1. Make a backup of your block storage volume.
  2. Inventory your files to determine the space needed. Windows users can use Windows Explorer, while Linux users may want to use df.
  3. Create a new subscription of the correct size.
  4. Attach the new volume on your instance, then mount it.
  5. Copy your files from the larger block storage volume to the new, smaller volume. Use the tools appropriate for your platform.
  6. Detach the old block storage subscription.
  7. Reboot your server instance and verify your new volume is correct.
  8. When satisfied with the new volume, destroy the old block storage subscription.

Manage Block Storage via API

The Vultr API offers several endpoints to manage block storage.

  • Create a block storage volume.
  • Get information for a block storage volume.
  • List the block storage volumes in your account.
  • Update information about a block storage volume.
  • Attach a block storage volume to a server instance.
  • Detach block storage from a server instance.
  • Delete a block storage volume.

Use the /v2/regions API endpoint to discover which storage classes are available at your location.

  • block_storage_storage_opt indicates HDD storage is available.
  • block_storage_high_perf indicates NVMe storage is available.

Frequently Asked Questions

Can I upgrade or downgrade block storage?

You can upgrade block storage by using the steps described here. You must resize your file system manually, which does pose the risk of possible data loss if performed incorrectly. You cannot perform an in-place downgrade of block storage, but you can use these steps to migrate your files to a smaller block storage subscription.

Can I mount block storage to different locations?

No. Block storage may only be attached to instances in the same location.

Is there a minimum size for Block Storage volumes?

Yes, the minimum size for NVMe Block Storage volume is 10 GB. The minimum size for HDD block storage is 40 GB.

Can I make snapshots or restore a snapshot of a block storage device?

No, this is not currently supported. Vultr's automated server backup does not back up any attached block storage volumes. Instead, you should back up your block storage volumes using OS-level tools.

Can I mount block storage to multiple servers at the same time?

No, this is not possible.

Can I mount multiple block storage volumes to the same Vultr instance?

Yes, you can mount up to 16 volumes to the same instance.

Can I mount a block storage volume on a Vultr Bare Metal server?

No, Block Storage does not support Bare Metal.

Are there any limits on the size or number of volumes I can deploy?

We have generous limits on the total number of volumes and the aggregate storage allocated per account. If you have questions about your account limits, please open a support ticket.

Where is block storage data physically located?

You choose the location when you deploy block storage, and the data remains in that location unless you move it. Because data residency is important to many of our customers, Vultr does not copy or back up your data outside that location.

Is Block Storage encrypted at rest?

Vultr encrypts your data at rest with Advanced Encryption Standard, using 256-bit keys (AES-256). This level of encryption is approved by many regulatory compliance standards such as PCI-DSS, GDPR, FedRAMP, FIPS 140-2, ISO/IEC 18033-3, and SOC 1, 2, and 3. AES is the only publicly accessible cipher approved by the U.S. National Security Agency.