Solutions · Data & Storage

Data Management & Storage

Ultra-low-latency architectures, high-IOPS tiers sized to accelerator demand, and multi-petabyte hybrid pipelines. We design the storage estate around data gravity first, because moving petabytes is slower and dearer than most architecture diagrams admit.

The First Constraint

Data gravity decides the architecture. Everything after that is negotiation.

A petabyte does not move because a diagram says it should. We start by measuring where your bytes already sit, how fast they grow, who reads them and what it costs in wall-clock hours to put them somewhere else.

Storage designs fail in a small number of predictable ways. A team buys accelerators, then finds the filesystem delivers a third of the read bandwidth the training loop needs. A pipeline is designed to read from an object store in another region, and the first full pass takes a fortnight. An archive tier is specified for cost per terabyte, then used as a working set.

All three are the same error: treating capacity as the design variable when the real variable is movement. The arithmetic below is not a benchmark. It is division, and it is the first slide in every storage review we run.

1 PB at 10 Gbit/s
9.3 days at line rate. Nearer 13 days at the 70 per cent efficiency a real transfer sustains over a real WAN.
1 PB at 100 Gbit/s
About 22 hours at line rate, or 32 hours in practice — and only if the source filesystem can actually read that fast.
Egress
Billed per gigabyte. One petabyte is a million gigabytes. Multiply by your provider's published rate before you design a loop that reads across a cloud boundary.
Re-reads
Training and rendering read the same dataset many times. Transfer cost is paid once. Read cost is paid every epoch, every frame, every retry.
13 daysWall clock to move one petabyte over a 10 Gbit/s link at 70 per cent sustained efficiency
32 hThe same petabyte over 100 Gbit/s, assuming the source can be read at line rate
1 000 000Gigabytes of egress billed for each petabyte read back across a cloud boundary
Architecture diagram — data gravity map: where bytes live, how they grow, and every boundary a read crosses (1600×1200)

The Tiering Model

Four tiers, each earning its cost per terabyte.

Tiering is not a licence to buy the cheapest medium. Each tier exists because a specific access pattern would be ruinous on the tier above it, or unbearably slow on the tier below.

01

NVMe scratch — the working set, and nothing else

Local or fabric-attached NVMe, sized to hold one job's working set with headroom for checkpoints. Microsecond-class latency, the highest cost per terabyte in the estate, and no resilience guarantee anyone should rely on. Scratch is purged by the scheduler epilogue. We write that into the Slurm job template and the user documentation. The first person to leave a thesis in scratch should learn the rule from a wiki page, not from a purge.

02

Parallel filesystem — the tier that keeps accelerators fed

Lustre, BeeGFS, WEKA or VAST, chosen on your file size distribution and metadata rate rather than on a vendor's bandwidth slide. Lustre earns its place at rack scale with large sequential reads and a team that can operate it. BeeGFS trades the last slice of performance for markedly simpler operations. WEKA and VAST are where small files and metadata dominate, and where you accept a higher cost per terabyte to make that problem disappear. We shortlist two and run your data on both.

03

Bulk object — the system of record

S3-compatible, erasure coded across nodes and racks, holding everything durably at a price that survives a budget review. Object is deliberately never in the hot path of a training loop: first-byte latency is tens of milliseconds, two to three orders of magnitude behind the NVMe tier. Versioning, object lock and the authoritative copy of every dataset live here.

04

Archive and tape — the tier procurement forgets

LTO in a library, or a cloud archive class, at a small fraction of the cost per terabyte of object storage. Retrieval is measured in minutes to hours, which rules it out of any interactive workflow. It is also the only tier that is physically offline, and that single property is why it survives a compromised administrator credential when every online copy does not.

Indicative tier characteristics — replace with quoted figures for your configuration
Tier Typical media Read latency Sustained read Relative cost per TB Designed for
NVMe scratch PCIe Gen4 / Gen5 TLC NVMe, local or over NVMe-oF 70–150 µs 6–14 GB/s per node Highest in the estate One job's working set, checkpoint bursts, shuffle and spill
Parallel filesystem NVMe metadata and hot pool, QLC or HDD capacity pool 200 µs – 1 ms 40–400 GB/s per cluster 6–10× object Shared hot dataset read concurrently by many nodes
Bulk object QLC SSD or high-capacity HDD, erasure coded 10–80 ms to first byte 10–60 GB/s per cluster Baseline System of record, immutable copies, cross-site replication
Archive and tape LTO-9 library, or cloud archive storage class 30 s – 4 h to first byte About 400 MB/s per drive Roughly 0.1× object Long retention, statutory records, offline last resort
Read the middle column first. Latency, not capacity, is what makes a tier fit for a workload. A tier whose first-byte latency is orders of magnitude off your access pattern cannot be rescued by adding capacity or adding nodes. Cache does not save it either, unless the reader reuses data.

