Spremljanje vnosno-izhodnih operacij na disku z orodjema iostat in dstat: odkrivanje ozkih grl | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Spremljanje vnosno-izhodnih operacij na disku z orodjema iostat in dstat: odkrivanje ozkih grl

Uvod

Spremljanje vhodno-izhodnih operacij diska je ena od ključnih nalog pri upravljanju strežnikov v gostovalni infrastrukturi. Diskovni podsistem neposredno vpliva na zmogljivost spletnih storitev, podatkovnih baz, virtualnih strojev, kontejnerjev in nalog v ozadju. Tudi ob zadostni količini pomnilnika RAM in prostih virov procesorja lahko preobremenjen ali počasen disk postane ozko grlo celotnega sistema.

Ta priročnik je namenjen sistemskim administratorjem, inženirjem DevOps in lastnikom strežnikov. Obravnava orodji iostat in dstat, načela njihovega delovanja, razlago kazalnikov ter praktičen pristop k odkrivanju ozkih grl pri vhodno-izhodnih operacijah diska v gostovalnem okolju.

Splošne informacije in načela delovanja

Vhodno-izhodne operacije diska v strežniški infrastrukturi

Vhodno-izhodne operacije diska vključujejo operacije branja in pisanja podatkov na blokovne naprave. V realnih scenarijih gostovanja obremenitev diskovnega podsistema najpogosteje povzročajo:

  • podatkovne baze (MySQL, MariaDB, PostgreSQL);
  • spletne aplikacije z dinamično vsebino;
  • poštne storitve;
  • varnostno kopiranje in sinhronizacija podatkov;
  • beleženje;
  • izmenjalne in začasne datoteke;
  • uporabniški skripti in cron naloge.

Zastoji lahko nastanejo zaradi počasnih naprav za shranjevanje, visoke konkurence med procesi, neoptimalnih razporejevalnikov vhodno-izhodnih operacij, nepravilnega delovanja predpomnilnika ali funkcij virtualizacije.

Namen programov iostat in dstat

iostat je pripomoček iz paketa sysstat, namenjen zbiranju podrobnih statistik o obremenitvi procesorja in diskovnih naprav. Glavna naloga iostata je prikazati, kako intenzivno se uporablja določen disk, ali obstaja čakalna vrsta zahtevkov in kakšen je povprečni čas čakanja za operacije.

dstat je vsestransko orodje za spremljanje, ki v realnem času prikazuje statistike za več podsistemov hkrati: procesor, pomnilnik, disk, omrežje in procese. Omogoča povezovanje aktivnosti diska s splošno obremenitvijo strežnika in je priročno za hitro diagnostiko.

Tip

Ta orodja se med seboj dopolnjujejo: iostat zagotavlja natančen vpogled na ravni naprave, medtem ko dstat ponuja 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.
  • Privilegiji 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, se prikažejo 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

Pregled in analiza po korakih

Osnovna analiza diska z uporabo iostat

Program iostat se uporablja za oceno obremenitve procesorja in diskovnega podsistema ter za prepoznavanje zamud pri vhodno-izhodnih operacijah in čakalnih vrst.

Sintaksa:

sudo iostat [options] [interval] [count]

Najpogosteje uporabljeni parametri:

  • -x – razširjene statistike;
  • -d – podatki samo o disku;
  • -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 vam omogočata spremljanje sprememb obremenitve skozi čas, namesto povprečnega stanja od zagona sistema.

Primer izpisa iostat

Ključni kazalniki CPU:

  • %iowait – odstotek časa, ko je CPU v mirovanju med čakanjem na operacije I/O. Povečanje te metrike kaže na vpliv diska na splošno zmogljivost.
  • %steal – pomemben za virtualne strežnike, prikazuje ukraden čas procesorja.

Ključni kazalniki diska:

  • %util – odstotek časa, v katerem je bil disk zaseden. Vrednosti, ki dosledno presegajo 80–90 %, kažejo na zasičenost naprave.
  • r_await – povprečni čas (v milisekundah) za zaključek operacij branja (vključno s časom v čakalni vrsti).
  • w_await – povprečni čas (v milisekundah) za zaključek operacij pisanja (vključno s časom v čakalni vrsti).
  • aqu-sz – (povprečna velikost čakalne vrste) povprečna dolžina čakalne vrste zahtevkov za disk. Vrednost > 1 že kaže na nastajanje čakalne vrste. Vrednost > 2–4 za HDD / > 1–2 za SSD je znak, da disk ne dohaja obremenitve.

