Hardware

SSD vs HDD vs NVMe - Benchmark Storage untuk Developer 2026

Pernah nggak sih, ngerasa laptop kamu udah upgrade RAM tapi tetap lemot? Atau compile project yang biasanya 5 menit, tiba-tiba jadi 15 menit? Saya pernah ngalamin itu pas migrasi dari laptop lama ke yang baru. Ternyata masalahnya bukan di RAM, tapi di storage. Setelah ganti ke NVMe, rasanya kayak punya komputer baru.

Memilih storage yang tepat itu penting banget, terutama buat developer. Beda tipe storage, beda banget dampaknya ke workflow sehari-hari. Mulai dari boot time, load project, sampai run database query, semuanya dipengaruhi kecepatan baca-tulis storage.

Kenalan dengan Tipe Storage

Sebelum masuk ke perbandingan, kita perlu pahami dulu tiga tipe storage utama yang beredar di pasaran:

  • HDD (Hard Disk Drive): Storage mekanik yang paling tua. Pakai piringan berputar dan head untuk baca-tulis data. Kapasitas besar, harga murah, tapi lambat.
  • SATA SSD (Solid State Drive): Storage flash-based yang pakai interface SATA III. Jauh lebih cepat dari HDD, tapi terbatas bandwidth SATA (max ~550 MB/s).
  • NVMe SSD: Storage flash-based yang langsung konek ke PCIe bus. Bandwidth jauh lebih besar (3500-7000 MB/s tergantung generasi PCIe). Ini yang paling kencang.

Perbedaan mendasar: HDD itu mekanik (ada bagian bergerak), sedangkan SSD dan NVMe itu solid-state (chip flash). Makanya SSD/NVMe lebih tahan banting, nggak berisik, dan konsumsi daya lebih rendah.

Benchmark Kecepatan: Angka yang Berbicara

Supaya nggak cuma teori, saya benchmark langsung di tiga laptop yang saya punya. Semua pakai OS yang sama (Ubuntu 24.04) dan tool yang sama.

Sequential Read/Write test pakai fio:


# Install fio
sudo apt install fio -y

# Sequential Read Test
fio --name=seq-read --ioengine=libaio --direct=1 --bs=1M \
    --size=1G --numjobs=1 --runtime=30 --rw=read \
    --output=/tmp/seq-read.txt

# Sequential Write Test
fio --name=seq-write --ioengine=libaio --direct=1 --bs=1M \
    --size=1G --numjobs=1 --runtime=30 --rw=write \
    --output=/tmp/seq-write.txt

# Random 4K Read (paling berpengaruh ke OS responsiveness)
fio --name=rand-read-4k --ioengine=libaio --direct=1 --bs=4k \
    --size=256M --numjobs=4 --runtime=30 --rw=randread \
    --iodepth=32 --output=/tmp/rand-read-4k.txt

# Random 4K Write
fio --name=rand-write-4k --ioengine=libaio --direct=1 --bs=4k \
    --size=256M --numjobs=4 --runtime=30 --rw=randwrite \
    --iodepth=32 --output=/tmp/rand-write-4k.txt

Hasil benchmark dari ketiga tipe storage:

  • HDD (Seagate 1TB 7200RPM): Sequential Read: 180 MB/s, Write: 170 MB/s, Random 4K Read: 1.2 MB/s, Random 4K Write: 1.0 MB/s
  • SATA SSD (Samsung 870 EVO 500GB): Sequential Read: 530 MB/s, Write: 500 MB/s, Random 4K Read: 95 MB/s, Random 4K Write: 82 MB/s
  • NVMe SSD (Samsung 980 PRO 500GB, PCIe 4.0): Sequential Read: 6800 MB/s, Write: 5000 MB/s, Random 4K Read: 850 MB/s, Random 4K Write: 720 MB/s

Angkanya dramatis banget. NVMe itu 37x lebih cepat dari HDD untuk sequential read, dan 700x lebih cepat untuk random 4K read. Random 4K read ini yang paling kerasa dampaknya buat daily use, karena OS dan aplikasi banyak baca file-file kecil.

Dampak ke Workflow Developer

Biar lebih realistis, saya test dampaknya langsung ke aktivitas yang sering developer lakukan:

Boot Time


