Меню

Mdadm настройка raid 1



Программный RAID1 (зеркало) с помощью mdadm

На практике, самый вероятный источник проблем с компьютерами, работающими 24х7 — это диски. За 12 лет я столкнулся с двумя вышедшими из строя сетевыми картами на серверах, но диски, даже серверных серий, выходят из строя регулярно. Что WD, что Seagate, что Hitahi. Поэтому вопрос с мотивацией использования зеркального raid1 считаем закрытым.

Почти все материнские платы сейчас заявляют функционал raid. Только если вы точно знаете, зачем вам использовать raid вашей motherboard, делайте это. К тому же, чаще всего это специфические вариации на тему программного raid, только никто-не-знает-как-сделанные. Т.е. не факт, что плохо сделанные. Но не факт, что вы найдете исчерпывающую информацию по решению проблемы. Далее, специальные контроллеры raid. Опять же, если вы знаете, что именно вы хотите, используйте их. Но вы должны понимать, что любое устройство (что материнка, что отдельный контроллер) могут взбрыкнуть и тогда могут быть проблемы с получением данных с дисков массива. Причем у вас могут возникнуть трудности с поиском информации по решению проблемы, т.к. разбирающихся в конкретной железке или линейки оборудования не так велико.

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

Сделаем простейшую систему защиты от сбоя жесткого диска — зеркальный raid массив. Для этого добавим в систему два диска:
/dev/sdb
/dev/sdd

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

Проверим, что диски в самом деле без разделов:

Не должно быть никаких /dev/sdb1 и прочих! Аналогично для /dev/sdd.

Убедитесь, что вы собираетесь создавать разделы именно на тех дисках, которые для этого добавили.
Проверить модель диска и его S/N: smartctl -i /dev/sdb

На каждом диске создадим раздел на весь диск с прицелом на raid.

Примерно так: Сначала n (add a new partition), потом p (primary), номер раздела 1 (partition number). Все цифры можно оставить по-умолчанию. Записали изменения и вышли: w

Меняем тип раздела /dev/sdb1 на «Linux raid autodetect»:

Сначала t (change a partition’s system id), потом fd (Linux raid auto), потом p (проверим изменения) и w (сохранили изменения и вышли):

Аналогично поступаем с диском /dev/sdd (т.е. создаем primary раздел /dev/sdd1 и меняем тип на «Linux raid autodetect»).

Создаем RAID1 массив

Если в вашей системе есть другие диски, внимательно и тщательно проверяйте названия устройств. На моем компьютере это уже не первый массив, поэтому я укажу имя вновь создаваемого массива «/dev/md2».

# mdadm —create —verbose /dev/md2 —level=1 —raid-devices=2 /dev/sdb1 /dev/sdd1

—create — создать
—verbose — больше информации!
/dev/md2 — имя нового raid-массива (фактически, это устройство, на нем потом можно создавать разделы lvm и все что угодно еще)
—raid-devices=2 /dev/sdb1 /dev/sdd1 — указываем кол-во и конкретные устройства, входящие в состав массива.

Проверить, что вышло:

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdd1[1] sdb1[0]
976630464 blocks super 1.2 [2/2] [UU]
[>. ] resync = 1.4% (13876288/976630464) finish=85.1min speed=188512K/sec
bitmap: 8/8 pages [32KB], 65536KB chunk

Идет синхронизация. Дождемся ее окончания.

После завершения синхронизации посмотрите параметры вашего массива:

# mdadm —detail —scan —verbose

ARRAY /dev/md2 level=raid1 num-devices=2 metadata=1.2 name=localhost.localdomain:2 UUID=3eaa3e42:6f083fc4:0c9281a3:1b9b7452
devices=/dev/sdb1,/dev/sdd1

Чтобы raid после ребута никуда не делся, сохраняем конфиг в файл /etc/mdadm.conf (путь к файлу верен для CentOS 7):

# mdadm —detail —scan —verbose >> /etc/mdadm.conf

Обратите внимание на «>>» (добавить, а не перезаписать). Не стоит перезаписывать конфиг mdadm, там могут быть важные сведения о других массивах, уже работающих у вас в системе.

Что за UUID «3eaa3e42:6f083fc4:0c9281a3:1b9b7452»? Посмотрите UUID блочных устройств, начинающиеся на «3eaa3e42»:

