MAATRIX / Блог / Выделенные серверы / Два NVMe в NECROPOLIS: как настроить RAID 1 и не потерять данные

Два NVMe в NECROPOLIS: как настроить RAID 1 и не потерять данные

MAATRIX · Выделенные серверы · Статья 27 из 48

У NECROPOLIS в карточке указаны два накопителя по 1 ТБ. Эта строка полезна не только тем, кто мечтает сложить два терабайта в одну большую папку. Два диска позволяют создать зеркало RAID 1: одинаковые данные будут храниться на обоих, и отказ одного накопителя не обязательно прервёт работу массива.

Но между надписью «2 × 1 ТБ NVMe» и готовой защитой лежит настройка. Нужно выбрать разметку, обеспечить загрузку, проверить состояние и наладить уведомления. Разберём два пути: зеркало при установке Linux и отдельный массив данных на уже подготовленных пустых разделах. Вторая часть содержит команды, которые нельзя применять к разделам с действующей системой или нужными файлами.

Подберите конфигурацию для своего проекта

Характеристики, стоимость и условия подготовки выделенных серверов MAATRIX в России и США.

Выбрать выделенный сервер

Что даёт RAID 1 на двух дисках по 1 ТБ

Зеркало записывает данные на оба участника массива. Полезная ёмкость будет примерно соответствовать одному накопителю, а не сумме двух: около 1 ТБ до поправок на разметку, метаданные и файловую систему. ОС также может отображать объём в двоичных единицах, поэтому число на экране окажется меньше привычного десятичного терабайта.

Если один участник выходит из строя, исправная часть зеркала может продолжить обслуживать данные. Ключевое слово — «может»: должны сохраняться остальные условия работы, а при последующей перезагрузке важна ещё и корректная загрузочная схема. RAID не исправляет отказ платы, недоступность питания или ошибку приложения.

У RAID 1 нет обещания удвоенной скорости. Некоторые чтения могут распределяться между накопителями, но запись должна попасть на обе стороны. Результат зависит от реализации, характера запросов и самих SSD. Цель зеркала в нашем сценарии — пережить отказ одного накопителя, а не выиграть конкурс максимальных мегабайт в секунду.

В NECROPOLIS предоставлены EPYC 7642, 128 ГБ DDR4 и два NVMe по цене $529 в месяц согласно указанному прайсу. Наличие дисков не подтверждает, что массив уже создан. После выдачи сервера первым делом выясните фактическую схему хранения, прежде чем что-либо менять.

Сначала инвентаризация и копия за пределами машины

Посмотрите накопители, разделы, файловые системы и точки монтирования. Следующие команды только читают состояние:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL
findmnt /
findmnt /boot
findmnt /boot/efi
cat /proc/mdstat
sudo mdadm --detail --scan

Некоторые точки монтирования могут отсутствовать — это зависит от установки. Если mdadm не найден, установите пакет из доверенного репозитория дистрибутива. Сохраните вывод и сопоставьте серийные номера с тем, что предоставил провайдер.

Особенно важно понять, где находятся корневая файловая система, загрузочные разделы, swap и данные. Имена устройств вида «первый NVMe» недостаточны: порядок обнаружения может меняться. Для дальнейшей работы удобнее устойчивые имена из /dev/disk/by-id/, но их тоже нужно внимательно связать с конкретными разделами.

До изменения разметки сделайте проверенную резервную копию на другом узле или в отдельном хранилище. Копия на втором диске этой же машины не помогает, если вы собираетесь включить его в новый массив. Общая логика защиты разобрана в статье «RAID не является резервной копией».

Самый понятный путь для новой машины — зеркало при установке ОС

Если на сервере ещё нет нужных данных, удобнее организовать RAID во время установки Linux. Тогда корневая файловая система сразу размещается на массиве, а загрузка настраивается с учётом двух дисков. Возможность загрузить собственный образ или воспользоваться удалённой консолью нужно подтвердить у провайдера.

