Выбор надёжных дисков для серверов: статистика Backblaze и практика на 500 накопителях

Исходная ситуация

Хостинговая компания «РуХост» управляет 12 серверами с 500 дисками: 400 HDD для хранения данных клиентов и 100 SSD для баз данных и кэшей. Ежегодно из строя выходили 30-40 дисков, и каждый отказ — это потенциальная потеря данных клиентов, даунтайм и расходы на замену.

Руководство поставило задачу: снизить количество отказов, научиться предсказывать выход диска из строя и оптимизировать затраты на замену. Мы начали с анализа статистики Backblaze — компании, которая эксплуатирует более 250 000 дисков и публикует данные о надёжности.

Статистика Backblaze: кто надёжнее

Backblaze публикует ежеквартальные отчёты по отказам дисков. На основе данных за 4 года эксплуатации 27 134 дисков картина следующая:

ПроизводительКол-во дисковГодовой % отказов (AFR)Некритичные сбои
HGST (Hitachi)~13 0001.0-1.5%0.01%
Western Digital~2 8003.0-3.5%0.17%
Seagate~12 5003.5-13.5%0.28%

Важные нюансы по моделям:

МодельОбъёмAFRКомментарий
HGST Deskstar 5K30003 ТБ0.9%Лучший результат в парке
HGST Deskstar 7K20002 ТБ1.1%Стабильно надёжен
WD Red3 ТБ3.2%Приемлемо для NAS
Seagate Barracuda 72003 ТБ9.8%Каждый 10-й за год
Seagate Barracuda 72001.5 ТБ25.4%Худшая модель в тесте

Ключевой вывод: HGST (ныне — часть Western Digital) показывает AFR в 3-10 раз ниже конкурентов. Однако с 2019 года HGST как бренд не существует — диски выпускаются под маркой WD Ultrastar, сохраняя качество HGST.

Для «РуХост» мы рекомендовали WD Ultrastar (наследники HGST) для нового оборудования и постепенную замену Seagate Barracuda, у которых AFR превышал 8%.

SMART-мониторинг: предсказываем отказы

SMART (Self-Monitoring, Analysis and Reporting Technology) — встроенная система диагностики дисков. Не все параметры одинаково полезны. По данным Google Research и Backblaze, пять атрибутов SMART коррелируют с отказом диска:

# Установка инструментов
apt install smartmontools

# Включаем мониторинг на всех дисках
for disk in /dev/sd[a-z]; do
    smartctl -s on "$disk"
done

# Проверка конкретного диска
smartctl -A /dev/sda

Критические атрибуты SMART:

IDАтрибутПорог тревогиЧто означает
5Reallocated Sectors Count> 0Бэд-блоки, переназначенные в резерв
187Reported Uncorrectable Errors> 0Ошибки чтения, не исправленные ECC
188Command Timeout> 0Диск не ответил вовремя
197Current Pending Sector Count> 0Секторы, ожидающие переназначения
198Offline Uncorrectable> 0Неисправимые ошибки при offline-тесте
# Скрипт мониторинга /opt/monitoring/smart-check.sh
#!/bin/bash
set -euo pipefail

ALERT_ATTRS=(5 187 188 197 198)

for disk in /dev/sd[a-z]; do
    [ -b "$disk" ] || continue
    SERIAL=$(smartctl -i "$disk" | grep -i serial | awk '{print $NF}')
    MODEL=$(smartctl -i "$disk" | grep -i "Device Model" | sed 's/.*: *//')

    for attr_id in "${ALERT_ATTRS[@]}"; do
        RAW=$(smartctl -A "$disk" | awk -v id="$attr_id" '$1 == id {print $10}')
        if [ -n "$RAW" ] && [ "$RAW" -gt 0 ] 2>/dev/null; then
            MSG="ДИСК $disk ($MODEL, S/N: $SERIAL): SMART ID $attr_id = $RAW"
            echo "$MSG"
            curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
                -d chat_id="${TG_CHAT}" \
                -d text="⚠ SMART: $MSG"
        fi
    done
done

# Запуск каждые 6 часов
# 0 */6 * * * root /opt/monitoring/smart-check.sh >> /var/log/smart-check.log 2>&1

По данным Backblaze, если хотя бы один из пяти атрибутов отличен от нуля, вероятность отказа диска в ближайшие 60 дней составляет 37%. Если два и более — 76%.

Здоровье RAID-массивов с mdadm

«РуХост» использует программный RAID на mdadm. Мониторинг состояния массивов — вторая линия обороны после SMART:

# Статус всех массивов
cat /proc/mdstat

# Детальная информация
mdadm --detail /dev/md0

# Скрипт мониторинга RAID
#!/bin/bash
# /opt/monitoring/raid-check.sh

for md in /dev/md*; do
    [ -b "$md" ] || continue
    STATE=$(mdadm --detail "$md" | grep 'State :' | awk -F: '{print $2}' | xargs)
    DEGRADED=$(mdadm --detail "$md" | grep -c 'removed\|faulty')
    REBUILD=$(mdadm --detail "$md" | grep 'Rebuild Status' | awk '{print $NF}')

    if [ "$STATE" != "clean" ] && [ "$STATE" != "active" ]; then
        curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
            -d chat_id="${TG_CHAT}" \
            -d text="RAID $md: состояние '$STATE', degraded: $DEGRADED"
    fi

    if [ -n "$REBUILD" ]; then
        echo "RAID $md: ребилд $REBUILD"
    fi
done

# Замена диска в RAID
# 1. Помечаем сбойный диск как faulty
mdadm --manage /dev/md0 --fail /dev/sdc1

# 2. Удаляем из массива
mdadm --manage /dev/md0 --remove /dev/sdc1

# 3. Физически заменяем диск, затем добавляем новый
mdadm --manage /dev/md0 --add /dev/sdc1

# 4. Следим за ребилдом
watch cat /proc/mdstat

Стратегия RAID для разных задач:

ЗадачаRAIDМинимум дисковДопустимые отказыПотеря ёмкости
ОС и логиRAID 12150%
Данные клиентовRAID 6422 диска
Временные файлы/кэшRAID 0200%
Критичные БДRAID 1041 в каждой паре50%

Стратегия замены дисков

Мы внедрили проактивную стратегию замены вместо реактивной (ждать, пока сломается):

Уровень 1 — Немедленная замена (в течение 24 часов):

  • Любой SMART-атрибут из критической пятёрки > 0
  • Диск выпал из RAID
  • Количество переназначенных секторов растёт

Уровень 2 — Плановая замена (в течение 30 дней):

  • Диск старше 4 лет (AFR резко растёт после 3 лет)
  • Модель из списка ненадёжных (Seagate Barracuda 1.5 ТБ)
  • Температура стабильно > 45°C

Уровень 3 — Профилактическая замена (при обновлении):

  • Диск старше 5 лет — заменяем при любом обновлении сервера
  • Переход на более ёмкие модели для консолидации
# Возраст дисков в парке
for disk in /dev/sd[a-z]; do
    [ -b "$disk" ] || continue
    HOURS=$(smartctl -A "$disk" | awk '$1 == 9 {print $10}')
    YEARS=$(echo "scale=1; $HOURS / 8760" | bc)
    MODEL=$(smartctl -i "$disk" | grep 'Device Model' | sed 's/.*: *//')
    echo "$disk: $MODEL — $YEARS лет ($HOURS часов)"
done

После внедрения проактивной замены количество аварийных отказов снизилось с 35 в год до 4. Плановые замены — 20 дисков в год, но они происходят без даунтайма и потери данных.

NVMe vs SSD vs HDD: выбор для разных задач

Универсального решения нет — каждый тип накопителя оптимален для своей задачи:

ХарактеристикаNVMeSATA SSDHDD (7200)
Последовательное чтение3 500 МБ/с550 МБ/с200 МБ/с
Случайное чтение (IOPS)500 00090 000150
Латентность0.02 мс0.1 мс4-8 мс
Цена за 1 ТБ6 000 руб5 000 руб2 500 руб
Ресурс записи (TBW/ТБ)600300Неограничен
Энергопотребление7-10 Вт2-4 Вт6-10 Вт