# blkid | grep 3eaa3e42
/dev/sdb1: UUID=»3eaa3e42-6f08-3fc4-0c92-81a31b9b7452″ UUID_SUB=»bb9c4771-20c9-4f4b-5013-f0d6d0f327ae» LABEL=»backupmail.localdomain:2″ TYPE=»linux_raid_member»
/dev/sdd1: UUID=»3eaa3e42-6f08-3fc4-0c92-81a31b9b7452″ UUID_SUB=»37997177-2fd1-6518-3036-2b1d76043816″ LABEL=»backupmail.localdomain:2″ TYPE=»linux_raid_member»

Т.е. есть привязка в конфиге raid1 массива не только по имени /dev/sdb1, но и по уникальному идентификатору устройства. Поэтому если вы просто вынете диски и на их место включите другие, то ничего хорошего не выйдет.

Читайте также:  Настройка php для вывода ошибок

Так, теперь вот что: можно просто отформатировать созданный диск (mkfs.ext4 /dev/md2) и указать в файле /etc/fstab точку его монтирования, а можно поиграться с LVM. LVM может дать в дальнейшем определенные преимущества, например, если вы решите изменить размер раздела или даже добавить к нему другие диски, вдруг места будет совсем мало.

Создаем физический том на устройстве /dev/md2 (т.е. работаем уже с объектом массива, а не конкретными разделами типа /dev/sdb1):

# pvcreate /dev/md2
Physical volume «/dev/md2» successfully created.

# pvscan
PV /dev/md2 lvm2 [931.39 GiB]

