# Drive Selection Guide for Self-Hosted Linux Servers

When the user asks "will this drive fit my setup?" or "how does this compare to my current drive?", use this guide to assess compatibility, performance tier, and real-world impact.

## Compatibility Assessment Checklist

### 1. Physical Form Factor

| Factor | How to Check |
|--------|-------------|
| 3.5" vs 2.5" | `lsblk -o NAME,SIZE,MODEL,TRAN` to see current drives |
| Available bays | Inspect case — or count `ls /sys/class/ata_link/` vs active drives |
| Full bay? Can swap | If bay count is full, ask user if they want to replace an existing drive |

### 2. Interface (SATA)

Check `ls /sys/class/ata_link/` — each link is a SATA port. Compare against `lsblk -o NAME,TRAN` to find free ports.

```bash
# Quick free-port check
ls /sys/class/ata_link/
# Shows link1, link2, link3, etc.

# Map which links are used: which /dev/sdX maps to which ata port
ls -la /dev/disk/by-path/ | grep ata
```

- A free link = free SATA port ✅
- Need more ports? Add a PCIe SATA card

### 3. Power

Enterprise HDDs draw 6-8W active vs consumer 4-5W. Standard SATA power connector. Desktop PSUs handle this fine unless adding 6+ drives.

### 4. Boot / Controller Compatibility

- Standard SATA AHCI/RAID: any SATA drive works
- NVMe: check for free M.2 slot (`lspci | grep Non-Volatile` or `lsblk -d -o NAME,TRAN | grep nvme`)
- HP OEM boards (like HP 8703) have no firmware-level drive compatibility restrictions — any standard SATA or NVMe drive works

## SMR vs CMR — The Key Performance Distinction

| | SMR (Shingled) | CMR (Conventional) |
|---|---|---|
| Write mechanism | Tracks overlap like roof shingles — rewriting one requires rewriting a whole band | Tracks are independent — writes go where told |
| Sequential write (cached) | ~140 MB/s | ~200 MB/s |
| Sustained write (cache exhausted) | **30-50 MB/s** — massive dropoff | **~200 MB/s** — consistent |
| Random write | Terrible (shingle rewrite penalty on every random write) | Good (enterprise-class) |
| Concurrent R+W | Poor (SMR write amplification under mixed load) | Fine |
| Typical use | Cheap consumer bulk storage | Any write-heavy workload |

### How to Identify SMR vs CMR

| Brand | SMR Models | CMR Models |
|-------|-----------|------------|
| Seagate | Barracuda Compute (STx000DM00x), most 2.5" | IronWolf Pro, Exos, Enterprise |
| WD | WD Blue, WD Green (certain sizes) | WD Red Plus, Red Pro, Gold, Ultrastar |
| HGST | (none — all HGST drives are CMR, mostly helium) | All models, incl. He8/He10/He12 |

**Reliable rule:** Enterprise/server-class drives (Ultrastar, Exos, IronWolf Pro, WD Gold, Seagate Exos) are always CMR. Consumer "value" lines (Barracuda Compute, WD Blue/Green) are often SMR after certain capacities.

### Where SMR Actually Hurts in a Homelab

| Workload | SMR Impact | CMR Impact |
|----------|-----------|------------|
| Plex/Jellyfin direct stream | None — reads only | Same |
| Immich photo/video import | Significant — writes slow down after a few GB | Fast, consistent |
| Large file copy (>10GB) | Noticeable — starts fast, chokes | Fast throughout |
| Server backup (rsync) | Significant — long tail on large datasets | Predictable speed |
| Docker database storage | Painful — random writes trigger constant shingle rewrites | Fine |
| Photo library browsing | None — reads only | Same |

**Verdict:** For a media server that mostly reads (Plex), SMR is fine. For anything that writes regularly (Immich, database storage, backup target, photo/video editing working drive), CMR is worth the premium.

## Speed Tiers for HDDs

