smartctl та smartmontools: Повний посібник з моніторингу стану дисків у Linux
smartctl — це основний інтерфейс командного рядка пакета smartmontools, призначений для запиту, тестування та інтерпретації даних S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology), вбудованих у прошивку HDD, SSD та NVMe-накопичувачів. Він безпосередньо взаємодіє з прошивкою накопичувача через інтерфейси ATA, SCSI або NVMe, щоб отримати необроблену діагностичну телеметрію, яку операційна система не надає через стандартні шляхи введення/виведення.
Для будь-якого Linux-адміністратора, який керує фізичним або віртуальним сховищем — чи то на виділеному сервері, Виділеному Сервері, чи то на локально підключеному дисковому масиві — smartctl є найнадійнішим інструментом для виявлення неминучого відмови накопичувача до того, як це призведе до невідновної втрати даних.
Що таке S.M.A.R.T. і чому це важливо
S.M.A.R.T. — це система моніторингу, вбудована практично в кожен споживчий та корпоративний пристрій зберігання даних, виготовлений після 1996 року. Вона працює на рівні прошивки, безперервно відстежуючи десятки внутрішніх параметрів: швидкість помилок читання/запису, показники механічного навантаження, рівні зносу NAND, кількість перерозподілених секторів та показники температури.
Критична відмінність, яку більшість посібників упускає: дані S.M.A.R.T. є прогностичними, а не реактивними. Накопичувач може пройти перевірку файлової системи та нормально обслуговувати введення/виведення, одночасно накопичуючи перерозподілені сектори зі швидкістю, яка статистично передбачає відмову протягом кількох тижнів. smartctl виявляє цей прихований стан деградації.
S.M.A.R.T. працює в трьох сімействах інтерфейсів зберігання:
- ATA/SATA — оригінальна специфікація S.M.A.R.T., найбагатша за атрибутами
- SCSI/SAS — використовує іншу модель атрибутів (сторінки журналу інформаційних винятків)
- NVMe — надає дані про стан через журнал інформації про стан NVMe (Log Page 0x02), з такими показниками, як доступна резервна ємність, відсоток використання та небезпечні вимкнення
Встановлення smartmontools на Linux
Пакет smartmontools доступний в офіційних репозиторіях кожного основного дистрибутива Linux. Встановіть версію, відповідну для вашого середовища:
Debian / Ubuntu:
“`bash
sudo apt-get update && sudo apt-get install smartmontools
“`
CentOS / RHEL 7:
“`bash
sudo yum install smartmontools
“`
CentOS Stream / RHEL 8+ / AlmaLinux / Rocky Linux:
“`bash
sudo dnf install smartmontools
“`
Fedora:
“`bash
sudo dnf install smartmontools
“`
Arch Linux:
“`bash
sudo pacman -S smartmontools
“`
openSUSE:
“`bash
sudo zypper install smartmontools
“`
Після встановлення перевірте версію та підтвердьте наявність підтримки NVMe:
“`bash
smartctl –version
“`
Знайдіть `NVMe` у списку підтримуваних типів пристроїв. Версії до 6.6 мають неповну підтримку NVMe — на сучасних серверах з NVMe SSD переконайтеся, що ви використовуєте smartmontools 7.x або новішу версію.
Визначення пристроїв зберігання даних
Перед виконанням будь-якої команди smartctl визначте правильний вузол пристрою. Переплутати ідентифікатори пристроїв у багатодисковій системі — поширена та дорога помилка.
“`bash
lsblk -d -o NAME,SIZE,MODEL,TRAN
“`
Це виводить імена пристроїв разом із типом транспорту (sata, nvme, usb), що безпосередньо визначає, які прапорці smartctl вам знадобляться. Для NVMe-пристроїв вузол відображатиметься як `/dev/nvme0`, `/dev/nvme1` тощо — а не `/dev/sdX`.
Для апаратних RAID-контролерів (LSI MegaRAID, Adaptec, HP Smart Array) накопичувачі приховані за контролером і потребують явних прапорців наскрізного доступу, які розглядаються в розширеному розділі нижче.
Основні команди smartctl
Перегляд інформації про ідентифікацію пристрою
“`bash
sudo smartctl -i /dev/sda
“`
Це запитує сторінку IDENTIFY DATA пристрою та повертає номер моделі, серійний номер, версію прошивки, ємність, розмір сектора (512-байтний логічний проти 4096-байтного фізичного — важливо для вирівнювання) та прапорці можливостей S.M.A.R.T. Для NVMe-пристроїв:
“`bash
sudo smartctl -i /dev/nvme0
“`
Виконання повної оцінки стану
“`bash
sudo smartctl -H /dev/sda
“`
Повертає однорядковий вердикт: `PASSED` або `FAILED`. Результат `FAILED` означає, що власна прошивка накопичувача визначила, що один або кілька критичних порогів було перевищено. Накопичувач, що повідомляє FAILED, слід вважати несправним — не чекайте подальшого підтвердження.
Однак результат `PASSED` не означає, що накопичувач справний. Це лише означає, що жоден поріг формально не перевищено. Саме тому аналіз необроблених атрибутів є необхідним.
Відображення всіх атрибутів S.M.A.R.T.
“`bash
sudo smartctl -A /dev/sda
“`
Це найбільш інформативна команда в повсякденному використанні. Таблиця виводу містить кілька стовпців, які потребують точної інтерпретації:
| Стовпець | Значення |
|---|
| — | — |
|---|
| **ID#** | Ідентифікатор атрибута (залежить від виробника, але багато стандартизовано) |
|---|
| **ATTRIBUTE_NAME** | Зрозуміла людині назва |
|---|
| **FLAG** | Бітова маска, що вказує тип атрибута (передвідмовний або інформаційний) |
|---|
| **VALUE** | Нормалізоване значення (зазвичай 0–253); нижче — гірше для більшості атрибутів |
|---|
| **WORST** | Найнижче значення VALUE, зафіксоване за весь час роботи накопичувача |
|---|
| **THRESH** | Поріг, нижче якого накопичувач оголошує відмову |
|---|
| **TYPE** | Передвідмовний (критичний) або Old_age (інформаційний) |
|---|
| **RAW_VALUE** | Фактично виміряна величина в рідних одиницях |
|---|
RAW_VALUE — це те, що слід аналізувати насамперед. Нормалізована система VALUE/WORST/THRESH корисна для автоматичного виявлення порогів, але може вводити в оману — деякі виробники використовують нестандартні криві нормалізації.
Повний вивід: комбінування прапорців
Для повної картини в одній команді об’єднайте прапорці інформації, стану та атрибутів:
“`bash
sudo smartctl -a /dev/sda
“`
Прапорець у нижньому регістрі `-a` еквівалентний `-H -i -c -A -l error -l selftest`. Це стандартна команда для діагностики незнайомого накопичувача.
Для ще більш детального виводу, включаючи всі сторінки журналу:
“`bash
sudo smartctl -x /dev/sda
“`
Критичні атрибути S.M.A.R.T. та їх інтерпретація
Не всі атрибути S.M.A.R.T. мають однакову діагностичну вагу. Нижче наведено атрибути, які досвідчені інженери зі зберігання даних розглядають як основні індикатори відмови:
Індикатори відмови високого пріоритету
Reallocated_Sector_Ct (ID 5)
Кількість секторів, які накопичувач перемістив до резервної зони через помилки читання/запису/перевірки. Будь-яке ненульове значення на накопичувачі віком до двох років потребує негайної уваги. Постійно зростаюча кількість — навіть від 1 до 5 протягом місяця — є сильним предиктором неминучої відмови. На корпоративних накопичувачах невелика кількість може бути прийнятною залежно від специфікації виробника.
Current_Pending_Sector (ID 197)
Сектори, позначені як нестабільні та очікуючі на перерозподіл. Ці сектори виробляли помилки під час читання, але ще не були успішно перерозподілені. Ненульове значення тут означає, що накопичувач активно намагається прочитати дані. Якщо очікуючий сектор згодом успішно записується, він може бути перерозподілений або очищений — але базовий носій є підозрілим.
Uncorrectable_Sector_Count (ID 198) / Offline_Uncorrectable
Сектори, які не вдалося виправити за допомогою ECC та не вдалося перерозподілити. Це найсерйозніший атрибут. Ненульове значення тут означає, що дані вже були втрачені з цих секторів. Негайне резервне копіювання та заміна накопичувача — єдина відповідна реакція.
Reported_Uncorrect (ID 187)
На сучасних накопичувачах це підраховує помилки, які внутрішній ECC накопичувача не зміг виправити. Високі значення вказують на серйозну деградацію носія.
Spin_Retry_Count (ID 10)
Для HDD — повторні невдачі при розкручуванні пластин до робочої швидкості. Вказує на механічне навантаження на шпиндельний двигун або підшипники. Будь-яке ненульове значення на накопичувачі під великим навантаженням є тривожним сигналом.
Command_Timeout (ID 188)
Кількість команд, що перервалися через тайм-аут. Підвищені значення часто вказують на проблеми з інтерфейсом (кабель, контролер або подача живлення), а не на відмову носія — але вони також можуть передувати повній відмові накопичувача.
Атрибути вторинного моніторингу
Raw_Read_Error_Rate (ID 1)
Часто неправильно інтерпретується: на накопичувачах Seagate цей атрибут має дуже високе необроблене значення за задумом, оскільки він представляє відношення, закодоване в 48-бітному полі. Необроблене значення кількох мільйонів на накопичувачі Seagate є нормальним. На накопичувачах Western Digital та інших виробників необроблене значення має бути близьким до нуля. Завжди звіряйтеся з документацією виробника, перш ніж бити тривогу за цим атрибутом.
Power_On_Hours (ID 9)
Загальна кількість годин роботи. Споживчі HDD зазвичай розраховані на 20 000–25 000 годин (приблизно 2–3 роки безперервної роботи). Корпоративні накопичувачі розраховані на 55 000+ годин. Використовуйте це для контекстуалізації інших значень атрибутів.
Temperature_Celsius (ID 194)
Поточна температура накопичувача. Оптимальний діапазон робочих температур для більшості HDD становить 25–45°C. Тривала температура вище 55°C прискорює знос підшипників та деградацію магнітного носія. Для SSD теплова стійкість загалом вища, але тривала температура вище 70°C прискорить знос NAND. На серверах без належного повітряного потоку — поширена проблема в щільних стійкових розгортаннях — теплове дроселювання може маскуватися як затримка введення/виведення до того, як атрибут температури перетне будь-який формальний поріг.
Wear_Leveling_Count (ID 177) / Media_Wearout_Indicator (ID 233)
Атрибути, специфічні для SSD, що відстежують споживання ресурсу NAND. Коли нормалізоване значення VALUE наближається до значення THRESH, SSD наближається до свого номінального ресурсу запису. Плануйте заміну завчасно.
Power_Cycle_Count (ID 12)
Часте циклічне вмикання/вимикання живлення спричиняє механічне навантаження на HDD (паркування/розпаркування головок, навантаження на шпиндельний двигун) і, меншою мірою, електричне навантаження на SSD. Незвично висока кількість відносно Power_On_Hours може вказувати на нестабільне середовище живлення.
Виконання діагностичних самотестів
Самотести S.M.A.R.T. виконуються власною прошивкою накопичувача, а не операційною системою. Накопичувач продовжує обслуговувати введення/виведення під час тестування (з незначним впливом на продуктивність), що робить ці тести безпечними для запуску на виробничих системах.
Короткий самотест
“`bash
sudo smartctl -t short /dev/sda
“`
Тривалість: зазвичай 1–5 хвилин. Тестує електричні та механічні компоненти та невеликий відсоток поверхні диска. Корисний для швидкої перевірки. Перегляньте результати після завершення:
“`bash
sudo smartctl -l selftest /dev/sda
“`
Довгий самотест (розширений тест)
“`bash
sudo smartctl -t long /dev/sda
“`
Тривалість: пропорційна ємності накопичувача — очікуйте 1 годину на терабайт для типового HDD зі швидкістю 7200 RPM та 20–60 хвилин для більшості SSD. Виконує повне сканування поверхні кожного сектора. Це остаточний тест для виявлення поганих секторів по всій поверхні носія.
Відстежуйте прогрес без очікування завершення:
“`bash
sudo smartctl -c /dev/sda
“`
Вивід включає відсоток завершення та розрахунковий час закінчення.
Конвеєрний самотест
“`bash
sudo smartctl -t conveyance /dev/sda
“`
Доступний на більшості ATA-накопичувачів. Призначений для виявлення пошкоджень, отриманих під час транспортування або фізичного поводження. Перевіряє наявність проблем, спричинених механічним ударом. Тривалість зазвичай становить 5 хвилин. Цей тест недооцінений — він особливо цінний при введенні в експлуатацію нового обладнання або після фізичного переміщення сервера.
Вибірковий самотест
“`bash
sudo smartctl -t select,0-1000000 /dev/sda
“`
Дозволяє тестувати конкретний діапазон LBA, а не весь накопичувач. Незамінний, коли перевірки файлової системи виявили помилки в конкретній області, і вам потрібно підтвердити, чи відповідальний за це базовий носій.
Моніторинг стану NVMe
NVMe-накопичувачі використовують принципово іншу модель атрибутів. Основна команда перевірки стану:
“`bash
sudo smartctl -a /dev/nvme0
“`
Ключові поля, специфічні для NVMe, які слід відстежувати:
- Available Spare: Відсоток залишкових резервних блоків NAND. Нижче 10% потребує планування заміни.
- Available Spare Threshold: Визначений виробником поріг, нижче якого накопичувач може повідомляти про знижену надійність.
- Percentage Used: Розрахунковий відсоток використаного номінального ресурсу запису. При 100% накопичувач досяг свого номінального TBW (Terabytes Written) — він може продовжувати функціонувати, але гарантії надійності більше не діють.
- Data Units Read / Written: Сукупний обсяг введення/виведення в одиницях по 512 000 байт. Корисно для розрахунку фактичного навантаження порівняно з номінальним TBW.
- Media and Data Integrity Errors: Невиправлені помилки носія або помилки цілісності даних, виявлені контролером NVMe. Будь-яке ненульове значення є серйозним.
- Number of Error Information Log Entries: Кількість записів у журналі помилок. Швидко зростаюча кількість вказує на постійні проблеми.
- Power State: Поточний стан живлення NVMe — актуально для навантажень, чутливих до затримки, де накопичувач може перебувати в режимі глибокого енергозбереження.
Апаратний RAID та наскрізний доступ
Коли накопичувачі підключені через апаратний RAID-контролер, ОС бачить віртуальний диск контролера, а не фізичні накопичувачі. smartctl вимагає явного наскрізного доступу для безпосереднього звернення до прошивки накопичувача.
LSI MegaRAID:
“`bash
sudo smartctl -a /dev/sda -d megaraid,0
sudo smartctl -a /dev/sda -d megaraid,1
“`
HP Smart Array (драйвер hpsa):
“`bash
sudo smartctl -a /dev/sda -d cciss,0
“`
3ware RAID:
“`bash
sudo smartctl -a /dev/twa0 -d 3ware,0
“`
Якщо ви не впевнені, який тип наскрізного доступу використовувати, smartctl може спробувати автоматичне визначення:
“`bash
sudo smartctl –scan
“`
Це сканує всі виявлені пристрої зберігання та виводить рекомендований шлях до пристрою та прапорець типу для кожного.
Увімкнення та вимкнення S.M.A.R.T.
S.M.A.R.T. увімкнено за замовчуванням практично на всіх сучасних накопичувачах. У рідкісних випадках — зазвичай на старих накопичувачах або в певних віртуалізованих середовищах — він може бути вимкнений:
“`bash
sudo smartctl -s on /dev/sda
“`
Для вимкнення (не рекомендується, крім конкретних сценаріїв тестування):
“`bash
sudo smartctl -s off /dev/sda
“`
Примітка: у віртуалізованих середовищах, таких як KVM або VMware, наскрізна передача S.M.A.R.T. до гостьових VM залежить від конфігурації гіпервізора. У середовищі VPS Хостингу гіпервізор зазвичай абстрагує фізичний накопичувач, і smartctl всередині гостьової системи може повертати обмежені дані або не повертати їх взагалі. Для повного доступу до S.M.A.R.T. потрібен моніторинг на рівні фізичного хоста або Виділений Сервер.
Автоматизований моніторинг за допомогою smartd
Демон smartd є компонентом виробничого рівня пакета smartmontools. Він працює у фоновому режимі, періодично опитуючи накопичувачі та виконуючи заплановані тести, а потім сповіщаючи адміністраторів про перевищення порогів або виникнення помилок тестування.
Налаштування /etc/smartd.conf
Конфігурація за замовчуванням відстежує всі виявлені накопичувачі з базовими налаштуваннями. Конфігурація, загартована для виробничого середовища, виглядає так:
“`
Monitor all ATA/SCSI/NVMe drives with full attribute checking
Run short test every day at 02:00, long test every Saturday at 03:00
Email alert on any failure or attribute change
DEVICESCAN -a -o on -S on
-s (S/../.././02|L/../../6/03)
-m admin@yourdomain.com
-M exec /usr/share/smartmontools/smartd-runner
“`
Пояснення ключових директив:
| Директива | Функція |
|---|
| — | — |
|---|
| `DEVICESCAN` | Автоматичне виявлення всіх підтримуваних накопичувачів |
|---|
| `-a` | Увімкнути всі перевірки S.M.A.R.T. |
|---|
| `-o on` | Увімкнути автоматичний збір офлайн-даних |
|---|
| `-S on` | Увімкнути автозбереження атрибутів |
|---|
| `-s (S/../.././HH | L/../../D/HH)` | Планування коротких (S) та довгих (L) тестів |
|---|
| `-m email@domain` | Надсилати сповіщення електронною поштою на цю адресу |
|---|
| `-M exec script` | Виконати скрипт при сповіщенні (для власних сповіщень) |
|---|
| `-d removable` | Не генерувати помилку, якщо пристрій відсутній під час запуску |
|---|
Увімкнення та запуск smartd
“`bash
sudo systemctl enable smartd
sudo systemctl start smartd
sudo systemctl status smartd
“`
Перевірте, що демон активно здійснює моніторинг:
“`bash
sudo journalctl -u smartd -f
“`
Налаштування сповіщень електронною поштою
Для роботи сповіщень smartd електронною поштою система потребує працюючого MTA (агента передачі пошти). На мінімальних серверних інсталяціях встановіть та налаштуйте `postfix` або `msmtp` для ретрансляції. Якщо ви використовуєте виділену поштову інфраструктуру, розгляньте можливість поєднання сповіщень smartd з належно налаштованим сервісом Хостингу Електронної Пошти, щоб забезпечити доставку сповіщень без блокування спам-фільтрами.
Порівняння атрибутів S.M.A.R.T.: HDD проти SSD проти NVMe
| Категорія атрибута | HDD (SATA) | SSD (SATA) | NVMe SSD |
|---|
| — | — | — | — |
|---|
| **Основний індикатор відмови** | Reallocated_Sector_Ct (ID 5) | Reallocated_Sector_Ct (ID 5) | Media and Data Integrity Errors |
|---|
| **Відстеження ресурсу** | Power_On_Hours (ID 9) | Wear_Leveling_Count (ID 177) | Percentage Used |
|---|
| **Очікуючі погані сектори** | Current_Pending_Sector (ID 197) | Current_Pending_Sector (ID 197) | N/A (керується контролером) |
|---|
| **Тепловий моніторинг** | Temperature_Celsius (ID 194) | Temperature_Celsius (ID 194) | Temperature Sensor 1/2 |
|---|
| **Резервна ємність** | N/A | Available_Reservd_Space (ID 232) | Available Spare |
|---|
| **Ресурс запису** | N/A | Total_LBAs_Written (ID 241) | Data Units Written |
|---|
| **Механічний стан** | Spin_Retry_Count (ID 10) | N/A | N/A |
|---|
| **Підтримувані типи тестів** | Short, Long, Conveyance, Selective | Short, Long, Selective | Short, Long (залежить від виробника) |
|---|
| **Інтерфейс для доступу до даних** | ATA SMART READ DATA | ATA SMART READ DATA | NVMe Log Page 0x02 |
|---|
Практичний робочий процес: діагностика підозрілого накопичувача
Коли накопичувач виявляє симптоми — помилки введення/виведення в `dmesg`, пошкодження файлової системи, незвична затримка — дотримуйтесь цієї діагностичної послідовності:
Крок 1: Підтвердьте доступність S.M.A.R.T.
“`bash
sudo smartctl -i /dev/sda | grep -i "SMART support"
“`
Крок 2: Перевірте загальний вердикт стану
“`bash
sudo smartctl -H /dev/sda
“`
Крок 3: Перегляньте журнал помилок
“`bash
sudo smartctl -l error /dev/sda
“`
Журнал помилок записує останні 5 помилок ATA з мітками часу та адресами LBA. Зіставте адреси LBA з картами блоків файлової системи за допомогою `debugfs` або `xfs_db`, щоб визначити, чи впливають помилки на критичні структури файлової системи.
Крок 4: Проаналізуйте критичні атрибути
“`bash
sudo smartctl -A /dev/sda | grep -E "Reallocated|Pending|Uncorrectable|Command_Timeout"
“`
Крок 5: Запустіть короткий тест для негайного підтвердження
“`bash
sudo smartctl -t short /dev/sda
sleep 120
sudo smartctl -l selftest /dev/sda
“`
Крок 6: Якщо короткий тест пройдено, а симптоми зберігаються, запустіть довгий тест під час вікна технічного обслуговування
“`bash
sudo smartctl -t long /dev/sda
“`
Крок 7: Перегляньте журнал самотестування на наявність адрес LBA з помилками
“`bash
sudo smartctl -l selftest /dev/sda
“`
Невдалі тести повідомляють LBA першої виявленої помилки. Це точно визначає місце пошкодження носія.
Поширені помилки та граничні випадки
Накопичувачі, підключені через USB: smartctl часто не може зв’язатися з накопичувачами, підключеними через адаптери USB-to-SATA, оскільки мікросхема USB-моста не пересилає команди ATA. Використовуйте прапорець `-d sat` або `-d usb`, або явно вкажіть тип моста (наприклад, `-d usb,0x0bc2,0x2312`). Прапорець `–scan` спробує автоматично визначити правильний тип.
Віртуалізовані середовища: Всередині гостьової системи KVM або VMware `/dev/sda` є віртуальним диском. smartctl може повертати `Device does not support SMART` або синтезовані дані, передані гіпервізором. Не покладайтеся на вивід smartctl всередині гостьової системи для оцінки стану фізичного накопичувача на інфраструктурі спільного хостингу.
Хибні спрацьовування для Raw_Read_Error_Rate: Як зазначено вище, кодування цього атрибута Seagate призводить до тривожних необроблених значень, які є цілком нормальними. Завжди перевіряйте документацію виробника щодо атрибутів, перш ніж діяти на основі цього значення.
Накопичувачі за програмним RAID (mdadm): smartctl звертається безпосередньо до компонентних накопичувачів (`/dev/sda`, `/dev/sdb`), а не до пристрою RAID (`/dev/md0`). Відстежуйте кожен накопичувач-член окремо.
Простір імен NVMe проти контролера: Використовуйте `/dev/nvme0` (контролер) для даних про стан, а не `/dev/nvme0n1` (простір імен/блоковий пристрій). Деякі версії smartctl приймають обидва, але вузол контролера є авторитетним для доступу до журналу стану.
Накопичувачі, що «брешуть»: Деякі споживчі SSD, зокрема накопичувачі з NAND нижчого рівня QLC, задокументовано повідомляють про справні атрибути S.M.A.R.T. аж до повної та раптової відмови. S.M.A.R.T. є сильним індикатором, але не гарантією — він не замінює регулярне резервне копіювання.
Розгортання smartmontools у серверних середовищах
Для адміністраторів, які керують кількома фізичними серверами — наприклад, тими, що запускають навантаження на Виділених Серверах — централізація моніторингу S.M.A.R.T. є необхідною. Розгляньте таку архітектуру:
- Prometheus + node_exporter: `node_exporter` включає скрипт збирача текстових файлів `smartmon`, який експортує атрибути S.M.A.R.T. як метрики Prometheus. Це дозволяє налаштувати сповіщення через Alertmanager та візуалізацію на дашбордах Grafana.
- Nagios / Icinga2: Плагін `check_smart` забезпечує інтеграцію моніторингу S.M.A.R.T. для традиційних стеків моніторингу.
- Власні скрипти smartd: Директива `-M exec` у smartd.conf може запускати будь-який скрипт при сповіщенні — корисно для інтеграції з PagerDuty, вебхуками Slack або власними системами обробки заявок.
- Агрегація журналів: Налаштуйте smartd для запису в syslog, а потім пересилайте до централізованого агрегатора журналів (стек ELK, Loki) для аналізу історичних тенденцій по всьому парку.
Для середовищ веб-хостингу з використанням панелей керування розгортання VPS з cPanel виграють від моніторингу S.M.A.R.T. на рівні хоста, налаштованого постачальником інфраструктури, оскільки cPanel сам по собі не надає дані про стан накопичувача.
Контрольний список ключових висновків
Використовуйте це як довідник перед розгортанням та для поточної операційної діяльності:
- Встановіть smartmontools 7.x або новішу версію, щоб забезпечити повну підтримку NVMe та сучасних SSD
- Запустіть `smartctl –scan` на новому обладнанні для визначення всіх накопичувачів та необхідних прапорців інтерфейсу
- Спочатку перевірте вердикт стану `-H` — результат `FAILED` вимагає негайних дій незалежно від інших атрибутів
- Розглядайте будь-яке ненульове значення Reallocated_Sector_Ct, Current_Pending_Sector або Uncorrectable_Sector_Count як сигнал відмови — не чекайте зростання кількості
- Не покладайтеся виключно на Raw_Read_Error_Rate — перевіряйте документацію виробника перед тим, як бити тривогу
- Плануйте автоматизовані довгі тести щотижня через smartd для всіх виробничих накопичувачів; короткі тести — щодня
- Налаштуйте сповіщення smartd електронною поштою та перевірте доставку перед тим, як покладатися на них
- Для апаратного RAID завжди використовуйте відповідний прапорець наскрізного доступу — моніторинг віртуального диска не є еквівалентом моніторингу фізичних накопичувачів
- У віртуалізованих середовищах виконуйте моніторинг S.M.A.R.T. на рівні гіпервізора/хоста, а не всередині гостьових VM
- Поєднуйте моніторинг S.M.A.R.T. зі стратегією резервного копіювання — S.M.A.R.T. передбачає відмову, але не запобігає втраті даних
- Для NVMe-накопичувачів відстежуйте Available Spare та Percentage Used на додаток до кількості помилок
- На серверах з кількома накопичувачами інтегруйте smartd з централізованою платформою сповіщень, а не покладайтеся на локальну доставку електронної пошти
Часті запитання
Чи працює smartctl всередині VPS або хмарного екземпляра?
У більшості середовищ VPS гіпервізор надає гостьовій системі віртуальний блоковий пристрій. smartctl всередині гостьової системи або не поверне даних, або поверне дані, синтезовані гіпервізором, які не відображають фактичний стан фізичного накопичувача. Значущий моніторинг S.M.A.R.T. вимагає доступу до фізичного хоста. Для повної видимості на рівні накопичувача Виділений Сервер є відповідним рішенням.
У чому різниця між `smartctl -a` та `smartctl -x`?
Прапорець `-a` виводить стандартний набір даних S.M.A.R.T.: інформацію про пристрій, вердикт стану, прапорці можливостей, всі атрибути, журнал помилок та журнал самотестування. Прапорець `-x` виводить все, що надає `-a`, плюс додаткові сторінки журналу, включаючи журнал вибіркового самотестування, журнал статистики пристрою, журнал очікуваних дефектів та статистику пристрою ATA — надаючи більш повну картину історії накопичувача. Використовуйте `-x` для ретельної діагностики; `-a` — для рутинних перевірок.
Скільки часу займає довгий самотест і чи безпечно його запускати на виробничому накопичувачі?
Тривалість залежить від ємності та швидкості накопичувача: приблизно 1 година на терабайт для HDD зі швидкістю 7200 RPM та 20–60 хвилин для більшості SSD. Тест виконується у фоновому режимі прошивки накопичувача, і накопичувач продовжує обслуговувати введення/виведення під час тесту. Вплив на продуктивність зазвичай незначний (зниження пропускної здатності на 5–15%). Його безпечно запускати на виробничих системах у періоди низького трафіку, але для навантажень, чутливих до затримки, рекомендується планувати під час вікна технічного обслуговування.
Що означає, коли Current_Pending_Sector ненульовий, але Reallocated_Sector_Ct не збільшився?
Накопичувач виявив сектори, які виробляють помилки читання, але ще не перерозподілив їх успішно. Перерозподіл відбувається, коли накопичувач може записати в сектор — або через операцію запису, або через офлайн-сканування. Якщо кількість залишається незмінною, сектори можуть знаходитися в регіоні лише для читання, або накопичувач може не мати доступних резервних секторів для перерозподілу. Ненульова та зростаюча кількість Current_Pending_Sector при незмінному Reallocated_Sector_Ct часто вказує на те, що накопичувач вичерпав свій пул резервних секторів — критичний стан відмови.
Чи може smartctl виявити знос SSD до відмови накопичувача?
Так, для SATA SSD атрибути Wear_Leveling_Count (ID 177), Media_Wearout_Indicator (ID 233) та Available_Reservd_Space (ID 232) відстежують споживання ресурсу NAND. Для NVMe SSD поля Percentage Used та Available Spare в журналі інформації про стан NVMe слугують тій самій меті. Коли Available Spare опускається нижче свого порогу або Percentage Used досягає 100%, накопичувач вичерпав свій номінальний ресурс запису. На відміну від раптових механічних відмов, деградація зносу SSD є поступовою та добре передбачуваною — що робить її одним із найсильніших варіантів використання проактивного моніторингу S.M.A.R.T.
