SSD ve HDD Arasındaki Fark: Sunucu Diski Nasıl Seçilir
Yıllar önce bir müşterinin veri tabanı sunucusuna baktığımda, ekranın karşısında donakalmıştım. Sistem 7200 RPM’lik eski bir SAS disk üzerinde çalışıyordu ve her sorgu saniyeler alıyordu. “Neden bu kadar yavaş?” diye soran müşteriye döndüm ve “Disk probleminiz var” dedim. Ertesi gün NVMe SSD’ye geçtik, sorgu süreleri yüzde seksen düştü. İşte o gün disk seçiminin ne kadar kritik olduğunu bir kez daha anladım. Bu yazıda sizi bu tür sürprizlerden koruyacak bilgileri aktarmaya çalışacağım.
Temel Fark: Mekanik vs. Elektronik
HDD (Hard Disk Drive) manyetik dönen plakalar üzerinde çalışır. Bir okuma/yazma kafası fiziksel olarak hareket ederek veriye ulaşır. Bu mekaniksel yapı, rastgele erişim sürelerini ciddi ölçüde kısıtlar. Ortalama bir HDD’nin seek time değeri 5-10 milisaniye aralığındadır.
SSD (Solid State Drive) ise NAND flash bellek kullanır. Hareketli parça yoktur. Rastgele erişim süreleri mikrosaniye mertebesindedir. Bu fark kulağa küçük gelir, ama binlerce eşzamanlı işlem söz konusu olduğunda aradaki uçurum devasa bir hal alır.
Pratik bir örnekle somutlaştıralım:
# Mevcut disk I/O performansını ölçmek için hdparm kullanımı
sudo hdparm -tT /dev/sda
# Örnek çıktı (HDD için):
# Timing cached reads: 12048 MB in 2.00 seconds = 6028.44 MB/sec
# Timing buffered disk reads: 142 MB in 3.01 seconds = 47.19 MB/sec
# Aynı test SSD'de şöyle görünür:
# Timing buffered disk reads: 1482 MB in 3.00 seconds = 493.82 MB/sec
Bu rakamlar teorik değil, gerçek prodüksiyon sunucularından aldığım çıktılar. HDD’de 47 MB/s görürken SSD’de 493 MB/s görüyorsunuz. Fark on kattan fazla.
Disk Tiplerini Anlamak
HDD Çeşitleri
Sunucu ortamlarında karşılaşacağınız iki ana HDD tipi vardır:
- SATA HDD (7200 RPM): Genel amaçlı depolama için kullanılır. Maliyet avantajı yüksektir. Yedek, arşiv ve cold storage için hala mantıklı seçenektir.
- SAS HDD (10K veya 15K RPM): Enterprise ortamlarda eski nesil sistemlerde sıkça görülür. 15K RPM’lik bir SAS disk, SATA HDD’ye kıyasla çok daha iyi performans sunar ama SSD’ye yaklaşamaz. Bakım maliyeti yüksektir.
SSD Çeşitleri
SSD dünyası daha karmaşıktır ve burada seçim yaparken dikkatli olmak gerekir:
- SATA SSD: Klasik SATA arayüzü kullanır. HDD’den çok daha hızlıdır ama arayüz hızı maksimum 600 MB/s ile sınırlıdır. Eski sunucularda HDD’yi değiştirmenin en pratik yoludur.
- SAS SSD: Enterprise segmentte, özellikle storage array’lerde kullanılır. Dual-port desteği ve yüksek dayanıklılık ön plana çıkar.
- NVMe SSD (U.2 veya M.2): PCIe arayüzü üzerinden doğrudan CPU’ya bağlanır. Gecikme süresi çok düşüktür, bant genişliği SATA’nın beş-yedi katına ulaşabilir. Veritabanı sunucuları ve yüksek performans gerektiren iş yükleri için birinci tercih olmalıdır.
- Optane (Intel 3D XPoint): Artık üretimi durmuş olsa da datacenter’larda hala karşılaşırsınız. DRAM ile NAND arasındaki gecikme değerleri sunar. Eğer miras bir sistemde Optane disk görürseniz, saygıyla yaklaşın.
Performans Metriklerini Doğru Okumak
Teknik şartname belgelerindeki sayılara körü körüne güvenmek tehlikelidir. Önemli olan metrikler şunlardır:
- Sequential Read/Write: Büyük dosyaların okunup yazılması. Video stream, yedekleme işlemleri.
- Random Read/Write (IOPS): Küçük blok boyutlarında rastgele erişim. Veritabanları, sanal makine depolaması.
- Latency: Bir I/O isteğinin tamamlanma süresi. OLTP iş yükleri için kritiktir.
- Queue Depth: Aynı anda sıraya alınabilen I/O istek sayısı.
# fio ile gerçekçi bir disk benchmark testi
# 4K rastgele okuma testi (veritabanı simülasyonu)
sudo fio --name=randread
--ioengine=libaio
--iodepth=32
--rw=randread
--bs=4k
--direct=1
--size=4G
--numjobs=4
--runtime=60
--group_reporting
--filename=/dev/sdb
# 4K rastgele yazma testi
sudo fio --name=randwrite
--ioengine=libaio
--iodepth=32
--rw=randwrite
--bs=4k
--direct=1
--size=4G
--numjobs=4
--runtime=60
--group_reporting
--filename=/dev/sdb
Bu testleri yaparken --direct=1 parametresini unutmayın. Aksi takdirde kernel buffer cache devreye girer ve disk gerçek performansı yerine RAM hızını ölçmüş olursunuz. Bu hatayı çok sayıda ekibin yaptığını gördüm.
# iostat ile gerçek zamanlı disk I/O izleme
iostat -xz 1
# Önemli kolonlar:
# r/s: Saniyedeki okuma isteği sayısı
# w/s: Saniyedeki yazma isteği sayısı
# r_await: Okuma isteklerinin ortalama bekleme süresi (ms)
# w_await: Yazma isteklerinin ortalama bekleme süresi (ms)
# %util: Disk kullanım yüzdesi
%util değeri sürekli yüzde seksen üzerindeyse disk bottleneck yaşıyorsunuz demektir. r_await veya w_await değerleri HDD’de 20ms’nin, SSD’de 1ms’nin üzerindeyse dikkatli olun.
İş Yüküne Göre Disk Seçimi
Veritabanı Sunucuları
Veritabanı sunucularında disk seçimi en kritik karardır. MySQL, PostgreSQL veya MongoDB gibi sistemler yüksek IOPS değerlerine ihtiyaç duyar. Burada HDD kullanmak performans felaketi yaratır.
PostgreSQL için örnek bir konfigürasyonla somutlaştıralım:
# PostgreSQL I/O istatistiklerini kontrol etmek
psql -U postgres -c "SELECT * FROM pg_stat_bgwriter;"
# Disk I/O baskısını görmek için
psql -U postgres -c "
SELECT
schemaname,
tablename,
heap_blks_read,
heap_blks_hit,
round(heap_blks_hit::numeric /
nullif(heap_blks_hit + heap_blks_read, 0) * 100, 2) AS hit_ratio
FROM pg_statio_user_tables
ORDER BY heap_blks_read DESC
LIMIT 10;"
hit_ratio yüzde doksanın altındaysa çok sayıda disk okuması yapılıyor demektir. Bu durumda NVMe SSD ile beraber shared_buffers değerini artırmak ikili bir çözüm sunar.
- OLTP iş yükleri (yüksek sayıda küçük işlem): NVMe SSD zorunlu, yüksek IOPS öncelikli
- OLAP iş yükleri (büyük analitik sorgular): Sequential read önemli, NVMe SSD veya iyi bir SATA SSD yeterli
- Write-heavy iş yükleri: Write endurance değeri yüksek enterprise SSD, DWPD (Drive Writes Per Day) metriğine dikkat edin
Web Sunucuları ve Uygulama Sunucuları
Çoğu web sunucusu işlemi CPU ve RAM bağımlıdır. Disk I/O ikincil plandadır. Ancak şu durumlar istisnadır:
- Yoğun log yazımı yapan uygulamalar
- Büyük dosya upload/download trafiği
- Session storage disk tabanlıysa
Bu senaryolarda SATA SSD genellikle yeterlidir. Bütçe kısıtlıysa web sunucusu için HDD ile idare edip, veritabanı sunucusuna NVMe SSD yatırım yapmak çok daha akılcıdır.
Yedekleme ve Arşiv Sunucuları
Yedekleme senaryosu HDD’nin hala güçlü olduğu alandır. Terabyte başına maliyet açısından HDD tartışmasız kazanır. 2024 itibarıyla enterprise SATA HDD’ler terabyte başına beş-yedi dolar aralığındayken, SSD’ler hala iki-üç kat daha pahalıdır.
# Yedekleme performansını ölçmek için
# dd ile yazma hızı testi
dd if=/dev/zero of=/backup/testfile bs=1G count=10 oflag=direct
# Okuma hızı testi
dd if=/backup/testfile of=/dev/null bs=1G count=10 iflag=direct
# Dosyayı temizlemeyi unutmayın
rm /backup/testfile
Yedekleme diskleri için önerim: büyük kapasiteli SATA HDD + RAID 6 konfigürasyonu. Hem maliyet hem güvenilirlik açısından dengelibir çözümdür.
Sanal Makine Depolaması (VM Host’ları)
VM host senaryosu en karmaşık disk seçimi durumudur. Tek bir fiziksel disk üzerinde onlarca sanal makine I/O yarışması yapar. Bu durumda:
- Düşük latency önceliğiniz olsun: NVMe SSD
- Kapasite önceliğiniz olsun: SAS SSD veya SATA SSD
- Kapasite kritik ve bütçe sıkışık: SSD cache + HDD hybrid yaklaşım
# KVM ortamında VM disk I/O istatistikleri
virsh domblkstat vm-adı vda
# Tüm aktif VM'lerin disk kullanımını görmek
for vm in $(virsh list --name); do
echo "=== $vm ==="
virsh domblkstat $vm vda 2>/dev/null | grep -E "rd_bytes|wr_bytes"
done
SSD Dayanıklılık Metrikleri: DWPD ve TBW
Bu konuyu atlayan sysadmin’lerin sonradan pişman olduğunu çok gördüm. SSD’lerin NAND flash hücreleri sınırlı sayıda yazma döngüsüne dayanır.
- TBW (Terabytes Written): Diskin ömrü boyunca yazılabilecek toplam veri miktarı
- DWPD (Drive Writes Per Day): Garanti süresi boyunca günlük kaç kez tam dolu yazılabileceği
Örnek hesaplama: 4 TB’lık bir SSD’nin 1 DWPD değeri varsa, beş yıllık garanti süresinde günlük 4 TB veri yazabilirsiniz. Write-heavy bir veritabanında günlük 8 TB yazıyorsanız, 2 DWPD veya daha yüksek bir disk seçmelisiniz.
# SSD sağlık durumunu kontrol etmek
sudo apt install smartmontools # Debian/Ubuntu
sudo yum install smartmontools # RHEL/CentOS
# SMART bilgilerini görüntüle
sudo smartctl -a /dev/nvme0
# NVMe özelinde sağlık raporu
sudo nvme smart-log /dev/nvme0
# Kritik değerler:
# Percentage Used: Kullanılan ömür yüzdesi
# Data Units Written: Toplam yazılan veri miktarı
# Available Spare: Kalan yedek blok yüzdesi
Available Spare değeri yüzde onun altına düşmeye başlarsa disk değişim planı yapın. Aniden bırakmasını beklemeyin.
RAID Konfigürasyonuyla Disk Seçimi
Disk tipi seçimi RAID konfigürasyonuyla birlikte düşünülmelidir.
- RAID 0: Performans için stripe. Tek disk başarısızlığında veri kaybı. Üretimde kullanmayın.
- RAID 1: Mirroring. Okuma performansı artar, yazma performansı tek disk gibi. Kritik sistem diskleri için.
- RAID 5: Minimum üç disk, tek disk toleransı. Okuma hızlı, yazma yavaşlar (parity hesaplama). SSD’de bu dezavantaj azalır.
- RAID 10: RAID 1 + 0. Yüksek performans ve güvenilirlik. Maliyet yüksek ama veritabanı sunucuları için ideal.
# mdadm ile RAID durumunu kontrol etmek
cat /proc/mdstat
# Detaylı RAID bilgisi
sudo mdadm --detail /dev/md0
# Disk sağlık durumu RAID içinde
sudo mdadm --detail /dev/md0 | grep -E "State|Active|Failed|Spare"
# Yeni bir disk ekleme (RAID 1 örneği)
sudo mdadm /dev/md0 --add /dev/sdc
Hardware RAID controller kullanıyorsanız (Dell PERC, LSI MegaRAID gibi), SSD’ye geçerken controller’ın SSD’yi destekleyip desteklemediğini mutlaka kontrol edin. Eski controller’lar bazen NVMe’yi göremez.
Maliyet-Performans Analizi: Gerçekçi Bir Yaklaşım
Her zaman en pahalı diski almanız gerekmez. Şu soruları yanıtlayarak karar verin:
- Bu sunucu üretim ortamı mı yoksa test ortamı mı?
- I/O bottleneck yaşıyor muyum, yaşar mıyım? (iostat çıktılarına bakın)
- Veri kritikliği nedir? Kayıp toleransım ne kadar?
- Genişletme planlarım var mı?
# Sistemin disk bound mı CPU bound mı olduğunu anlamak
# sar komutu ile kaynak kullanımı izleme
sar -d 1 10 # 10 saniye boyunca disk istatistikleri
# vmstat ile genel sistem görünümü
vmstat 1 10
# Çıktıda "wa" (I/O wait) kolonuna bakın
# Sürekli 5'in üzerindeyse disk bottleneck var demektir
Gerçek dünyadan bir örnek: Küçük bir e-ticaret firmasının sunucusunda I/O wait değeri yüzde on beş civarındaydı. Tüm sistemi NVMe’ye taşımak yerine, sadece MySQL veri dizinini (/var/lib/mysql) NVMe diskte ayrı bir partition’a aldık. Maliyet üçte bir oranında düştü, performans sorunu çözüldü.
Disk Değiştirme ve Migrasyon
Mevcut bir sistemde HDD’den SSD’ye geçiş yaparken dikkat edilmesi gerekenler:
# Canlı sistemde disk klonlama (dd ile)
sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
# daha güvenli alternatif: clonezilla veya rsync
# Rsync ile aktif sistem kopyalama
sudo rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/newdisk/
# Yeni diskte GRUB güncelleme (Debian/Ubuntu)
sudo mount /dev/sdb1 /mnt/newdisk
sudo mount --bind /dev /mnt/newdisk/dev
sudo mount --bind /proc /mnt/newdisk/proc
sudo mount --bind /sys /mnt/newdisk/sys
sudo chroot /mnt/newdisk grub-install /dev/sdb
sudo chroot /mnt/newdisk update-grub
SSD’ye geçerken dosya sistemi ayarlarını da gözden geçirin. noatime mount seçeneği SSD ömrünü uzatır, gereksiz yazma işlemlerini önler:
# /etc/fstab'da SSD partition için
# UUID=xxxx-xxxx / ext4 defaults,noatime 0 1
# Mevcut mount seçeneklerini görüntüle
cat /proc/mounts | grep " / "
# Geçici olarak noatime aktif etmek
sudo mount -o remount,noatime /
Sonuç
Disk seçimi sysadmin’in verdiği en kritik kararlardan biridir ve tek bir doğru cevap yoktur. Özetle pratik kurallar şöyle sıralanabilir:
- Veritabanı sunucusu: NVMe SSD, tartışmaya bile gerek yok
- Web ve uygulama sunucusu: SATA SSD genellikle yeterli, bütçe kısıtlıysa HDD de idare eder
- Yedekleme ve arşiv: Büyük kapasiteli HDD, maliyet açısından hala mantıklı
- VM host: NVMe SSD tercih edin, kapasite sorunu varsa hybrid yaklaşım deneyin
- Her durumda: SMART değerlerini izleyin, DWPD değerini göz önünde bulundurun, proaktif disk değişimi planı yapın
Sisteminizi gözlemleyin, metriklerinizi toplayın ve karar verirken anekdot değil veri kullanın. Bir disk seçimi yanlış yapıldığında, bedeli ay sonra fatura değil, gece iki de aldığınız alarm mesajı olarak ödersiniz. Bu deneyimi yaşamak istemiyorsanız, iostat ve fio sizin en iyi arkadaşlarınız olsun.
