Spremljanje V/I diska z orodjema iostat in dstat
Uvod
Spremljanje vhodno-izhodnih operacij diska (disk I/O) je ena ključnih nalog pri upravljanju strežnikov v gostiteljski infrastrukturi. Diskovni podsistem neposredno vpliva na zmogljivost spletnih storitev, podatkovnih zbirk, virtualnih strojev, vsebnikov in opravil v ozadju. Tudi ob zadostni količini pomnilnika RAM in prostih procesorskih virih lahko preobremenjen ali počasen disk postane ozko grlo celotnega sistema.
Ta priročnik je namenjen sistemskim skrbnikom, inženirjem DevOps in lastnikom strežnikov. Zajema orodji iostat in dstat, načela njunega delovanja, razlago metrik ter praktičen pristop k iskanju ozkih grl V/I diska v gostiteljskem okolju.
Splošne informacije in načela delovanja
V/I diska v strežniški infrastrukturi
Vhodno-izhodne operacije diska vključujejo branje in pisanje podatkov na blokovne naprave. V resničnih gostiteljskih scenarijih obremenitev diskovnega podsistema najpogosteje povzročajo:
- podatkovne zbirke (MySQL, MariaDB, PostgreSQL);
- spletne aplikacije z dinamično vsebino;
- poštne storitve;
- varnostno kopiranje in sinhronizacija podatkov;
- beleženje (logiranje);
- swap in začasne datoteke;
- uporabniški skripti in opravila cron.
Ozka grla lahko nastanejo zaradi počasnih pomnilniških naprav, velikega tekmovanja med procesi, neoptimalnih razporejevalnikov V/I, nepravilnega delovanja predpomnilnika ali posebnosti virtualizacije.
Namen orodij iostat in dstat
iostat je orodje iz paketa sysstat, namenjeno zbiranju podrobne statistike obremenitve procesorja in diskovnih naprav. Glavna naloga orodja iostat je pokazati, kako intenzivno se uporablja določen disk, ali obstaja vrsta zahtevkov in kolikšen je povprečni čas čakanja operacij.
dstat je vsestransko orodje za spremljanje, ki v realnem času prikazuje statistiko več podsistemov hkrati: procesorja, pomnilnika, diska, omrežja, procesov. Omogoča povezovanje aktivnosti diska s skupno obremenitvijo strežnika in je primerno za hitro diagnostiko.
Orodji se dopolnjujeta: iostat daje natančno sliko na ravni naprave, dstat pa zagotavlja kontekst celotnega sistema.
Predpogoji in zahteve
Pred začetkom analize morajo biti izpolnjeni naslednji pogoji:
- Operacijski sistem Linux (Debian, Ubuntu, AlmaLinux, Rocky Linux, CentOS).
- Dostop do strežnika prek SSH.
- Pravice root ali možnost izvajanja ukazov prek sudo.
Preverjanje različice operacijskega sistema:
cat /etc/os-release
Namestitev potrebnih paketov:
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
Preverjanje delovanja sysstat:
systemctl status sysstat
Če je storitev aktivna, bodo prikazane ustrezne 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
Postopni pregled in analiza
Osnovna analiza diska z orodjem iostat
Orodje iostat se uporablja za oceno obremenitve procesorja in diskovnega podsistema ter za odkrivanje zakasnitev in vrst V/I.
Sintaksa:
sudo iostat [options] [interval] [count]
Najpogosteje uporabljeni parametri:
- -x - razširjena statistika;
- -d - samo podatki o diskih;
- -k - izpis v kilobajtih;
- -p - statistika za particije ali določeno napravo.
Osnovni primer:
sudo iostat -x
Dinamična analiza:
sudo iostat -xk 5 3
Interval in število vzorcev omogočata spremljanje sprememb obremenitve skozi čas, namesto povprečnega stanja od zagona sistema.
Primer izpisa orodja iostat

