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
bond0link 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. Both options appear on the volume page after you map the volume to a server, once its status shows Mapped.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.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.Using the volume
After connecting, the volume shows up as a new NVMe device. Device numbers such asnvme1n1 change between servers and can point at a local disk, so identify the volume before touching it:
/dev/disk/by-id/, and keep that path for /etc/fstab so a device renumbering after reboot can’t mount the wrong disk:
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.
Performance
Measured withfio and direct I/O on the unformatted volume, from a server with a 2×10 Gbps bond:
Results depend on the server’s network capacity, the filesystem and the workload.
Traffic to the volume uses both links of the bond with no tuning. At these rates, sequential throughput and random reads are limited by the server’s network.
These results use many parallel requests. The random read result needs about 1,000 requests in flight, for example 16 threads at a queue depth of 64. A single 4 KiB request takes about 0.4 ms to read and 0.9 ms to write, similar to file storage.
Expanding a volume
Volumes can grow but not shrink. Use Expand in the volume’s actions menu and pick a new size, up to 20 TB. Volumes can be expanded while mapped, and the server keeps running. Billing is prorated to the new size from the day you expand. If Expand doesn’t appear for a volume, that volume can’t be resized; contact support. After the resize, setVOLUME to the volume’s path under /dev/disk/by-id/, as in Using the volume, and confirm the server sees the new size:
+- names one of the volume’s controllers, such as nvme10. Rescan any of them, replacing <controller> with its name:
sudo xfs_growfs /mnt/volume instead.
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.
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
Current limits
- Map one block volume per server for now.
- Volumes can be expanded but not shrunk. Create a new volume if you need a smaller one.
- 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.