Создание программного RAID на Debian

Опубликовано:

Организация отказоустойчивой системы хранения данных — это, естественно, RAID. Стоит дать некоторое определение RAID: избыточный (резервный) массив собранный из независимых дисков. Рассматривая возможности покупки аппаратных RAID массивов, всегда приходится сталкиваться с достаточно высокой ценой. Однако, при выборе хранилища данных можно рассмотреть и другие альтернативы. Так, например, одно из возможных решений может быть реализовано на Linux (Debian) с применением недорогих комплектующих. Вот такое решение программного RAID массива мы сегодня и рассмотрим.

Постановка задачи:

  • Организовать отказоустойчивую систему хранения данных;

Условия:

  • быстрое развёртывание;
  • лёгкое управление;
  • минимальные потери при аппаратных сбоях;
  • возможность быстрого ремонта (замены) при аппаратных сбоях;
  • низкая стоимость;

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

Решение:

  • системный блок с установленным необходимым количеством жёстких дисков (наверняка, в закромах найдется старенький системник, можно использовать и новый с SATA дисками. Все зависит от того, какой дисковый объем и какая надёжность вам нужна)
  • операционная система Linux (почему именно она? Просто сейчас занимаюсь именно ей. Она бесплатна, всегда можно найти информацию по настройке и внедрению, открытые исходные коды)

Установим ее и приступим к «творению».

 apt-get install mdadm

Во время установки система попросит параметры для обслуживания уже установленных массивов или для будущих. Чтобы не заморачиваться оставьте предложенные параметры по-умолчанию (all). Далее необходимо подготовить жёсткие диски для соединения в массив, определимся, что будем использовать массив класса RAID 1. Один из наиболее надежных (полное зеркалирование) и не дорогое решение.

root# fdisk /dev/sdb 
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-41610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-41610, default 41610):
Using default value 41610

Раздел у нас создан. Посмотрим его параметры.

Command (m for help): p
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
16 heads, 63 sectors/track, 41610 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0xda185917
Device Boot Start End Blocks Id System
/dev/sdb1 1 41610 20971408+ 83 Linux

Индификатор созданного раздела — 83, это стандартный раздел Linux. Он нам не подходит. Его необходимо сменить на «fd» (linux raid autodetect). Полный список можно посмотреть указав «L» вместо «fd», потом система задаст повторный вопрос.

Command (m for help): t
Selected partition 1
Hex code (type L to list codes):fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Раздел создан, указан необходимый тип, для проверки можно ввести команду «p» и посмотреть результат, если все устраивает, то пора записать разделы на диск и приступить ко второму жёсткому диску.

Command (m for help): p
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
16 heads, 63 sectors/track, 41610 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0xda185917
Device Boot Start End Blocks Id System
/dev/sdb1 1 41610 20971408+ fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Аналогично готовим второй жёсткий диск

После завершения подготовки дисков можно приступать к непосредственному созданию массива. Создание RAID массива выполняется с помощью программы
mdadm (ключ --create). Добавим опцию --level, для указания типа RAID массива, который хотим получить, в нашем случае первого (1) уровня. С помощью ключа --raid-devices укажем устройства, поверх которых будет собираться RAID массив.

root#  mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdd1 
mdadm: size set to 20971328K
mdadm: array /dev/md0 started.

Если во время сборки не хватает физических дисков, но вы планируете добавить их позже, т.е. собрать не полный RAID массив (degraded) можно указать слово missing вместо имени устройства. Для RAID 5 это может быть только один диск, для RAID 6 — не более двух, для RAID 1 сколько угодно, но должен быть как минимум один рабочий. Массив создан, теперь необходимо убедится, что собранный RAID массив собран правильно.

root#  cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active (auto-read-only) raid1 sdd1[1] sdb1[0]       20971328 blocks [2/2][UU]          resync=PENDING unused devices: <none>

Система сообщает, что создан RAID 1 массив, в который входят два устройства - sdd1 и sdb1. Проверка состояния нашего массива показывает [UU] — означает, что все в порядке, а ([_U] или [U_] означает, что массив поврежден. Имя нашего RAID массива md0.

Файловая система создана, но она еще не готова принимать к размещению данных. Можно посмотреть статус массива.

root# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdd1[1] sdb1[0]
      20971328 blocks [2/2] [UU]
      [==>..................]  resync =10.7%(2260416/20971328) finish=8.4minspeed=36824K/sec
unused devices: <none>

Теперь нужно создать файл конфигурации нашего RAID массива. Система сама не запоминает какие RAID массивы ей нужно создать и какие компоненты в них входят. Эта информация находится в файле конфигурации mdadm.conf. Параметры, которые следует добавить в этот файл, можно получить при помощи команды mdadm --detail --scan --verbose.

root# mdadm --detail --scan --verbose 
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=00.90 UUID=ddddad18:ae4cb9be:cb5f3c5d:d16ad809
 devices=/dev/hdb1,/dev/hdd1

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

root# mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf 

Настройка уведомления о состоянии RAID массива по email

Создаем новые диски с использование LVM

Теперь все готово.

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