Razlika med vrednostma »await« in »svctm« kaže, ali je zamuda posledica čakalne vrste in ne fizične hitrosti diska.
Če vrednost »await« le nekoliko presega vrednost »svctm« (razlika < 20–30 %), zamude v glavnem povzroča sam disk (počasno fizično branje/pisanje).
Če je vrednost »await« znatno večja od »svctm« (razlika > 50–100 %), je glavni vzrok zamude čakalna vrsta zahtevkov (vrednost »aqu-sz« bo visoka), kar kaže na preobremenjenost diska zaradi številnih vzporednih zahtevkov.

V sodobnih različicah iostata (kot v primeru) se vrednost svctm ne prikaže, ker je njen izračun nezanesljiv. Za analizo se uporablja kombinacija vrednosti »await« in »aqu-sz«: visoka vrednost »await« ob nizki vrednosti »aqu-sz« (~0) kaže na počasen disk; visoka vrednost »await« ob visoki vrednosti »aqu-sz« (>1) kaže, da je disk preobremenjen z zahtevki.

Analiza celotne slike z dstat

dstat se uporablja za opazovanje sistema v realnem času in povezovanje obremenitve diska z drugimi viri.

Primeri ukazov:

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

Primer izvajanja z intervalom:

dstat -rd --disk-util 1 5

