Praćenje U/I-ja diska pomoću alata iostat i dstat
Uvod
Praćenje ulazno-izlaznih operacija diska (disk I/O) jedan je od ključnih zadataka pri radu poslužitelja u hosting infrastrukturi. Diskovni podsustav izravno utječe na performanse web-usluga, baza podataka, virtualnih strojeva, kontejnera i pozadinskih zadataka. Čak i uz dovoljno RAM-a i slobodnih procesorskih resursa, preopterećen ili spor disk može postati usko grlo cijelog sustava.
Ovaj priručnik namijenjen je administratorima sustava, DevOps inženjerima i vlasnicima poslužitelja. Obuhvaća alate iostat i dstat, načela njihova rada, tumačenje metrika te praktičan pristup pronalaženju uskih grla U/I-ja diska u hosting okruženju.
Opće informacije i načela rada
U/I diska u poslužiteljskoj infrastrukturi
Ulazno-izlazne operacije diska uključuju čitanje i pisanje podataka na blokovske uređaje. U stvarnim hosting scenarijima opterećenje diskovnog podsustava najčešće stvaraju:
- baze podataka (MySQL, MariaDB, PostgreSQL);
- web-aplikacije s dinamičkim sadržajem;
- poštanske usluge;
- sigurnosno kopiranje i sinkronizacija podataka;
- bilježenje (logiranje);
- swap i privremene datoteke;
- korisničke skripte i cron zadaci.
Uska grla mogu nastati zbog sporih uređaja za pohranu, snažnog nadmetanja među procesima, neoptimalnih planera U/I-ja, nepravilnog rada predmemorije ili posebnosti virtualizacije.
Namjena alata iostat i dstat
iostat je alat iz paketa sysstat namijenjen prikupljanju detaljne statistike o opterećenju procesora i diskovnih uređaja. Glavni je zadatak alata iostat prikazati koliko se intenzivno koristi određeni disk, postoji li red zahtjeva te koliko je prosječno vrijeme čekanja operacija.
dstat je svestran alat za nadzor koji u stvarnom vremenu prikazuje statistiku više podsustava istodobno: procesora, memorije, diska, mreže, procesa. Omogućuje povezivanje aktivnosti diska s ukupnim opterećenjem poslužitelja i prikladan je za brzu dijagnostiku.
Ovi se alati međusobno nadopunjuju: iostat daje točnu sliku na razini uređaja, a dstat pruža kontekst cijelog sustava.
Preduvjeti i zahtjevi
Prije početka analize moraju biti ispunjeni sljedeći uvjeti:
- Operacijski sustav Linux (Debian, Ubuntu, AlmaLinux, Rocky Linux, CentOS).
- SSH pristup poslužitelju.
- Root ovlasti ili mogućnost izvršavanja naredbi putem sudo.
Provjera inačice operacijskog sustava:
cat /etc/os-release
Instalacija potrebnih paketa:
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
Provjera rada sysstata:
systemctl status sysstat
Ako je usluga aktivna, prikazat će se odgovarajuće informacije:
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
Pregled i analiza korak po korak
Osnovna analiza diska pomoću alata iostat
Alat iostat koristi se za procjenu opterećenja procesora i diskovnog podsustava te za otkrivanje kašnjenja i redova U/I-ja.
Sintaksa:
sudo iostat [options] [interval] [count]
Najčešće korišteni parametri:
- -x - proširena statistika;
- -d - samo podaci o diskovima;
- -k - ispis u kilobajtima;
- -p - statistika za particije ili određeni uređaj.
Osnovni primjer:
sudo iostat -x
Dinamička analiza:
sudo iostat -xk 5 3
Interval i broj uzoraka omogućuju praćenje promjena opterećenja tijekom vremena, umjesto prosječnog stanja od pokretanja sustava.
Primjer ispisa alata iostat