# Ukur boot time dengan systemd-analyze
systemd-analyze
systemd-analyze blame | head -10
  • HDD: 45-60 detik
  • SATA SSD: 12-15 detik
  • NVMe SSD: 8-10 detik

Build Project

Saya test build project CodeIgniter 4 yang cukup besar (500+ file, composer dependencies lengkap):


# Clear cache dulu, lalu time composer install
rm -rf vendor/
time composer install --no-dev --optimize-autoloader

# Time npm build untuk frontend assets
rm -rf node_modules/
time npm install
time npm run build
  • HDD: composer install: 2m 15s, npm install: 3m 40s
  • SATA SSD: composer install: 35s, npm install: 55s
  • NVMe SSD: composer install: 18s, npm install: 28s

Dari 6 menit jadi kurang dari 1 menit. Kalau kamu build 10 kali sehari, itu hemat 50 menit. Dalam seminggu, hampir 6 jam.

Docker Performance

Buat yang pakai Docker, storage type pengaruh banget ke container startup dan image pull:


# Test Docker image pull time
time docker pull mysql:8.0

# Test container startup
time docker run --rm mysql:8.0 mysql --version

# Test volume write performance
docker run --rm -v /tmp/test-data:/data alpine \
    sh -c "dd if=/dev/zero of=/data/testfile bs=1M count=500"
  • HDD: Pull mysql:8.0: 2m 30s, Container start: 8s
  • SATA SSD: Pull mysql:8.0: 1m 10s, Container start: 3s
  • NVMe SSD: Pull mysql:8.0: 45s, Container start: 1.5s

Database Query Performance

Ini yang sering dilupakan. Banyak developer fokus ke optimasi query, tapi lupa kalau I/O disk juga bottleneck:


-- Test query di MySQL dengan large dataset
-- Pastikan buffer pool kecil supaya benar-benar baca dari disk
SET GLOBAL innodb_buffer_pool_size = 64 * 1024 * 1024;  -- 64MB

-- Restart MySQL, lalu test
SELECT COUNT(*) FROM large_table WHERE created_at > '2025-01-01';
EXPLAIN ANALYZE SELECT * FROM large_table ORDER BY id DESC LIMIT 1000;
  • HDD: COUNT query: 12.5 detik, ORDER BY + LIMIT: 3.2 detik
  • SATA SSD: COUNT query: 2.8 detik, ORDER BY + LIMIT: 0.6 detik
  • NVMe SSD: COUNT query: 0.9 detik, ORDER BY + LIMIT: 0.15 detik

Kenapa NVMe Lebih Kencang Secara Teknis?

NVMe itu bukan cuma "SSD yang lebih cepat". Arsitekturnya beda banget dari SATA SSD:


# Cek interface storage kamu
lsblk -d -o NAME,TRAN,SIZE,MODEL

# Untuk NVMe, biasanya kelihatan nvme
nvme list  # kalau nvme-cli terinstall
sudo nvme id-ctrl /dev/nvme0n1
  • Command Queue Depth: SATA cuma support 1 queue dengan 32 commands. NVMe support 65535 queues, masing-masing 65535 commands. Artinya NVMe bisa proses request paralel jauh lebih banyak.
  • Protocol: SATA pakai AHCI protocol yang dirancang untuk HDD. NVMe pakai protocol khusus flash storage yang dioptimasi untuk low latency.
  • Interface: SATA III max bandwidth 6 Gbps (realistis ~550 MB/s). PCIe 4.0 x4 max bandwidth 64 Gbps (~7000 MB/s). PCIe 5.0 x4 malah double lagi.
  • Latency: NVMe latency rata-rata 10-20 mikrodetik, SATA SSD 50-100 mikrodetik, HDD 5-10 milidetik (500-1000x lebih lambat dari NVMe).

Cheat Sheet: Pilih Storage yang Tepat

Nggak semua orang butuh NVMe. Tergantung use case:

  • HDD cocok buat: Backup storage, NAS, archive data, server yang butuh kapasitas besar tapi akses jarang. Harga per GB paling murah (~$0.02/GB).
  • SATA SSD cocok buat: Upgrade laptop lama yang cuma punya slot SATA, secondary storage, budget build. Harga per GB: ~$0.08/GB.
  • NVMe SSD cocok buat: Primary OS drive, development workstation, database server, video editing, gaming. Harga per GB: ~$0.10-0.15/GB.

