Ubuntu как настроить raid

Системное администрирование Linux

2018-06-25 11:27:07 9728 2

Настройка программного RAID на Линукс

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

Рассмотрим основные виды RAID-массивов:

  • RAID 0 (Stripe) — Массив, в котором достугается максимальная производительность, но при этом минимальная отказоустойчивость. В этом режиме минимальное необходимое количество дисков — 2. Производительность повышается за счет поочередной записи или чтения с дисков, то есть при записи один блок данных пишется на один диск, а следующий блок данных пишется на другой диск и т.д., при этом при выходе из строя хотя бы одного диска в массиве, все данные будут утеряны. Пользователь получает диск с объемом, равным сумме объемов всех дисков в массиве;
  • RAID 1 (Mirror) — Массив зеркало, запись на все диски массива (обычно 2) идет синхронно, т.е. диски полностью дублируют друг друга. При этом при выходе из строя одного из дисков, информация сохраняется на другом. Пользователь получает в пользование объем самого малого диска в массиве;
  • RAID 10 — Комбинация RAID 0 и RAID 10 (RAID 0 из двух RAID 1), получаем высокую производительность и высокую отказоустойчивость, минус это дороговизна, минимум необхоодимо 4 диска, при этом полезный объем равен половине суьье всех объемов дисков в массиве;
  • RAID 5 — Массив использующий распределенное хранение данных аналогично RAID 0 + распределенное хранение кодов четности для восстановления данных при сбоях. По сути, является компромиссом между RAID0 и RAID1, обеспечивая достаточно высокую скорость работы при неплохой надежности хранения данных. При отказе одного диска из массива данные могут быть восстановлены без потерь в автоматическом режиме. Минимальное количество дисков для такого массива — 3.
  • JBOD — Последовательное объединение нескольких физических дисков в один логический, не влияет на производительность, но при этом надежность падает до отказа одного диска, возможно использование дисков разных размеров.
Читайте также:  Как настроить светодиодные наручные часы с алиэкспресс

Существует еще много разных видов массивов дисков, но мы рассмотрели основные из них.

Теперь перейдем к настройке программного RAID на Линукс Ubuntu 16.04.

У нас в системе имеется 4 диска объемом по 10Гб, на них и будем реализовывать различные схемы массивов.

Создание массива RAID 0

Для создания и управления массивами в линукс существует утилита mdadm, создадим массив RAID 0 из дисков sdb,sdc

sudo mdadm —create -v /dev/md0 —level=0 —raid-devices=2 \

Проверяем создание массива

Теперь создадим файловую систему на нашем массиве

sudo mkfs.ext4 /dev/md0

И смонтируем наш новый массив

sudo mount /dev/md0 /mnt/

Посмотрим, что получилось

Как видим у нас появилась файловая система с объемом равным объему обоих дисков.

Теперь давай те осуществим настройку, что бы после перезагрузки системы, массив был собран автоматически, для этого в файл конфигурации /etc/mdadm/mdadm.conf необходимо добавить вывод команды mdadm

sudo mdadm —detail —scan >> /etc/mdadm/mdadm.conf

После этого обновим initRAM

sudo update-initramfs -u

Ну и для того что бы наш массив автоматически был смонтирован при загрузке системы, добавим его в /etc/fstab

Если вы хотите удалить массив, то сначала его необходимо отмонтировать, а потом остановить и удалить

sudo umount /dev/md0

sudo mdadm —stop /dev/md0

sudo mdadm —remove /dev/md0

И еще можно забить их нулями, что бы стереть старую инфу

sudo mdadm —zero-superblock /dev/sdb

sudo mdadm —zero-superblock /dev/sdc

И обновляем initRAM

sudo update-initramfs -u

Создание RAID 1

Аналогично как и для RAID 0 создаем RAID 1 из двух дисков

sudo mdadm —create -v /dev/md0 —level=1 —raid-devices=2 \

Выдаст предупреждение, что если вы собираетесь использовать этот массив для хранения директории /boot, необходимо обеспечить что бы загрузчик системы мог работать с массивами.

Проверяем созданием массива

Как видим массив создан, но еще идет процесс синхронизации дисков, подождем когда процесс завершится.

Создадим файловую систему и смонтируем диск

sudo mkfs.ext4 /dev/md0

sudo mount /dev/md0 /mnt

И как и с RAID 0 обеспечим что бы наш RAID собирался автоматически при перезагрузке системы

sudo mdadm —detail —scan >> /etc/mdadm/mdadm.conf

sudo update-initramfs -u

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

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

dd if=/dev/zero of=/mnt/raid1 bs=1M count=100

Теперь отключим один из дисков от компьютера

Проверяем, что файлы на нашем массиве остались в порядке и не пропали

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

sudo mdadm —manage /dev/md0 —fail /dev/sdc

sudo mdadm —manage /dev/md0 —remove /dev/sdc

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

После подключения нового диска, нужно на нем создать такую же разметку, как и на соседнем диске, копируем разметку командой

sudo sfdisk -d /dev/sdb | sfdisk —force /dev/sdd

Добавляем новый диск в наш массив

