144 lines
7.4 KiB
Markdown
144 lines
7.4 KiB
Markdown
# 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.**
|