Spremljanje diskovnega I/O z iostat in dstat | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Spremljanje diskovnega I/O z iostat in dstat

Uvod

Spremljanje vhodno-izhodnih operacij na disku je ena ključnih nalog pri upravljanju strežnikov v gostiteljski infrastrukturi. Diskovni podsistem neposredno vpliva na delovanje spletnih storitev, podatkovnih baz, virtualnih strojev, kontejnerjev in ozadnih nalog. Tudi ob zadostnem RAM-u in prostih CPU virih lahko preobremenjen ali počasen disk postane ozko grlo celotnega sistema.

Ta priročnik je namenjen sistemskim administratorjem, DevOps inženirjem in lastnikom strežnikov. Pokriva pripomočke iostat in dstat, načela njihovega delovanja, interpretacijo metrik in praktičen pristop k iskanju ozkih grl diskovnega I/O v gostiteljskem okolju.

Splošne informacije in načela delovanja

Diskovni I/O v strežniški infrastrukturi

Vhodno-izhodne operacije na disku vključujejo branje in pisanje podatkov na blokovne naprave. V resničnih gostiteljskih scenarijih je obremenitev diskovnega podsistema najpogosteje ustvarjena z:

  • podatkovnimi bazami (MySQL, MariaDB, PostgreSQL);
  • spletnimi aplikacijami z dinamično vsebino;
  • poštnimi storitvami;
  • varnostnim kopiranjem in sinhronizacijo podatkov;
  • zapisovanjem dnevnikov;
  • swap in začasnimi datotekami;
  • uporabniškimi skripti in cron opravili.

Ozka grla se lahko pojavijo zaradi počasnih pomnilniških naprav, velikega tekmovanja med procesi, neoptimalnih I/O razporejevalnikov, nepravilnega delovanja predpomnilnika ali značilnosti virtualizacije.

Namen iostat in dstat

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

dstat je vsestransko orodje za spremljanje, ki prikazuje statistiko v realnem času čez več podsistemov hkrati: CPU, pomnilnik, disk, omrežje, procesi. Omogoča korelacijo diskovne aktivnosti s celotno obremenitvijo strežnika in je priročen za hitro diagnostiko.

Ta pripomočka se dopolnjujeta: iostat zagotavlja natančno sliko na ravni naprave, medtem ko dstat 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).
  • SSH dostop do strežnika.
  • Root privilegiji ali možnost izvajanja ukazov prek sudo.

Preverjanje različice OS:

cat /etc/os-release

Nameščanje potrebnih paketov.

Debian / Ubuntu:

sudo apt update

sudo apt install sysstat dstat

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install sysstat dstat

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

Pregled in analiza po korakih

Osnovna analiza diska z uporabo iostat

Pripomoček iostat se uporablja za oceno obremenitve CPU in diskovnega podsistema ter za prepoznavanje I/O zamud in čakalnih vrst.

Sintaksa:

sudo iostat [options] [interval] [count]

Najpogosteje uporabljeni parametri:

  • -x — razširjena statistika;
  • -d — podatki samo za disk;
  • -k — izhod 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 sledenje spremembam obremenitve skozi čas, namesto povprečnega stanja od zagona sistema.

Primer izhoda iostat:

Example iostat output

Ključne CPU metrike:

  • %iowait — odstotek časa, ko je CPU neaktiven, medtem ko čaka na I/O operacije. Povečanje te metrike kaže na vpliv diska na celotno zmogljivost.
  • %steal — pomembno za virtualne strežnike in prikazuje ukraden čas CPU.