Ultra-Low-Latency Data Paths

Four ways to shorten the path. Two are usually theatre.

Each of these technologies works. The question is whether the latency it removes is the latency you are actually paying. We measure that on your workload before quoting any of them.

NVMe-oF

Disaggregates NVMe from the host over RDMA or TCP, adding roughly ten to twenty microseconds over a local device. It earns its place where you want near-local latency with pooled capacity and independent failure domains. Re-pointing a shelf at a surviving node after a failure is the operational payoff. It does nothing at all if your bottleneck is a single-threaded reader issuing one request at a time.

Verdict — strong for pooled scratch, pointless behind a shallow queue depth

RDMA — RoCEv2 and InfiniBand

Takes the CPU out of the copy path and removes a context switch per transfer. On InfiniBand the fabric behaves itself by design. On RoCEv2 it does not. You need PFC, ECN and buffer tuning that agrees with your switch model. You also need a congestion plan for the incast a parallel filesystem creates on every collective read. An untuned RoCE fabric is slower and far less predictable than plain TCP.

Verdict — real gains, but the fabric configuration is the project

GPUDirect Storage

DMA straight from NVMe or the fabric into GPU memory, skipping the host bounce buffer and the page cache. Meaningful on large sequential reads into a training loop that is genuinely input-bound. Before we quote it we measure accelerator stall time per step. If your GPUs wait on I/O for four per cent of the step, the upper bound on what GPUDirect can return to you is four per cent.

Verdict — measure accelerator I/O stall time before you buy it

Kernel bypass — SPDK and io_uring

Removes syscall and page-cache overhead for applications written to use it. That rewrite is the real cost, and it lands on the application team rather than on the storage budget. For most workloads io_uring recovers the majority of the win without leaving the kernel or forking the codebase. Full SPDK belongs where a few microseconds of tail latency have a price attached — market data capture, order gateways, tick stores.

Verdict — decisive in trading systems, rarely justified elsewhere

Where it becomes theatre. Two patterns we decline to quote. First, a microsecond-class fabric in front of a pipeline whose real cost is a script opening and closing a file per record. The fabric removes 40 µs from an operation spending 4 ms in userspace. Second, GPUDirect Storage on a small-file dataset where metadata dominates and the data path was never the constraint. You will read both findings in the profiling report, before the purchase order.

High-IOPS Design

Metadata is the bottleneck. It almost always is.

Bandwidth numbers sell storage. Metadata operations per second decide whether a genomics run or a VFX shot finishes inside its window.

Sizing to accelerator demand is arithmetic you can do on a whiteboard. A GPU node consuming 3 GB/s of training data needs 3 GB/s delivered to it. Add headroom for checkpoints, which arrive as one synchronised burst across every rank. Multiply by node count, then compare against the measured read bandwidth of the filesystem rather than the quoted one.

Then check the other axis, which is the one that usually breaks. A run that opens two million files an hour is issuing two million metadata requests an hour, and most filesystems saturate metadata long before they saturate bandwidth. The fix is rarely more capacity. It is more metadata servers, a filesystem with a distributed namespace, or a change to how the workflow lays out its intermediates.

  • Accelerator-side measurement: I/O stall time per step, not filesystem-side throughput graphs
  • Metadata server sizing, and namespace sharding where the filesystem supports it
  • Checkpoint burst modelling — the synchronised write that takes clusters down at 3 a.m.
  • Stripe width, read-ahead and lock contention tuned against your access pattern
  • Small-file remediation upstream: packing, sharded formats, work directories on local NVMe
Genomics
FASTQ and BAM files are large, but alignment, QC and variant calling scatter millions of small intermediates across a shared namespace. A Nextflow work directory is a metadata workload wearing a bioinformatics costume.
VFX and animation
One frame may touch thousands of texture, cache and OpenUSD layer files. A hundred artists doing that at once is a metadata denial-of-service against an untuned filesystem, and it shows up as artists waiting, not as a storage alert.
Medical imaging
DICOM studies arrive as many thousands of small objects per series. Archive layout decides whether a clinician's retrieval takes two seconds or two minutes.
Simulation output
OpenFOAM and similar solvers write per-rank, per-timestep directories by default. Collective or sharded output turns a metadata storm back into a bandwidth problem, which is the problem you would rather have.
If a filesystem benchmark is the only number in a storage proposal, the proposal has not been read against your workload.
Cloud Natives storage practice First item on the design review checklist

Multi-Petabyte Hybrid Pipelines

Lifecycle policy is a governance decision wearing a storage costume.

Who may delete what, when, and on whose authority — that is a records management question. The storage system only enforces the answer. We ask for the answer in writing before configuring a single rule.

Catalogue before you move anything

