Sunucuda Disk I/O İzleme: iostat ve dstat Kullanımı | INTROSERV
EUR
european

EUR

usa

USD

Turkish Tr
Ex. VAT Ex. VAT 0%

Disk I/O İzleme: iostat ve dstat Kullanımı

Giriş

Disk girdi-çıktı (disk I/O) izleme, barındırma altyapısında sunucuların işletilmesindeki temel görevlerden biridir. Disk alt sistemi; web hizmetlerinin, veritabanlarının, sanal makinelerin, konteynerlerin ve arka plan görevlerinin performansını doğrudan etkiler. Yeterli RAM ve boş CPU kaynakları olsa bile aşırı yüklenmiş veya yavaş bir disk, tüm sistemin darboğazı haline gelebilir.

Bu kılavuz; sistem yöneticileri, DevOps mühendisleri ve sunucu sahipleri için hazırlanmıştır. iostat ve dstat araçlarını, çalışma ilkelerini, metriklerin yorumlanmasını ve barındırma ortamında disk G/Ç darboğazlarını bulmaya yönelik pratik bir yaklaşımı kapsar.

Genel bilgiler ve çalışma ilkeleri

Sunucu altyapısında disk G/Ç

Disk girdi-çıktısı, blok aygıtlarına veri okuma ve yazma işlemlerini kapsar. Gerçek barındırma senaryolarında disk alt sistemi üzerindeki yük çoğunlukla şunlar tarafından oluşturulur:

  • veritabanları (MySQL, MariaDB, PostgreSQL);
  • dinamik içerikli web uygulamaları;
  • e-posta hizmetleri;
  • veri yedekleme ve eşitleme;
  • günlük kaydı (logging);
  • swap ve geçici dosyalar;
  • kullanıcı betikleri ve cron görevleri.

Darboğazlar; yavaş depolama aygıtları, süreçler arasındaki yüksek çekişme, en uygun olmayan G/Ç zamanlayıcıları, önbelleğin hatalı çalışması veya sanallaştırmanın özellikleri nedeniyle ortaya çıkabilir.

iostat ve dstat'ın amacı

iostat, CPU ve disk aygıtlarının yüküne ilişkin ayrıntılı istatistikleri toplamak için tasarlanmış, sysstat paketinde yer alan bir araçtır. iostat'ın temel görevi, belirli bir diskin ne kadar yoğun kullanıldığını, bir istek kuyruğunun bulunup bulunmadığını ve işlemlerin ortalama bekleme süresini göstermektir.

dstat, CPU, bellek, disk, ağ ve süreçler gibi birden çok alt sistemin istatistiklerini aynı anda gerçek zamanlı olarak gösteren çok yönlü bir izleme aracıdır. Disk etkinliğini sunucunun genel yüküyle ilişkilendirmeye olanak tanır ve hızlı tanı için uygundur.

Tip

Bu araçlar birbirini tamamlar: iostat aygıt düzeyinde doğru bir tablo sunarken, dstat tüm sistemin bağlamını sağlar.

Ön koşullar ve gereksinimler

Analize başlamadan önce aşağıdaki koşullar karşılanmalıdır:

  • Linux işletim sistemi (Debian, Ubuntu, AlmaLinux, Rocky Linux, CentOS).
  • Sunucuya SSH erişimi.
  • Root yetkileri veya komutları sudo ile çalıştırabilme imkânı.

İşletim sistemi sürümünün kontrol edilmesi:

cat /etc/os-release

Gerekli paketlerin kurulumu:

Debian / Ubuntu:

sudo apt update sudo apt install sysstat dstat

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install sysstat dstat # or sudo dnf install sysstat dstat

sysstat'ın çalışmasının kontrol edilmesi:

systemctl status sysstat

Hizmet etkinse ilgili bilgiler görüntülenir:

root@server:~# systemctl status sysstat ● sysstat.service - Resets System Activity Logs Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; preset: enabled) Active: active (exited) since Tue 2025-12-23 10:35:35 UTC; 16min ago Docs: man:sa1(8) man:sadc(8) man:sar(1) Main PID: 731 (code=exited, status=0/SUCCESS) CPU: 7ms

Adım adım inceleme ve analiz

iostat ile temel disk analizi