| Tier | RPM | Tech | Seq Read | Sustained Write | Use Case |
|------|-----|------|----------|----------------|----------|
| Consumer SMR | 5400 | SMR | ~150 MB/s | ~30-50 MB/s | Cheap cold storage, write-once media |
| Consumer CMR | 5400-7200 | CMR | ~180 MB/s | ~150-180 MB/s | General bulk storage, mixed workloads |
| Enterprise helium | 7200 | CMR | ~200-210 MB/s | ~195-200 MB/s | Active storage, Immich, databases, heavy writes |
| Enterprise SAS | 10K-15K | CMR | ~150-250 MB/s | ~150-250 MB/s | Legacy database tier (obsolete vs SSD) |
| SATA SSD | N/A | NAND | ~500 MB/s | ~450 MB/s | Active containers, DB, OS |
| NVMe | N/A | NAND | 2-7 GB/s | 1-6 GB/s | Boot, heavy DB, compute |

**Real-world impact:** Going from a 5400 SMR consumer drive to a 7200 CMR enterprise helium drive gives ~30-40% faster sequential reads and **3-5x faster sustained writes**. For homelab use, the biggest real-world gains are during large media imports/transfers and concurrent R+W (Immich thumbnailing while uploading).

## Checking Your Current Drive's Specs

```bash
# Model name + RPM hint (RPM not always reported)
lsblk -o NAME,SIZE,MODEL,TRAN,MOUNTPOINT

# Detailed SMART info — look for RPM, rotation rate
sudo smartctl -a /dev/sdX | grep -iE "rotation rate|rpm|form factor|sector size"

# Confirm SMR vs CMR by model number lookup or teardown review (no reliable OS-level check)
```

Note: `smartctl` may not report RPM for USB-attached drives behind SATA bridges.

## RAM Upgrade Compatibility (OEM Systems)

When the user asks about RAM upgrades, especially on HP, Dell, or Lenovo OEM desktop systems:

### Key Constraints

| Factor | What to check |
|--------|--------------|
| Max capacity | `sudo dmidecode --type memory \| grep -i "Maximum Capacity"` |
| DIMM slots | `sudo dmidecode --type memory \| grep -c "Memory Device"` |
| Current config | `sudo dmidecode --type memory \| grep -E "Speed|Part Number|Configured"` |
| XMP support | Check if configured speed > JEDEC (2133/2400 for DDR4, 4800/5600 for DDR5) — higher speed means XMP is working |
| CPU generation | `cat /proc/cpuinfo \| grep "model name" \| head -1` — dictates IMC speed ceiling |

### OEM BIOS XMP Likelihood

| OEM | XMP Support |
|-----|------------|
| **HP OMEN** (gaming line) | 🟢 Good — HP enables overclocked speeds (3200 confirmed on HP 8703 with i7-10700K) |
| **HP Pro/Elite** (business line) | 🔴 Rare — locked to JEDEC, no XMP |
| **Dell XPS/Gaming** | 🟡 Mixed — some support, some locked |
| **Dell Optiplex** | 🔴 Almost never — locked BIOS |
| **Lenovo Legion** | 🟢 Good — similar to OMEN gaming line |
| **Lenovo ThinkCentre** | 🔴 Locked — JEDEC only |
| **Custom/DIY** | 🟢 Always — any consumer motherboard supports XMP |

### Speed Expectations

- **If current RAM runs above JEDEC** (e.g., DDR4-3200 on a Comet Lake system whose JEDEC max is 2933): XMP works. Higher-speed kits (3600-3866) will likely work or fall back gracefully.
- **If current RAM runs at JEDEC** (2133/2400/2933 for DDR4): the BIOS may not support XMP at all. A 3600 kit will still work, but at JEDEC speed (~2400-2933).
- **If the kit doesn't POST at its rated speed:** the board will fall back to JEDEC SPD timings. The user still gets the capacity upgrade.

### Real-World Performance

| Speed Difference | Gaming Perf | File Server Perf | Docker/Containers |
|-----------------|------------|-------------------|-------------------|
| 3200 → 3600 | ≤3% | Not noticeable | Not noticeable |
| 2133 → 3200 | 8-12% | Minimal | Slightly snappier for CPU-bound workloads |
| 16GB → 32GB | 0% (unless maxed out) | Noticeable with many containers | **Significant** — more room for containers, RAM cache |
| 32GB → 64GB | 0% | Only if running VMs | Only if running heavy DB workloads |

**The capacity upgrade (16→32GB) is almost always more impactful than the speed bump (3200→3600 MHz) for server workloads.**
