Диски в Linux

Поддержание и анализ Здоровья дисков в сервере - основа стабильной работы системы. Как отследить начало проблемы?

Общая информации о дисках и разделах

Просмотр общей информации о дисках и разделах. Состояние файловых систем и свободное место

  • lsblk — показывает иерархию блочных устройств (диски, разделы, RAID, LVM) с размерами и точками монтирования.
  • fdisk -l— детальная информация о таблицах разделов.
  • df -h — использование дискового пространства по всем смонтированным файловым системам (в человекочитаемом виде).
  • df -i— использование inode (если иноды закончатся, запись станет невозможна даже при свободном месте).

Наша задача следить, чтобы заполнение дисков не превышало 80–85 % (для системных разделов — ещё строже), а процент использованных inode — не превышал 90 %. Напишем скрипт ежедневной автоматической проверки дисков и отправим к себе на почту результат мониторинга

Проверка целостности файловых систем

Перед запуском fsck необходимо размонтировать проверяемый раздел (кроме корневого — его проверяют в режиме восстановления или при загрузке).

sudo umount /dev/sdX1
sudo fsck -y /dev/sdX1
Флаг -y автоматически соглашается на исправление ошибок. Для корневой ФС проверка выполняется либо через shutdown -rF now (в некоторых системах), либо в однопользовательском режиме, либо с помощью fsck -n (без исправлений, только просмотр). fsck проверяет логическую структуру ФС, а не физическое состояние диска.

Проверка физического состояния дисков (S.M.A.R.T.)

Установка smartmontools. S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) — встроенная система диагностики накопителей.

sudo apt install smartmontools
sudo yum install smartmontools

Посмотреть SMART атрибуты

sudo smartctl -a /dev/sda

Ключевые параметры, на которые нужно обратить внимание:

  1. Reallocated_Sector_Ct — количество переназначенных секторов. Если растёт — диск деградирует.
  2. Current_Pending_Sector — сектора, ожидающие переназначения. Любое ненулевое значение — повод для беспокойства.
  3. Uncorrectable_Sector_Ct — сектора, которые не удалось восстановить.
  4. Raw_Read_Error_Rate — частота ошибок чтения (для некоторых производителей интерпретируется по-своему).
  5. Temperature_Celsius — температура (обычно выше 50°C уже критично).

Запуск тестов S.M.A.R.T.

Краткий самотест (проверяет несколько минут):

sudo smartctl -t short /dev/sda

Долгий самотест (может занять часы):

sudo smartctl -t long /dev/sda

Мониторинг производительности дисков

iostat (из пакета sysstat)

sudo iostat -x 1 5 # расширенная статистика, 5 раз с интервалом 1 сек

ОбратитЬ внимание на:

%util — загрузка устройства (близко к 100% — узкое место). await — среднее время выполнения запроса (если > 20 мс для HDD или > 5 мс для SSD — возможны проблемы). svctm — среднее время обслуживания (в современных дисках может быть неточным).

iotop - показывает, какие процессы активно читают/пишут диск:

sudo iotop -o

dstat - универсальный инструмент для сбора статистики:

dstat -d -r -t 5
Анализ системных журналов на наличие ошибок диска
sudo dmesg | grep -i "error\|fail\|sda\|sdb" | tail -50
sudo journalctl -k -f | grep -i "ata\|scsi\|sd"

Также просмотрите /var/log/syslog, /var/log/messages на предмет сообщений о сбоях, тайм-аутах, сбросе канала.

Дополнительные утилиты

badblocks — проверка поверхности диска на битые блоки (работает низкоуровнево, опасна для работающей ФС!):