Как сделать программный рейд centos

Добавил пользователь Cypher
Обновлено: 04.10.2024

3.Изменение типа разделов на втором жестком диске /dev/sdb на Linux raid autodetect

Проверка типа разделов диска /dev/sdb

4.Обнуление всех разделов нового диска.

Чтобы быть уверенным, что на /dev/sdb не осталось никаких следов от возможных предыдущих установок RAID-массивов, выполните следующие команды:

mdadm: Unrecognised md component device — /dev/sdb1

mdadm: Unrecognised md component device — /dev/sdb2

mdadm: Unrecognised md component device — /dev/sdb3
Если никаких остатков предыдущих установок RAID не обнаружится, то каждая из приведенных выше команд mdadm выдаст ошибку (не надо беспокоиться) примерно следующего вида:

В противном случае никакого вывода не будет.

Если используется Grub 2, который поддерживает по умолчанию версию метаданных( сейчас 1.2)
Для Centos 7

Проверка состояния нашего массива должна показать, что у нас есть три поврежденных RAID-массива ([_U] или [U_] означает, что массив поврежден, а [UU] означает, что все в порядке):

6.Создание файловых систем на созданных RAID-устройствах

7.Копируем данные с корневой файловой системы на корневой RAID-массив md1

8.Копируем данный с /boot-раздела системы на boot RAID-массив md0

9.Монтируем md0 массив в новый корневой раздел в каталог boot

10.Монтируем информацию о текущей системе в наш новый корень и делаем chroot в него

11.Получаем UUID для наших md-массивов и заменяем ими присутствующие в /etc/fstab UUID-ы

12.Создаем конфиг для mdadm

ARRAY / dev / md0 metadata = 1.2 name = centos71 . kamaok . org . ua : 0 UUID = becf3635 : e3608836 : 0a44f349 : c3857549

ARRAY / dev / md1 metadata = 1.2 name = centos71 . kamaok . org . ua : 1 UUID = 8d673c0f : e7f66134 : e457e6e4 : b3b5ea57

ARRAY / dev / md2 metadata = 1.2 name = centos71 . kamaok . org . ua : 2 UUID = de74ce22 : e214af73 : a81827bd : 55283ead

Далеко не редкость, когда производственные сервера поддаются достаточно высоким нагрузкам. Это приводит к необходимости подключать SSD и жесткие диски не по отдельности, а вместе. Для этих целей обычно используют специальные массивы. Их внутренняя информация хранится сразу на нескольких дисках. И если хотя бы один из этих дисков однажды выйдет из строя, данные не будут утеряны.

Всё это в совокупности повышает уровень безопасности работы. Также, записывая данные сразу на несколько дисков, можно сэкономить приличное количество времени, так как процесс производится в синхронном режиме, а не по очереди. RAID представляет собой именно такой массив.

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

Чтобы получить raid, потребуется аппаратный контроллер. Это классический способ создания массива, однако, существуют и альтернативные варианты. Если отойти в сторону от классики жанра, то можно попытаться создать программный массив. О том, как это сделать, и пойдет речь в данном материале.

Для начала разберемся, основные виды Raid, которые наиболее часто используются:

  • RAID 1 или Mirror (зеркало). В данном случае запись информации происходит в синхронном режиме. Используют как минимум два диска. Если один из используемых жестких дисков потеряет работоспособность, то все данные можно без проблем изъять со второго диска, поскольку они являются так называемыми дубликатами. Примечательно, что объем такого массива будет равен объему наименьшего жесткого диска из всех используемых.
  • RAID 0. Его также именуют Stripe. Данному виду массива характерны высокая производительность и низкая отказоустойчивость. Чтобы создать подобный массив, потребуется хотя бы 2 жестких диска. Из недостатков можно отметить по очередность записывания данных на оба диска. Кроме того, текущая информация будет храниться блоками, и если хотя бы один диск выйдет из строя, вся информация будет полностью утеряна. Объем массива будет равен сумме двух объемов используемых дисков.
  • RAID 10. Представляет собой некую комбинацию двух предыдущих видов массивов. То есть, 0 и 1. Подобный массив включает в себя минимум четыре жестких диска. Меньшее количество использоваться не может. Объем массива будет равен ½ суммы объемов всех используемых дисков. Основным недостатком такого варианта является высокая стоимость. Как минимум из-за того, что потребуется много дисков.