sudo mdadm —manage /dev/md0 —add /dev/sdd

И снова дожидаемся пока данные на дисках будут синхронизованы

После окончания синхронизации

Создание RAID 5

Для RAID 5 возьмем три диска sdb, sdc, sdd

sudo mdadm —create -v /dev/md5 —level=5 —raid-devices=3 \

Восстанавливается RAID 5 отличается от RAID 1

Как видим после отключения одного из дисков массив ушел в положение inactive

sudo mdadm —stop /dev/md5

Пробуем пересобрать его

sudo mdadm —assemble —scan —force

Массив снова в положении active

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

Создание RAID 10

Для создания RAID 10 будем использовать 4 диска sdb,sdc,sdd,sde

sudo mdadm —create -v /dev/md0 —level=10 —raid-devices=4 \

Восстановление RAID 10, после сбоя диска, по-аналогии с RAID 5.

Источник

HOW-TO: Перевод системного раздела на RAID.

Содержание

Задача

Условия

На оригинальном диске расположен корень и своп, новый диск чист. Мы будем делать программный RAID1. Используется Ubuntu Server 11.10

Порядок действий

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

1. Подключаем второй диск к компьютеру. 1)
2. Форматируем новый диск 2) —

3. Создаем на нем массив:

4. Далее создаем на массиве разделы под будущую систему. Создаем такие же разделы под корень и своп как на оригинальном диске 3) .

5. Создаем файловые системы на разделах зеркала

6. Монтируем будущий корень и копируем в него текущий корень

7. После этого прицепляем системные каталоги к новому корню, что бы потом сделать chroot в новый корень (это важно — зачем объеснено в комментарии №2). И собственно делаем chroot в новый корень.

8. Для начала смотрим UUID-ы разделов на раиде и прописываем их в fstab. 4) По редактированию fstab лучше сверится с этой статьей.

9. Создаем новую конфигурацию GRUB и проверяем, что в его конфиг прописан раидный uuid для корня.

10. Ставим первую стадию GRUB на второй диск (который несет на себе часть зеркала).

11. Очень важный шаг! Нужно прописать (хотя бы на время) конфигурацию mdadm, которая позволит загрузится с деградированного массива (а у нас пока он именно такой)

12. Можно перегружаться и выбрать в BIOS загрузочным второй диск 5) , или можно вернутся в реальную систему и обновить GRUB — он найдет вторую систему установленную на раиде и включит ее свое меню.
Тут полезно еще раз запустить rsync, что бы он обновил данные на раиде тем, что успело изменится на реальном корне за время настройки раида 6) . Но сделать это стоит перед перестройкой конфига GRUB, что бы его новый конфиг не был записан на раид.

13. Перегрузившись в новую систему остается только навесить в RAID первый диск и обновить на нем первую стадию груба.

После чего сморим через cat /proc/mdstat как перестраивается наш деградированный массив в полноценно рабочий.

Результат: Система на раиде.

Проверка

Т.к. в процессе написания этой инструкции использовалась виртуалка то можно поиграть с потерей дисков. Гасим виртуалку, отсоединяем первый диск, грузимся — норма (массив деградированный на втором диске, груб стартанул со второго диска). Снова гасим — подцепляем обнуленный второй диск, создаем на нем MBR, раздел, и добавляем его в массив (как выше добавлялся sda1) — система перестраивает массив и переходит в нормальный режим.
Повторяем то-же, но отключая и обнуляя второй диск — все работает.

ПРОФИТ!!

Комментарии:

№1: Если вы создадите массив на весь диск — то на диске может быть занят первый трек — и грубу некуда будет поставить свою первую стадию. А кроме того GRUB вообще не понимает? что на диске творится когда на нем расположен раидный раздел без MBR и не может встать туда. Другой (не совсем правильный) вариант — создавать на каждый раздел — свой массив. Идеологически — массив это диск, а не раздел, и если вы, имея массив, запустите fdisk -l то он вам на каждый RAID массив выдаст информацию именно как о диске и будет на каждом массиве искать таблицу разделов.

ВАЖНЫЙ КОММЕНТАРИЙ КО ВСЕЙ РАБОТЕ: Работа проводилась на витруалке и на сервере без какой-либо нагрузки (ни ПО никакого серверного не стояло, ни каких сервисов сервер не предоставлял и не использовался кем-либо со стороны). Поэтому в момент копирования корня и после перезагрузки в раидую версию системы — ничего криминального не произошло. При наличии рабочих серверов это копирование (6-й шаг инструкции) может стать проблемой — т.к. данные в реальном корне «уйдут» по времени от данных на раидном, и перезагрузка «отбросит» сервисы на сервере в момент времени, когда была сделана копия. А кроме того — такое копирование может вообще разрушить целостность данных севисов т.к. разные файлы будут копироваться в разное время — тут надо копать либо в сторону FS, которые могут делать снепшоты? Либо корень системы копировать, а данные приложений переносить другими средствами 7)
Чуть улучшает состояние дел вызов rsync повторно перед пеезагрузкой (шаг 12). Но и он не может ничего гарантирововать.

Источник

Работа с mdadm в Linux для организации RAID

mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.

