2012-02-26

Шпора по mdadm

pc:/home/user # mdadm -C /dev/md3 -a yes --level=1 --raid-devices=1 /dev/sda5
mdadm: '1' is an unusual number of drives for an array, so it is probably
a mistake. If you really mean it you will need to specify --force before
setting the number of drives.
pc:/home/user # mdadm -C /dev/md3 -a yes --level=1 --raid-devices=2 /dev/sda5 missing
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
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md3 started.





Взято из: http://itday.org.ua/2011/02/22/mdadm-manage-%d0%bd%d1%83-%d0%b8%d0%bb%d0%b8-fail-event-on-devmd0/

Так сказать, что делать и куда бежать…
Делать будем следующее:

#чтобы уж наверняка понять что к чему
mdadm -D /dev/md0

#изымаем из рейда
mdadm --manage /dev/md0 --remove /dev/sdb1

#забиваем нолями (как показывает практика в итоге очень увеличивает
скорость синхронизации)
dd if=/dev/zero of=/dev/sdb1

#возвращаем обратно
mdadm --manage /dev/md0 --add /dev/sdb1

#так сказать мониторим процесc собрания сего чуда обратно
watch -n 3 cat /proc/mdstat

Вот вроде как и всё. Хотя если данная ситуация будет повторятся следует более внимательно посмотреть на Ваши винчестеры ибо быть может с ними чего-то не так.
P.S. Имена разделов RAID и томов винчестера приведены для примера, так сказать Вы предупреждены.





http://habrahabr.ru/tag/mdadm/
http://habrahabr.ru/blogs/sysadm/100952/
http://www.chla.ru/index.php/linux/148-mod363
http://ruslandh.narod.ru/howto_ru/Boot-Root-Raid-LILO/Boot-Root-Raid-LILO-4.html



из IBM http://www.ibm.com/developerworks/ru/library/l-soft-raid/index.html:



Введение

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


Концепция RAID

RAID (англ. Redundant Array of Independent Disks - избыточный массив независимых дисков) (хотя более точной, возможно, будет "вольная интерпретация": массив независимых дисков с избыточным ресурсом) - это аппаратная или программная подсистема, в которой хранимые данные распределяются (часто с дублированием) по нескольким жёстким дискам (физическим или виртуальным). Наиболее эффективной, как с точки зрения надёжности, так и с точки зрения производительности, является аппаратная RAID-подсистема. Тем не менее, программная реализация также может принести немалую пользу, и в Linux есть все необходимые компоненты для организации программного RAID-массива.

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



Различные типы RAID-массивов

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

На уровне RAID 0 два или более диска используются только для повышения производительности, поскольку разделяют между собой данные при чтении/записи. Здесь "избыточность" фактически отсутствует.

Массив RAID 1 является первым уровнем, обеспечивающим избыточность. Этот режим часто называют "зеркалированием" (mirroring), поскольку данные дублируются на всех дисках массива. Степень надёжности возрастает, но производительность операции записи снижается, так как запись одних и тех же данных выполняется несколько раз. Для организации RAID 1 требуется не менее двух дисков.


Особенностью массива RAID 4 является отдельный диск для записи информации о контроле чётности данных. Таким образом, узким местом этой подсистемы становятся периоды ожидания при записи именно на этот диск. По этой причине рекомендуется пользоваться RAID 5 во всех случаях, кроме тех, в которых применение RAID 4 крайне необходимо и обосновано.

В массиве RAID 5 при записи разделяются и данные, и информация о контроле чётности. Поэтому RAID 5 считался наиболее эффективным и экономичным уровнем до появления новых разработок в этой области: RAID 5EE, RAID 6, RAID 10 и комбинированных уровней RAID 1+0, RAID 5+0, RAID 1+5. Для организации массива RAID 5 требуется не менее трёх дисков.


О дальнейшем развитии концепции RAID-массивов можно узнать на указанных выше страницах Wikipedia. Особый интерес представляет сравнение "RAID 10 versus RAID 5 in Relational Databases" на англоязычной странице.

Поддержка программной реализации RAID появилась в ядре Linux, начиная с версии 2.0, хотя для практического использования первая версия вряд ли годилась: возможности её были весьма ограничены, и содержала она изрядное количество ошибок. Начиная с ядер версии 2.4 ситуация улучшилась, и современные реализации RAID в Linux вполне пригодны для практического применения.



