Skip to main content

Storage and Volumes

The Volumes tab manages the filesystems attached to your cluster. Every volume you mount appears at the same path on the login node and every worker node, which is what makes distributed training possible.


The Storage Types

The tab has a sub-navigation on the left: Datasets, Shared File System, and Parallel File System — plus Weka in regions where it is offered.

TypeRead/writeRequired at createUse it for
Parallel File System (PFS)Read-writeYes in most regionsHigh-throughput training data, checkpoints, container squash files
Shared File System (SFS)Read-writeOptionalGeneral shared storage: scripts, logs, home directories
DatasetsRead-onlyOptionalCurated input data you never write to
WekaRead-writeYes where offered, in place of PFSHigh-performance shared storage

The console describes them as:

Datasets — Manage datasets attached to this training cluster. Datasets provide persistent storage for your training data.

Shared File System (SFS) — provides simple, scalable, and highly available file storage for cloud-based applications. It allows multiple nodes to access the same file system concurrently.

Parallel File System (PFS) — is optimized for high-performance computing environments, enabling simultaneous access to files by multiple processes across distributed nodes. It delivers rapid data throughput by distributing file data across multiple storage devices.

Datasets cannot be written to

A dataset mount is read-only. A job that tries to write a checkpoint or a log there fails with a permission error. Checkpoints and logs need PFS, SFS or Weka.

The tables

Each sub-tab has Mounted and Unmounted views.

ColumnShows
NameThe volume
SizeIts capacity
Storage StatusWhether the volume itself is ready (PFS and Weka)
Encryption / Encryption TypeEncryption state (Datasets)
Mount StatusMounted or Unmounted on this cluster
Mount PathThe path when mounted; an input when not
ActionsMount or Unmount

Mount a Volume

  1. Open the cluster → Volumes → the sub-tab for the type.

  2. Switch to the Unmounted view.

  3. Type a Mount Path in the row, e.g. /pfs or /shared.

  4. Click Mount.

  5. The dialog — e.g. Mounting SFS — warns:

    Mounting SFS will require restarting the cluster nodes.

    Do you wish to continue?

  6. Click Continue.

Mounting or unmounting restarts the cluster nodes, ending running jobs

This is the part people miss. The dialog says "restarting the cluster nodes" and it means every worker. All running jobs are lost.

Check the Jobs tab first and let jobs finish, or plan the mount for a quiet window. Better still, mount everything you expect to need at create time, when it costs nothing.

Mount path rules

RuleDetail
Must start with /pfs is invalid; /pfs is valid
Cannot be /The root itself is not allowed
No // and no trailing //a//b and /pfs/ are invalid
No spacesThe space key is blocked in the field
Must be uniqueTwo volumes cannot share a path
ErrorsMount path is required · Invalid path format
Pick paths you will still understand in six months

/pfs, /shared, /data beat /mnt/volume1. Keep them consistent across clusters so job scripts port unchanged — and remember the path is baked into every script, #SBATCH --output line and --container-mounts flag your team writes.


Unmount a Volume

  1. Volumes → the sub-tab → Mounted view.
  2. Click Unmount on the row.
  3. Confirm the dialog — e.g. Unmounting PFS — which carries the same restart warning.

The data is not deleted. Unmounting detaches the volume from this cluster; the volume and its contents remain and can be mounted elsewhere.

When unmount is blocked

SituationWhat you see
It is the last mounted volumeCannot remove storage. At least one storage volume must remain mounted on the cluster. Mount a replacement first
It holds the persistent-login home directoriesThe dialog reads "This volume is in use by Persistent Login User Management. Disable it first." and offers only Cancel

For the second case, disable Login User Management first — which preserves the home directories.


Storage Inside a Container

A container job starts from the image's own filesystem. Your mounts exist on the node, but you have to pass in what the job needs:

srun --container-image=/pfs/images/pytorch.sqsh \
--container-mounts=/pfs:/pfs,/shared:/shared \
--container-workdir=/pfs/project \
python train.py

You can remap paths — --container-mounts=/pfs/datasets/imagenet:/data makes the dataset appear at /data, which is convenient when your code expects a fixed location.

Forgetting --container-mounts is the most common container-job mistake

The job starts, runs, and reports that your dataset does not exist. Nothing is wrong with the mount — it was simply never passed into the container.


What Goes Where

DataPut it onWhy
Training datasetsPFS or WekaThroughput matters most here
CheckpointsPFS or SFSMust survive node restarts and be readable by every rank
Job scriptsSFS or PFSSo they survive a login-node restart
Job logs (--output)PFS or SFSOtherwise lost with the pod
Container squash filesPFS or SFSEvery node reads the same file — see Cache images
Python environmentsPFS or SFS, or a container imageReinstalling after every restart is a waste of time
Per-job scratch/tmp on the nodeFast, node-local, and cleaned up by a Worker Epilog
Very fast shared memory/dev/shmRAM-backed, per node, wiped with the pod
Node-local paths are not shared and do not survive

/tmp, /dev/shm and anything in /root are private to one pod and erased when it is recreated — which happens on every restart, scale, image update and node reboot. In a multi-node job, a checkpoint written to /tmp on rank 0 is invisible to every other rank.

If it matters, it goes on PFS, SFS or Weka.

A layout that works

/pfs/
├── datasets/ # input data
├── images/ # container squash files
├── project/ # code, job scripts
├── checkpoints/ # per-run subdirectories
├── logs/ # sbatch --output / --error
└── envs/ # virtualenvs, if you are not using containers

Then #SBATCH --output=/pfs/logs/%x-%j.out and --container-image=/pfs/images/pytorch-25.09.sqsh are the same in every script your team writes.


Capacity and Billing

Storage is billed separately, and keeps billing after the cluster is gone

Volumes are billed independently of the cluster. Terminating a cluster unmounts your volumes but does not delete them — the charges continue. Review PFS, SFS and datasets under Storage in the sidebar when you clean up. See Billing.

Keep an eye on usage from the login node:

df -h /pfs /shared
du -sh /pfs/*
du -sh /pfs/checkpoints/*
A full filesystem fails in confusing ways

When PFS fills up, checkpoint writes fail mid-run, container imports fail, and job output truncates — often with errors that look nothing like "disk full". Checkpoints and squash files are the usual culprits. Prune old runs on a schedule, or with a Controller Epilog.


Last updated on September 10, 2026.