iostat aracı, CPU ve disk alt sisteminin yükünü değerlendirmek, ayrıca G/Ç gecikmelerini ve kuyruklarını tespit etmek için kullanılır.

Sözdizimi:

sudo iostat [options] [interval] [count]

En sık kullanılan parametreler:

  • -x - genişletilmiş istatistikler;
  • -d - yalnızca disk verileri;
  • -k - çıktının kilobayt cinsinden verilmesi;
  • -p - bölümler veya belirli bir aygıt için istatistikler.

Temel örnek:

sudo iostat -x

Dinamik analiz:

sudo iostat -xk 5 3

Aralık ve örnek sayısı, sistem açılışından bu yana ortalama durumu değil, yükün zaman içindeki değişimini izlemeye olanak tanır.

Örnek iostat çıktısı

Temel CPU metrikleri:

  • %iowait - CPU'nun G/Ç işlemlerinin tamamlanmasını beklerken boşta kaldığı sürenin yüzdesi. Bu metriğin artması, diskin genel performans üzerindeki etkisini gösterir.
  • %steal - sanal sunucular için geçerlidir ve "çalınan" CPU süresini gösterir.

Temel disk metrikleri:

  • %util - diskin meşgul olduğu sürenin yüzdesi. Sürekli olarak %80-90'ın üzerinde seyreden değerler aygıtın doygunluğa ulaştığını gösterir.
  • r_await - okuma işlemlerinin tamamlanması için geçen ortalama süre (ms) (kuyrukta bekleme süresi dahil).
  • w_await - yazma işlemlerinin tamamlanması için geçen ortalama süre (ms) (kuyrukta bekleme süresi dahil).
  • aqu-sz - (avg queue size) diskin istek kuyruğunun ortalama uzunluğu. > 1 değeri halihazırda bir kuyruğun oluştuğunu gösterir. HDD için > 2-4 / SSD için > 1-2 değeri, diskin yüke yetişemediğinin işaretidir.

await ile svctm arasındaki fark, gecikmenin diskin fiziksel hızından değil kuyruktan kaynaklanıp kaynaklanmadığını gösterir.
await, svctm'yi yalnızca az miktarda aşıyorsa (fark < %20-30), gecikmeler esas olarak diskin kendisinden kaynaklanır (yavaş fiziksel okuma/yazma).
await, svctm'den belirgin şekilde büyükse (fark > %50-100), ana gecikme istek kuyruğundan kaynaklanır (aqu-sz yüksek olacaktır); bu da çok sayıda paralel istek nedeniyle diskin aşırı yüklendiğini gösterir.

iostat'ın modern sürümlerinde (örnekteki gibi) svctm, hesaplaması güvenilir olmadığı için gösterilmez. Analiz için await + aqu-sz birleşimi kullanılır: düşük aqu-sz (~0) ile yüksek await yavaş bir diski gösterir; yüksek aqu-sz (>1) ile yüksek await ise diskin isteklerle aşırı yüklendiğini gösterir.

dstat ile genel tablonun analizi

dstat, sistemin gerçek zamanlı gözlemlenmesi ve disk yükünün diğer kaynaklarla ilişkilendirilmesi için kullanılır.

Komut örnekleri:

dstat -d dstat --disk-util dstat -rd --disk-util dstat -D vda,sda

Aralık belirtilerek çalıştırma örneği:

dstat -rd --disk-util 1 5

Analiz sırasında şunlara dikkat edin:

  • CPU iowait değerindeki artış;
  • okuma veya yazma tepeleri;
  • eş zamanlı ağ ve disk etkinliği (yedeklemeler, eşitleme).

Example dstat output: dstat -rd --disk-util 1 5 --io/total- -dsk/total- vda- read write| read write|util 0 4.00 | 0 76k|0.50 0 29.5 | 0 240k|0.20 0 1.00 | 0 4096B| 0 0 0 | 0 0 | 0 0 1.00 | 0 32k| 0

dstat ve iostat karşılaştırması:

Kriter iostat dstat
Veri doğruluğu Yüksek Yüksek
Gerçek zamanlı mod Sınırlı Mükemmel
Geçmiş veriler Evet (sar) Hayır
Renkli çıktı Hayır Evet
Genişletilebilirlik Hayır Eklentiler
CSV dışa aktarma Hayır Evet
CPU yükü Düşük Orta

