Перейти к основному содержимому
Вернуться в категорию

Настройка RAID и мониторинг здоровья дисков: руководство по smartctl

Обзор уровней RAID (0/1/5/10), программный RAID с mdadm, проверка здоровья дисков с smartctl, мониторинг с smartd и интерпретация данных SMART.

Время чтения: 14 мин Управление сервером
raidmdadmsmartctlздоровье дискаsmartпрограммный raidlinux

Содержание

Настройка RAID и мониторинг здоровья дисков: руководство по smartctl

Отказы дисков неизбежны в серверных средах. Технология RAID (Redundant Array of Independent Disks) объединяет несколько дисков для повышения безопасности данных и/или производительности. В этом руководстве рассматриваются уровни RAID, настройка программного RAID в Linux и мониторинг здоровья дисков с помощью smartctl.

Уровни RAID

RAID 0 — Чередование (Striping)

Данные равномерно распределяются по дискам.

  • Минимум дисков: 2
  • Ёмкость: Сумма всех дисков
  • Производительность: Высокая скорость чтения/записи
  • Надёжность: Нулевая — при отказе одного диска все данные теряются
  • Применение: Временные данные, высокопроизводительные приложения

RAID 1 — Зеркалирование (Mirroring)

Данные записываются на все диски одновременно.

  • Минимум дисков: 2
  • Ёмкость: Ёмкость наименьшего диска
  • Производительность: Скорость чтения растёт, скорость записи не изменяется
  • Надёжность: Высокая — при отказе одного диска другой продолжает работу
  • Применение: Диски ОС, критические данные

RAID 5 — Распределённый паритет

Данные и информация о чётности распределяются по всем дискам.

  • Минимум дисков: 3
  • Ёмкость: (N-1) × ёмкость диска
  • Производительность: Хорошее чтение, умеренная запись
  • Надёжность: Выдерживает отказ 1 диска
  • Применение: Файловые серверы, хранилища общего назначения

RAID 10 — Зеркалирование + Чередование

Комбинация RAID 1 и RAID 0.

  • Минимум дисков: 4
  • Ёмкость: Половина общей ёмкости
  • Производительность: Очень высокая
  • Надёжность: Выдерживает отказ 1 диска в каждой паре
  • Применение: Базы данных, высокая производительность + надёжность

Таблица сравнения RAID

ХарактеристикаRAID 0RAID 1RAID 5RAID 10
Мин. дисков2234
Ёмкость100%50%(N-1)/N%50%
Скорость чтенияОчень высокаяВысокаяВысокаяОчень высокая
Скорость записиОчень высокаяНормальнаяУмереннаяВысокая
Отказоустойчивость0 дисков1 диск1 диск1/пара
Безопасность данныхНетВысокаяВысокаяОчень высокая

Физические серверы REXE могут иметь аппаратный RAID-контроллер. Программный RAID управляется ядром Linux как альтернатива аппаратному RAID.

Настройка программного RAID с mdadm

Установка mdadm

hljs bash
# Ubuntu/Debian
sudo apt update
sudo apt install mdadm -y

# CentOS/AlmaLinux
sudo dnf install mdadm -y

Подготовка дисков

hljs bash
# Список существующих дисков
lsblk
fdisk -l

# Просмотр информации о диске
sudo fdisk -l /dev/sdb
sudo fdisk -l /dev/sdc

# Очистить существующие RAID-сигнатуры
sudo mdadm --zero-superblock /dev/sdb
sudo mdadm --zero-superblock /dev/sdc

Создание RAID 1

hljs bash
# Создать массив RAID 1
sudo mdadm --create /dev/md0 \
  --level=1 \
  --raid-devices=2 \
  /dev/sdb /dev/sdc

# Подтвердить создание (введите yes)
# Мониторинг статуса RAID
watch cat /proc/mdstat

# Проверить статус завершения
cat /proc/mdstat

Создание RAID 5

hljs bash
# Создать массив RAID 5 (3 диска)
sudo mdadm --create /dev/md0 \
  --level=5 \
  --raid-devices=3 \
  /dev/sdb /dev/sdc /dev/sdd

# Добавить горячий резервный диск
sudo mdadm --create /dev/md0 \
  --level=5 \
  --raid-devices=3 \
  --spare-devices=1 \
  /dev/sdb /dev/sdc /dev/sdd /dev/sde

Сохранение конфигурации RAID

hljs bash
# Обновить mdadm.conf
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

# Обновить initramfs
sudo update-initramfs -u

# Просмотр статуса RAID
sudo mdadm --detail /dev/md0

Создание файловой системы на RAID

hljs bash
# Создать файловую систему ext4
sudo mkfs.ext4 /dev/md0

# Создать точку монтирования
sudo mkdir /mnt/raid

# Смонтировать
sudo mount /dev/md0 /mnt/raid

# Добавить в /etc/fstab для постоянного монтирования
echo '/dev/md0 /mnt/raid ext4 defaults 0 0' | sudo tee -a /etc/fstab