Установка mdadm

Утилита mdadm может быть установлена одной командой.

Если используем CentOS / Red Hat:

yum install mdadm

Если используем Ubuntu / Debian:

apt-get install mdadm

Сборка RAID

Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива.

Подготовка носителей

Сначала необходимо занулить суперблоки на дисках, которые мы будем использовать для построения RAID (если диски ранее использовались, их суперблоки могут содержать служебную информацию о других RAID):

mdadm —zero-superblock —force /dev/sd

* в данном примере мы зануляем суперблоки для дисков sdb и sdc.

Если мы получили ответ:

mdadm: Unrecognised md component device — /dev/sdb
mdadm: Unrecognised md component device — /dev/sdc

. то значит, что диски не использовались ранее для RAID. Просто продолжаем настройку.

Далее нужно удалить старые метаданные и подпись на дисках:

wipefs —all —force /dev/sd

Создание рейда

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

mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd

  • /dev/md0 — устройство RAID, которое появится после сборки;
  • -l 1 — уровень RAID;
  • -n 2 — количество дисков, из которых собирается массив;
  • /dev/sd — сборка выполняется из дисков sdb и sdc.

Мы должны увидеть что-то на подобие:

mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store ‘/boot’ on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
—metadata=0.90
mdadm: size set to 1046528K

Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:

Continue creating array? y

Мы увидим что-то на подобие:

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

. и находим информацию о том, что у наших дисков sdb и sdc появился раздел md0, например:

.
sdb 8:16 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
sdc 8:32 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
.

* в примере мы видим собранный raid1 из дисков sdb и sdc.

Создание файла mdadm.conf

В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды:

echo «DEVICE partitions» > /etc/mdadm/mdadm.conf

mdadm —detail —scan —verbose | awk ‘/ARRAY/ ‘ >> /etc/mdadm/mdadm.conf

DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=proxy.dmosk.local:0 UUID=411f9848:0fae25f9:85736344:ff18e41d

* в данном примере хранится информация о массиве /dev/md0 — его уровень 1, он собирается из 2-х дисков.

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

Создание файловой системы для массива выполняется также, как для раздела:

* данной командой мы создаем на md0 файловую систему ext4.

Примонтировать раздел можно командой:

mount /dev/md0 /mnt

* в данном случае мы примонтировали наш массив в каталог /mnt.

Чтобы данный раздел также монтировался при загрузке системы, добавляем в fstab следующее:

/dev/md0 /mnt ext4 defaults 1 2

Для проверки правильности fstab, вводим:

Мы должны увидеть примонтированный раздел md, например:

/dev/md0 990M 2,6M 921M 1% /mnt

Информация о RAID

Посмотреть состояние всех RAID можно командой:

В ответ мы получим что-то на подобие:

md0 : active raid1 sdc[1] sdb[0]
1046528 blocks super 1.2 [2/2] [UU]

* где md0 — имя RAID устройства; raid1 sdc[1] sdb[0] — уровень избыточности и из каких дисков собран; 1046528 blocks — размер массива; [2/2] [UU] — количество юнитов, которые на данный момент используются.
** мы можем увидеть строку md0 : active(auto-read-only) — это означает, что после монтирования массива, он не использовался для записи.

Подробную информацию о конкретном массиве можно посмотреть командой:

* где /dev/md0 — имя RAID устройства.

Version : 1.2
Creation Time : Wed Mar 6 09:41:06 2019
Raid Level : raid1
Array Size : 1046528 (1022.00 MiB 1071.64 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Wed Mar 6 09:41:26 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : resync

Name : proxy.dmosk.local:0 (local to host proxy.dmosk.local)
UUID : 304ad447:a04cda4a:90457d04:d9a4e884
Events : 17

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc

  • Version — версия метаданных.
  • Creation Time — дата в время создания массива.
  • Raid Level — уровень RAID.
  • Array Size — объем дискового пространства для RAID.
  • Used Dev Size — используемый объем для устройств. Для каждого уровня будет индивидуальный расчет: RAID1 — равен половине общего размера дисков, RAID5 — равен размеру, используемому для контроля четности.
  • Raid Devices — количество используемых устройств для RAID.
  • Total Devices — количество добавленных в RAID устройств.
  • Update Time — дата и время последнего изменения массива.
  • State — текущее состояние. clean — все в порядке.
  • Active Devices — количество работающих в массиве устройств.
  • Working Devices — количество добавленных в массив устройств в рабочем состоянии.
  • Failed Devices — количество сбойных устройств.
  • Spare Devices — количество запасных устройств.
  • Consistency Policy — политика согласованности активного массива (при неожиданном сбое). По умолчанию используется resync — полная ресинхронизация после восстановления. Также могут быть bitmap, journal, ppl.
  • Name — имя компьютера.
  • UUID — идентификатор для массива.
  • Events — количество событий обновления.
  • Chunk Size (для RAID5) — размер блока в килобайтах, который пишется на разные диски.

Подробнее про каждый параметр можно прочитать в мануале для mdadm:

Также, информацию о разделах и дисковом пространстве массива можно посмотреть командой fdisk:

Источник

Оцените статью