Buat developer, rekomendasi saya:


# Setup optimal untuk developer
# Primary: NVMe 500GB-1TB (OS + projects + Docker)
# Secondary: SATA SSD 1TB (data, assets, VMs)
# External: HDD (backup)

# Cek health storage secara berkala
sudo smartctl -a /dev/nvme0n1  # NVMe
sudo smartctl -a /dev/sda      # SATA SSD/HDD

# Monitor I/O realtime
sudo iotop -oP
iostat -x 1

Tips Optimasi Storage untuk Developer

Mau storage kamu awet dan tetap kencang? Ikuti tips ini:

  • Trim/UNMAP: Pastikan TRIM aktif untuk SSD. Ini bantu garbage collection dan maintain performa jangka panjang.

# Cek TRIM status
sudo fstrim -v /

# Aktifkan scheduled TRIM (recommended untuk Ubuntu)
sudo systemctl enable fstrim.timer
sudo systemctl status fstrim.timer

# Manual TRIM (kalau mau lakukan sekarang)
sudo fstrim -av
  • Filesystem: Pakai ext4 atau btrfs untuk Linux. ext4 lebih stabil, btrfs punya fitur snapshot dan compression.
  • Over-provisioning: Sisakan 10-20% kapasitas SSD kosong. Ini bantu wear leveling dan performa konsisten.
  • Swap placement: Kalau pakai NVMe, letakkan swap file di NVMe. Tapi kalau RAM cukup (16GB+), kurangi atau matikan swap.
  • Docker data: Letakkan Docker data directory di storage tercepat. Docker image layers banyak baca-tulis kecil.

# Pindahkan Docker data ke NVMe
sudo systemctl stop docker
sudo mv /var/lib/docker /mnt/nvme/docker
sudo ln -s /mnt/nvme/docker /var/lib/docker
sudo systemctl start docker

# Atau edit daemon.json
cat <<EOF | sudo tee /etc/docker/daemon.json
{
    "data-root": "/mnt/nvme/docker"
}
EOF
sudo systemctl restart docker

Monitoring Kesehatan Storage

Storage itu ada umurnya. SSD punya batas write (TBW - Total Bytes Written). Pantau secara berkala:


# Install smartmontools
sudo apt install smartmontools -y

# Cek kesehatan NVMe
sudo smartctl -a /dev/nvme0n1 | grep -E "Percentage Used|Available Spare|Data Units Written"

# Cek kesehatan SATA SSD
sudo smartctl -a /dev/sda | grep -E "Wear_Leveling|Total_LBAs_Written|Reallocated_Sector"

# Script monitoring sederhana
cat <<'EOF' | sudo tee /usr/local/bin/check-storage-health.sh
#!/bin/bash
echo "=== Storage Health Check ==="
echo "Date: $(date)"
echo ""

for disk in $(lsblk -dno NAME | grep -E "^(sd|nvme)"); do
    echo "--- /dev/$disk ---"
    sudo smartctl -H /dev/$disk | grep -i "overall"
    sudo smartctl -a /dev/$disk 2>/dev/null | grep -iE "temperature|percentage used|available spare|power on"
    echo ""
done
EOF

sudo chmod +x /usr/local/bin/check-storage-health.sh

# Jalankan secara berkala
/usr/local/bin/check-storage-health.sh

Kesimpulan

Upgrade dari HDD ke NVMe itu salah satu investasi terbaik buat developer. Dampaknya langsung terasa di setiap aspek workflow: boot lebih cepat, build lebih singkat, Docker responsif, database query ngebut.

Harga NVMe sekarang udah terjangkau banget. NVMe 500GB bisa didapat sekitar 500-700 ribu. Kalau budget terbatas, SATA SSD tetap upgrade signifikan dari HDD. Yang penting, jangan pakai HDD buat primary drive di 2026.

Saran saya: kalau laptop atau PC kamu masih pakai HDD, upgrade ke SSD sekarang juga. Kalau udah pakai SATA SSD dan butuh performa lebih, lompat ke NVMe. Perbedaannya bakal kerasa banget, terutama kalau kamu sering build project, jalanin Docker, atau kerja dengan database besar.


You may also like


0 Comments


Leave a Reply

Comments with links or spam keywords will be rejected.
Scroll to Top