Info

dstat, iostat'ta her zaman fark edilmeyen kısa süreli yük artışları için özellikle yararlıdır.

Disk G/Ç darboğazlarının tespiti

Hızlı tanı için aşağıdaki komutlar kullanılır:

sudo iostat -mx 2 sudo iostat -p /dev/vda 2 5 sar -d 1 5

Sorunun tipik belirtileri:

  • %util değerinin uzun süre %80'in üzerinde olması;
  • await değerinin SSD için 20-30 ms'nin, HDD için 50-100 ms'nin üzerinde olması;
  • aqu-sz değerinin 2-3'ten büyük olması; bu, kuyrukta birikme olduğunu gösterir.

Örnekte /dev/vda diski kullanılmıştır – bu, sanal sunucudaki sanal bir disktir (VirtIO).

Fiziksel sunucularda ve diğer ortamlarda diskler farklı adlandırılmış olabilir:

  • /dev/sdX (ör. /dev/sda) - olağan SATA/SAS/USB diskleri
  • /dev/nvmeXnY (ör. /dev/nvme0n1) - NVMe sürücüleri
  • /dev/vdX - sanal diskler

Yüksek disk G/Ç yüküne neden olan süreçlerin belirlenmesi

iostat ve dstat ile disk alt sisteminin aşırı yüklendiği tespit edildikten sonraki adım, yoğun okuma veya yazma işlemlerini başlatan belirli süreçleri belirlemektir. Yük kaynağını belirlemeden yalnızca aygıt düzeyinde yapılan analiz, doğru düzeltici eylemlerin gerçekleştirilmesine imkân vermez.

iotop kullanımı

Diski etkin olarak kullanan süreçleri bulmak için başlıca araç iotop'tur.

sudo iotop -ao

Komut parametreleri:

-a - sürecin başlangıcından itibaren birikimli istatistikleri gösterir; bu, uzun süreli G/Ç yapan arka plan görevlerinin belirlenmesine yardımcı olur;

-o - yalnızca o anda G/Ç işlemi gerçekleştiren süreçleri gösterir.

Örnek çıktı:

TID 41PRIO USER41DISK READ41DISK WRITE41SWAPIN41IO>4141COMMAND 1105641be/441mysql410.00 B 413.44 M410.00 %410.76 %41mysqld 258041be/441rsync410.00 B4123.48 M410.00 %411.17 %41rsync

iotop çıktısında özellikle DISK READ, DISK WRITE alanlarına ve G/Ç süresi yüzdesine dikkat edilmelidir. Genellikle yük kaynakları veritabanı süreçleri, yedekleme süreçleri, dosya eşitleme süreçleri veya kullanıcı betikleridir.

Süreç bazında G/Ç analizi için pidstat kullanımı

Daha biçimsel ve tekrarlanabilir bir analiz için sysstat paketinin bir parçası olan pidstat kullanılabilir.

pidstat -d 1

Bu komut, her süreç için disk G/Ç istatistiklerini bir saniyelik aralıklarla verir. Kısa süreli etkinlik tepelerini belirlemek ve bunları diğer sistem metrikleriyle ilişkilendirmek için uygundur.

Info

pidstat, yükün periyodik olarak ortaya çıktığı ve iotop tarafından her zaman yakalanamadığı durumlarda özellikle yararlıdır.

Dosya etkinliği analizi için lsof kullanımı

Bir sürecin hangi belirli dosya veya dizinlerle çalıştığını anlamak gerektiğinde lsof aracı kullanılır.

lsof +D /path

Burada /path, içinde etkin dosya ve süreçlerin belirlenmesi gereken belirli bir dizindir. Örneğin bu, veritabanı dizini, yedekleme dizini veya geçici dosyalar alanı olabilir.

Komut, belirtilen yol içinde şu anda hangi süreçlerin dosya tanımlayıcılarını tuttuğunu ve işlem yaptığını belirlemeye olanak tanır; bu, uygulamalardan kaynaklanan yükün analizinde özellikle yararlıdır.

Yük bağlamının analizi

