Every HPC centre, whether it is a research centre, an AI factory or a private supercomputing facility, hits the same wall sooner or later: the parallel file system fills up faster than the budget for the next expansion. Object storage looks like the obvious answer. It scales to many petabytes, it is cheaper per terabyte than a flash or disk tier tuned for bandwidth, and every vendor now speaks S3.
But HPC object storage is not a drop-in replacement for a parallel file system. Tier the right data to it and you free expensive capacity without anyone noticing. Tier the wrong data and jobs slow down, scripts break and users start copying files back by hand. The model that works gives each tier a clear role: the parallel file system for scratch and hot data, S3 object storage for long-term datasets, and data moved between the two when a project needs it.
This article explains what object storage is good and bad at in an HPC environment, which data belongs there, which data does not, and the patterns that make tiering work in practice.
Object storage stores data as objects in a flat namespace of buckets, each object addressed by a key and read or written whole through an HTTP API such as S3. That design gives it a few strengths that matter to HPC teams.
The same design choices create limits that HPC applications run into quickly.
None of this makes object storage a bad tier. It makes it a tier for a specific kind of data.
The data that fits object storage is large, finished and rarely touched. In most HPC environments that means:
Checkpoints are a special case. Most checkpoints are written, kept briefly in case a job fails, then deleted, and they should stay on fast storage for that short life. Only the few you deliberately keep, for example the final state of a long run, are worth tiering, and only once they are no longer needed for a restart.
Keep data on the parallel file system when any of the following is true.
| Data | Tier to object storage? | Why |
|---|---|---|
| Scratch and in-flight job data | No | Needs low latency and POSIX; short-lived |
| Restart checkpoints | No | Written and deleted within the life of a job |
| Checkpoints kept as final state | Yes, once the run is done | Large, write-once, rarely read |
| Active small-file datasets | No | Request overhead and slow listing |
| Completed project data | Yes | Must be kept, rarely accessed |
| Cold results and processed outputs | Yes | Large, finished, read occasionally |
| Data shared with partners or cloud tools | Often yes | S3 access is the point |
| Data needing in-place updates or renames | No | No POSIX semantics on object storage |
Deciding which data belongs on object storage is half the job. The other half is moving it, and bringing it back, without disrupting users.
Decide, then move with precise criteria. The storage team, a project owner or a researcher decides what should move and when, for example a completed project, or outputs older than six months in a given directory. The move itself should then select files by clear criteria such as path, age, last access, size or owner, rather than by hand-made file lists that go stale.
Keep a namespace users recognise. Users think in paths, not buckets. Object keys that mirror the original paths keep the data readable with standard S3 tools, and let a researcher find a file where they expect it.
Make recall a request, not a ticket. Users or pipelines should be able to ask for data back, and get it onto the parallel file system, without waiting for the one administrator who knows the system. An API or a webhook lets a workflow manager request the data before a job starts.
Pack small files when you must move them. If the data contains many small files, packing them into larger objects before transfer avoids paying request overhead millions of times. The trade-off is that recalling a single file means reading the pack.
Verify every transfer and keep a record. A move that deletes the source must be sure the copy is intact. Checksums on every object, and an audit trail of what moved where and when, turn data movement from a risk into a routine operation.
Plan the network path. Moving data off the cluster should not compete with compute traffic. Running transfers on dedicated data mover nodes keeps the compute nodes free for jobs.
NODEUM Data Mover executes the data movements you decide on. You choose what moves, from where and to where: between parallel file systems, NAS, S3-compatible object storage and cloud.
You select the data by storage source or dataset, then filter it by path, age, size, owner or metadata. Each move runs when you launch it, at a time you schedule, or when another system calls it through an API or webhook. Every transfer is verified with checksums and recorded, so you can show what moved, when and where. Transfers run on NODEUM's own nodes rather than on your compute nodes.
The same engine moves data back. When a dataset is needed again, a user or a pipeline asks for it and Data Mover returns it to fast storage, without someone rebuilding the original path by hand. If the data also needs long-term preservation, NODEUM Data Archiving adds containers with placement policies over secondary pools, including tape.
Supported object storage targets include OpenStack Swift, Ceph and MinIO over S3, and the object storage platforms of the main vendors, such as DDN, IBM and others.
The model that works is simple: the parallel file system for scratch and hot data, S3 object storage for long-term datasets, and data moved between the two whenever a project needs it. To get there, start by measuring what is actually cold, then decide what moves before you buy the capacity.
Want to see data moved to object storage, and back, on a setup like yours? Book a Data Mover demo and we will walk through selecting the data, the verification and the recall path with your storage team.