Создание и конфигурирование RAID-массива

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

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


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

Итак, для начала в VirtualBox необходимо создать собственно виртуальную машину для Linux (с ядром версий 2.6), выбрать для неё подходящий размер памяти и создать три жёстких диска с одинаковым объёмом (по 20 Гб для каждого диска будет вполне достаточно). После загрузки Linux-системы (можно использовать любой live-DVD или его ISO-образ) для работы потребуется эмулятор терминала (текстовой консоли).

Для разметки разделов на диске можно воспользоваться утилитой fdisk, но более удобной является её "наследница" cfdisk с псевдографическим интерфейсом, которую можно запустить из консоли следующей командой:

cfdisk /dev/sda



После запуска следует создать раздел свопинга (например, размером 1ГБ), а оставшееся пространство (19 ГБ) отдать корневому разделу. При этом важно установить для обоих разделов тип Linux RAID (шестнадцатеричный код fd). После этого нужно обязательно записать сделанные изменения и выйти из cfdisk.


Теперь необходимо выполнить точно такую же разбивку разделов на двух других дисках. Эта операция без затруднений выполняется с помощью другой полезной утилиты, позволяющей управлять дисковыми разделами:

sfdisk -d /dev/sda | sfdisk /dev/sdb
  sfdisk -d /dev/sda | sfdisk /dev/sdc


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

В результате будут получены три диска с одинаковыми разделами и установленным типом Linux RAID. Теперь можно приступать непосредственно к созданию RAID-массива.




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


Для создания RAID-массива потребуется утилита mdadm из одноимённого пакета. Сама операция создания выполняется с помощью команд, приведенных в листинге 1.


Листинг 1. Создание дисков RAID-массива
mdadm --create /dev/md0 --metadata=0.90 --level=1 --raid-devices=3 \
      /dev/sda1 /dev/sdb1 /dev/sdc1
mdadm --create /dev/md1 --metadata=0.90 --level=1 --raid-devices=3 \
      /dev/sda2 /dev/sdb2 /dev/sdc2


Первый ключ команды обязательно должен определять основной режим функционирования mdadm. В данном случае используется ключ --create (краткая форма -C) - режим создания. После этого ключа указывается имя создаваемого RAID-устройства.


Ключ --metadata (краткая форма -e) определяет используемый для данного диска формат метаданных (суперблока). Значение 0.90 (а также его аналоги 0 и default) при создании RAID-массива используется по умолчанию, поэтому в приведённом примере его можно было бы и не включать в команду. Формат 0.90 допускает использование в RAID-массиве до 28 устройств-компонентов, а также определяет максимальный размер этих устройств (не более 2 ТБ).


Ключ --level=1 определяет уровень RAID-массива. Ключ --raid-devices=3 определяет количество устройств-компонентов в создаваемом RAID-массиве. Завершает командную строку список устройств, из которых будет сформирован RAID-массив.



Запуск в эксплуатацию

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

mkswap /dev/md0 setup



Установка Linux-системы выполняется в "штатном" режиме за исключением одной особенности: при выборе разделов вместо привычных /dev/sda1 и /dev/sda2 пользователю предлагаются /dev/md0 и /dev/md1 соответственно. Загрузчик, разумеется, должен быть установлен в MBR.

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

Если в установленной Linux-системе используется загрузчик grub, то в файл /boot/grub/grub.conf необходимо внести следующие изменения:


  • в строке splashimage=... имя раздела (hd0,1) заменяется на имя (md0,1)
  • в строке root (hd0,1) аналогичным образом выполняется замена на (md0,1)

Если система загружается с помощью lilo (этот загрузчик всё ещё используется в некоторых дистрибутивах), то потребуется отредактировать файл /etc/lilo.conf:

  • добавить в начальной (общей) секции строку: raid-extra-boot = mbr-only
  • заменить строку boot = /dev/sda на строку boot = /dev/md0

После сохранения и выхода из редактора обязательно нужно активизировать внесённые изменения командой lilo.

Теперь можно перезагрузить систему и проверить, как работает система на RAID-массиве.



Учёт и контроль