Существуют и другие виды RAID. Например, RAID 5,6. Мы не станем детализировать их особенности, поскольку в данной статье речь пойдет о создании наиболее простого программного массива.

Подготовка

  1. Регулирование массивов в ОС Линукс проходит легче при помощи программы mdadm. Ниже будет представлена команда для установки утилиты на компьютер.

Для Debian и Ubuntu.

Установка mdadm на Centos 8e

ВАЖНО! Если не хватает прав, необходимо добавить sudo в начале строки.

  1. Далее пользователю потребуется подготовить выбранные HDD для их объединения в единый виртуальный диск. Чтобы ознакомиться с перечнем используемых системой жестких дисков необходимо задать:

fdisk -l

Вместо того чтобы поспешно создавать массив на HDD (в этом вопросе есть свои подводные камни и сложности), рекомендуется создавать RAID исключительно на разделы дисков. Теперь нужно выбрать диски для объединения. В нашем примере будут приведены следующие два диска по 100 мегабайт:

Создание таблицы разделов.

Для накопителей меньше 2 Терабайт:

Для больших накопителей больше 2 терабайт или компьютеров с UEFI:

Далее необходимо заняться созданием разделов на предпочтенных HDD. Создадим раздел размером 95 мегабайт.

Исходя их указанной команды видно, что мы основали раздел объемом 95 Мегабайт. Процесс подготовки жестких дисков к добавлению массива окончен. Самое время преступить к следующему пункту.

Создание

Рассмотрим синтаксис команды для добавления RAID в Linux. Он представлен ниже:

Рейд 1

Сохранение конфигурации массива

Уже сейчас собранный массив работает. Однако, для стабильной работы требуется сохранить конфигурацию Рейд.

Если каталога нет.

Чтобы при загрузке ОС Линукс автоматически монтировался рейд, необходимо отредактировать файл fstab.

/dev/md0 /mnt/ ext4 defaults 0 0

Как посмотреть данные о RAID

Для этих целей есть специальная команда. Задайте в терминале следующий текст:

Основные данные о массиве в Линукс появятся на экране. Если информации недостаточно, потребуется детализировать данные. Это можно сделать следующим способом:

$ sudo mdadm --detail /dev/md0

Удаление массива (при необходимости):

$ sudo mdadm --remove /dev/md0

Принцип основания RAID 1 в Линукс осуществляется тем же способом, только значения 0 нужно заменить на 1. К примеру, названия дисков теперь будут прописаны в виде: /dev/sda1 и так далее.

Создание программного массива в Linux – вполне выполнимая задача для новичка. Разумеется, такой Рейд будет отличаться от аппаратного массива своей производительностью, но такой вариант объединения нескольких жестких дисков вполне приемлем для полноценной работы.

Бороздя просторы интернета я иногда натыкался на описания миграции на RAID1, но никогда особо не обращал на них внимания, при правильно поставленной задаче в этом просто нет смысла. По-моему, если планировать недорогой сервер, то софтовый RAID можно предусмотреть с самого начала, и сразу на него уже проинсталить операционную систему, а заодно и проверить как он отреагирует на отключение одного из винтов. Но бывают ситуации из разряда одна на миллион, когда в руки попадает какой-нибудь недорогой Supermicro расположенный на площадке провайдера, на единственном винте которого чудесным образом вращается около сотни различных сайтов.

1. Лирика (вступление)

В Linux дело с миграцией на софтовый RAID1 обстоит явно хуже чем в FreeBSD, и провести полноценную онлайн миграцию приложив при этом минимум усилий почти невозможно. Дело в том, что софтовый RAID хранит свои метаданные на каждом из дисков массива, для версии суперблока 0.90 и 1.0 они хранятся в конце диска, а для версий 1.1 и 1.2 в начале. Поэтому что бы перенести файловую систему на RAID, ее нужно либо сжать при помощи resize2fs, либо создать новую файловую систему на RAID и перенести данные копированием, – в обоих случаях файловую систему придется отмонтировать, причем явно не на 5 минут.

В этой ситуации спасает то, что при установке по-умолчанию CentOS создает небольшой раздел для загрузчика, а остальное размещает на втором разделе при помощи LVM. А LVM уже может достаточно прозрачно перемещать логические тома между физическими дисками.

