Linux sunucularında disk IOPS (Input/Output Operations Per Second) performansı, veritabanı uygulamaları, web sunucuları ve büyük veri işleme gibi yoğun disk kullanımı
Linux sunucularında disk IOPS (Input/Output Operations Per Second) performansı, veritabanı uygulamaları, web sunucuları ve büyük veri işleme gibi yoğun disk kullanımı gerektiren senaryolarda kritik öneme sahiptir. Düşük IOPS değerleri, gecikme sürelerini artırarak genel sistem verimliliğini düşürür. Bu makalede, Linux tabanlı sunucularda disk IOPS’ını etkili bir şekilde artırmak için adım adım yöntemleri inceleyeceğiz. Hem donanım hem de yazılım optimizasyonlarını ele alarak, pratik uygulamalarla destekleyeceğiz. Bu rehber, sistem yöneticilerine somut araçlar ve konfigürasyonlar sunarak, sunucu performansını maksimize etmelerine yardımcı olmayı amaçlamaktadır.
Herhangi bir optimizasyon sürecine başlamadan önce, mevcut disk IOPS seviyelerini doğru ölçmek esastır. Linux’ta bu amaçla iostat, iotop ve fio gibi araçlar kullanılır. iostat komutu ile genel disk istatistiklerini izleyebilirsiniz; örneğin, sar -d 1 10 komutu ile saniyede okuma/yazma işlemlerini takip edin. Bu araç, %util (kullanım oranı) ve await (ortalama bekleme süresi) metriklerini göstererek darboğazları belirlemenize olanak tanır. Yüksek %util değeri (%80 üzeri), IOPS limitine yaklaşıldığını işaret eder.
İotop aracı, süreç bazında disk I/O’yu gerçek zamanlı gösterir. Kurulum için sudo apt install iotop (Debian tabanlı) veya sudo yum install iotop (RHEL tabanlı) komutlarını kullanın. Ardından sudo iotop ile çalıştırarak, yüksek I/O tüketen süreçleri tespit edin ve optimize edin. Fio testi ise sentetik yükler oluşturur; basit bir test için fio --name=test --size=1G --rw=randread --bs=4k --numjobs=1 --iodepth=1 --runtime=60 --time_based --group_reporting komutunu deneyin. Bu, rastgele okuma IOPS’ını ölçer ve baseline değer sağlar. Ölçüm sonuçlarını kaydederek, optimizasyon öncesi-sonrası karşılaştırması yapın; tipik HDD’lerde 100-200 IOPS, SSD’lerde 10.000+ IOPS beklenir.
Donanım seviyesinde IOPS artırmak için öncelikle depolama birimlerini yükseltmek en etkili yaklaşımdır. HDD’lerden NVMe SSD’lere geçiş, IOPS’ı 50-100 kat artırabilir. Sunucunuzda mevcut diskleri lsblk ile listeleyin ve NVMe desteği olup olmadığını lspci | grep -i nvme ile kontrol edin. Yeni SSD eklerken, RAID konfigürasyonu kritik hale gelir; yazılım RAID yerine donanım RAID (örneğin LSI veya Adaptec kontrolcüleri) tercih edin. RAID 0 stripe boyutu 64KB olarak ayarlayarak sıralı I/O’yu optimize edin, ancak yedeklilik için RAID 10 kullanın.
fdisk veya parted ile partition başlangıç sektörünü 2048’e hizalayın (Advanced Format diskler için zorunlu).hdparm -W 1 /dev/sdX ile yazma önbelleğini etkinleştirin, ancak batarya yedekli kontrolcülerde.Bu adımlar uygulandığında, fio testlerinde IOPS’ta %200-500 artış gözlemlenebilir. Pratikte, bir veritabanı sunucusunda RAID 10 ile NVMe SSD’ler kullanarak 50.000+ IOPS elde etmek mümkündür.
XFS veya ext4 dosya sistemleri, yüksek IOPS için uygundur; XFS, paralel I/O’da üstündür. Yeni bir dosya sistemi oluşturmak için mkfs.xfs -f -i size=512 /dev/sdX1 kullanın. Mount sırasında noatime,nodiratime seçeneklerini ekleyin: /etc/fstab‘a /dev/sdX1 /data xfs defaults,noatime,nodiratime 0 2 satırını yazın ve mount -a ile etkinleştirin. Bu, metadata güncellemelerini azaltarak IOPS yükünü %30 düşürür. Barrier=0 seçeneğiyle (XFS’te) senkronizasyonu gevşetin, ancak veri bütünlüğü riskini değerlendirin.
Linux çekirdeğinde I/O scheduler’ları (mq-deadline, none, bfq) IOPS’ı etkiler. NVMe için none idealdir; echo none > /sys/block/nvme0n1/queue/scheduler ile ayarlayın. HDD’ler için mq-deadline kullanın. Kalıcı hale getirmek için /etc/udev/rules.d/60-scheduler.rules dosyasına ACTION=="add|change", KERNEL=="sd[a-z]|nvme[0-9]n[0-9]", ATTR{queue/scheduler}="none" ekleyin. Bu değişiklik, rastgele I/O gecikmelerini %20-40 azaltır. Scheduler’ı cat /sys/block/sdX/queue/scheduler ile doğrulayın.
Swap kullanımını minimize etmek için sysctl vm.swappiness=10 ayarlayın ve /etc/sysctl.conf‘a ekleyin. Yüksek RAM’li sunucularda bu, disk I/O trafiğini önemli ölçüde düşürür. Ayrıca, ionice ile kritik süreçlerin I/O önceliğini artırın: ionice -c1 -n0 mysql. Bu teknikler birleştiğinde, genel IOPS kapasitesi %50’ye varan oranda yükselir.
Linux sunucularda disk IOPS’ını artırmak, sistematik bir yaklaşım gerektirir. Ölçümle başlayın, donanım yükseltmeleri yapın ve yazılım ayarlarını ince ince optimize edin. Düzenli izleme ile (örneğin Prometheus + Node Exporter entegrasyonu), kazanımları koruyun. Bu yöntemleri uygulayarak, sunucunuzun performansını önemli ölçüde iyileştirebilir, işletme maliyetlerini düşürebilirsiniz. Pratiğe dökerek test edin ve kendi ortamınıza uyarlayın.