Sunucu Disk Performans Analizi ve IOPS Ölçümü
Sunucu Disk Performans Analizi ve IOPS Ölçümü
Son Güncelleme: Nisan 2026
Giriş: Bu makalede sunucu disk performansının nasıl ölçüleceği, IOPS (Giriş/Çıkış İşlemi/Saniye), throughput (bant genişliği) ve latency (gecikme) kavramlarının ne anlama geldiği adım adım açıklanacak, ayrıca pratik araçlar ile test senaryoları ve sorun giderme yöntemleri paylaşılacaktır. Hem fiziksel (bare-metal) hem de sanal (VPS/VDS) ortamlarda uygulanabilir, örnek komutlar ve yorumlar içeren bir rehber sunulmaktadır.
İçindekiler
- 1: Disk Performansı Nedir?
- 2: IOPS, Throughput ve Latency
- 3: Araçlar ve Kurulum
- 4: fio ile Test Senaryoları
- 5: iostat ve iotop ile İzleme
- 6: hdparm ve dd ile Basit Testler
- 7: Sanal Ortamda Disk Testleri (VPS/VDS/VM)
- 8: Performans Optimizasyonu ve Sorun Giderme
- 9: Sıkça Sorulan Sorular
- 10: Sonuç
Disk Performansı Nedir?
Sunucu disk performansı, depolama aygıtının veriyi okuma ve yazma hızını, aynı anda işleyebildiği operasyon sayısını ve bu işlemler sırasında gösterdiği gecikmeyi kapsar. Bu üç ana bileşen şunlardır:
- IOPS: Birim zamanda yapılan giriş/çıkış işlemi sayısı (Input/Output Operations Per Second — Giriş/Çıkış İşlemi/Saniye).
- Throughput: Verinin transfer hızı (MB/s veya MiB/s) — bant genişliği (throughput).
- Latency: Bir I/O isteğinin tamamlanma süresi — gecikme (ms).
Bu metrikler, SSD, NVMe ve HDD gibi farklı depolama türlerinde çok farklı sonuçlar verir; ayrıca dosya sistemi, RAID seviyesi ve sanallaştırma katmanı (hypervisor) sonuçları etkiler.
IOPS, Throughput ve Latency
IOPS çoğunlukla küçük rastgele (random) okuma/yazma işlemlerinde önem kazanır; örneğin veritabanı uygulamaları. Throughput ise büyük ardışık (sequential) veri transferlerinde belirleyicidir; örneğin yedekleme veya medya aktarımı. Latency ise kullanıcı deneyimini doğrudan etkiler; yüksek gecikme web uygulamalarında yavaş sayfa yüklenmesine neden olabilir.
Türkçe karşılıkları parantez içinde verilmiştir: IOPS (Giriş/Çıkış İşlemi/Saniye), Throughput (Bant Genişliği), Latency (Gecikme).
Araçlar ve Kurulum
En yaygın kullanılan araçlar:
- fio: Esnek ve kapsamlı disk test aracı — rastgele/ardışık test senaryoları oluşturur.
- iostat: Blok cihazlarının I/O istatistiklerini sağlar (sysstat paketinin parçası).
- iotop: Gerçek zamanlı proses başına I/O kullanımını gösterir.
- hdparm: SATA diskler için basit okuma testi ve performans seçenekleri.
- smartctl: SMART bilgileri ve sağlık kontrolleri için (smartmontools paketi).
Kurulum örnekleri (Debian/Ubuntu):
sudo apt update
sudo apt install -y fio sysstat iotop hdparm smartmontools
RHEL/CentOS tabanlı sistemler için:
sudo yum install -y fio sysstat iotop hdparm smartmontools
# veya dnf kullanıyorsanız
sudo dnf install -y fio sysstat iotop hdparm smartmontools
fio ile Test Senaryoları
fio, hem basit hem de karmaşık senaryolar yazmanıza izin verir. Aşağıda sık kullanılan testler ve ne ölçtükleri yer almaktadır.
1) Basit rastgele 4K okuma (database-simülasyon)
Bu test IOPS ölçümü için uygundur:
sudo fio --name=randread4k --ioengine=libaio --direct=1 --rw=randread --bs=4k --numjobs=4 --size=2G --runtime=60 --group_reporting --filename=/dev/sda
Açıklama: --bs=4k (blok boyutu 4KB), --numjobs=4 eşzamanlı iş parçacığı, --direct=1 page cache atlanır (doğrudan disk), --filename gerçek aygıt veya test dosyası olabilir.
2) Ardışık büyük yazma (yedekleme-simülasyon)
sudo fio --name=seqwrite --ioengine=libaio --direct=1 --rw=write --bs=1m --numjobs=1 --size=10G --runtime=120 --group_reporting --filename=/root/fio-test-file
Bu test throughput (MB/s) ölçümü için uygundur. Testi gerçek aygıta uygulamak isterseniz --filename=/dev/sda kullanabilirsiniz ancak dikkat: veriler üzerine yazılır.
3) Karışık okuma/yazma (web uygulama karışımı)
sudo fio --name=mixed --ioengine=libaio --direct=1 --rw=randrw --rwmixread=70 --bs=8k --numjobs=8 --size=5G --runtime=90 --group_reporting --filename=/dev/sdb
rwmixread=70 ile %70 okuma, %30 yazma şeklinde gerçek dünya karışımları taklit edilir.
Sonuçların Yorumlanması
fio çıktılarını incelerken aşağıdaki ana metriklere dikkat edin:
- iops: İşlemler/saniye — küçük bloklarda önemlidir.
- bw: Bant genişliği (KB/s, MB/s).
- lat (avg/95th): Ortalama ve %95 gecikme değerleri — kullanıcı deneyimi için kritiktir.
iostat ve iotop ile İzleme
Canlı izleme, sürekli sorun tespiti için önemlidir.
iostat kullanımı
sudo iostat -x 5 5
Çıktıda dikkat edilecek sütunlar:
- r/s, w/s: Okuma/yazma işlemi sayıları.
- rkB/s, wkB/s: Okunan/yazılan KB/s değerleri.
- await: I/O başına bekleme süresi (ms).
- svctm: Servis süresi (ms) - bazı kernel sürümlerinde güvenilir olmayabilir.
iotop ile proses bazlı izleme
sudo iotop -oPa
iotop, hangi prosesin ne kadar I/O kullandığını görmenizi sağlar. Özellikle beklenmedik yüksek I/O yapan işlemleri tespit etmek için faydalıdır.
hdparm ve dd ile Basit Testler
hdparm ile disklerin raw okuma hızına bakabilirsiniz (SATA, NVMe için farklı araçlar da vardır):
sudo hdparm -tT /dev/sda
dd ile hızlı bir yazma testi (caution: veriyi yok eder):
sudo dd if=/dev/zero of=/root/testfile bs=1M count=10240 conv=fdatasync
Komut tamamlandığında yazma hızı MB/s olarak raporlanır. Bu test, dosya sistemi önbelleğini atlamak için conv=fdatasync kullanır.
Sanal Ortamda Disk Testleri (VPS/VDS/VM)
Sanal ortamlarda test yaparken dikkat edilmesi gerekenler:
- Host etkisi: Aynı fiziksel diski paylaşan diğer VM'ler performansı etkileyebilir.
- Katmanlar: Hypervisor, storage backend (LVM, Ceph, ZFS) veya bulut sağlayıcı IOPS limitleri sonuçları etkiler.
- Test dosyası vs ham cihaz: Sanal makinede
/dev/vdagibi ham cihazlara test yapmak host üzerinde riskli olabilir; çoğu sağlayıcıya göre test dosyası kullanmak daha güvenlidir.
VPS üzerinde fio ile test yaparken örnek:
sudo fio --name=vps-randread --ioengine=libaio --direct=1 --rw=randread --bs=4k --numjobs=2 --size=1G --runtime=60 --group_reporting --filename=/root/vps-fio-testfile
Eğer sağlayıcı belirli IOPS limiti koyduysa (burst veya garanti/ENI gibi), test çıktıları bu limitleri açıkça gösterebilir. Sağlayıcı kaynaklı limitlenme şüphesi varsa testleri farklı zamanlarda tekrarlayın ve sonuçları karşılaştırın.
Performans Optimizasyonu ve Sorun Giderme
Test sonuçlarına göre uygulanabilecek optimizasyonlar:
- Donanım Yükseltme: HDD → SATA SSD → NVMe SSD. NVMe genelde yüksek IOPS ve düşük latency sağlar.
- RAID Seçimi: RAID0 (performans), RAID10 (performans + yedeklilik), RAID5/6 (büyük kapasite, yazma cezası olabilir).
- Dosya Sistemi ve Mount Options:
ext4,xfs,ZFSve mount seçenekleri (noatime, nodiratime) performansı etkiler. - IO Scheduler: Deadline, noop, mq-deadline gibi scheduler'lar NVMe ve SSD'lerde farklı davranış gösterir.
- Caching ve O/S Ayarları: TCP, disk readahead, swappiness,
vm.dirty_ratiogibi kernel parametreleri ince ayar gerektirir. - Sanallaştırma Optimizasyonu: Paravirtual sürücüler (virtio), doğru disk tipi (raw vs qcow2) ve host tarafı QoS politikaları.
Örnek: noatime eklemek I/O yükünü azaltabilir:
# /etc/fstab örneği
/dev/sdb1 /data ext4 defaults,noatime 0 2
| Depolama Türü | Tipik IOPS (rastgele 4K) | Tipik Throughput | Latency |
|---|---|---|---|
| HDD (SATA) | ~50-200 IOPS | ~100-200 MB/s (ardışık) | ~5-20 ms |
| SATA SSD | ~5.000-50.000 IOPS | ~500 MB/s | ~0.1-1 ms |
| NVMe SSD | ~50.000-500.000+ IOPS | ~1.5-7 GB/s | ~0.01-0.2 ms |
Pratik Senaryo: Veritabanı Sunucusu için Test ve Öneri
Örnek: Yük altında yüksek rastgele okuma/yazma yapan bir MySQL sunucunuz var. Adımlar:
- 1: fio ile 4K rastgele okuma/yazma testi yapın (aşağıdaki komut):
sudo fio --name=db-like --ioengine=libaio --direct=1 --rw=randrw --bs=4k --rwmixread=80 --numjobs=8 --size=10G --runtime=120 --group_reporting --filename=/var/lib/mysql/fio-testfile
- 2: iostat ile eş zamanlı olarak I/O bekleme ve CPU kullanımını kontrol edin:
sudo iostat -x 5 5
- 3: Eğer await yüksek ve IOPS düşükse, aşağıdakileri değerlendirin:
- Donanım: NVMe veya daha hızlı SSD tercih edin.
- RAID: RAID10 ile okuma/yazma performansını dengeleyin.
- Konfigürasyon: MySQL için uygun
innodb_buffer_pool_sizeve disk önbellek ayarları yapın.
Sıkça Sorulan Sorular
Disk testleri üretim sunucuda yapılabilir mi?
Genel olarak doğrudan üretim verisi içindeki diske yoğun yazma/okuma testleri önerilmez; veri kaybına veya performans düşüşüne neden olabilir. Öncelikle test diski veya test dosyası oluşturun (/root/fio-testfile) veya bakım penceresinde test yapın.
fio çıktılarını nasıl saklayıp karşılaştırırım?
fio JSON çıktusu alınarak saklanabilir: --output-format=json --output=sonuc.json. Bu dosyaları zaman içinde karşılaştırarak trend analizi yapabilirsiniz.
VPS üzerinde düşük IOPS alıyorum, sebebi ne olabilir?
Çoğu VPS sağlayıcısı IOPS veya throughput limitleri uygular. Ayrıca aynı hosttaki diğer VM'lerin yoğunluğu da etki eder. Sağlayıcı SLA ve disk tipi (SSD/NVMe) bilgilerini kontrol edin.
RAID performansını nasıl test ederim?
RAID dizisini oluşturan tüm fiziksel diskler üzerinde test yapılmalı ve kümeleme/raid katmanı (mdadm, hardware RAID) göz önünde bulundurulmalıdır. Testleri doğrudan RAID cihazına (/dev/md0) uygulayın.
Testler sonucunda yüksek latency görüyorum, ilk kontrol edilecekler nelerdir?
SMART kontrolü (smartctl -a /dev/sda), disk sağlık raporları, host CPU/IO bekleme (iostat), dosya sistemi hataları (dmesg) ve arıza belirten kernel logları ilk bakışta kontrol edilmesi gerekenlerdir.
Sonuç
Disk performans analizi, doğru araçlarla ve dikkatli senaryolarla yapıldığında sunucu performansını anlamak ve iyileştirmek için güçlü bilgiler sağlar. fio, iostat, iotop, hdparm ve smartctl gibi araçların kombinasyonu, gerçek dünya yüklerini taklit edip sorunları izole etmenize yardımcı olur. Fiziksel donanım, RAID seviyesi, dosya sistemi, sanallaştırma katmanı ve sağlayıcı limitleri test sonuçlarını etkileyen temel faktörlerdir.
Corelux'tan performans ve donanım ihtiyaçlarınız doğrultusunda uygun sunucu çözümleri incelemek isterseniz Kiralık Sunucu ve Sanal Sunucu sayfalarımızı ziyaret edebilir, ayrıca kritik veriler için Yedekleme Hizmeti çözümlerimizi değerlendirebilirsiniz.
Yazar
Boran BAR