Итак проверяем, что у нас есть из разделов:

Как и предполагалось – один 512мб раздел под /boot и все остальное в Linux LVM.

На втором разделе диска создана группа томов с именем vg_web16, при установке поименованная по имени сервера.

И на этой группе томов располагаются два тома под данные и свап. Все как нужно.

1. Основной раздел

Я предполагаю, что устанавливаются совершенно одинаковые диски и копировать таблицу разделов можно один к одному, в противном случае разбивку лучше сделать вручную.

Ставим mdadm и создаем RAID1 массив с именем md2, в этот массив помещается только один раздел со второго (пустого) диска, раздел с первого диска пока помечается как отсутствующий.

Далее помечаем /dev/md2 как физический том LVM, расширяем на него группу томов vg_web16, переносим все логические тома лежащие на первом диске /dev/sda2 на созданный RAID-массив /dev/md2.

Операция pvmove может выполняться длительное время, для 500Гб SATA-дисков оно составило около 45 минут. Теперь удаляем из группы томов первый диск и добавляем его в RAID

Ждем пока закончится процесс синхронизации дисков в RAID1.

2. Раздел Boot

Опять как и для предыдущего раздела создаем RAID-массив с одним диском, и выбираем формат суперблока 0.90 или 1.0, с другими форматами GRUB 0.97 работать не умеет.

Форматируем созданный раздел в ext4 и переносим на него данные из директории /boot

Размонтируем /boot отключив от него первый раздел первого диска и примонтируем туда RAID-массив /dev/md1, а затем добавляем отмонтированный диск в этот массив.

3. Настройка initrd и grub

Итак, initrd или initramfs – это прообраз файловой системы используемый не этапе первоначальной загрузки, главная его цель загрузить все необходимые драйвера, например софтовый RAID или LVM, смонтировать файловую систему, а за тем предать управление дальше. Для того что бы система могла загружаться с софтового RAID-массива initrd нужно пересоздать.

Для начала формируем конфигурационный файл mdadm.conf

Меняем в /etc/fstab точку монтирования для /boot, все остальные точки монтирования находятся на LVM и поэтому остаются на своих местах.

Пересоздать initramfs можно при помощи утилиты dracut, начиная с Fedora 12 она пришла на смену mkinitrd. Проверяем выключены ли в конфигурацию LVM и MDADM, и перезаписываем старый initramfs.

Из конфигурационного файла Grub убираем параметры ядра отключающие загрузку mdraid.

Настраиваем Grub на обоих дисках

Запасаемся на всякий случай LiveCD и отправляем сервер в перезагрузку.

4. Заключение

Честно говоря провести миграцию с первого раза на рабочей системе не получилось, после перезагрузки сервер не находил mdraid и выпадал в kernel-panic. Спасла загрузка с LiveCD и уже из под него запуск всех сервисов, которые на нем крутились, так или иначе down-time увеличился где-то на 10-15 минут. Проблемка оказалась всего-ничего в отсутствии параметра –mdadmconf при запуске dracut, и после перестроения initramfs вторая перезагрузка прошла уже успешно.

В принципе LVM и сам не плохо умеет делать RAID, и как мне кажется это намного проще чем с mdraid, основной раздел легко разместиться LVM-RAID, а /boot можно просто скопировать на оба диска и монтировать по метке. Но это теория.. как только попадется какой-нибудь еще сервер без RAID-контроллера, обязательно пущую его в продакт и обкатаю на нем это дело.

Raid 1

Сегодня настраивал очередной сервер от Hetzner-а. У него была конфигурация из 2х пар дисков: 1ая пара SSD по 250 Гб и вторая SATA по 2 Гб. Необходимо было сделать два рейд массива первого уровня, для каждой из пар.

Т.к. сервер покупал абсолютно чистый, то при установке системы первый рейд массив создал прямо во время установки. Про то, как это сделать я уже писал тут: Hetzner: установка CentOS 7 с диском на 3 TB , так что не буду повторяться. Единственное, что стоит заметить, это необходимость исключить вторую пару, просто закомментировав строчки второй пары дисков и выбрав правильный уровень рейда в конфигурации:

Читайте также: