Гайд: Траблшутинг ошибок дискового I/O: диагностика SMART с помощью smartctl и badblocks
Природа аппаратных и логических ошибок накопителей в Linux
Ошибки дискового ввода-вывода (I/O Errors) возникают из-за деградации магнитных пластин HDD, износа ячеек памяти NAND Flash (SSD/NVMe), сбоев контроллера или дефектов кабелей SATA/SAS. В системном журнале ядра dmesg такие сбои проявляются критическими сообщениями:
blk_update_request: I/O error, dev sda, sector ...Buffer I/O error on dev sda1, logical block ...ata1.00: status: { DRDY ERR } / error: { UNC } (Uncorrectable error)nvme0n1: Read(0x2) I/O Cmd SubOp(0x0) failed on slba ... status: 0x281
Бизнес-риски
Безвозвратная потеря пользовательских данных, разрушение файловых систем, аварийный переход корневой файловой системы в режим Read-Only.
Ключевые критические SMART-атрибуты (HDD/SATA SSD)
| ID | Имя атрибута | Критичность | Что означает ненулевое значение RAW |
|---|---|---|---|
| 5 | Reallocated_Sector_Ct | Критический | Количество переназначенных поврежденных секторов в резервную область. |
| 187 | Reported_Uncorrect | Критический | Количество ошибок чтения, которые не удалось исправить встроенным аппаратным ECC. |
| 197 | Current_Pending_Sector | Критический | Нестабильные секторы («бэды»), ожидающие переназначения при следующей записи. |
| 199 | UDMA_CRC_Error_Count | Средний | Ошибки передачи данных по шине (обычно поврежден или плохо вставлен SATA-кабель). |
Регламент комплексной диагностики накопителей
Сценарий 1: Проверка состояния SMART через smartctl
Установите пакет утилит управления SMART:
sudo apt install -y smartmontools # Для Debian / Ubuntu
sudo dnf install -y smartmontools # Для RHEL / Rocky Linux
# 1. Проверка базового статуса здоровья накопителя (PASSED / FAILED):
sudo smartctl -H /dev/sda
# 2. Вывод полной таблицы атрибутов SMART для SATA/SAS диска:
sudo smartctl -A /dev/sda
# 3. Вывод расширенного журнала здоровья для NVMe диска:
sudo smartctl -a /dev/nvme0n1
# Обратите внимание на строки: 'Critical Warning', 'Available Spare' и 'Percentage Used'Сценарий 2: Запуск аппаратных тестов SMART (Self-Test)
# 1. Запуск быстрого фонового теста (1–2 минуты):
sudo smartctl -t short /dev/sda
# 2. Запуск полного глубокого сканирования поверхности диска (может занять несколько часов):
sudo smartctl -t long /dev/sda
# 3. Просмотр результатов прохождения тестов:
sudo smartctl -l selftest /dev/sdaСценарий 3: Поиск сбойных блоков утилитой badblocks
Внимание: для работающих дисков с данными используйте ТОЛЬКО безопасный режим чтения (Read-Only)! Режим записи (-w) уничтожит все данные!
# 1. Безопасное неразрушающее сканирование накопителя на чтение:
sudo badblocks -sv -b 4096 /dev/sda
# 2. Сохранение списка битых секторов в файл для последующей изоляции файловой системой:
sudo badblocks -v /dev/sda > /tmp/badsectors.txtСценарий 4: Диагностика дисков за аппаратными RAID-контроллерами (MegaRAID / HP Smart Array)
Если накопители скрыты за контроллером и не видны как прямые блочные устройства /dev/sdX:
# Опрос диска 0 за контроллером LSI / Broadcom MegaRAID:
sudo smartctl -d megaraid,0 -a /dev/sda
sudo smartctl -d megaraid,1 -a /dev/sda
# Опрос диска за контроллером HP Smart Array (cciss):
sudo smartctl -d cciss,0 -a /dev/sdaТиповые ошибки администраторов
- Эксплуатация диска с растущим параметром Pending Sectors: Если атрибуты 5 или 197 увеличиваются с каждым днем — диск находится в процессе необратимой физической деградации и подлежит немедленной замене.
- Запуск badblocks -w на рабочем разделе: Параметр
-wвыполняет destructive write-тест с перезаписью паттернов 0xaa/0x55, полностью стирая разметку разделов и файлы.
Специалисты ITSTM снимут посекторный образ диска через ddrescue, произведут замену неисправных накопителей и восстановят целостность RAID.
Частые вопросы (FAQ)
Что делать, если smartctl показывает Available Spare меньше 10% на NVMe?
Available Spare указывает на остаток резервных ячеек памяти. Падение ниже порогового значения означает скорый переход NVMe накопителя в аварийный режим Read-Only. Требуется срочная замена.
Можно ли исправить Pending Sectors программно?
Если сектор поврежден логически, принудительная запись нулей (например, dd if=/dev/zero of=/dev/sdX ...) заставит диск пересчитать контрольную сумму либо переназначить сбойный сектор в резерв (Reallocated Sector).
Как включить постоянный автоматический мониторинг SMART-демоном?
Включите службу smartd: sudo systemctl enable --now smartd. Демон будет слать email-оповещения при появлении любых ошибок.
В чем разница между UNC и CRC ошибками в логах?
UNC (Uncorrectable) — физическая нечитаемость ячейки/сектора на пластине диска. CRC — ошибка контрольной суммы при передаче сигнала по кабелю от материнской платы к диску.