Block Volumes
A volume is a network block device backed by Ceph. You attach it to an instance where it appears as an additional disk you can partition, format, and mount — ideal for data that must outlive the instance's root disk.
Create a volume
Under Storage → Volumes → Create, choose a name, a size (in GiB), a volume type, an availability zone, and optionally encryption at rest:
| Type | For |
|---|---|
ssd | General-purpose SSD (the default) |
nvme | High-performance NVMe |
hdd | Capacity / archival |
fm storage volume create --name data-1 --size 100 --type ssd --zone sweden-a --encryptedresource "frostmoln_volume" "data" {
name = "data-1"
size_gb = 100
volume_type = "ssd"
zone = "sweden-a"
encrypted = true
}Attach and mount
Attach a volume to an instance from the volume detail page, the instance's Storage tab, or the CLI. A volume attaches to one instance at a time (an instance can have many volumes):
fm storage volume attach data-1 web-1 # optional: --device /dev/vdbWith Terraform the attachment is its own resource, not an argument on the volume:
resource "frostmoln_volume_attachment" "data" {
volume_id = frostmoln_volume.data.id
instance_id = frostmoln_instance.web.id
device_path = "/dev/vdb" # optional
}Then log in and mount it:
sudo mkfs.ext4 /dev/vdb
sudo mkdir -p /mnt/data && sudo mount /dev/vdb /mnt/dataAdd it to /etc/fstab to mount on boot. Detach with fm storage volume detach data-1 (use --force only if necessary).
Resize
Volumes can grow (not shrink):
fm storage volume resize data-1 200After expanding the volume, grow the filesystem inside the instance (resize2fs / xfs_growfs).
Snapshots
Capture a point-in-time snapshot of a volume, and create new volumes from a snapshot:
fm storage snapshot create --name data-1-snap --volume data-1
fm storage snapshot list --volume data-1
# Restore = create a NEW volume from the snapshot (snapshot_id at create time)There is no in-place "restore over" an existing volume — you create a fresh volume from the snapshot and attach it.
Notes and limits
- Single-attach — one instance at a time.
- Resize is grow-only; the availability zone is fixed at creation.
- Volumes are billed by provisioned size (per type) for as long as they exist, attached or not.