Monitoring stavu diskov na VMware ESXi pomocou smartctl
- VMware , Monitoring
- 27. júna 2025
Obsah
Samostatné ESXi hosty a malé vSphere klastre často bežia na lokálnych SATA alebo SAS diskoch — v homelabe, na pobočke alebo na zálohovacom serveri. Keď niektorý z týchto diskov začne zlyhávať, chcete sa to dozvedieť z monitoringu, nie z datastoru, ktorý sa zrazu prepne do režimu iba na čítanie.
Na bežnom Linuxe je riešením smartctl z balíka smartmontools. ESXi ho neobsahuje a vstavaný príkaz esxcli storage core device smart get vráti len niekoľko hodnôt (pri diskoch za radičom často N/A). Preto sme smartctl zabalili ako VIB, ktorý sa na ESXi inštaluje ako ktorýkoľvek iný balík.
Projekt: github.com/bsv9/smartctl-esxi-vib — smartctl 7.5 pre ESXi 7, 8 a 9.
Warning
VIB má úroveň CommunitySupported a nie je podpísaný spoločnosťou VMware, preto nefunguje na hostoch so zapnutým Secure Boot. Používajte ho tam, kde máte konfiguráciu hosta pod kontrolou a rozumiete dopadom na podporu.
Inštalácia
-
Stiahnite najnovší VIB, napríklad smartctl-7.5-5714.x86_64.vib.
-
Skopírujte ho do
/tmp/na ESXi hoste:scp smartctl-7.5-5714.x86_64.vib root@esxi-host:/tmp/ -
Pripojte sa na host cez SSH a povoľte komunitné balíky:
esxcli software acceptance set --level=CommunitySupported -
Nainštalujte balík. Režim údržby ani reštart nie sú potrebné:
esxcli software vib install -v /tmp/smartctl-7.5-5714.x86_64.vib
Binárka sa nainštaluje do /opt/smartmontools/smartctl. Balík overíte príkazom esxcli software vib get -n smartctl a kedykoľvek ho môžete odstrániť, opäť bez reštartu:
esxcli software vib remove -n smartctl
Čítanie SMART údajov
Disky nájdete v /dev/disks/ (alebo cez esxcli storage core device list). Pri SATA diskoch nechajte smartctl zvoliť správny prenos pomocou -d sat,auto:
[root@host:~] /opt/smartmontools/smartctl -s on -d sat,auto -A /dev/disks/t10.ATA_____ST2000VX0082D2E3164__________________________________Z52C5LJ1
smartctl 7.5 2025-04-30 r5714 [x86_64-linux-8.0.3] (local build)
Copyright (C) 2002-25, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 114 099 006 Pre-fail Always - 69586192
3 Spin_Up_Time 0x0003 096 096 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 118
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 072 060 030 Pre-fail Always - 18572538
9 Power_On_Hours 0x0032 091 091 000 Old_age Always - 8349h+00m+00.000s
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 109
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x003a 096 096 000 Old_age Always - 4
190 Airflow_Temperature_Cel 0x0022 071 055 045 Old_age Always - 29 (Min/Max 19/29)
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 102
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 130
194 Temperature_Celsius 0x0022 029 045 000 Old_age Always - 29 (0 19 0 0 0)
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
[root@host:~] uname -a
VMkernel host 8.0.3 #1 SMP Release build-24022510 Jun 11 2024 05:59:34 x86_64 x86_64 x86_64 ESXi
Užitočné varianty:
smartctl -H <disk>— celkový verdikt (PASSED/FAILED).smartctl -a <disk>— všetko: identifikácia, atribúty, log chýb a log self-testov.smartctl -t short <disk>— spustí krátky self-test; výsledok neskôr zobrazíte cez-l selftest.
Ktoré atribúty sú naozaj dôležité
Väčšina tabuľky je informačná. Surové hodnoty atribútov ako Raw_Read_Error_Rate či Seek_Error_Rate sú kódované výrobcom a na diskoch Seagate vyzerajú hrozivo, aj keď je disk úplne v poriadku. Upozornenia má zmysel nastaviť na:
| ID | Atribút | Prečo je dôležitý |
|---|---|---|
| 5 | Reallocated_Sector_Ct | Sektory už presunuté do rezervy. Akýkoľvek nárast je varovanie. |
| 197 | Current_Pending_Sector | Nečitateľné sektory čakajúce na presun. Nenulová hodnota znamená ohrozené dáta. |
| 198 | Offline_Uncorrectable | Sektory, ktoré sa nepodarilo prečítať pri offline kontrole. |
| 187 | Reported_Uncorrect | Chyby, ktoré disk nedokázal opraviť pomocou ECC. |
| 188 | Command_Timeout | Často ukazuje na problém s káblom, napájaním alebo radičom. |
| 199 | UDMA_CRC_Error_Count | Chyby prenosu medzi diskom a radičom — zvyčajne zlý kábel alebo backplane. |
| 194 | Temperature_Celsius | Dlhodobo vysoká teplota skracuje životnosť disku. |
Praktické pravidlo: upozorňujte na akýkoľvek nárast atribútov 5, 197, 198 a 187 a na teplotu nad limitom výrobcu (pri HDD zvyčajne 50–60 °C).
Odosielanie údajov do Zabbixu
Tip
Nechcete položky vytvárať ručne? Náš hotový template robí všetko toto vrátane discovery diskov a triggerov — pozrite Stav diskov ESXi v Zabbixe. Nižšie je popísané, ako to funguje vnútri.
Na ESXi nie je možné spustiť Zabbix agenta a jeho SNMP agent SMART atribúty neposkytuje. Najjednoduchší spoľahlivý spôsob je nechať Zabbix server alebo proxy spúšťať smartctl cez SSH:
-
Zapnite na hoste SSH a pridajte samostatný kľúč pre používateľa Zabbixu (na ESXi sú kľúče v
/etc/ssh/keys-root/authorized_keys). -
Vytvorte položku typu SSH agent s autentifikáciou verejným kľúčom, napríklad s kľúčom
ssh.run[smart.disk1.realloc]a príkazom:/opt/smartmontools/smartctl -A -d sat,auto /dev/disks/<disk-id> | awk '$1==5 {print $10}' -
Zopakujte pre atribúty z tabuľky vyššie (alebo vráťte celý výstup
-Ado jednej textovej položky a hodnoty vytiahnite závislými položkami s predspracovaním cez regulárne výrazy — jedno SSH volanie na disk namiesto jedného na atribút). -
Pridajte triggery, napríklad
change(/esxi-host/ssh.run[smart.disk1.realloc])>0, a prah pre teplotu.
Stačí interval 15–30 minút: SMART hodnoty sa menia pomaly a častejšie budenie diskov nemá zmysel.
Rovnaké údaje samozrejme môžete posielať aj do Promethea alebo iného systému, ktorý dokáže spustiť vzdialený príkaz; podstatné je, že smartctl je teraz na hoste k dispozícii.
Zhrnutie
- smartctl nainštalujete ako VIB: bez reštartu, bez režimu údržby, funguje na ESXi 7, 8 a 9 (bez Secure Boot).
/opt/smartmontools/smartctlpoužívate presne ako na Linuxe.- Upozorňujte na presunuté, čakajúce a neopraviteľné sektory a na teplotu — nie na surové hodnoty read/seek error rate.
Potrebujete pomôcť s monitoringom vašej vSphere alebo Proxmox infraštruktúry? Kontaktujte nás.