Skip to main content

NVMe Block Storage

Increase your instances storage capacity by attaching additional high-speed volume sizes up to 16TB. Volumes are managed independently of compute instances, so your data persists even if you delete your VM.


linode-splash-dedicated-cpu-any-instance

Scalable

Resize a Block Storage Volume at any time, giving you the flexibility to update your storage capacity with a few easy steps whenever your needs change.

linode-splash-block-storage-add-storage

Independent and Hot Swappable

Volumes are managed independently from a Compute Instance’s local storage and can be attached or detached to any Instance without needing to reboot, allowing you to move Volumes between systems within seconds.

linode-splash-block-storage-fault-tolerant

Resilient and Fault Tolerant

Volumes are configured with built-in data replication, ensuring that your data is highly-available and protected from loss.

linode-splash-block-storage-manage-data

Store Any Type of Data

Block Storage can be used to store any data, including website files, databases, media files, backups, or even bootable operating systems.

Specifications

Technical Specifications

  • Volume size: 10 GB - 16 TB
  • Storage technology: high performance NVMe SSDs*
  • IOPS: up to 8,000 (12,000 burst)
  • Throughput: up to 350 MB/s (525 MB/s burst)
  • Provides additional storage capacity to compute Instances and LKE clusters
  • Highly available and fault tolerant
  • Data is replicated through erasure coding
  • Volumes can be formatted, mounted, and accessed like locally connected storage devices
  • Up to 8 Volumes can be attached to a single Compute Instance
  • Provision via Cloud Manager or Linode CLI
  • Programmatic management via Linode API
  • Regional availability

Complementary Paid Services

Recommended Workloads

  • Suitable for workloads that require large amounts of storage
  • Storage solution for website files and media
  • Dedicated video, image, and other media server solutions, including Plex
  • Cloud-base file servers, including applications like NextCloud and ownCloud
  • Database storage, including for high traffic and demanding applications
  • Backup location for other applications
  • Boot device for running custom distributions
Video Thumbnail

NVMe Block Storage Overview

Carefully crafted for peak performance at the best price.

$0.10/GB per month. Hourly Billing. No usage fees.

$ /mo

Full-featured API

Programmatically control and manage your infrastructure.

STEP 1: Create and attach a Volume
Leverage the Linode API to dynamically create Volumes and attach them to compute instances. You can use cURL to access the API from your command line, or take advantage of our API's Python bindings.

If you use Terraform to provision your infrastructure, you can use the `linode_volume` resource to entirely manage your Volumes from within your Terraform plan. Manage Block Storage Volumes with the Linode API Linode API Reference Using the Linode CLI linode_api4-python on GitHub A Beginner's Guide to Terraform
curl -H "Content-Type: application/jsonType" 
  -H "Authorization: Bearer $token" 
  -X POST -d '{ 
    "label": "my-volume", 
    "size": 100, 
    "region": "us-east", 
    "linode_id": 1234567 
  }' 
  https://api.linode.com/v4/volumes
linode-cli volumes create 
  --label "my-volume" 
  --size "100" 
  --region "us-east" 
  --linode_id "1234567"
from linode_api4 import LinodeClient
client = LinodeClient(token)
client.volume_create('my-volume',
  linode=1234567,
  size=100)
resource "linode_volume" "my-volume" {
  label = "my-volume"
  size = "100"
  region = "${linode_instance.my-linode.region}"
  linode_id = "${linode_instance.my-linode.id}"
}
STEP 2: Mount an attached Volume
After you attach a Volume to a compute instance, format it and mount it from inside the instance. This makes the Volume's filesystem available to you.

You can issue a few commands from your SSH connection to mount your Volume. If you use a configuration management tool like Salt, Ansible, or Puppet for your instances, you can also manage this mount from your formulas, playbooks, and modules. How to Use Block Storage A Beginner's Guide to Salt Automatically Configure Servers with Ansible Getting Started with Puppet
mkfs.ext4 "/dev/disk/by-id/scsi-0Linode_Volume_my-volume"
​​​​​​​mkdir "/mnt/my-volume"
echo "/dev/disk/by-id/scsi-0Linode_Volume_my-volume /mnt/my-volume ext4 defaults,noatime,nofail 0 2" \
  | tee -a /etc/fstab
mount /mnt/my-volume
bsvolume:
  blockdev.formatted:
    - name: /dev/disk/by-id/scsi-0Linode_Volume_my-volume
    - fs_type: ext4

  mount.mounted:
    - name: /mnt/my-volume
    - device: /dev/disk/by-id/scsi-0Linode_Volume_my-volume
    - fstype: ext4
    - opts: defaults,noatime,nofail
    - pass_num: 2
    - mkmnt: True
    - require:
      - blockdev: bsvolume
- name: format the volume
  filesystem:
    fstype: ext4
    dev: /dev/disk/by-id/scsi-0Linode_Volume_my-volume

- name: mount the volume
  mount:
    path: /mnt/my-volume
    src: /dev/disk/by-id/scsi-0Linode_Volume_my-volume
    fstype: ext4
    opts: defaults,noatime,nofail
    passno: 2
    state: mounted
include lvm

filesystem { "/dev/disk/by-id/scsi-0Linode_Volume_my-volume":
  ensure  => present,
  fs_type => "ext4",
}

file { "/mnt/my-volume":
  ensure  => "directory",
}

mount { "/mnt/my-volume":
  ensure  => mounted,
  device  => "/dev/disk/by-id/scsi-0Linode_Volume_my-volume",
  fstype  => "ext4",
  options => "defaults,noatime,nofail",
  pass    => 2,
  require => [
    Filesystem["/dev/disk/by-id/scsi-0Linode_Volume_my-volume"],
    File["/mnt/my-volume"],
  ],
}

Related Content

Content Resources

Ready to get started or have questions?

Set up your free account today or contact a sales consultant to learn more.