Ključne diskovne metrike:

  • %util — odstotek časa, ko je bil disk zaseden. Vrednosti, ki dosledno presegajo 80–90%, kažejo na nasičenost naprave.
  • r_await — povprečni čas (ms) za dokončanje bralnih operacij (vključno s časom v čakalni vrsti).
  • w_await — povprečni čas (ms) za dokončanje pisalnih operacij (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 oblikovanje čakalne vrste. Vrednost > 2–4 za HDD / > 1–2 za SSD je znak, da disk ne dohaja obremenitve.

Razlika med await in svctm kaže, ali je zamuda posledica čakalne vrste, ne pa hitrosti fizičnega diska.
Če await le malo presega svctm (razlika < 20–30%), so zamude predvsem posledica samega diska (počasno fizično branje/pisanje).
Če await bistveno presega svctm (razlika > 50–100%), je glavna zamuda posledica čakalne vrste (aqu-sz bo visoka), kar kaže na preobremenitev diska z mnogimi vzporednimi zahtevki.

V sodobnih različicah iostat (kot v primeru) svctm ni prikazan, ker je njegov izračun nezanesljiv. Za analizo se uporablja kombinacija await + aqu-sz: visok await z nizkim aqu-sz (~0) kaže na počasen disk; visok await z visokim 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 korelacijo diskovne obremenitve 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 v CPU;
  • vrhove branja ali pisanja;
  • sočasno omrežno in diskovno aktivnost (varnostne kopije, sinhronizacija).

Primer izhoda dstat:

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:

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

dstat je še posebej uporaben za kratkotrajne vrhove obremenitve, ki niso vedno opazni v iostat.

Prepoznavanje ozkih grl diskovnega I/O

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 oblikovanje čakalne vrste.

Info

V primeru se uporablja disk /dev/vda — to je virtualni disk (VirtIO) na virtualnem strežniku. Na fizičnih strežnikih in v drugih okoljih so lahko diski poimenovani drugače.

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

Prepoznavanje procesov, ki povzročajo visoko diskovno I/O obremenitev

Po ugotovitvi prisotnosti preobremenitve diskovnega podsistema z uporabo iostat in dstat je naslednji korak prepoznavanje specifičnih procesov, ki sprožajo intenzivne bralne ali pisalne operacije. Analiza na ravni naprave brez prepoznavanja vira obremenitve ne omogoča pravilnih korektivnih ukrepov.

Uporaba iotop

Glavno orodje za iskanje procesov, ki aktivno uporabljajo disk, je pripomoček iotop.

sudo iotop -ao

Parametri ukaza:

  • -a — prikazuje kumulativno statistiko od začetka procesa, kar pomaga prepoznati ozadne naloge z dolgoročno I/O;
  • -o — prikazuje samo tiste procese, ki trenutno izvajajo I/O operacije.

Primer izhoda:

TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 11056 be/4 mysql 0.00 B 3.44 M 0.00 % 0.76 % mysqld 2580 be/4 rsync 0.00 B 23.48 M 0.00 % 1.17 % rsync

V izhodu iotop je treba posebno pozornost nameniti poljem DISK READ, DISK WRITE in odstotku časa I/O. Običajno so viri obremenitve procesi podatkovnih baz, procesi varnostnega kopiranja, procesi sinhronizacije datotek ali uporabniški skripti.

Uporaba pidstat za analizo I/O po procesih

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

pidstat -d 1

Ta ukaz izpiše statistiko diskovnega I/O za vsak proces v enosekundnih intervalih. To je priročno za prepoznavanje kratkotrajnih vrhov aktivnosti in njihovo korelacijo z drugimi sistemskimi metrikami.

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

Uporaba lsof za analizo aktivnosti datotek

V primerih, ko je treba razumeti, s katerimi specifičnimi datotekami ali imeniki proces deluje, se uporablja pripomoček lsof.

lsof +D /path

Kjer je /path specifičen imenik, znotraj katerega je treba prepoznati aktivne datoteke in procese. Na primer, to je lahko imenik podatkovne baze, imenik varnostnih kopij ali območje začasnih datotek.

Ukaz omogoča določitev, kateri procesi trenutno držijo kazalce datotek in izvajajo operacije znotraj določenega poti, kar je še posebej uporabno pri analizi obremenitve iz aplikacij.

Analiza konteksta obremenitve

Prepoznavanje procesa z visoko diskovno aktivnostjo ni končni cilj. Administrator mora oceniti kontekst njegovega delovanja:

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

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

Preverjanje pravilnosti analize

Pravilnost izvedene analize je potrjena, če:

  • vrhovi v %util, await ali aqu-sz v iostat sovpadajo s časom aktivnosti procesov v iotop ali pidstat;
  • povečanje iowait v dstat sovpada z diskovnimi operacijami, ne pa z obremenitvijo CPU;
  • ponovljene meritve kažejo ponovljiv vzorec obremenitve.

Za zbiranje podatkov in kasnejšo analizo je priporočljivo uporabljati beleženje:

sar -d 1 100 > io.log

To omogoča beleženje obnašanja diskovnega podsistema v določenem obdobju in uporabo podatkov pri preiskovanju incidentov.

Tipične napake in operativne značilnosti

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

  • izvajanje varnostnih kopij in sinhronizacije podatkov med konicami;
  • intenzivna uporaba swap pri pomanjkanju RAM-a;
  • neprimeren I/O razporejevalnik za vrsto pogona;
  • pomanjkanje prioritizacije za ozadne naloge.

Za zmanjšanje vpliva ozadnih procesov na zmogljivost je priporočljivo uporabiti pripomoček ionice za upravljanje I/O prioritete procesa, kar omogoča zmanjšanje vpliva ozadnih nalog na odzivnost sistema.

Primer uporabe:

ionice -c3 rsync /source /destination

Ključne prioritete:

  • -c1 (v realnem času) — najvišja prioriteta. Uporablja se za naloge, občutljive na zakasnitve. Lahko popolnoma blokira druge procese.
  • -c2 (najboljši napor) — privzeto za večino procesov. Omogoča prilagoditev ravni prioritete (od 0 (visoka) do 7 (nizka)).
  • -c3 (v prostem času) — ozadje. Proces bo dobil dostop do diska le, ko ga ne bodo uporabljali drugi procesi. Varno in priporočljivo za ozadne operacije (varnostne kopije, sinhronizacija podatkov).

V tem primeru proces rsync teče z najnižjo I/O prioriteto, kar zmanjšuje njegov vpliv na osnovne sistemske operacije. Uporaba ionice omogoča zmanjšanje vpliva ozadnih procesov, ne da bi jih bilo treba popolnoma onemogočiti.

Zaključek

Spremljanje diskovnega I/O je sestavni del vzdrževanja zmogljivosti in stabilnosti strežniške infrastrukture. Pripomočka iostat in dstat omogočata prepoznavanje situacij preobremenitve in oceno stanja diskovnega podsistema, medtem ko orodja, kot so iotop, pidstat in lsof, pomagajo prepoznati specifične procese in naravo njihove obremenitve.

Redna uporaba opisanega pristopa, pravilna interpretacija metrik in upravljanje I/O prioritet pomagajo zmanjšati čase odziva storitev, povečati predvidljivost obremenitve in zagotoviti skladnost z zahtevami SLA. Kasneje se lahko ta metodologija razširi z uporabo centraliziranega spremljanja in avtomatizacije analize I/O obremenitve.

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