You cannot tier what you cannot see. We build an inventory first: size distribution, age, last-read time, owner, retention class and jurisdiction, held in a catalogue that outlives the migration. It is common to find a large share of an estate's capacity has not been read in over a year. It is also common that nobody currently employed knows who created it.

Classify against a retention schedule someone has signed

Every dataset maps to a retention class with a named owner. In a Commonwealth agency that means a records authority. In health it means the applicable state retention schedule. In publicly funded research it means the data management plan the funder accepted. We implement the schedule you give us, and we document what we implemented. We are infrastructure engineers, not your records authority or your legal advisers.

Stage for compute, deliberately

Jobs declare their input set. The scheduler stages it onto the hot tier before the job starts, and the epilogue releases it. That is Slurm prolog and epilog hooks, or a data-aware workflow engine such as Nextflow doing the same work one layer up. An accelerator waiting on a cold read is capacity you paid for and did not use. It is also invisible in any graph that counts allocated rather than busy.

Tier by policy, with two non-negotiable rules

A policy engine demotes cold data and promotes on access. Two rules survive every design review. Never demote an object a running or queued job has declared. Always log the demotion, so a researcher can find out why a read took forty seconds instead of four hundred microseconds. Silent tiering destroys trust in a platform faster than an outage does.

Control egress at design time, not at invoice time

Egress is charged per gigabyte and it is the line item that turns a sensible hybrid design into a budget incident. Decide where the authoritative copy lives, and keep the read-heavy loop on the same side of the boundary as the data. Cache derived artefacts instead of re-reading source. Put a monthly egress ceiling in the runbook, with an alert set well below it.

What we will not do. We will not configure a deletion rule on the basis of a verbal instruction. Lifecycle rules destroy data on a schedule, and the authority for that schedule belongs in a signed document referenced by the runbook. If that document does not exist yet, the tiering policy stops at demotion and nothing is deleted until it does.

Resilience & Recovery

3-2-1 is a floor, and most estates fail it honestly.

Three copies, two media, one off-site. The rule is sound, and it is routinely satisfied on paper by three copies that share one credential, one control plane and one blast radius.

Ransomware changed what a backup has to survive. The threat model is no longer a failed drive or a flooded comms room. It is an authenticated administrator deleting snapshots and retention locks for a fortnight before encrypting the primary. A copy that can be removed with your own credentials is not a copy.

So we restate the rule in terms of what actually has to be true, and we test the restore rather than the backup job's exit code.

  • Three copies that fail independently — separate credentials, separate control plane, separate fault domain. Three replicas inside one array is one copy.
  • Two media, read honestly — two SSD tiers behind the same controller firmware share its bugs. A different vendor, or tape, is the point of the clause.
  • One copy offline or immutable — object lock in compliance mode, or a cartridge in a slot. Something no valid credential can shorten inside the retention window.
  • Snapshot cadence matched to the work — hourly on a live namespace during a production run, daily on reference data. Cadence sets your recovery point; nothing else does.
  • Restores rehearsed on a calendar — a backup that has never been restored is an untested assumption with a licence fee attached.
Architecture diagram — copy topology with credential and control-plane boundaries marked (1600×1200)
Recovery time
Measured on a real restore of a representative dataset, recorded against the agreed RTO, and re-measured after any change to the tiering policy.
Recovery point
Set by snapshot cadence and replication lag, stated per tier. A single site-wide RPO figure usually hides a tier that cannot meet it.
Restore from archive
Tape and cloud archive restores are bandwidth-bound and slow by design. We publish the expected hours so nobody discovers them during an incident.

140PB

Under management

Aggregate capacity designed or operated by Cloud Natives across client estates, counting usable rather than raw.

1.2TB/s

Peak sustained read

Largest parallel filesystem delivered, measured with IOR and then re-measured on the client's own workload.

68%

p99 read latency reduction

Median improvement on read-heavy pipelines after a storage path and interconnect redesign.

4/ year

Restore rehearsals

Full restore tests per year on managed storage platforms, with the measured restore time recorded against the RTO.

Placeholder data. These four figures are illustrative and must be replaced with audited measurements before this page goes live. Supply the numbers and their measurement method and we will wire them in with the methodology footnotes.

Questions We Get Asked

The questions that actually decide the design.

Short answers, including the ones that talk you out of buying something. If your question is not here, it is probably the interesting one — send it through.

Start With The Profile

Send us the access pattern. We will tell you which tier you actually need.

Four things get us a long way: total capacity and growth rate, the file size distribution, the read pattern per job, and the retention obligation. From that we can usually tell you where the bottleneck is before anyone quotes hardware.

Storage practice
hello@cloudnatives.example
Direct line
+61 0 0000 0000
Existing clients — 24/7 NOC
+61 0 0000 0001

Bring a capacity report and a week of filesystem metrics if you have them. If you do not, we will help you collect them first.