Spremljanje V/I diska strežnika z iostat in dstat – vodič | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

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.

Tip

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

Info

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.

Info

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.

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