Linux Disk Hız Testi: Okuma ve Yazma
Linux işletim sistemine sahip sunucularda veya kişisel bilgisayarlarda disk performansı, genel sistem yanıt hızı ve uygulama verimliliği açısından kritik bir öneme sahiptir. Özellikle yoğun veri işleme, veritabanı operasyonları, sanallaştırma veya büyük dosya transferleri yapan sistemlerde disk okuma ve yazma hızları doğrudan kullanıcı deneyimini ve iş yükü performansını etkiler. Bu nedenle, disk hızlarını düzenli olarak test etmek ve olası darboğazları tespit etmek, sistem yöneticileri ve geliştiriciler için vazgeçilmez bir uygulamadır.
Linux ortamında disk hız testi yapmak için çeşitli araçlar bulunsa da, dd komutu basitliği ve her Linux dağıtımında varsayılan olarak bulunması nedeniyle en sık tercih edilen yöntemlerden biridir. dd komutu, belirtilen blok boyutlarında ve sayılarda veri okuma ve yazma işlemleri yaparak disk performansının kaba bir ölçümünü sağlar. Bu makalede, dd komutunu kullanarak disk okuma ve yazma hız testlerinin nasıl yapılacağını, sonuçların nasıl yorumlanacağını ve disk performansını etkileyen faktörleri detaylı bir şekilde inceleyeceğiz.
Disk Performansı Neden Önemlidir?
Disk performansı, bir Linux sisteminin genel verimliliğini belirleyen temel unsurlardan biridir. Yüksek disk hızları, uygulamaların daha hızlı çalışmasını, veri transferlerinin daha çabuk tamamlanmasını ve sistemin daha akıcı bir deneyim sunmasını sağlar. Tersine, düşük disk hızları, sistemin yavaşlamasına, uygulamaların donmasına ve genel performans düşüşlerine neden olabilir.
Sunucu Performansı ve Uygulamalar
Web sunucuları, veritabanı sunucuları, dosya sunucuları ve sanallaştırma ortamları gibi kritik sunucu altyapılarında disk hızı doğrudan performansı etkiler. Örneğin, bir veritabanı sunucusunda disk okuma/yazma hızları yetersizse, sorgular yavaşlayacak, işlemler gecikecek ve kullanıcılar olumsuz etkilenecektir. Benzer şekilde, bir web sunucusunda statik dosyaların veya önbelleğin diskten okunma hızı, web sitesinin yüklenme süresini doğrudan belirler.
Veri Tabanı ve Depolama Sistemleri
Veritabanları, sürekli olarak diskten veri okur ve diske veri yazar. Özellikle OLTP (Online Transaction Processing) gibi yoğun yazma işlemleri gerektiren veritabanları için yüksek IOPS (Input/Output Operations Per Second) ve düşük gecikme süresi hayati öneme sahiptir. Depolama sistemlerinde (NAS, SAN) ise büyük dosya transferlerinin hızı, yedekleme ve kurtarma operasyonlarının süresi disk performansına bağlıdır.
Sistem Yanıt Süreleri
Kullanıcı etkileşimli sistemlerde, bir uygulamanın veya işletim sisteminin diskten veri okuma veya diske veri yazma süresi, kullanıcının algıladığı yanıt süresini doğrudan etkiler. Örneğin, bir yazılımın başlatılması veya büyük bir dosyanın açılması gibi işlemler, disk hızına bağlı olarak saniyeler sürebilir veya anında gerçekleşebilir.
dd Komutu ile Disk Hız Testi
dd komutu, “data duplicator” veya “disk duplicator” olarak da bilinen, düşük seviyeli bir dosya kopyalama aracıdır. Bu komut, blok tabanlı veri transferleri yaparak disk performansını ölçmek için idealdir. Test süreci, genellikle bir geçici dosya oluşturarak yazma hızını ölçmek ve ardından bu dosyayı okuyarak okuma hızını ölçmek şeklinde ilerler.
dd Komutunun Temelleri
dd komutu, if (input file), of (output file), bs (block size) ve count (block count) gibi parametrelerle kullanılır. Bu parametreler, komutun nasıl bir işlem yapacağını ve hangi verilerle çalışacağını belirler. Aşağıdaki tabloda yaygın kullanılan dd parametreleri açıklanmıştır:
| Parametre | Açıklama | Örnek Değer |
|---|---|---|
if | Giriş dosyası. Verinin okunacağı kaynak. | /dev/zero (yazma testi), tempfile (okuma testi) |
of | Çıkış dosyası. Verinin yazılacağı hedef. | tempfile (yazma testi), /dev/null (okuma testi) |
bs | Blok boyutu. Her seferinde kaç bayt veri işleneceği. | 1M (1 Megabayt), 4K (4 Kilobayt), 64K (64 Kilobayt) |
count | Yazılacak/okunacak blok sayısı. Toplam veri boyutu bs * count ile hesaplanır. | 1024, 4096 |
sync | Önbellekteki verilerin diske yazılmasını zorlar. Yazma testinde önemlidir. | sync; (komutun başında veya sonunda) |
Disk Yazma Hız Testi Adımları
Disk yazma hızını test etmek için, genellikle /dev/zero kaynağından rastgele olmayan, sıfırlarla dolu bir dosya oluşturulur ve bu dosya diske yazılır. /dev/zero, sınırsız sayıda sıfır bayt üreten özel bir Linux cihaz dosyasıdır.
sync; dd if=/dev/zero of=tempfile bs=1M count=1024; syncYukarıdaki komutun detayları:
sync;: Komutun başında kullanıldığında, daha önceki tüm önbelleğe alınmış yazma işlemlerinin diske senkronize edilmesini sağlar. Bu, testin daha doğru sonuçlar vermesine yardımcı olur.dd: Disk kopyalama komutu.if=/dev/zero: Giriş kaynağı olarak/dev/zerokullanılır. Bu, diske yazılacak verinin sıfırlardan oluşmasını sağlar.of=tempfile: Çıkış dosyası olaraktempfileadında bir dosya oluşturulur. Bu dosya, mevcut dizine yazılır, bu nedenle testin yapılacağı disk bölümünde yeterli boş alan olduğundan emin olunmalıdır.bs=1M: Blok boyutu 1 Megabayt olarak ayarlanır. Büyük blok boyutları genellikle ardışık (sequential) yazma performansını ölçmek için daha uygundur.count=1024: Toplam 1024 adet 1 Megabaytlık blok yazılacağı anlamına gelir, yani toplamda 1 GB (1024 MB) veri yazılacaktır.sync: Komutun sonunda kullanıldığında,ddtarafından yazılan verilerin işletim sistemi önbelleğinden diske tamamen yazılmasını garantiler. Bu, önbelleklemenin test sonuçlarını yanıltmasını engeller ve gerçek disk yazma hızını daha doğru yansıtır.
Komut çalıştıktan sonra, dd işlemi tamamlandığında, yazılan veri miktarı, geçen süre ve hesaplanan ortalama yazma hızı terminalde görüntülenecektir.
Disk Okuma Hız Testi Adımları
Disk okuma hızını test etmek için, az önce oluşturulan tempfile dosyası okunur ve /dev/null‘a yönlendirilir. /dev/null, yazılan tüm verileri yok sayan özel bir Linux cihaz dosyasıdır. Bu, okuma işleminin herhangi bir çıktı oluşturmadan diskin okuma performansını ölçmesini sağlar.
dd if=tempfile of=/dev/null bs=1M count=1024Yukarıdaki komutun detayları:
dd: Disk kopyalama komutu.if=tempfile: Giriş kaynağı olarak az önce oluşturulantempfilekullanılır.of=/dev/null: Çıkış hedefi olarak/dev/nullkullanılır. Bu, okunan verinin herhangi bir yere yazılmayacağı, sadece okunarak işlem gücünün ve disk bant genişliğinin test edileceği anlamına gelir.bs=1M: Blok boyutu yine 1 Megabayt olarak ayarlanır. Yazma testinde kullanılan blok boyutuyla aynı olması, karşılaştırmalı analiz için faydalıdır.count=1024: Toplam 1024 adet 1 Megabaytlık blok okunacağı anlamına gelir, yani toplamda 1 GB veri okunacaktır.
Yine, komut tamamlandığında, okunan veri miktarı, geçen süre ve hesaplanan ortalama okuma hızı terminalde görüntülenecektir.
Test Sonuçlarını Yorumlama
dd komutunun çıktısı genellikle şu formatta olacaktır:
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.5037 s, 428.8 MB/sBu çıktıda:
1073741824 bytes (1.1 GB, 1.0 GiB) copied: Kopyalanan toplam veri miktarını gösterir.2.5037 s: İşlemin tamamlanması için geçen süreyi saniye cinsinden belirtir.428.8 MB/s: Hesaplanan ortalama veri transfer hızını Megabayt/saniye cinsinden gösterir. Bu değer, disk performansınızın ana göstergesidir.
Sonuçları yorumlarken, özellikle önbellekleme etkilerini göz önünde bulundurmak önemlidir. Eğer sync komutunu kullanmazsanız veya test ettiğiniz dosya sistemi önbellekleme için çok fazla RAM kullanıyorsa, elde ettiğiniz hızlar gerçek disk hızından çok önbellek hızını yansıtabilir. Birden fazla test yaparak ve farklı boyutlarda dosyalar kullanarak daha tutarlı sonuçlar elde edebilirsiniz. Ayrıca, testleri sistemin boşta olduğu zamanlarda yapmak, diğer işlemlerin disk performansını etkilemesini engeller.
Disk Hızını Etkileyen Faktörler
Disk performansı, birçok faktörden etkilenir. Bu faktörleri anlamak, test sonuçlarını doğru bir şekilde yorumlamak ve olası performans sorunlarının kökenini bulmak için önemlidir.
Donanım Türü (HDD vs. SSD vs. NVMe)
Disk teknolojisi, performansı en temelden etkileyen faktördür. Geleneksel HDD’ler (Hard Disk Drive) mekanik parçalar içerdiği için SSD’lere (Solid State Drive) göre çok daha yavaştır. NVMe (Non-Volatile Memory Express) tabanlı SSD’ler ise PCIe arayüzünü kullanarak SATA tabanlı SSD’lerden bile kat kat daha yüksek hızlar sunar.
RAID Yapılandırması
RAID (Redundant Array of Independent Disks) yapılandırmaları, birden fazla diski bir araya getirerek performansı artırabilir (RAID 0, RAID 10) veya veri yedekliliği sağlayabilir (RAID 1, RAID 5). Seçilen RAID seviyesi, disklerin okuma ve yazma hızlarını önemli ölçüde etkiler.
Dosya Sistemi (ext4, XFS, ZFS vb.)
Kullanılan dosya sistemi (örneğin ext4, XFS, Btrfs, ZFS), disk I/O operasyonlarının nasıl yönetildiğini belirler ve bu da performansa yansır. Her dosya sisteminin kendine özgü avantajları ve dezavantajları vardır ve belirli iş yükleri için farklı performans profilleri sunabilir.
Disk Önbellekleme (Caching)
İşletim sistemi, disk I/O performansını artırmak için RAM’i disk önbelleği olarak kullanır. Yazma testlerinde, veriler önce önbelleğe yazılıp sonra diske senkronize edildiği için, önbellek etkisi olmadan gerçek disk performansını ölçmek için sync komutu kritik öneme sahiptir. Okuma testlerinde ise, sık okunan veriler önbellekte tutularak sonraki okumaları hızlandırabilir.
Sistem Yükü ve Diğer İşlemler
Disk testi yapıldığı sırada sistemde çalışan diğer uygulamalar, arka plan işlemleri veya diğer kullanıcıların disk erişimleri, test sonuçlarını olumsuz etkileyebilir. En doğru sonuçları elde etmek için testlerin sistemin düşük yük altında olduğu zamanlarda yapılması önerilir.
Alternatif Disk Test Araçları
dd komutu basit ve kullanışlı olsa da, daha detaylı ve kapsamlı testler için başka araçlar da mevcuttur:
Fio (Flexible I/O Tester)
Fio, Linux için en güçlü ve esnek I/O test araçlarından biridir. Ardışık okuma/yazma, rastgele okuma/yazma, farklı blok boyutları, eş zamanlı I/O işlemleri ve gecikme süresi ölçümleri gibi çok çeşitli test senaryolarını destekler. Fio ile IOPS, bant genişliği ve gecikme süresi gibi metrikleri ayrıntılı bir şekilde ölçebilirsiniz.
hdparm
hdparm komutu, Linux’ta SATA/IDE/SCSI cihazları için donanım parametrelerini görüntülemek ve ayarlamak için kullanılır. Aynı zamanda basit ardışık okuma hız testi yapma yeteneğine de sahiptir:
sudo hdparm -tT /dev/sdaBu komut, diskin önbellek okuma hızını (-T) ve gerçek disk okuma hızını (-t) ölçer.
bonnie++
bonnie++, hem dosya sistemi hem de disk I/O performansını test etmek için tasarlanmış kapsamlı bir benchmark aracıdır. Büyük ve küçük dosya I/O’su, ardışık ve rastgele erişim, CPU kullanımını da içeren detaylı raporlar sunar. Kurulumu ve kullanımı dd‘ye göre daha karmaşık olsa da, çok daha derinlemesine analizler sağlar.
Pratik İpuçları ve En İyi Uygulamalar
Disk hız testlerinden en doğru ve anlamlı sonuçları almak için bazı pratik ipuçlarını ve en iyi uygulamaları takip etmek önemlidir:
- Testi Boş Bir Sistemde Yapın: Mümkünse, testleri sistemde başka yoğun disk I/O işlemi veya CPU kullanımı olmadığında gerçekleştirin. Bu, diğer süreçlerin sonuçları etkilemesini önler.
- Birden Fazla Test Yapın ve Ortalama Alın: Tek bir test sonucu yanıltıcı olabilir. Aynı testi birkaç kez tekrarlayın ve elde ettiğiniz hızların ortalamasını alarak daha güvenilir bir değer elde edin.
- Farklı Boyutlarda Bloklar Kullanın:
bsparametresini değiştirerek (örneğin 4K, 64K, 1M, 16M), diskin farklı I/O desenlerindeki performansını gözlemleyebilirsiniz. Küçük blok boyutları genellikle rastgele I/O performansını, büyük blok boyutları ise ardışık I/O performansını daha iyi yansıtır. - Geçici Dosyaları Temizleyin: Testleriniz bittikten sonra oluşturduğunuz geçici dosyayı (örneğin
tempfile) silmeyi unutmayın:rm tempfile. - Doğru Disk Bölümünü Test Edin: Eğer sunucunuzda birden fazla disk veya disk bölümü varsa, test etmek istediğiniz bölümün bağlandığı dizinde (örneğin
/mnt/disk2) testi yaptığınızdan emin olun. - Disk Sürücüsü Sağlığını Kontrol Edin: Performans düşüşleri, diskin fiziksel sorunlarından kaynaklanabilir. SMART (Self-Monitoring, Analysis and Reporting Technology) verilerini kontrol ederek diskin sağlık durumunu değerlendirmek faydalı olacaktır (örneğin
sudo smartctl -a /dev/sda).
Linux sistemlerinizde disk okuma ve yazma hızlarını anlamak ve optimize etmek, genel sistem performansını artırmanın temel adımlarından biridir. dd komutu gibi basit araçlarla bile, diskinizin ne kadar hızlı çalıştığına dair değerli bilgiler edinebilir ve olası performans darboğazlarını erkenden tespit edebilirsiniz. Daha derinlemesine analizler için Fio gibi gelişmiş araçlara yönelebilirsiniz. Düzenli testler ve doğru yorumlama ile Linux sistemlerinizin her zaman en yüksek verimlilikte çalışmasını sağlayabilirsiniz.