Ključne metrike procesora:
- %iowait - postotak vremena u kojem je procesor besposlen čekajući završetak operacija U/I-ja. Porast ove metrike upućuje na utjecaj diska na ukupne performanse.
- %steal - relevantno za virtualne poslužitelje; prikazuje »ukradeno« procesorsko vrijeme.
Ključne metrike diska:
- %util - postotak vremena u kojem je disk bio zauzet. Vrijednosti koje su dulje vrijeme iznad 80-90 % upućuju na zasićenje uređaja.
- r_await - prosječno vrijeme (ms) do završetka operacija čitanja (uključujući vrijeme u redu).
- w_await - prosječno vrijeme (ms) do završetka operacija pisanja (uključujući vrijeme u redu).
- aqu-sz - (avg queue size) prosječna duljina reda zahtjeva prema disku. Vrijednost > 1 već upućuje na stvaranje reda. Vrijednost > 2-4 za HDD / > 1-2 za SSD znak je da disk ne stiže pratiti opterećenje.
Razlika između await i svctm pokazuje uzrokuje li kašnjenje red, a ne fizička brzina diska.
Ako await tek neznatno premašuje svctm (razlika < 20-30 %), kašnjenja uglavnom uzrokuje sam disk (sporo fizičko čitanje/pisanje).
Ako je await znatno veći od svctm (razlika > 50-100 %), glavno kašnjenje uzrokuje red zahtjeva (aqu-sz će biti visok), što upućuje na preopterećenje diska zbog mnogo paralelnih zahtjeva.
U modernim inačicama alata iostat (kao u primjeru) svctm se ne prikazuje jer je njegov izračun nepouzdan. Za analizu se koristi kombinacija await + aqu-sz: visok await uz nizak aqu-sz (~0) upućuje na spor disk; visok await uz visok aqu-sz (>1) upućuje na to da je disk preopterećen zahtjevima.
Analiza cjelokupne slike pomoću alata dstat
dstat se koristi za promatranje sustava u stvarnom vremenu i za povezivanje opterećenja diska s ostalim resursima.
Primjeri naredbi:
dstat -d dstat --disk-util dstat -rd --disk-util dstat -D vda,sda
Primjer pokretanja s intervalom:
dstat -rd --disk-util 1 5
Pri analizi obratite pozornost na:
- porast iowaita procesora;
- vrhove čitanja ili pisanja;
- istodobnu mrežnu i diskovnu aktivnost (sigurnosne kopije, sinkronizacija).
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
Usporedba alata dstat i iostat:
| Kriterij | iostat | dstat |
|---|---|---|
| Točnost podataka | Visoka | Visoka |
| Način rada u stvarnom vremenu | Ograničen | Izvrstan |
| Povijesni podaci | Da (sar) | Ne |
| Ispis u boji | Ne | Da |
| Proširivost | Ne | Dodaci (pluginovi) |
| Izvoz u CSV | Ne | Da |
| Opterećenje procesora | Nisko | Srednje |
dstat je osobito koristan kod kratkotrajnih skokova opterećenja koji se u alatu iostat ne vide uvijek.
Otkrivanje uskih grla U/I-ja diska
Za brzu dijagnostiku koriste se sljedeće naredbe:
sudo iostat -mx 2 sudo iostat -p /dev/vda 2 5 sar -d 1 5
Tipični znakovi problema:
- %util iznad 80 % dulje vrijeme;
- await iznad 20-30 ms za SSD ili iznad 50-100 ms za HDD;
- aqu-sz veći od 2-3, što upućuje na nakupljanje u redu.
U primjeru se koristi disk /dev/vda – to je virtualni disk (VirtIO) na virtualnom poslužitelju.
Na fizičkim poslužiteljima i u drugim okruženjima diskovi mogu imati drukčija imena:
- /dev/sdX (npr. /dev/sda) - uobičajeni SATA/SAS/USB diskovi
- /dev/nvmeXnY (npr. /dev/nvme0n1) - NVMe pogoni
- /dev/vdX - virtualni diskovi
Utvrđivanje procesa koji uzrokuju veliko opterećenje U/I-ja diska
Nakon što se pomoću alata iostat i dstat utvrdi preopterećenost diskovnog podsustava, sljedeći je korak utvrditi konkretne procese koji pokreću intenzivne operacije čitanja ili pisanja. Analiza na razini uređaja bez utvrđivanja izvora opterećenja ne omogućuje ispravne korektivne mjere.
Korištenje alata iotop
Osnovni alat za pronalaženje procesa koji aktivno koriste disk jest iotop.
sudo iotop -ao
Parametri naredbe:
-a - prikazuje kumulativnu statistiku od pokretanja procesa, što pomaže u otkrivanju pozadinskih zadataka s dugotrajnim U/I-jem;
-o - prikazuje samo procese koji trenutačno izvode operacije U/I-ja.
Primjer ispisa:
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
U ispisu alata iotop posebnu pozornost treba obratiti na polja DISK READ i DISK WRITE te na postotak vremena U/I-ja. Izvori opterećenja obično su procesi baza podataka, procesi sigurnosnog kopiranja, procesi sinkronizacije datoteka ili korisničke skripte.
Korištenje alata pidstat za analizu U/I-ja po procesima
Za formaliziraniju i ponovljivu analizu može se koristiti pidstat, koji je dio paketa sysstat.
pidstat -d 1
Ova naredba ispisuje statistiku U/I-ja diska za svaki proces u intervalima od jedne sekunde. To je praktično za otkrivanje kratkotrajnih skokova aktivnosti i njihovo povezivanje s drugim sustavnim metrikama.
pidstat je osobito koristan u situacijama kada se opterećenje pojavljuje periodično i iotop ga ne bilježi uvijek.
Korištenje alata lsof za analizu aktivnosti datoteka
U slučajevima kada je potrebno razumjeti s kojim konkretnim datotekama ili direktorijima proces radi, koristi se alat lsof.
lsof +D /path
Pritom je /path određeni direktorij unutar kojeg treba utvrditi aktivne datoteke i procese. To može biti, primjerice, direktorij baze podataka, direktorij sigurnosnih kopija ili područje privremenih datoteka.
Naredba omogućuje utvrditi koji procesi trenutačno drže deskriptore datoteka i izvode operacije unutar navedene putanje, što je osobito korisno pri analizi opterećenja koje stvaraju aplikacije.
Analiza konteksta opterećenja
Utvrđivanje procesa s visokom diskovnom aktivnošću nije konačni cilj. Administrator mora procijeniti kontekst njegova rada:
- je li opterećenje očekivano za tu uslugu;
- izvodi li se proces u odgovarajuće vrijeme (npr. sigurnosne kopije u satima vršnog opterećenja);
- mogu li se promijeniti raspored ili radni parametri;
- je li dopustivo smanjiti prioritet U/I-ja.
Taj pristup omogućuje razlikovanje normalnog od problematičnog opterećenja i odabir ispravne metode optimizacije.
Provjera ispravnosti analize
Ispravnost provedene analize potvrđena je ako:
- se vrhovi %util, await ili aqu-sz u alatu iostat vremenski podudaraju s aktivnošću procesa u alatu iotop ili pidstat;
- se porast iowaita u alatu dstat podudara s diskovnim operacijama, a ne s opterećenjem procesora;
- ponovljena mjerenja pokazuju ponovljiv obrazac opterećenja.
Za prikupljanje podataka i kasniju analizu preporučuje se korištenje bilježenja u datoteku:
sar -d 1 100 > io.log
To omogućuje zabilježiti ponašanje diskovnog podsustava tijekom određenog razdoblja i koristiti podatke pri istraživanju incidenata.
Tipične pogreške i posebnosti rada
U praksi rada hosting poslužitelja najčešće se javljaju sljedeći problemi:
- pokretanje sigurnosnih kopija i sinkronizacije podataka u satima vršnog opterećenja;
- intenzivno korištenje swapa uz nedovoljno RAM-a;
- planer U/I-ja neprikladan za vrstu pogona;
- nedostatak određivanja prioriteta za pozadinske zadatke.
Za smanjenje utjecaja pozadinskih procesa na performanse preporučuje se korištenje alata ionice za upravljanje prioritetom U/I-ja procesa, što omogućuje ublažavanje utjecaja pozadinskih zadataka na odzivnost sustava.
Primjer uporabe:
ionice -c3 rsync /source /destination
Ključni prioriteti:
- -c1 (realtime) - najviši prioritet. Koristi se za zadatke kritične s obzirom na kašnjenje. Može potpuno blokirati druge procese.
- -c2 (best-effort) - zadano za većinu procesa. Omogućuje podešavanje razine prioriteta (od 0 (visok) do 7 (nizak)).
- -c3 (idle) - pozadina. Proces dobiva pristup disku samo kada ga nijedan drugi proces ne koristi. Sigurno i preporučeno za pozadinske operacije (sigurnosne kopije, sinkronizacija podataka).
U ovom primjeru proces rsync radi s najnižim prioritetom U/I-ja, čime se njegov utjecaj na osnovne operacije sustava svodi na najmanju mjeru. Korištenje alata ionice omogućuje smanjiti utjecaj pozadinskih procesa bez potrebe da ih se potpuno isključi.
Zaključak
Praćenje U/I-ja diska sastavni je dio održavanja performansi i stabilnosti poslužiteljske infrastrukture. Alati iostat i dstat omogućuju otkrivanje situacija preopterećenja i procjenu stanja diskovnog podsustava, dok alati poput iotop, pidstat i lsof pomažu utvrditi konkretne procese i narav njihova opterećenja.
Redovita primjena opisanog pristupa, ispravno tumačenje metrika i upravljanje prioritetima U/I-ja pomažu skratiti vrijeme odziva usluga, povećati predvidljivost opterećenja i osigurati usklađenost sa zahtjevima SLA-a. Nadalje, ova se metodologija može proširiti centraliziranim nadzorom i automatizacijom analize opterećenja U/I-ja.