Pri analizi bodite pozorni na:

  • povečanje iowait v CPU;
  • vrhove branja ali pisanja;
  • sočasno omrežno in diskovno delovanje (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 dstat in iostat:

Merila iostat dstat
Natančnost podatkov Visoka Visoka
Način v realnem času Omejen Odlična
Zgodovinski podatki Da (sar) Ne
Barvni izpis Ne Da
Razširljivost Ne Vtičniki
Izvoz v CSV Ne Da
Obremenitev procesorja Nizka Srednja

Info

dstat je še posebej uporaben za kratkotrajne konice obremenitve, ki v iostatu niso vedno opazne.

Prepoznavanje ozkih grl pri vnosu in iznosu podatkov na disk

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 % za daljše obdobje;
  • await nad 20–30 ms za SSD ali nad 50–100 ms za HDD;
  • aqu-sz večji od 2–3, kar kaže na kopičenje v čakalni 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 so diski lahko poimenovani drugače:

  • /dev/sdX (npr. /dev/sda) – običajni diski SATA/SAS/USB
  • /dev/nvmeXnY (npr. /dev/nvme0n1) – pogoni NVMe
  • /dev/vdX – virtualni diski

Prepoznavanje procesov, ki povzročajo visoko obremenitev diska z vnosno-izhodnimi operacijami

Ko z orodjema iostat in dstat ugotovite preobremenitev diskovnega podsistema, je naslednji korak prepoznavanje konkretnih procesov, ki sprožajo intenzivne operacije branja ali pisanja. Analiza na ravni naprave brez prepoznavanja vira obremenitve ne omogoča sprejetja pravilnih ukrepov za odpravo težave.

Uporaba iotop

Glavno orodje za iskanje procesov, ki aktivno uporabljajo disk, je program iotop.

sudo iotop -ao

Parametri ukaza:

-a – prikaže kumulativne statistike od začetka procesa, kar pomaga pri prepoznavanju nalog v ozadju z dolgotrajnim vnosom/iznosom;

-o – prikaže le tiste procese, ki trenutno izvajajo operacije I/O.

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 iotop je treba posebno pozornost nameniti poljem DISK READ, DISK WRITE in odstotku časa I/O. Običajno so viri obremenitve procesi baze podatkov, procesi varnostnega kopiranja, procesi sinhronizacije datotek ali uporabniški skripti.

Uporaba pidstat za analizo I/O po posameznih procesih

Za bolj formalizirano in ponovljivo analizo se lahko uporabi program pidstat, ki je del paketa sysstat.

pidstat -d 1

Ta ukaz izpiše statistiko I/O na disku za vsak proces v intervalih ene sekunde. To je priročno za prepoznavanje kratkotrajnih konic aktivnosti in njihovo povezovanje z drugimi sistemskimi kazalniki.

Info

pidstat je še posebej uporaben v situacijah, kjer se obremenitev pojavlja periodično in je morda ne zazna vedno iotop.

Uporaba lsof za analizo aktivnosti datotek

V primerih, ko je treba ugotoviti, s katerimi konkretnimi datotekami ali imeniki deluje proces, se uporabi pripomoček lsof.

lsof +D /path

Kjer je/path določena mapa, v kateri je treba identificirati aktivne datoteke in procese. To je lahko na primer mapa z bazami podatkov, mapa z varnostnimi kopijami ali območje za začasne datoteke.

Ukaz omogoča ugotavljanje, kateri procesi trenutno zadržujejo deskriptorje datotek in izvajajo operacije znotraj določene poti, kar je še posebej koristno pri analizi obremenitve iz aplikacij.

Analiza konteksta obremenitve

Prepoznavanje procesa z visoko aktivnostjo na disku ni končni cilj. Sistemski skrbnik mora oceniti kontekst njegovega delovanja:

  • ali je obremenitev za to storitev pričakovana;
  • ali proces teče v primernem času (npr. varnostne kopije v konicah);
  • ali je mogoče spremeniti urnik ali operativne parametre;
  • ali je dovoljeno zmanjšati prioriteto I/O.

Ta pristop omogoča razlikovanje med normalno in problematično obremenitvijo ter izbiro ustrezne metode optimizacije.

Preverjanje pravilnosti analize

Pravilnost opravljene analize je potrjena, če:

  • se vrhovi v %util, await ali aqu-sz v iostatu časovno ujemajo z aktivnostjo procesov v iotopu ali pidstatu;
  • se povečanje vrednosti iowait v dstat časovno ujema z operacijami na disku in ne z obremenitvijo CPU;
  • ponavljajoče se meritve kažejo ponovljiv vzorec obremenitve.

Za zbiranje podatkov in naknadno analizo se priporoča uporaba beleženja:

sar -d 1 100 > io.log

To vam omogoča beleženje delovanja diskovnega podsistema v določenem časovnem obdobju in uporabo podatkov pri preiskovanju incidentov.

Tipične napake in značilnosti delovanja

V praksi upravljanja gostiteljskih strežnikov so najpogostejše naslednje težave:

  • izvajanje varnostnih kopij in sinhronizacija podatkov v konicah;
  • intenzivna uporaba izmenjalnega prostora, kadar ni dovolj pomnilnika RAM;
  • neustrezen I/O-razporejevalnik za tip diska;
  • pomanjkanje določanja prioritet za naloge v ozadju.

Da bi zmanjšali vpliv procesov v ozadju na zmogljivost, je priporočljivo uporabiti pripomoček ionice za upravljanje prioritete I/O procesa, kar omogoča zmanjšanje vpliva nalog v ozadju na odzivnost sistema.

Primer uporabe:

ionice -c3 rsync /source /destination

Ključne prioritete:

  • -c1 (v realnem času) – najvišja prioriteta. Uporablja se za naloge, pri katerih je zakasnitev kritična. Lahko popolnoma blokira druge procese.
  • -c2 (best-effort) – privzeta nastavitev za večino procesov. Omogoča prilagajanje ravni prioritete (od 0 (visoka) do 7 (nizka)).
  • -c3 (idle) – ozadje. Proces bo dobil dostop do diska le, če ga ne uporablja noben drug proces. Varno in priporočljivo za operacije v ozadju (varnostne kopije, sinhronizacija podatkov).

V tem primeru proces rsync teče z najnižjo I/O prioriteto, kar zmanjša njegov vpliv na osnovne sistemske operacije. Uporaba ionice vam omogoča, da zmanjšate vpliv procesov v ozadju, ne da bi jih morali popolnoma onemogočiti.

Zaključek

Spremljanje diskovnega I/O je sestavni del ohranjanja zmogljivosti in stabilnosti strežniške infrastrukture. Programi iostat in dstat vam omogočajo prepoznavanje situacij preobremenitve in oceno stanja diskovnega podsistema, medtem ko orodja, kot so iotop, pidstat in lsof, pomagajo prepoznati posamezne procese in naravo njihove obremenitve.

Redna uporaba opisanega pristopa, pravilna interpretacija kazalnikov in upravljanje prioritet I/O pomagajo skrajšati odzivne čase storitev, povečati predvidljivost obremenitve in zagotoviti skladnost z zahtevami SLA. To metodologijo je mogoče naknadno razširiti s centraliziranim spremljanjem in avtomatizacijo analize obremenitve I/O.

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
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • 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