Yüksek disk etkinliğine sahip bir sürecin belirlenmesi nihai hedef değildir. Yönetici, sürecin çalışma bağlamını değerlendirmelidir:

  • yükün bu hizmet için beklenen bir yük olup olmadığı;
  • sürecin uygun bir zamanda çalışıp çalışmadığı (ör. yoğun saatlerde yedekleme);
  • zamanlamanın veya çalışma parametrelerinin değiştirilip değiştirilemeyeceği;
  • G/Ç önceliğinin düşürülmesinin kabul edilebilir olup olmadığı.

Bu yaklaşım, normal yük ile sorunlu yükü ayırt etmeyi ve doğru optimizasyon yöntemini seçmeyi mümkün kılar.

Analizin doğruluğunun teyit edilmesi

Yapılan analizin doğruluğu şu durumlarda teyit edilir:

  • iostat'taki %util, await veya aqu-sz tepeleri zaman bakımından iotop veya pidstat'taki süreç etkinliğiyle örtüşüyorsa;
  • dstat'taki iowait artışı CPU yüküyle değil disk işlemleriyle örtüşüyorsa;
  • tekrarlanan ölçümler yeniden üretilebilir bir yük örüntüsü gösteriyorsa.

Verilerin biriktirilmesi ve sonraki analiz için günlük kaydı kullanılması önerilir:

sar -d 1 100 > io.log

Bu, disk alt sisteminin davranışını belirli bir süre boyunca kaydetmenize ve verileri olayları incelerken kullanmanıza olanak tanır.

Tipik hatalar ve işletim özellikleri

Barındırma sunucularının işletilmesi pratiğinde en sık karşılaşılan sorunlar şunlardır:

  • yedeklemelerin ve veri eşitlemenin yoğun saatlerde çalıştırılması;
  • RAM yetersizliği durumunda swap'ın yoğun kullanılması;
  • sürücü türüne uygun olmayan bir G/Ç zamanlayıcısı;
  • arka plan görevleri için önceliklendirme bulunmaması.

Arka plan süreçlerinin performans üzerindeki etkisini azaltmak için, bir sürecin G/Ç önceliğini yönetmeye yarayan ionice aracının kullanılması önerilir; bu, arka plan görevlerinin sistemin yanıt verebilirliği üzerindeki etkisini hafifletmeyi sağlar.

Kullanım örneği:

ionice -c3 rsync /source /destination

Temel öncelikler:

  • -c1 (realtime) - en yüksek öncelik. Gecikmenin kritik olduğu görevler için kullanılır. Diğer süreçleri tamamen engelleyebilir.
  • -c2 (best-effort) - çoğu süreç için varsayılan. Öncelik düzeyinin ayarlanmasına olanak tanır (0 (yüksek) ile 7 (düşük) arasında).
  • -c3 (idle) - arka plan. Süreç, diske yalnızca başka hiçbir süreç onu kullanmadığında erişir. Arka plan işlemleri (yedeklemeler, veri eşitleme) için güvenli ve önerilen seçenektir.

Bu örnekte rsync süreci en düşük G/Ç önceliğiyle çalışır ve sistemin temel işlemleri üzerindeki etkisi en aza indirilir. ionice kullanımı, arka plan süreçlerini tamamen devre dışı bırakmaya gerek kalmadan etkilerini en aza indirmeye olanak tanır.

Sonuç

Disk G/Ç izleme, bir sunucu altyapısının performansının ve kararlılığının sürdürülmesinin ayrılmaz bir parçasıdır. iostat ve dstat araçları aşırı yük durumlarını belirlemeye ve disk alt sisteminin durumunu değerlendirmeye olanak tanırken, iotop, pidstat ve lsof gibi araçlar belirli süreçlerin ve yüklerinin niteliğinin saptanmasına yardımcı olur.

Açıklanan yaklaşımın düzenli uygulanması, metriklerin doğru yorumlanması ve G/Ç önceliklerinin yönetilmesi; hizmet yanıt sürelerinin kısaltılmasına, yükün öngörülebilirliğinin artırılmasına ve SLA gereksinimlerine uyumun sağlanmasına yardımcı olur. Daha sonra bu metodoloji, merkezi izleme ve G/Ç yükü analizinin otomasyonu ile genişletilebilir.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA