Skip to main content
Block storage gives you persistent, high performance volumes for bare metal servers. A volume lives independently of any server: you create it in a project, map it to one of your servers, and the server reaches it over a private storage network using NVMe/TCP. Data stays on the volume when you unmap it, so you can move it to another server in the same location.

Prerequisites

  • A verified team and a project in a location where high performance storage is available. The create flow only lists those locations.
  • A bare metal server in the same project and location as the volume, bonded onto a public network. Bonding gives the server the redundant bond0 link the storage network is delivered on. See Network bonding.
  • One of the supported operating systems if you want the server to be configured automatically.

Creating a volume

1

Open the create flow

In the dashboard, go to Storage > Block storage and click Create volume.
2

Choose a location and size

Pick the location and set the capacity. The volume must be in the same location as the server you plan to map it to.
3

Create

Click Create volume. The volume opens on its detail page, ready to be mapped.

Mapping a volume to a server

Mapping connects the volume to one server. The server must be in the volume’s project and location.
1

Pick a server

On the volume page, open the server picker under Assigned server. Servers already on a public network show a Bonded badge and can be selected. Servers that support bonding but aren’t on a public network yet show Reinstall to bond and can’t be selected until you bond them. Servers that can’t be bonded aren’t listed.
2

Assign

Click Assign. The status shows Mapping while the volume is being attached, then Mapped. If the mapping fails, pick a server and try again.
If the volume’s location has no public network in your project yet, the volume page offers to create one before you can pick a server.

Activating storage networking on the server

Once the volume is mapped, the server needs a storage VLAN on top of its bond and an NVMe/TCP connection to the volume. You can let Latitude.sh configure this, or do it yourself.

Option 1: Reinstall

Click Reinstall on the volume page. Reinstalling with a supported operating system configures the storage VLAN, the routes and the NVMe/TCP connection automatically, and connects the volume on boot.
Reinstalling erases the server’s disks. Back up anything you need first.

Option 2: Configure manually

If you don’t want to reinstall, click View guide on the volume page. The guide lists the commands for your server and fills in the values the platform already knows, such as the storage VLAN id. Anything still shown as a placeholder, such as the storage IP or gateway, comes from Latitude support; replace it before applying. In short:
1

Add the storage VLAN on top of the bond

Create a netplan file that defines a VLAN on bond0 with the storage IP and the routes to the storage networks, then apply it with sudo netplan generate and sudo netplan apply.
2

Run the storage setup script

Download and run lsh-block-setup.sh. It installs the NVMe/TCP tooling, sets the server’s NVMe host name, and seeds the discovery target. Review the script before running it; it lists its changes and only acts with your approval.
3

Connect the volume

Run sudo nvme connect-all. The volume appears as an NVMe device on the server.
The manual path changes live networking on the server. Keep an out-of-band session open as a fallback.

Using the volume

After connecting, the volume shows up as a new NVMe device. Device numbers such as nvme1n1 change between servers and can point at a local disk, so identify the volume before touching it:
The mapped volume is the NVMe/TCP device whose size matches the volume you created. Format and mount it using its stable path under /dev/disk/by-id/, and keep that path for /etc/fstab so a device renumbering after reboot can’t mount the wrong disk:
Set VOLUME to the entry under /dev/disk/by-id/ that matches the serial you found. The ls line confirms it points at the device you expect.
Formatting erases the device. Double-check the size and serial before running mkfs.

Unmapping and deleting

To move a volume to another server, release it on the server first: stop anything using the mount, unmount it, and remove its /etc/fstab entry so the next boot doesn’t wait for a device that is no longer there.
Then click Unmap server on the volume page. The status shows Unmapping until the volume is detached. Data on the volume is preserved and you can map it to another server in the same location. To delete a volume, unmap it and use Delete volume in the volume’s actions menu. Deleting a volume permanently removes its data.

Supported operating systems

Automatic configuration on reinstall is available for these images:
  • Debian 13
  • Ubuntu 24.04 and 26.04
  • AlmaLinux 9 and 10
  • Rocky Linux 9 and 10
On other operating systems, use the manual guide.

Current limits

  • Map one block volume per server for now.
  • Volumes can’t be resized after creation. Create a new volume if you need more capacity.
  • A volume can only be mapped to a server in the same project and location.
  • Automatic configuration requires a reinstall with a supported operating system. On other images or without a reinstall, follow the manual guide.
These limits are being worked on and will be lifted in upcoming releases.

Pricing

Block storage costs $0.80 per GB per month, billed on provisioned capacity while the volume exists, whether or not it is mapped. The total for the size you choose is shown in the create flow before you confirm. See the storage pricing page for details.