Управление RAID

hljs bash
# Просмотр статуса RAID
sudo mdadm --detail /dev/md0

# Список всех массивов RAID
cat /proc/mdstat

# Пометить диск как неисправный
sudo mdadm /dev/md0 --fail /dev/sdb

# Удалить неисправный диск
sudo mdadm /dev/md0 --remove /dev/sdb

# Добавить новый диск
sudo mdadm /dev/md0 --add /dev/sdb

Проверка здоровья дисков с smartctl

smartctl считывает данные S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) с дисков.

Установка smartmontools

hljs bash
# Ubuntu/Debian
sudo apt install smartmontools -y

# CentOS/AlmaLinux
sudo dnf install smartmontools -y

Основные команды smartctl

hljs bash
# Просмотр информации о диске
sudo smartctl -i /dev/sda

# Проверка статуса SMART
sudo smartctl -H /dev/sda
# Вывод: SMART overall-health self-assessment test result: PASSED

# Просмотр всех данных SMART
sudo smartctl -a /dev/sda

Запуск тестов SMART

hljs bash
# Короткий тест (1-2 минуты)
sudo smartctl -t short /dev/sda

# Длинный тест (несколько часов)
sudo smartctl -t long /dev/sda

# Просмотр результатов теста
sudo smartctl -l selftest /dev/sda

Интерпретация данных SMART

Важные атрибуты SMART:

IDАтрибутОписаниеКритическое значение
1Raw_Read_Error_RateЧастота ошибок чтенияДолжно быть 0
5Reallocated_Sector_CtКоличество переназначенных секторовДолжно быть 0
9Power_On_HoursОбщее время работыИнформационный
187Reported_UncorrectНеисправимые ошибкиДолжно быть 0
197Current_Pending_SectorОжидающие секторыДолжно быть 0
198Offline_UncorrectableОфлайн неисправимыеДолжно быть 0

Если значения ID 5 (Reallocated_Sector_Ct), 197 (Current_Pending_Sector) или 198 (Offline_Uncorrectable) больше 0, диск может быть близок к отказу. Немедленно создайте резервную копию данных!

Проверка NVMe-дисков

hljs bash
# Информация о NVMe-диске
sudo smartctl -i /dev/nvme0

# Данные SMART для NVMe
sudo smartctl -a /dev/nvme0

# Статус здоровья NVMe
sudo smartctl -H /dev/nvme0

Автоматический мониторинг с smartd

smartd работает в фоне, непрерывно отслеживая здоровье дисков и отправляя уведомления при обнаружении проблем.

Настройка smartd

hljs bash
# Редактировать файл конфигурации
sudo nano /etc/smartd.conf
# Мониторинг всех дисков, отправка email при проблемах
DEFAULTS -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -m admin@rexe.tr

# Мониторинг конкретных дисков
/dev/sda -a -o on -S on -m admin@rexe.tr
/dev/sdb -a -o on -S on -m admin@rexe.tr

# Автоматическое обнаружение всех дисков
DEVICESCAN -a -o on -S on -m admin@rexe.tr
hljs bash
# Включить службу smartd
sudo systemctl enable --now smartd

# Проверить статус
sudo systemctl status smartd

Команды мониторинга здоровья дисков

hljs bash
# Быстрая проверка здоровья всех дисков
for disk in /dev/sd[a-z]; do
  echo "=== $disk ==="
  sudo smartctl -H $disk 2>/dev/null | grep -E "PASSED|FAILED|result"
done

# Проверить температуру диска
sudo smartctl -A /dev/sda | grep -i temperature

# Проверить время работы диска
sudo smartctl -A /dev/sda | grep Power_On_Hours

# Просмотр журналов ошибок
sudo smartctl -l error /dev/sda

Интеграция RAID + SMART

hljs bash
# Проверить статус SMART дисков в массиве RAID
sudo mdadm --detail /dev/md0 | grep -E "State|Active|Failed"

# Проверить здоровье каждого диска в RAID
for disk in /dev/sdb /dev/sdc /dev/sdd; do
  echo "=== $disk ==="
  sudo smartctl -H $disk
done

# Настроить email-уведомления RAID
sudo nano /etc/mdadm/mdadm.conf
# Добавить строку: MAILADDR admin@rexe.tr

Используйте RAID и мониторинг SMART вместе. SMART заблаговременно предсказывает отказ диска, а RAID предотвращает потерю данных при отказе. Вместе они образуют комплексную стратегию безопасности дисков.

Заключение

RAID и мониторинг здоровья дисков — фундаментальные компоненты безопасности данных на серверах REXE. RAID 1 или RAID 10 обеспечивает высокую надёжность для критических данных, а smartctl и smartd позволяют обнаруживать отказы дисков до их возникновения. Регулярные тесты SMART и проверки статуса RAID — наиболее эффективный способ предотвратить неожиданную потерю данных.