- Mdadm
- Содержание
- Просмотр состояния массивов [ править ]
- Команды [ править ]
- Получение информации о RAID-диске и его разделах [ править ]
- Создание массива [ править ]
- Расширение массива (добавление и замена дисков) [ править ]
- Удаление массива [ править ]
- Файл конфигурации mdadm.conf [ править ]
- Известные проблемы [ править ]
- Системное администрирование Linux
- Настройка программного RAID на Линукс
Mdadm
mdadm — утилита для управления программными RAID массивами в Linux (Linux Software Raid), ранее известная, как mdctl. MD — сокращение от Multiple Devices.
Содержание
Просмотр состояния массивов [ править ]
Информацию о состоянии активных массивов можно просмотреть в псевдо-файле /proc/mdstat
Команды [ править ]
С помощью mdadm можно выполнять 7 групп операций:
- Create — создание RAID-массива из нескольких дисков (с суперблоком на каждом устройстве).
- Assemble — сборка (ранее созданного) массива и его активация. Диски из которых собирается массив могут указываться явно или будет выполнен их автоматический поиск. mdadm проверяет, образуют ли компоненты корректный массив.
- Build — объединение дисков в массив (без суперблоков). Для таких массивов mdadm не различает создание и последующую сборку. Также невозможно проверить, были ли указаны необходимые устройства в верном порядке. Не используйте этот режим, если вы не знаете зачем это нужно.
- Manage — Управление массивом: добавление новых свободных дисков (spares) и удаление неработоспособных (faulty devices).
- Follow/Monitor — Следить за одним или несколькими md-устройствами и реагировать на изменение их состояния. Это имеет смысл только для массивов уровней 1, 4, 5, 6 или multipath-массивов, так как только они могут иметь различные состояния. raid0 или linear не могут иметь недостающих, запасных или сбойных дисков, поэтому там не за чем следить.
- Grow — расширение или уменьшение размера (shrink) массива, либо иное его реформирование (reshape). На данный момент поддерживается изменение активного размера компонентов в RAID-массивах уровней 1/4/5/6, а также изменение количества активных устройств в RAID1.
- Misc — прочие операции с независимыми дисками. Например: просмотр и модификация суперблоков массива и остановка активных массивов.
Получение информации о RAID-диске и его разделах [ править ]
Для определения того, является ли устройство массивом или его частью, можно использовать утилиту mdadm с ключом -Q (--query). Указанные в этом разделе операции относятся к группе прочих, но указывать ключ (--misc) не обязательно. Ключ -Q также можно не указывать — если в параметрах mdadm указано только дисковое устройства, то этот ключ подразумевается по умолчанию. В примере ниже проверяются три устройства:
- обычный раздел (не часть массива):
- раздел, являющийся частью массива:
- раздел диска, снятого с другого компьютера, где он был частью массива:
Более подробную информацию о массиве в целом или его части можно получить используя соответственно ключи -D (--detail) и -E (--examine). В обоих случаях выводится почти одинаковая информация, но с ключом -D нужно указывать имя массива, а с ключом -E указывается имя одного из разделов RAID-диска. Причем, массив должен быть запущен, а для раздела это не важно — главное, чтобы он был частью хоть какого-либо массива.
Создание массива [ править ]
Перед созданием массива следует создать для него устройство-идентификатор (если оно отсутствует): mknod /dev/md1 b 9 1; в данном случае создаётся идентификтор для массива с номером 1, что указывается в имени устройства и его коде (9 — это код устройства всех RAID-массивов, 1 — идентификатор). Желательно, чтобы разделы, из которых создаётся массив, имели одинаковый размер (хотя они могут располагаться на физических дисках разного размера и даже разного типа). При создании этих разделов следует присвоить им тип fd («Linux raid autodetect»). Не следует создавать массив из разделов, размещающихся на одном физическом диске — хотя это и возможно, это совершенно бессмысленно и приведет к существенному снижению быстродействия дисковой подсистемы. Интересной идеей является создание массива из USB-флеш дисков с целью повышения скорости, но из-за низкой надёжности USB портов система будет менее надёжна, чем массив из жёстких дисков.
Этот пример создаёт массив RAID 1 из двух разделов: один из hda и второй из hdc. Несколько дисков можно указывать с помощью шаблона, например /dev/sd[ac]2 или /dev/sd[a-f]1.
- --create (или сокращённо -С): команда создания
- /dev/md0: имя устройства создаваемого виртуального раздела
- --level=1 (или сокращённо -l 1): уровень RAID. См. справочник по использованию mdadm (используйте «man mdadm» в командной строке)
- --raid-devices=2 (или сокращённо -n 2): количество устройств
- /dev/hda3: первый диск в массиве
- /dev/hdc3: второй диск
Если на момент создания массива диска нет (например, при переходе на RAID) вместо имени диска просто напишите missing. Команда завершается сразу, обычно выдавая сообщение mdadm: array /dev/mdХ started. При этом уже сразу можно использовать массив. Фактически массив строится в фоновом режиме, прогресс можно посмотреть в файле /proc/mdstat; там же указывается предположительное время завершения построения массива.
После создания RAID-раздела можно создать на нем файловую систему как на обычном разделе диска. Созданный и отформатированный RAID-раздел можно использовать как корень файловой системы (но для этого поддержка RAID должна быть встроена в ядро, а не как загружаемый модуль). Не следует создавать RAID-массив для своп-раздела — система сама обнаружит своп-разделы на разных дисках и будет использовать их по принципу RAID-массива. Не забудьте добавить соответствующую строку в файл конфигурации /etc/fstab, чтобы RAID-раздел монтировался автоматически при загрузке системы.
Примечание: При создании raid-массива первого уровня (зеркала) с целью повышения отказоустойчивости системы рекомендуется разделы swap также объединять в массив. При использовании swap-разделов вне raid при отказе одного диска может случиться крах системы (если на поломавшийся диск была выгружена часть страниц памяти). При объединении в raid-массив разделов swap такого не произойдет, т.к. выгружаемая страница будет присутствовать на обоих дисках. Часто используемое разбиение
Расширение массива (добавление и замена дисков) [ править ]
Эта команда добавляет новый «диск» (а вернее раздел) в массив md0. Добавленный диск считается пустым и резервным. Его можно использовать для расширения размера массива или он будет автоматически использован (в массивах, обеспечивающих отказоустойчивость) в качестве замены для вышедшего из строя диска.
Для расширения размера массива (если конечно тип массива допускает расширение) указывается ключ -G (--grow) и новое число дисков массива с помощью ключа -nX (--raid-devices=X).
Процесс реструктурирования массива выполняется в фоновом режиме и обычно занимает много часов. Наблюдать за ходом процесса можно просматривая файл /proc/mdstat. В принципе можно расширять и смонтированные массивы — это не опасно, но это увеличивает время реструктуризации. По умолчанию, скорость реструктуризации ограничена, но ее можно изменить
Расширение массива не увеличивает автоматически размер файловой системы на ней находящийся. Поэтому затем нужно расширить файловую систему явно. Для того чтобы удостовериться, что расширение произошло без ошибок можно проверить целостность файловой системы.
Удаление массива [ править ]
Очищаем суперблоки RAID на разделах, из которых собран массив.
Файл конфигурации mdadm.conf [ править ]
Иногда требуется вручную добавлять информацию в файл mdadm.conf. Взять ее можно, выполнив команду
В результате нам будет выведена информация вида:
Её и добавляем в файл mdadm.conf
Известные проблемы [ править ]
Частая ошибка при создании RAID устройств заключается в том, что dmraid-driver берет управление над всеми устройствами, которые должны были использоваться в новом RAID устройстве. Будет выдано сообщение об ошибке такого вида
Чтобы решить эту проблему, вы должны собрать новый образ initrd(initramfs) без dmraid-driver. Пример для ядра «2.6.18-8.1.6.el5»-kernel:
После этого, система должна быть перезагружена с новым initrd(initramfs). Отредактируйте ваш /boot/grub/grub.conf чтобы указать новый initrd(initramfs).
Если по каким-то причинам собрать новый образ initrd(initramfs) нет возможности, может помочь команда
Если один из компонентов массива переходит в статус «Failed», то обычно помогает его ручное удаление из массива, а затем – добавление заново. Например:
Чтобы отключить раздел диска из компонентов массива будет недостаточно выполнить команду:
необходимо сначала пометить его как поврежденный
после уже удалить его
и вновь добавить
При повторении этой ситуации следует проверить дисковый накопитель на исправность.
Невозможно удалить поврежденный диск, поскольку он отсутствует физически.
Решение: удалить все диски удаленные из системы.
где -r удалить из массива
detached -недоступные системе
Источник
Системное администрирование Linux
2018-06-25 11:27:07 9671 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.
Источник