На этой странице 6 разделов
В наших установках Linux используется программный RAID на mdadm: по умолчанию два одинаковых диска объединяются в зеркало (RAID 1). В этом руководстве описаны проверка состояния, оповещения, замена дисков и схемы массивов для серверов хранения. Вам понадобится root-доступ. В примерах используются имена NVMe-устройств вида nvme0n1; диски SATA и SAS отображаются как sda, sdb и т. д.
Разметка по умолчанию
Оба диска получают одинаковую таблицу разделов, и каждая пара разделов образует массив RAID 1, например md0 для /boot и md1 для /. Точный набор зависит от операционной системы и режима загрузки. Чтобы посмотреть свою разметку:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
Проверка состояния массива
cat /proc/mdstat
sudo mdadm --detail /dev/md1
md1 : active raid1 nvme1n1p3[1] nvme0n1p3[0]
998848512 blocks super 1.2 [2/2] [UU]
[UU] означает, что оба компонента массива активны; [U_] — что массив деградировал и работает на одном диске. В выводе mdadm --detail проверьте строку State и поищите компоненты с пометкой faulty или removed.
Настройка оповещений
Деградировавшее зеркало продолжает работать, поэтому без оповещений вы можете заметить проблему, только когда откажет второй диск. Укажите mdadm, куда отправлять уведомления, в /etc/mdadm/mdadm.conf (Debian, Ubuntu) или /etc/mdadm.conf (AlmaLinux, Rocky Linux):
MAILADDR root
PROGRAM /usr/local/sbin/raid-alert
Для оповещений на адрес root нужен работающий почтовый агент (MTA), например Postfix с локальной доставкой или пересылкой через вашего почтового провайдера. Необязательная строка PROGRAM запускает ваш скрипт, передавая ему в аргументах название события и имя устройства, — например, чтобы отправить сообщение в чат через вебхук. Перезапустите мониторинг и отправьте тестовое оповещение по каждому массиву:
sudo systemctl restart mdmonitor
sudo mdadm --monitor --scan --oneshot --test
Замена вышедшего из строя диска
- Определите вышедший из строя диск и запишите серийные номера обоих дисков:
cat /proc/mdstat lsblk -o NAME,SIZE,MODEL,SERIAL sudo smartctl -i /dev/nvme1n1 - Пометьте разделы отказавшего диска как сбойные (faulty) и удалите их из всех массивов. Пропустите этот шаг, если диск пропал из системы и mdadm уже показывает его как удалённый (removed).
sudo mdadm /dev/md0 --fail /dev/nvme1n1p2 --remove /dev/nvme1n1p2 sudo mdadm /dev/md1 --fail /dev/nvme1n1p3 --remove /dev/nvme1n1p3 - Откройте тикет в поддержку и укажите серийный номер диска, который нужно заменить, серийный номер диска, который нужно оставить, а также можно ли выключить сервер на время замены. Замена начинается в течение часа после подтверждения неисправности; см. SLA.
- После замены найдите новый пустой диск с помощью
lsblk. Скопируйте на него таблицу разделов исправного диска, а затем присвойте копии уникальные GUID:sudo sgdisk --replicate=/dev/nvme1n1 /dev/nvme0n1 sudo sgdisk --randomize-guids /dev/nvme1n1 - Добавьте новые разделы в массивы и следите за перестроением:
sudo mdadm /dev/md0 --add /dev/nvme1n1p2 sudo mdadm /dev/md1 --add /dev/nvme1n1p3 watch -n 10 cat /proc/mdstat - Сделайте новый диск загрузочным. В системах с BIOS выполните
sudo grub-install /dev/nvme1n1(в AlmaLinux и Rocky Linux —grub2-install). В системах с UEFI, где раздел EFI не входит в массив, скопируйте его с исправного диска командойsudo dd if=/dev/nvme0n1p1 of=/dev/nvme1n1p1 bs=4M.
В
sgdisk --replicate=TARGET SOURCEперезаписывается диск, указанный после знака равенства. Перепутаете их местами — и сотрёте таблицу разделов единственного исправного диска. Так же внимательно относитесь кif=(источник) иof=(приёмник) вdd.
По умолчанию перестроение идёт со скоростью примерно до 200 МБ/с — это ограничение задано в /proc/sys/dev/raid/speed_limit_max. Получается примерно 1,4 часа на терабайт и больше суток для диска на 22 ТБ. На сервере с NVMe ограничение можно поднять командой sudo sysctl -w dev.raid.speed_limit_max=2000000.
Схемы массивов для серверов хранения
Серверы хранения сочетают 4, 12 или 24 жёстких диска по 22 ТБ с двумя накопителями NVMe. Держите операционную систему на NVMe-зеркале, а массив для данных собирайте из жёстких дисков. Поскольку перестроение диска на 22 ТБ занимает больше суток, используйте двойную чётность (RAID 6 или ZFS RAIDZ2) или зеркала, но не RAID 5.
| Диски | Конфигурация | Полезный объём | Выдерживает |
|---|---|---|---|
| 4 × 22 ТБ | RAID 10 или два зеркала ZFS | 44 ТБ (40 ТиБ) | Один диск в каждой паре |
| 4 × 22 ТБ | RAID 6 или RAIDZ2 | 44 ТБ (40 ТиБ) | Любые два диска |
| 12 × 22 ТБ | RAID 6 или RAIDZ2 | 220 ТБ (200 ТиБ) | Любые два диска |
| 12 × 22 ТБ | RAID 10 | 132 ТБ (120 ТиБ) | Один диск в каждой паре |
| 24 × 22 ТБ | Две группы RAID 6 или RAIDZ2 по 12 дисков | 440 ТБ (400 ТиБ) | Два диска в каждой группе |
| 24 × 22 ТБ | Три группы RAIDZ2 по 8 дисков | 396 ТБ (360 ТиБ) | Два диска в каждой группе |
Объёмы указаны без учёта накладных расходов файловой системы, а такие утилиты, как df, показывают значения в ТиБ. RAID 10 даёт лучшую производительность случайного ввода-вывода, а RAID 6 и RAIDZ2 переживают отказ любых двух дисков и, начиная с 12 дисков, дают больше места. Больше групп меньшей ширины — это более быстрое перестроение и более высокая производительность ценой части ёмкости. Не заполняйте пулы ZFS больше чем примерно на 80%.
В ZFS свободные разделы на NVMe могут также ускорить пул; предусмотрите их при установке операционной системы:
- Устройство cache (L2ARC) расширяет кэш чтения за пределы ОЗУ. Избыточность ему не нужна: если оно откажет, пул продолжит работу.
- Vdev типа special хранит метаданные и, при желании, мелкие файлы на флеш-памяти, что ускоряет обход каталогов и работу с мелкими файлами. Его потеря означает потерю всего пула. При двух накопителях NVMe он может быть только зеркалом из двух устройств, которое переживает один отказ, тогда как RAIDZ2 — два, поэтому
zpoolотказывается принимать такое несоответствие, если не добавить-f. Используйте его, только если этот компромисс вас устраивает.
Проверка износа дисков и данных SMART
sudo smartctl -a /dev/nvme0
sudo smartctl -H -A /dev/sda
У накопителей NVMe следите за Percentage Used — долей израсходованного заявленного ресурса записи (100% не означает, что накопитель вышел из строя), а также за Available Spare, Media and Data Integrity Errors и Critical Warning, значение которого должно быть 0x00. На жёстких дисках рост значений Reallocated_Sector_Ct, Current_Pending_Sector или Offline_Uncorrectable означает, что диск нужно заменить до того, как он откажет. Демон smartd из пакета smartmontools постоянно проверяет эти значения и может присылать вам уведомления по электронной почте; в AlmaLinux и Rocky Linux включите его командой sudo systemctl enable --now smartd.