На томе создаем группу томов (volume group) с именем «datavg» (произвольно, можете брать другое название:

# vgcreate datavg /dev/md2

В группе «datavg» создаем логический том «datalv» (имя выбрано произвольно) размером 931Гб (размер взят из листинга команды pvscan):

# lvcreate —name datalv —size 931G datavg

[не вдаваясь в различия ext4, ext3, xfs и др.] форматируем конечный логический том /dev/datavg/datalv в xfs:

Промежуточный итог: у нас есть «диск» с файловой системой xfs, который можно примонтировать и использовать. Например, чтобы наш raid1 обслуживал какую-то директорию (пусть будет /data), в /etc/fstab добавьте, например:

/dev/mapper/datavg-datalv /data xfs defaults 0 0

Создайте саму директорию /data:

Проверьте перед перезагрузкой:

# mount /dev/mapper/datavg-datalv /data

Запишите какой-нибудь файл в /data и перезагрузитесь.

Проверяем. Тестовый файл должен быть на месте.

В первый раз всегда делайте это на тестовом или не важном сервере.

Источник

mdadm

Материал из Xgu.ru

На этой странице рассматриваются вопросы создания и обслуживания программного RAID-массива в операционной системе Linux.

Содержание

[править] mdadm

Управление программным RAID-массивом в Linux выполняется с помощью программы mdadm.

У программы mdadm есть несколько режимов работы.

Assemble (сборка) Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам. Build (построение) Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются. Create (создание) Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве. Monitor (наблюдение) Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла. Grow (расширение или уменьшение) Расширение или уменьшение массива, включаются или удаляются новые диски. Incremental Assembly (инкрементальная сборка) Добавление диска в массив. Manage (управление) Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного. Misc (разное) Действия, которые не относятся ни к одному из перечисленных выше режимов работы. Auto-detect (автоообнаружение) Активация автоматически обнаруживаемых массивов в ядре Linux.

  • -A, --assemble — режим сборки
  • -B, --build — режим построения
  • -C, --create — режим создания
  • -F, --follow, --monitor — режим наблюдения
  • -G, --grow — режим расширения
  • -I, --incremental — режим инкрементальной сборки

[править] Настройка программного RAID-массива

Рассмотрим как выполнить настройку RAID-массива 5 уровня на трёх дисковых разделах. Мы будем использовать разделы:

В том случае если разделы иные, не забудьте использовать соответствующие имена файлов.

[править] Создание разделов

Нужно определить на каких физических разделах будет создаваться RAID-массив. Если разделы уже есть, нужно найти свободные (fdisk -l). Если разделов ещё нет, но есть неразмеченное место, их можно создать с помощью программ fdisk или cfdisk.

Просмотреть какие есть разделы:

Просмотреть, какие разделы куда смонтированы, и сколько свободного места есть на них (размеры в килобайтах):

[править] Размонтирование

Если вы будете использовать созданные ранее разделы, обязательно размонтируйте их. RAID-массив нельзя создавать поверх разделов, на которых находятся смонтированные файловые системы.

[править] Изменение типа разделов

Желательно (но не обязательно) изменить тип разделов, которые будут входить в RAID-массив и установить его равным FD (Linux RAID autodetect). Изменить тип раздела можно с помощью fdisk.

Читайте также:  Из за чего в скайпе сбиваются настройки микрофона

Рассмотрим как это делать на примере раздела /dev/hde1.

Аналогичным образом нужно изменить тип раздела для всех остальных разделов, входящих в RAID-массив.

[править] Создание RAID-массива

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

Если вы хотите сразу создать массив, где диска не хватает (degraded) просто укажите слово missing вместо имени устройства. Для RAID5 это может быть только один диск; для RAID6 — не более двух; для RAID1 — сколько угодно, но должен быть как минимум один рабочий.

[править] Проверка правильности сборки

Убедиться, что RAID-массив проинициализирован корректно можно просмотрев файл /proc/mdstat. В этом файле отражается текущее состояние RAID-массива.

Обратите внимание на то, как называется новый RAID-массив. В нашем случае он называется /dev/md0. Мы будем обращаться к массиву по этому имени.

[править] Создание файловой системы поверх RAID-массива

Новый RAID-раздел нужно отформатировать, т.е. создать на нём файловую систему. Сделать это можно при помощи программы из семейства mkfs. Если мы будем создавать файловую систему ext3, воспользуемся программой mkfs.ext3. :

Имеет смысл для лучшей производительности файловой системы указывать при создании количество дисков в рейде и количество блоков файловой системы которое может поместиться в один страйп ( chunk ), это особенно важно при создании массивов уровня RAID0,RAID5,RAID6,RAID10. Для RAID1 ( mirror ) это не имеет значения так как запись идет всегда на один device, a в других типах рейдов дата записывается последовательно на разные диски порциями соответствующими размеру stripe.Например если мы используем RAID5 из 3 дисков, с дефолтным размером страйпа в 64К и используем файловую систему ext3 с размером блока в 4К то можно вызывать команду mkfs.ext вот так:

stripe-width обычно расчитывается как stride * N ( N это дата диски в массиве — например в RAID5 — два дата диска и один parity ) Для неменее популярной файловой системы XFS надо указывать не количество блоков файловой системы соответствующих размеру stripe в массиве, а непосредственно размер самого страйпа

[править] Создание конфигурационного файла mdadm.conf

Система сама не запоминает какие RAID-массивы ей нужно создать и какие компоненты в них входят. Эта информация находится в файле mdadm.conf.

Строки, которые следует добавить в этот файл, можно получить при помощи команды

Вот пример её использования:

Если файла mdadm.conf ещё нет, можно его создать:

[править] Создание точки монтирования для RAID-массива

Поскольку мы создали новую файловую систему, вероятно, нам понадобится и новая точка монтирования. Назовём её /raid.

[править] Изменение /etc/fstab

Для того чтобы файловая система, созданная на новом RAID-массиве автоматически монтировалась при загрузке, добавим соответствующую запись в файл /etc/fstab хранящий список автоматически монтируемых при загрузке файловых систем.

Если мы объединяли в RAID-массив разделы, которые использовались раньше, нужно отключить их монтирование: удалить или закомментировать соответствующие строки в файле /etc/fstab. Закомментировать строку можно символом #.

[править] Монтирование файловой системы нового RAID-массива

Для того чтобы получить доступ к файловой системе, расположенной на новом RAID-массиве, её нужно смонтировать. Монтирование выполняется с помощью команды mount.

Если новая файловая система добавлена в файл /etc/fstab, можно смонтировать её командой mount -a (смонтируются все файловые системы, которые должны монтироваться при загрузке, но сейчас не смонтированы).

Можно смонтировать только нужный нам раздел (при условии, что он указан в /etc/fstab).

Если раздел в /etc/fstab не указан, то при монтировании мы должны задавать как минимум два параметра — точку монтирования и монтируемое устройство:

[править] Проверка состояния RAID-массива

Информация о состоянии RAID-массива находится в файле /proc/mdstat.

Если в файле информация постоянно изменяется, например, идёт пересборка массива, то постоянно изменяющийся файл удобно просматривать при помощи программы watch:

Как выполнить проверку целостности программного RAID-массива md0:

Как посмотреть нашлись ли какие-то ошибки в процессе проверки программного RAID-массива по команде check или repair:

Читайте также:  Настройка clover под свое железо

[править] Проблема загрузки на многодисковых системах

В некоторых руководствах по mdadm после первоначальной сборки массивов рекомендуется добавлять в файл /etc/mdadm/mdadm.conf вывод команды «mdadm —detail —scan —verbose»:

, в котором жёстко прописаны имена разделов (/dev/sda1, /dev/sda2 в приведённом примере).

Если после этого обновить образ начальной загрузки (в Debian вызвать ‘update-initramfs -u’ или ‘dpkg-reconfigure mdadm’), имена разделов запишутся в файл mdadm.conf образа начальной загрузки и вы не сможете загрузиться с массива, если конфигурация жёстких дисков изменится (нужные разделы получат другие имена). Для этого не обязательно добавлять или убирать жёсткие диски: в многодисковых системах их имена могут меняться от загрузки к загрузке.

Решение: записывать в /etc/mdadm/mdadm.conf вывод команды «mdadm —detail —scan» (без —verbose).

При этом в файле mdadm.conf будут присутствовать UUID разделов, составляющих каждый RAID-массив. При загрузке системы mdadm находит нужные разделы независимо от их символических имён по UUID.

mdadm.conf, извлечённый из образа начальной загрузки Debian:

Результат исследования раздела командой ‘mdadm —examine'»

Раздел c UUID 147c5847:dabfe069:79d27a05:96ea160b войдёт в состав массива, даже если станет /dev/sdb1 при очередной загрузке системы.

Вообще, существует 2 файла mdadm.conf, влияющих на автоматическую сборку массивов:

  • один при загрузке системы, записывется в образ начальной загрузки при его обновлении;
  • другой находится в каталоге /etc/mdadm/ и влияет на автосборку массивов внутри работающей системы.

Соответственно, вы можете иметь информацию:

1) в образе начальной загрузки (ОНЗ) и в /etc/mdadm/mdadm.conf;