Рекомендации для хостинга:

  • NVMe — базы данных (PostgreSQL, MySQL), кэши (Redis), корневая ФС. Там, где IOPS критичен.
  • SATA SSD — логи, средненагруженные базы, контейнерные образы. Хороший баланс цены и скорости.
  • HDD — бэкапы, архивы, файловые хранилища. Там, где важен объём за деньги.

Для «РуХост» мы предложили гибридную архитектуру: NVMe для горячих данных, HDD RAID 6 для холодных, SSD как промежуточный кэш через dm-cache:

# Настройка dm-cache: SSD-кэш перед HDD-массивом
# SSD /dev/sda (кэш) + HDD /dev/md1 (хранилище)

# Создаём метаданные кэша (1 ГБ на SSD)
lvcreate -L 1G -n cache_meta vg_cache /dev/sda

# Создаём кэш-данные (100 ГБ на SSD)
lvcreate -L 100G -n cache_data vg_cache /dev/sda

# Привязываем кэш к HDD LV
lvconvert --type cache \
    --cachemeta vg_cache/cache_meta \
    --cachedata vg_cache/cache_data \
    --cachemode writeback \
    vg_storage/data

Расчёт TCO и результаты

Total Cost of Ownership (TCO) для дисковой подсистемы «РуХост» за 5 лет:

Статья расходовДо оптимизацииПосле
Покупка дисков (500 шт)2 800 000 руб3 200 000 руб
Замена вышедших из строя (5 лет)1 750 000 руб280 000 руб
Даунтайм и потеря данных1 200 000 руб80 000 руб
Электричество (5 лет)900 000 руб720 000 руб
Итого TCO6 650 000 руб4 280 000 руб

Первоначальные затраты на диски выросли на 400 000 рублей (WD Ultrastar дороже Seagate Barracuda), но за 5 лет экономия составила 2 370 000 рублей — 36% от исходного TCO.

Ключевые метрики после оптимизации:

  • Аварийные отказы: 35/год → 4/год
  • Средний AFR парка: 7.2% → 1.8%
  • MTBF (среднее время между отказами): 14 000 часов → 56 000 часов
  • Время обнаружения проблемного диска: 2-14 дней → 6 часов
  • Инциденты с потерей данных: 3 за 2 года → 0

Часто задаваемые вопросы

По данным Backblaze (27 000+ дисков, 4 года), HGST показывает AFR 1-1.5%, WD — 3-3.5%, Seagate — от 3.5% до 25% в зависимости от модели. HGST ныне выпускается как WD Ultrastar и сохраняет лидерство по надёжности в серверном сегменте.
Пять критических атрибутов: Reallocated Sectors Count (ID 5), Reported Uncorrectable Errors (187), Command Timeout (188), Current Pending Sector Count (197), Offline Uncorrectable (198). Если хотя бы один из них отличен от нуля — диск следует заменить в течение 60 дней.
После 4 лет эксплуатации AFR резко возрастает. Рекомендуем плановую замену дисков старше 4 лет, дисков из списка ненадёжных моделей и дисков с температурой стабильно выше 45 градусов. Профилактическая замена в 5-10 раз дешевле аварийной.
Для баз данных с высоким IOPS (PostgreSQL, MySQL) — однозначно NVMe: 500K IOPS и 0.02 мс латентность против 90K IOPS и 0.1 мс у SATA SSD. Для баз с умеренной нагрузкой (до 5K IOPS) SATA SSD достаточен и дешевле. HDD для баз данных не рекомендуем — 150 IOPS неприемлемо.
RAID 6 — оптимальный выбор: выдерживает одновременный отказ двух дисков. RAID 5 рискован для дисков > 2 ТБ, так как вероятность URE при ребилде на больших дисках достигает 5%. RAID 10 даёт лучшую производительность, но тратит 50% ёмкости. Для критичных БД — RAID 10, для хранилищ — RAID 6.

Нужна помощь с проектом?

Специалисты АйТи Фреш помогут с архитектурой, DevOps, безопасностью и разработкой — 15+ лет опыта

📞 Связаться с нами
#hdd reliability#backblaze statistics#HGST#seagate#western digital#SMART monitoring#mdadm RAID#disk replacement
Комментарии 0

Оставить комментарий

загрузка...