← Storage: capacity, performance, and recovery
08 / 8 · 60 MIN

Capacity, I/O, and copy validation

Calculate rates from comparable samples, assess capacity limits, and distinguish intact copying from functional recovery.

The window is part of the measurement

The seventh group uses synthetic samples without reading host counters. Over eight seconds, completed reads move from 100 to 228 and sectors from 1000 to 5096. The difference is 128 reads and 4096 sectors. Using the 512-byte sectors defined for these Linux counters gives sixteen reads per second, 262144 bytes per second, and 16384 bytes per completed read. These values belong to the observed layer; they do not automatically identify application calls because other layers can combine or split operations. Store resource identity, epoch, duration, and units with the sample. Without that context, a correct number can answer the wrong question.

A continuity break is not negative traffic

The same group then supplies a lower counter, as could happen after resource replacement or reset. The function returns no rate for that window. Taking an absolute value would invent activity; publishing a negative number would suggest a phenomenon the counter does not represent. Diagnosis should retain the discontinuity and obtain a new comparable baseline. Also consider identity changes that retain increasing values: numerical monotonicity alone does not establish continuity of one device. The model rejects only explicitly implemented conditions and does not automatically discover hotplug, wraps, or incorrect aggregation. In an operational dashboard, present the gap and its reason before comparing periods.

The mix determines byte demand

In the eighth group, half the operations are four KiB and half are 256 KiB. The mix is by operation count, so mean size is 130 KiB. A fictional 125-MiB/s limit supports, ignoring overhead, 125×1024/130, or about 984.6 operations per second of that mix. A 4000-IOPS ceiling does not remove the throughput limit. No benchmark was run and no cloud volume was queried; numbers are exercise assumptions. Before purchasing capacity, confirm mix at the same layer and window, aggregate limits, and observed latency. Then measure the effect of an authorized change using representative load. Keep the theoretical ceiling separate from achievable performance.

Retain physical headroom

The ninth group starts with 120 physical GiB free and forecasts eighty of new demand, thirty of additional snapshot growth, and twenty of reserve required by the scenario. Ten remain, so the plan falls ten short of reserve. The calculation assumes additional usage has already been estimated; it does not sum logical snapshot sizes as if all were complete copies. Implementation determines block sharing, metadata, and growth over time. Revisit the plan when retention or write patterns change. A filesystem still displaying space does not guarantee headroom in its underlying pool. The laboratory only calculates the fictional budget and changes no pools, volumes, or retention policies.

Correct copying also copies errors

The sixth group creates a JSON ledger declaring total one hundred with entries forty and fifty-nine. We copy the file and hashes match, but sum validation fails with actual total ninety-nine. Copying faithfully preserved incorrect content. Do not arbitrarily change the total to obtain green; investigate the rule and data with the appropriate owner. The copyfile operation also does not establish preservation of every permission, ACL, or metadata item needed by the application. Define checks for content, access, dependencies, and functional outcome. The exercise is neither a database restore nor a recovery test for a real financial application. Byte integrity and business correctness need separate evidence.

Workshop: accept a recovery

Prepare a fictional plan with ten minutes for access, twenty for copying, and fifteen for validation, all sequential. Against a forty-minute RTO, the plan is five minutes short before adding margin. Explain to the sponsor why transfer finishing at minute thirty does not yet establish the required outcome. Add the ledger case: describe what passed, what failed, who decides, and which alternative needs investigation. A facilitator should look for correct units, distinction between facts and assumptions, and explicit acceptance conditions. The guide is available but has not been performed by a human group. Connect the exercise to disaster recovery, observability, and transfer into normal operation.

python3 content/labs/storage-evidence/run.py
# Reads: 100 -> 228 over 8s => 16/s
# Sectors: 1000 -> 5096; 512 bytes/sector => 256 KiB/s
# Mean completed read: 16 KiB
# Mix by operation count: 50% 4 KiB + 50% 256 KiB = 130 KiB/op
# 125 MiB/s / 130 KiB = 12800/13 IOPS (theoretical ceiling)
IN PRACTICE

A fictional team proposes more IOPS to accelerate a batch while byte limits and recovery validation remain outside the plan.

Common pitfalls

Dividing a cumulative counter without a delta, hiding resets, treating ceilings as guarantees, ignoring snapshots, and using hash as business validation.

Related topics: Linux Administration · NAS · Disaster Recovery

Take this idea with you

A credible decision combines measurements in consistent units, explicit assumptions, and evidence of the outcome the business needs.

Create account

Reference: Block layer statistics · BigSavant Storage 2026-09; selected Linux and AWS storage behavior