Short answer: For local LLM model storage in 2026, prioritize sequential read bandwidth and endurance over random IOPS. The Samsung 970 EVO Plus remains a strong Gen3 pick for smaller rigs; step up to a Samsung 990 Pro Gen4 or WD SN850X Gen4 for multi-model libraries. Capacity trumps everything — buy at least 2TB if you plan to keep more than three quantized models on disk.
What actually matters for LLM model storage
Storage for local inference is a different workload than gaming or general OS use. Games load once and run from VRAM. LLM inference loads a 4-40GB weight file once per session and holds it in RAM/VRAM for the entire runtime. So random IOPS — the thing SSD marketing shouts about — barely matters. What matters is:
- Sequential read speed. How fast can you get a model from disk into memory? A 40GB Llama-3-70B q4 file loads in 12 seconds on a 3.5 GB/s Gen4 drive vs. 20 seconds on a 2.0 GB/s SATA drive.
- Capacity. Each quantized model is 4-40GB depending on size and quant. A serious hobbyist collection is 8-15 models = 100-300GB. Add datasets and fine-tune checkpoints, 2TB fills fast.
- Endurance (TBW). Frequent model swaps write a lot to the drive if you use auto-download tools. Cheap DRAM-less QLC drives will wear out; TLC with a DRAM cache is the durable choice.
- Thermal sustained performance. A Gen4 drive under a passive M.2 heatsink can thermal-throttle to 60% of rated speed during a long load. Matters for repeated model swaps in the same session.
Key takeaways
- Sequential read is the metric. IOPS and random-4K are noise for this workload.
- 2TB minimum for a multi-model library. 4TB is not overkill if you archive fine-tunes.
- Gen4 helps but is not required. Gen3 drives like the Samsung 970 EVO Plus are still competitive.
- TLC + DRAM cache is the endurance play. Skip DRAM-less QLC for long-lived rigs.
- Add a heatsink for Gen4. A $5 passive block keeps sustained performance in check.
Recommended tiers
Budget: Samsung 970 EVO Plus 250GB/500GB (Gen3)
The 970 EVO Plus is a Gen3 TLC drive with 3,500 MB/s sequential reads. A 40GB weight file loads in ~12 seconds. Endurance is 150 TBW per 250GB, scaling with capacity. Perfectly adequate for a starter rig running 3-5 models.
Use case: single RTX 3060 12GB build, 7B-13B models only, occasional model swap.
Mid-range: Samsung 990 Pro 2TB (Gen4)
Gen4 TLC with 7,450 MB/s sequential reads. A 40GB file loads in ~6 seconds. Endurance is 1,200 TBW at 2TB. Heatsink models available for sustained loads.
Use case: multi-model library, active RAG index rebuild, dual-GPU inference where model swaps happen mid-session.
High capacity: WD Black SN850X 4TB (Gen4)
Gen4 with 7,300 MB/s reads and 2,400 TBW at 4TB. Overkill for casual hobbyists; correct for anyone hosting fine-tuning checkpoints, LoRA collections, or multiple 70B quants side-by-side.
Use case: Ryzen AI Halo, dual RTX 3090 build, or any rig that keeps 10+ models resident.
Skip: DRAM-less QLC drives
Any drive marketed as "budget QLC" or "DRAM-less" — Crucial P3 Plus, Kingston NV2, Team MP34. Sequential reads look OK on paper. Sustained writes and endurance are miserable. Fine for game installs; wrong for LLM libraries you actively rotate.
Load-time math
For a common set of workloads:
| Model + quant | File size | Gen3 (3.5 GB/s) | Gen4 (7.0 GB/s) | SATA (0.5 GB/s) |
|---|---|---|---|---|
| Mistral-7B q4 | 4.1 GB | 1.2 s | 0.6 s | 8.2 s |
| Llama-3-13B q4 | 7.3 GB | 2.1 s | 1.0 s | 14.6 s |
| Mixtral-8×7B q4 | 26 GB | 7.4 s | 3.7 s | 52 s |
| Llama-3-70B q4 | 40 GB | 11.4 s | 5.7 s | 80 s |
| Llama-3-70B q8 | 74 GB | 21 s | 10.6 s | 148 s |
| Qwen2-72B q4 | 41 GB | 11.7 s | 5.9 s | 82 s |
The delta between Gen3 and Gen4 is 5-15 seconds per load. If you swap models three times a day, that is a minute saved daily. If you scripts auto-download and load on every RAG rebuild, it is much more.
Endurance math
TBW (terabytes written) is the wear-out metric. HuggingFace's model downloader writes the file once per download; llama.cpp loads it read-only. If you never re-download, TBW is nearly infinite for LLM work. But:
- HuggingFace's chunked resume can rewrite partial files during flaky connections
- Fine-tuning checkpoints write large files repeatedly
pip installand Docker image pulls eat TBW- Swap file activity on undersized RAM eats a lot
A 2TB drive with 1,200 TBW handles 5+ years of aggressive LLM work with margin. A 1TB DRAM-less QLC drive with 300 TBW does not.
What about NVMe for the boot drive vs. model drive?
Split them. A small (500GB) fast drive for the OS + Python environments + code, and a large (2-4TB) drive dedicated to models. This gives you:
- Faster OS boot and package installs on the OS drive.
- No TBW competition — models are read-heavy, OS is write-heavy.
- Easier backups — the model drive is trivially replicable from HuggingFace; the OS drive has your actual work.
The Samsung 970 EVO Plus 250GB is a good starter for the OS drive. Pair it with a 2TB Gen4 for models.
Thermal considerations
Gen4 drives hit 70°C+ during sustained loads. Every motherboard M.2 slot has different thermal characteristics:
- Under the GPU: worst position, add a heatsink minimum.
- Rear M.2 (back of board): better airflow if you have a case fan pointed there.
- Front M.2 (near CPU): usually fine with a small passive heatsink.
For any rig that loads a 40GB+ model repeatedly, a $10 M.2 heatsink pays for itself in sustained load speed.
Companion recommendations by build
Budget starter — RTX 3060 12GB + Ryzen 7 5700X
- OS: Samsung 970 EVO Plus 250GB
- Models: 970 EVO Plus 1TB or Crucial P5 Plus 1TB Gen4
Mid-range — dual RTX 3060 12GB or Ryzen 7 5800X + Raspberry Pi 4 8GB coordinator
- OS: Samsung 970 EVO Plus 500GB
- Models: Samsung 990 Pro 2TB (Gen4)
High-end — RTX 5090 + AM5 + full model library
- OS: WD SN770 500GB
- Models: Samsung 990 Pro 4TB or WD SN850X 4TB with heatsink
Common pitfalls
- Buying capacity in QLC. 4TB QLC drives look cheap; endurance and sustained writes make them a poor fit for a working rig.
- Ignoring the heatsink. Especially on B550/B650 boards where the primary M.2 sits under the GPU.
- Skipping the OS/models split. One drive shared between Docker, pip caches, and models is a wear-out and IO-contention problem.
- Buying an external USB SSD as "model storage." USB 3.2 Gen2 tops out at 1 GB/s — worse than internal Gen3. External is fine for archive, not for hot load.
- Assuming NVMe over SATA is always worth 4×. It is on load time; it is not on hourly billing if your budget is fixed. A 2TB SATA drive plus a 500GB NVMe for hot models works for many hobbyists.
When SATA still makes sense
If you archive dozens of models but only run 2-3 in rotation, a 4TB SATA archive drive plus a 500GB NVMe for the hot set is a rational split. Load time on the archive is 60-90 seconds per 40GB model — annoying, but you rarely swap. The savings vs. a 4TB NVMe are $200+.
Bottom line
Storage is the boring part of a local LLM rig, but the wrong choice makes model swaps painful. Go TLC with DRAM cache, buy 2TB minimum for the model drive, and only step up to Gen4 if you actively swap models mid-session. The Samsung 970 EVO Plus is still a rational Gen3 pick for the OS drive; a 990 Pro or SN850X for the model drive covers the rest.
Related guides
- Best GPU for running Llama 70B locally in 2026
- Does dual-channel RAM matter for local LLM inference?
- vLLM vs. llama.cpp on a 12GB GPU
- Best budget SSD for gaming and boot drives in 2026
Citations and sources
- Samsung — 970 EVO Plus product page
- Tom's Hardware — Samsung 990 Pro review
- TechPowerUp — WD Black SN850X review
This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.