Текущее состояние RAID-подсистемы в структуре ядра отражает файл /proc/mdstat. Следует отметить, что для его просмотра требуются полномочия суперпользователя. Информация из этого файла особенно важна в тех случаях, когда в RAID-массив добавляется новый диск (или заменяется испорченный диск) или одно из устройств-компонентов удаляется из RAID-массива.

Команда mdadm сама по себе выполняет активизацию RAID-массива и в принципе не требует наличия файла конфигурации, но будет обращаться к нему, если в явной форме указано его имя ("стандартное" имя - /etc/mdadm.conf). Использование файла конфигурации рекомендуется по двум причинам:


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

Команда mdadm --detail --scan позволяет получить значения текущих параметров настройки RAID-массива. Но для извлечения более подробной информации следует воспользоваться следующей комбинацией команд (опять же, потребуются права root):

echo 'DEVICE /dev/sd*[0-9]' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf





Управление RAID-массивом

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

Если третий диск снова подключить и ещё раз перезагрузить систему в виртуальной машине, то вновь подключённый диск будет обнаружен, но синхронизация с первыми двумя RAID-дисками не будет выполнена. Дело в том, что эта операция должна выполняться вручную. Для продолжения "эксперимента" теперь следует полностью удалить третий диск из виртуальной машины и создать точно такой же новый, чтобы имитировать замену испорченного физического жёсткого диска на исправный.

Текущее состояние RAID-массива проверяется по содержимому вышеупомянутого файла /proc/mdstat. После удаления третьего диска содержимое этого файла будет выглядеть приблизительно так, как на рисунке 1.




Рисунок 1. Фрагмент файла /proc/mdstat - один из дисков отсутствует


Рисунок 1. Фрагмент файла /proc/mdstat - один из дисков отсутствует



Из показанного фрагмента понятно, что в настоящий момент функционируют только два RAID-диска из трёх, а о том, какое именно устройство-компонент отсутствует, сообщает параметр [UU_] - первые два устройства задействованы, на месте последнего - символ подчёркивания.

Если предположить, что третий диск в конфигурации виртуальной машины вновь создан, то необходимо скопировать разделы со всеми их характеристиками с одного из работающих RAID-дисков с помощью уже описанной выше команды:

sfdisk -d /dev/sda | sfdisk /dev/sdc


После этого подготовленный "новый" диск добавляется в существующий RAID-массив:

mdadm /dev/md0 -a /dev/sdc1
mdadm /dev/md1 -a /dev/sdc2



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



Дополнительные замечания

Имитировать отказ одного из RAID-дисков можно и с помощью специальных ключей команды mdadm, как показано ниже:

mdadm /dev/md0 --set-faulty /dev/sdc1
или
mdadm /dev/md0 --fail /dev/sdc1


После того, как диск объявлен "неработающим", его можно удалить из RAID-массива:


mdadm /dev/md0 --remove /dev/sdc1


Сразу после логического удаления устройства-компонента его можно заменить физически. Ещё раз следует отметить, что "аппаратные" жёсткие диски настоятельно рекомендуется заменять только идентичными устройствами, а компоненты в виде логических разделов непременно должны быть заменены разделами точно такого же размера.

Когда замена устройства-компонента проведена, можно добавить обновлённый компонент в RAID-массив с помощью упоминавшейся выше команды:

mdadm /dev/md0 --add /dev/sdc1




Заключение

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





Об авторе

Алексей Снастин - независимый разработчик ПО, консультант и переводчик с английского языка технической и учебной литературы по ИТ. Принимал участие в разработке сетевых офисных приложений типа клиент/сервер на языке С в среде Linux.






Из: http://linuxshare.ru/docs/admin/ud_sraid.html
Примеры

1. Как посмотреть состояние всех RAID-массивов, запущенных в системе:

cat /proc/mdstat

2. Как посмотреть процент выполнения (состояние выполнения) процесса сборки/синхронизации/проверки программного RAID-массива:

cat /proc/mdstat

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

echo 'check' >/sys/block/md0/md/sync_action

4. Как выполнить пересинхронизацию программного RAID-массива md0:

echo 'repair' >/sys/block/md0/md/sync_action

5. Как снизить скорость синхронизации программного RAID-массива md0 в процессе восстановления (система и так слишком нагружена):

echo скорость >/sys/block/md0/md/sync_speed_max

где скорость задаётся в кбайт/сек

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

cat /sys/block/md0/md/mismatch_cnt

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

Отправить комментарий