The file systems
Last updated on 2026-10-27 | Edit this page
Overview
Questions
- How long does a file last on home, on scratch-shared, in
$TMPDIR, and on the project space? - What does a Snellius quota line say, and what do you run when
myquotais not there?
Objectives
- Match home, scratch-shared, scratch-local, scratch-node, project, and archive to a lifetime.
- Read a 200 GiB home quota and a three-week restore window for deleted home files.
- Use the tab’s paths on the course cluster instead of the Snellius paths.
Six places on Snellius
A path decides the speed, the backup, and the day the file disappears. On Snellius the layout is a table. Learn the table, then read the tab. If your tab does not list a path, that path is not on your machine. Do not create it because the table has the name.
| Place | Speed | Size | Backed up | When it ends |
|---|---|---|---|---|
/home |
Normal | 200 GiB | Yes | Project end, plus 15 weeks |
/scratch-shared |
Fast | 8 TiB, shared with scratch-local | No | 14 days |
/scratch-local |
Fast | Counted in that 8 TiB | No | 6 days |
/scratch-node |
Very fast | The node disk, no quota | No | End of the job |
/projects |
Fast | On demand | No | End of the project |
/archive |
Very slow | On demand | Yes | End of the project |
Home is /home/$USER. The quota is 200 GiB. The file
system is backed up overnight. A home file that has already been backed
up can be restored for three weeks after you delete it. The directory
itself lasts until the project ends, plus 15 weeks. Three weeks is how
long a deleted file stays in the backup. Fifteen weeks after the project
is when the directory itself goes away.
Home is the right place for scripts, configuration, and small inputs. It is a poor place for a multi-gigabyte output. The backup has to copy what you put there, and the quota is the smallest cap in the table.
Scratch is fast temporary space. The default scratch quota is 8 TiB, counted across scratch-local and scratch-shared for your user. There is no backup.
Scratch-shared is /scratch-shared. The login node and
the compute nodes can see it. You make your own directory,
/scratch-shared/$USER. Data that sits unused is removed
after 14 days. Use it for large job output that other nodes, or a later
job this week, must read.
Scratch-local is a directory on that same GPFS scratch, created for a
job and reached as $TMPDIR. The path looks like
/scratch-local/$USER.$SLURM_JOB_ID. realpath
shows a GPFS path under /gpfs/scratch1/nodespecific/. The
directory is specific to the job. A second job on the same node gets a
different directory. The table gives it 6 days. It counts against the 8
TiB quota, so old job directories still count until they expire.
Scratch-node is NVMe on the node itself. $TMPDIR points
at your directory under /scratch-node when the job asked
for it. It is removed when the job ends, so a result you need has to be
copied off before the script exits. There is no quota and no backup. On
Snellius it is not on every node. Fat nodes have it, and a subset of the
rome, genoa, and GPU nodes have it. The
request is --constraint=scratch-node. A shared node gives
you a portion of that disk, not the whole device.
Project space is /projects. It is fast, it is not backed
up, and it lasts until the project ends. This is the place for a result
the group must keep, and for data that is too big for home. The size is
on demand.
Archive is /archive. It is very slow, it is backed up,
and it lasts until the project ends. It is for data you will not read
during the run. The Snellius tab below names it as tape, and as a path
you use from the login and staging nodes.
The course cluster does not have this list
The table is Snellius. The course cluster has a shorter set of paths.
Read them from the tab. Do not type /scratch-shared,
/scratch-node, or /archive unless the tab
lists them.
On the course cluster the tab has home, a project path, a scratch
path, and $TMPDIR for the job. There is no
/scratch-shared, no /scratch-node, and no
/archive. $TMPDIR is removed when the job
ends. A file on the login node’s scratch is not the same file as a
compute node’s scratch. The later episode writes job files inside the
job.
Read the quota before you fill it
The command depends on the machine. On Snellius, myquota
prints bytes and inodes for home and for scratch. A home line from the
documentation looks like this:
scur1448@home4|GiB:quota=200.00,limit=210.00,usage=0.0000%|Inodes:quota=1000000,limit=1200000,usage=0.0008%
quota is the amount you are given. limit is
a little above that. usage is how full you are. Home is 200
GiB and 1,000,000 inodes. Scratch is 8 TiB across scratch-local and
scratch-shared. Inodes are the metadata count from the previous episode.
A small usage on bytes can still sit next to a full inode
quota if the directory is many tiny files.
On the course cluster there is no myquota.
df -h prints size, used, and free for a mount.
du -sh ~ prints one size for your home.
Type along
Run the command in the tab. Read the home number before you copy a large tree.
A job directory is not a place you keep
$TMPDIR inside a job is space for that job. Copy
anything you must keep to home or to the project path before the script
exits. The login node’s $TMPDIR is a different directory.
Do not prepare a job’s files there and expect the compute node to see
them.
Scratch-node is the fast case of the same idea, and only on Snellius. The constraint is how you ask for a node that has the disk. The course cluster tab tells you to drop the constraint.
Which file is still there?
A job writes the same run.dat in three places:
- A.
/scratch-shared/$USER/run.daton Snellius - B.
$TMPDIR/run.datin a scratch-node job on Snellius, or the job’s$TMPDIRon the course cluster - C. the project path from your tab, for example
/projects/$USER/run.daton Snellius
Nobody touches the files afterwards. Which copies still exist after the job ends? Which still exist 14 days later? Which still exist when the project ends?
After the job ends, A and C are still there. B is gone. Scratch-node
is removed at the end of the job. On the course cluster the job’s
$TMPDIR is removed at the end of the job as well. The login
node cannot open that path in the afternoon.
Fourteen days later, A is gone. Unused scratch-shared data is removed after 14 days. C is still there. B was already gone.
When the project ends, C ends with the project. A ended at 14 days. B
ended with the job. Home is not one of these three. Home would last
until the project ends plus 15 weeks, and a deleted home file can be
restored for three weeks, but a large run.dat should not
have been put there.
Scratch-local, the $TMPDIR you get without
--constraint=scratch-node on Snellius, has its own
lifetime. The table gives it 6 days, and it is not path B.
- Snellius home is 200 GiB, backed up, with three weeks of deleted files in the backup.
- Scratch-shared lasts about 14 days. Scratch-local lasts about 6 days. Scratch-node ends with the job.
- Project space and the archive last until the project ends. The archive is the slow, backed-up copy.
- The course cluster tab replaces this list. Do not invent
/scratch-sharedthere. -
myquotais the Snellius report.df -handdu -share the tools when it is absent.