2) только в ОНЗ (попадает туда при его создании обновлении);

3) только в /etc/mdadm/mdadm.conf;

В том месте, где есть mdadm.conf, сборка происходит по правилам; где нет — непредсказуемо.

Примечание: если вы не обновили ОНЗ после создания RAID-массивов, их конфигурация всё равно в него попадёт — при обновлении образа другой программой / при обновлении системы (но вы не будете об этом знать со всеми вытекающими).

[править] Дальнейшая работа с массивом

[править] Пометка диска как сбойного

Диск в массиве можно условно сделать сбойным, ключ --fail (-f):

[править] Удаление сбойного диска

Сбойный диск можно удалить с помощью ключа --remove (-r):

[править] Добавление нового диска

Добавить новый диск в массив можно с помощью ключей --add (-a) и --re-add:

[править] Сборка существующего массива

Собрать существующий массив можно с помощью mdadm --assemble. Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.

[править] Расширение массива

Расширить массив можно с помощью ключа --grow (-G). Сначала добавляется диск, а потом массив расширяется:

Проверяем, что диск (раздел) добавился:

Если раздел действительно добавился, мы можем расширить массив:

Опция —raid-devices указывает новое количество дисков используемое в массиве. Например, было 3 диска, а теперь расширяем до 4-х — указываем 4.

Рекомендуется задать файл бэкапа на случай прерывания перестроения массива, например добавить:

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

Убедитесь, что массив расширился:

Нужно обновить конфигурационный файл с учётом сделанных изменений:

[править] Возобновление отложенной синхронизации

P.S.: Если вы увидели « active (auto-read-only) » в файле /proc/mdstat , то возможно вы просто ничего не записывали в этот массив. К примеру, после монтирования раздела и любых изменений в примонтированном каталоге, статус автоматически меняется:

[править] Переименование массива

Для начала отмонтируйте и остановите массив:

Затем необходимо пересобрать как md5 каждый из разделов sd[abcdefghijk]1

[править] Удаление массива

Для начала отмонтируйте и остановите массив:

Затем необходимо затереть superblock каждого из составляющих массива:

Если действие выше не помогло, то затираем так:

[править] Создание пустого массива без сихронизации данных

Не каноничный метод, применять на дисках без данных!

Смотрим информацию по массивам и выбираем жертву

Предварительно разбираем массив

Создаем директорию для metadata файлов

Снимаем дамп metadata с одного из raid дисков

Источник

Adblock
detector