Ključne metrike procesorja:
- %iowait - odstotek časa, ko je procesor nedejaven in čaka na dokončanje operacij V/I. Povečanje te metrike kaže na vpliv diska na skupno zmogljivost.
- %steal - pomembno za virtualne strežnike; prikazuje »ukradeni« procesorski čas.
Ključne metrike diska:
- %util - odstotek časa, ko je bil disk zaseden. Vrednosti, ki so dlje časa nad 80-90 %, kažejo na nasičenost naprave.
- r_await - povprečni čas (ms) do dokončanja bralnih operacij (vključno s časom v vrsti).
- w_await - povprečni čas (ms) do dokončanja pisalnih operacij (vključno s časom v vrsti).
- aqu-sz - (avg queue size) povprečna dolžina vrste zahtevkov do diska. Vrednost > 1 že kaže na nastajanje vrste. Vrednost > 2-4 pri HDD / > 1-2 pri SSD je znak, da disk ne dohaja obremenitve.
Razlika med await in svctm pokaže, ali zakasnitev povzroča vrsta in ne fizična hitrost diska.
Če await le malenkost presega svctm (razlika < 20-30 %), zakasnitve povzroča predvsem sam disk (počasno fizično branje/pisanje).
Če je await bistveno večji od svctm (razlika > 50-100 %), glavno zakasnitev povzroča vrsta zahtevkov (aqu-sz bo visok), kar kaže na preobremenjenost diska zaradi številnih vzporednih zahtevkov.
V sodobnih različicah orodja iostat (kot v primeru) svctm ni prikazan, ker je njegov izračun nezanesljiv. Za analizo se uporablja kombinacija await + aqu-sz: visok await ob nizkem aqu-sz (~0) kaže na počasen disk; visok await ob visokem aqu-sz (>1) kaže, da je disk preobremenjen z zahtevki.
Analiza celotne slike z orodjem dstat
dstat se uporablja za opazovanje sistema v realnem času in za povezovanje obremenitve diska z drugimi viri.
Primeri ukazov:
dstat -d dstat --disk-util dstat -rd --disk-util dstat -D vda,sda
Primer zagona z intervalom:
dstat -rd --disk-util 1 5
Pri analizi bodite pozorni na:
- povečanje iowait pri procesorju;
- konice branja ali pisanja;
- hkratno omrežno in diskovno aktivnost (varnostne kopije, sinhronizacija).
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
Primerjava orodij dstat in iostat:
| Merilo | iostat | dstat |
|---|---|---|
| Natančnost podatkov | Visoka | Visoka |
| Način v realnem času | Omejen | Odličen |
| Zgodovinski podatki | Da (sar) | Ne |
| Barvni izpis | Ne | Da |
| Razširljivost | Ne | Vtičniki |
| Izvoz v CSV | Ne | Da |
| Obremenitev procesorja | Nizka | Srednja |
dstat je še posebej uporaben pri kratkotrajnih konicah obremenitve, ki jih v orodju iostat ni vedno mogoče opaziti.
Odkrivanje ozkih grl V/I diska
Za hitro diagnostiko se uporabljajo naslednji ukazi:
sudo iostat -mx 2 sudo iostat -p /dev/vda 2 5 sar -d 1 5
Tipični znaki težave:
- %util nad 80 % dlje časa;
- await nad 20-30 ms pri SSD ali nad 50-100 ms pri HDD;
- aqu-sz večji od 2-3, kar kaže na kopičenje zahtevkov v vrsti.
V primeru je uporabljen disk /dev/vda – to je virtualni disk (VirtIO) na virtualnem strežniku.
Na fizičnih strežnikih in v drugih okoljih imajo diski lahko drugačna imena:
- /dev/sdX (npr. /dev/sda) - navadni diski SATA/SAS/USB
- /dev/nvmeXnY (npr. /dev/nvme0n1) - pogoni NVMe
- /dev/vdX - virtualni diski
Ugotavljanje procesov, ki povzročajo veliko obremenitev V/I diska
Ko je z orodjema iostat in dstat ugotovljena preobremenjenost diskovnega podsistema, je naslednji korak ugotoviti konkretne procese, ki sprožajo intenzivne bralne ali pisalne operacije. Analiza na ravni naprave brez ugotovitve vira obremenitve ne omogoča pravilnih popravljalnih ukrepov.
Uporaba orodja iotop
Osnovno orodje za iskanje procesov, ki aktivno uporabljajo disk, je iotop.
sudo iotop -ao
Parametri ukaza:
-a - prikaže kumulativno statistiko od zagona procesa, kar pomaga odkriti opravila v ozadju z dolgotrajnim V/I;
-o - prikaže samo procese, ki trenutno izvajajo operacije V/I.
Primer izpisa:
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
V izpisu orodja iotop je treba posebno pozornost nameniti poljema DISK READ in DISK WRITE ter odstotku časa V/I. Običajno so viri obremenitve procesi podatkovnih zbirk, procesi varnostnega kopiranja, procesi sinhronizacije datotek ali uporabniški skripti.
Uporaba orodja pidstat za analizo V/I po procesih
Za bolj formalizirano in ponovljivo analizo lahko uporabite pidstat, ki je del paketa sysstat.
pidstat -d 1
Ta ukaz izpisuje statistiko V/I diska za vsak proces v enosekundnih intervalih. To je priročno za odkrivanje kratkotrajnih konic aktivnosti in njihovo povezovanje z drugimi sistemskimi metrikami.
pidstat je še posebej uporaben v primerih, ko se obremenitev pojavlja periodično in je iotop ne zazna vedno.
Uporaba orodja lsof za analizo aktivnosti datotek
V primerih, ko je treba razumeti, s katerimi konkretnimi datotekami ali imeniki proces dela, se uporablja orodje lsof.
lsof +D /path
Pri tem je /path določen imenik, znotraj katerega je treba ugotoviti aktivne datoteke in procese. To je lahko na primer imenik podatkovne zbirke, imenik varnostnih kopij ali območje začasnih datotek.
Ukaz omogoča ugotoviti, kateri procesi trenutno držijo deskriptorje datotek in izvajajo operacije znotraj navedene poti, kar je še posebej uporabno pri analizi obremenitve, ki jo povzročajo aplikacije.
Analiza konteksta obremenitve
Ugotovitev procesa z visoko diskovno aktivnostjo ni končni cilj. Skrbnik mora oceniti kontekst njegovega delovanja:
- ali je obremenitev za to storitev pričakovana;
- ali se proces izvaja ob primernem času (npr. varnostne kopije v času konic);
- ali je mogoče spremeniti urnik ali delovne parametre;
- ali je dopustno znižati prioriteto V/I.
Ta pristop omogoča razlikovanje med običajno in problematično obremenitvijo ter izbiro ustrezne metode optimizacije.
Preverjanje pravilnosti analize
Pravilnost opravljene analize je potrjena, če:
- se konice %util, await ali aqu-sz v orodju iostat časovno ujemajo z aktivnostjo procesov v orodju iotop ali pidstat;
- se povečanje iowait v orodju dstat ujema z diskovnimi operacijami in ne z obremenitvijo procesorja;
- ponovljene meritve kažejo ponovljiv vzorec obremenitve.
Za zbiranje podatkov in nadaljnjo analizo je priporočljivo uporabljati beleženje v datoteko:
sar -d 1 100 > io.log
To omogoča zabeležiti obnašanje diskovnega podsistema v določenem obdobju in uporabiti podatke pri preiskovanju incidentov.
Tipične napake in posebnosti delovanja
V praksi upravljanja gostiteljskih strežnikov se najpogosteje pojavljajo naslednje težave:
- izvajanje varnostnih kopij in sinhronizacije podatkov v času konic;
- intenzivna uporaba swapa ob nezadostnem pomnilniku RAM;
- razporejevalnik V/I, ki ni primeren za vrsto pogona;
- pomanjkanje določanja prioritet za opravila v ozadju.
Za zmanjšanje vpliva procesov v ozadju na zmogljivost je priporočljivo uporabljati orodje ionice za upravljanje prioritete V/I procesa, kar omogoča omiljen vpliv opravil v ozadju na odzivnost sistema.
Primer uporabe:
ionice -c3 rsync /source /destination
Ključne prioritete:
- -c1 (realtime) - najvišja prioriteta. Uporablja se za naloge, kritične glede zakasnitve. Lahko popolnoma blokira druge procese.
- -c2 (best-effort) - privzeto za večino procesov. Omogoča prilagajanje ravni prioritete (od 0 (visoka) do 7 (nizka)).
- -c3 (idle) - ozadje. Proces dobi dostop do diska samo takrat, ko ga nobeden drug proces ne uporablja. Varno in priporočljivo za operacije v ozadju (varnostne kopije, sinhronizacija podatkov).
V tem primeru se proces rsync izvaja z najnižjo prioriteto V/I, kar zmanjša njegov vpliv na osnovne operacije sistema. Uporaba orodja ionice omogoča zmanjšati vpliv procesov v ozadju, ne da bi jih bilo treba popolnoma onemogočiti.
Zaključek
Spremljanje V/I diska je sestavni del vzdrževanja zmogljivosti in stabilnosti strežniške infrastrukture. Orodji iostat in dstat omogočata odkrivanje stanj preobremenitve in oceno stanja diskovnega podsistema, orodja, kot so iotop, pidstat in lsof, pa pomagajo ugotoviti konkretne procese in naravo njihove obremenitve.
Redna uporaba opisanega pristopa, pravilna razlaga metrik in upravljanje prioritet V/I pomagajo skrajšati odzivne čase storitev, povečati predvidljivost obremenitve in zagotoviti skladnost z zahtevami SLA. V nadaljevanju je mogoče to metodologijo razširiti s centraliziranim spremljanjem in avtomatizacijo analize obremenitve V/I.