В установщике выбирают ручную схему хранения, отмечают оба физических диска и создают подходящие разделы для RAID 1. На массиве размещают файловую систему или тома, предусмотренные планом. Размеры зависят от ОС, объёма журналов, приложений и дальнейшего хранения данных; универсальная разметка на все случаи здесь скорее помешает.

Для UEFI нужно отдельно учесть загрузочные EFI-разделы. Наличие зеркала с корневой системой ещё не гарантирует возможность стартовать с любого диска. Установщик должен подготовить загрузочные устройства корректно для своей платформы. Например, Subiquity позволяет выбрать несколько загрузочных дисков; детали и ограничения описаны в документации установщика Ubuntu.

После установки проверьте не только обычный запуск, но и план загрузки при недоступности одного накопителя. Такую проверку проводят в согласованное окно, с доступной консолью и рабочей резервной копией. Самостоятельно отключать диск на удалённом рабочем сервере без пути восстановления не стоит: эксперимент рискует превратиться в неожиданную проверку терпения поддержки.

Если ОС уже занимает оба диска и свободных разделов нет, следующая инструкция с mdadm --create вам не подходит. Нужно планировать переустановку с восстановлением данных либо отдельную миграцию разметки. Создание нового массива поверх действующей системы не является способом «включить защиту» без подготовки.

Отдельный RAID 1: условия для команд ниже

Этот вариант предназначен для двух уже созданных пустых разделов на разных физических накопителях. Они не должны содержать ОС, swap, LVM, действующий массив или нужные файлы. Создание самих разделов здесь намеренно не автоматизировано: их границы и место в загрузочной схеме зависят от полученной машины.

Пример использует вымышленные имена. Они должны оставаться несуществующими, пока вы не сверите реальную разметку. Укажите именно разделы для данных, а не целые диски с установленной системой:

raid_member_a='/dev/disk/by-id/REPLACE_WITH_EMPTY_PARTITION_A'
raid_member_b='/dev/disk/by-id/REPLACE_WITH_EMPTY_PARTITION_B'

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,PKNAME "$raid_member_a" "$raid_member_b"
sudo mdadm --examine "$raid_member_a" "$raid_member_b"

Отсутствие метаданных RAID не доказывает, что раздел пуст. Поэтому нужно проверить файловые системы, дерево устройств и назначение разделов, а также убедиться, что они относятся к разным физическим SSD. При неоднозначности остановитесь на этом этапе и разберите схему. Здесь внимательность полезнее скорости печати.

Проверьте также, что имя /dev/md/maatrix-data ещё не занято существующим массивом. Если занято, нельзя продолжать с ним как с новым. Название выбирают свободное и сохраняют в дальнейшей документации сервера.

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

Следующая команда записывает метаданные массива на выбранные разделы. Она разрушительна для прежней структуры данных и допустима только для проверенных пустых участников. Не используйте её для подключения существующего массива: для этого предназначена сборка, а не создание.

sudo mdadm --create /dev/md/maatrix-data \
  --metadata=1.2 --level=1 --raid-devices=2 \
  "$raid_member_a" "$raid_member_b"

Не добавляйте --force, чтобы обойти предупреждение, смысл которого не выяснен. После создания начнётся синхронизация. Наблюдайте за ней и состоянием участников:

cat /proc/mdstat
sudo mdadm --detail /dev/md/maatrix-data

Для первоначальной проверки дождитесь завершения синхронизации и убедитесь, что оба участника активны. Описание режимов create, assemble, detail и мониторинга есть в руководстве mdadm.

Далее создают файловую систему. mkfs уничтожает прежнюю файловую систему на указанном устройстве. Здесь он применяется только к только что созданному и проверенному пустому массиву. Пример для ext4:

sudo mkfs.ext4 -L maatrix-data /dev/md/maatrix-data
sudo mkdir -p /srv/maatrix-data
sudo mount /dev/md/maatrix-data /srv/maatrix-data
findmnt /srv/maatrix-data

Права на каталог назначают в соответствии с пользователем приложения. Запускать все службы от root ради удобства доступа не нужно. До переноса рабочих данных проверьте создание, чтение и удаление обычного тестового файла, затем убедитесь, что резервное копирование видит новый путь.

Как пережить перезагрузку без сюрпризов

Нужно решить две отдельные задачи: сборку массива и монтирование файловой системы. Для первой сохраните идентификацию массива в конфигурации mdadm способом, принятым в вашем дистрибутиве. Команда mdadm --detail --scan помогает получить описание, но её вывод нельзя бездумно дописывать многократно: дубликаты и устаревшие записи только усложнят диагностику.

В Debian и Ubuntu обычно используют /etc/mdadm/mdadm.conf и обновляют initramfs после изменения соответствующей конфигурации. В других системах порядок отличается. Это особенно важно для массивов, участвующих в загрузке ОС; отдельный раздел данных и корневой RAID нельзя обслуживать как полностью одинаковые случаи.

Для монтирования получите UUID файловой системы с помощью blkid и добавьте проверенную запись в /etc/fstab. UUID файловой системы и UUID массива — разные идентификаторы. В fstab нужен тот, который соответствует монтируемой файловой системе. Не копируйте чужой UUID из примера.

Проверьте запись до перезагрузки, затем испытайте загрузку в окно обслуживания. Для приложения важна также зависимость запуска от наличия нужного хранилища: иначе оно может записать новые данные в пустой каталог на корневой файловой системе, если массив не смонтировался. На вид путь будет тем же, а реальное место хранения — другим.

Устройство состояний и сборки Linux MD описано в документации ядра. Она полезна, когда нужно понять, что именно сообщает массив, вместо того чтобы реагировать на любое незнакомое слово перезагрузкой.

Зеркало нуждается в наблюдении

Созданный RAID 1 следует включить в мониторинг. Минимально нужны уведомления об исчезновении участника, деградации, ошибках синхронизации и недостатке свободного места. Состояние массива и здоровье отдельных SSD — разные проверки: исправный массив может работать на накопителе, который уже сообщает о проблемах.

Уведомление должно доходить до человека или системы дежурств вне этой машины. Если сообщение хранится только в локальном журнале, сервер замечательно проинформирует о беде сам себя. Полезно проверить доставку тестового уведомления, не вызывая настоящего отказа диска.

После замены неисправного накопителя потребуется восстановить зеркало. На этом этапе оставшийся диск содержит единственную полную рабочую копию массива, а восстановление создаёт дополнительную нагрузку. Проверенная внешняя резервная копия здесь особенно важна. Общий процесс и ограничения обсуждаются в статье о замене диска в RAID.

Не обещайте пользователям, что RAID исключает простой. Он уменьшает зависимость от одного вида неисправности, но не защищает от общей поломки хоста, ошибочной разметки или повреждения данных приложением. Для более высокой доступности потребуется отдельная архитектура с резервным узлом и продуманным переключением.

Что считать законченной настройкой

Работа завершена, когда массив собран из правильных участников, синхронизация окончена, файловая система монтируется предсказуемо, приложение пишет в нужное место, а уведомления проверены. Если на RAID находится ОС, к этому добавляется проверенная схема загрузки при отказе одного накопителя.

Отдельно должна существовать резервная копия за пределами NECROPOLIS и понятный способ её восстановить. Именно сочетание зеркала, мониторинга и бэкапа превращает два NVMe в полезную схему хранения. Просто два диска в спецификации — только начало истории, причём самая спокойная её часть.

Подберите конфигурацию для своего проекта

Характеристики, стоимость и условия подготовки выделенных серверов MAATRIX в России и США.

Сравнить конфигурации в США

Все материалы о выделенных серверах

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →