Инструменты пользователя

Инструменты сайта


mdadm:mdadm

mdadm

Управление устройствами типа MD (Linux Software RAID)

FIXME

Устройства RAID это виртуальные устроройства, созданные на базе одного или нескольких обычных блочных устройств. Это позволяет нескольким устройствам (обычно диски или их разделы) быть в одном устройстве, чтобы быть (например) в одной файловой системе. Некоторые уровни RAID включают резервирование и поэтому могут сохранять работоспособность в случае отказе определенного числа устройств.

Устройства Linux Software RAID работают через системный драйвер устройств md (Multiple Devices).

В настоящее время, Linux поддерживает Linear md, RAID0 (чередование), RAID1 (зеркалирование), RAID4, RAID5, RAID6, RAID10, MultiPath, Faulty, и Container.

  • MultiPath не является программным RAID, позволяющий создавать разные псевдо-дисковые устройства для одного физического диска на многоканальном физическом устройстве хранения.
  • Faultyis also not true RAID, and it only involves one device. It provides a layer over a true device that can be used to inject faults.
  • Container is different again. A Container is a collection of devices that are managed as a set. This is similar to the set of devices connected to a hardware RAID controller. The set of devices may contain a number of different RAID arrays each utilising some (or all) of the blocks from a number of the devices in the set. For example, two devices in a 5-device set might form a RAID1 using the whole devices.

The remaining three might have a RAID5 over the first half of each device, and a RAID0 over the second half.

With a CONTAINER, there is one set of metadata that describes all of the arrays in the container. So when mdadm creates a CONTAINER device, the device just represents the metadata. Other normal arrays (RAID1 etc) can be created inside the container.

Примеры использования

Установка

apt-get install mdadm

Настройка

mdadm [режим] <md_утройство> [options] <component-devices>

GRUB

Настройка GRUB

Установка GRUB

Установка GRUB на новый диск:

grub-install --recheck /dev/sdb

Режимы

mdadm имеет несколько основных режимов работы:

Сборка (Assemble)

Сборка the components of a previously created array into an active array. Components can be explicitly given or can be searched for. mdadm checks that the components do form a bona fide array, and can, on request, fiddle superblock information so as to assemble a faulty array.

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

Build

Build an array that doesn't have per-device metadata (superblocks). For these sorts of arrays, mdadm cannot differentiate between initial creation and subsequent assembly of an array. It also cannot perform any checks that appropriate components have been requested. Because of this, the Build mode should only be used together with a complete understanding of what you are doing.

Create

Create a new array with per-device metadata (superblocks). Appropriate metadata is written to each device, and then the array comprising those devices is activated. A 'resync' process is started to make sure that the array is consistent (e.g. both sides of a mirror contain the same data) but the content of the device is left otherwise untouched. The array can be used as soon as it has been created. There is no need to wait for the initial resync to finish.

Follow или Monitor

Monitor one or more md devices and act on any state changes. This is only meaningful for RAID1, 4, 5, 6, 10 or multipath arrays, as only these have interesting state. RAID0 or Linear never have missing, spare, or failed drives, so there is nothing to monitor.

Grow

Grow (или shrink) an array, or otherwise reshape it in some way.

Currently supported growth options including changing the active size of component devices and changing the number of active devices in Linear and RAID levels 0/1/4/5/6, changing the RAID level between 0, 1, 5, and 6, and between 0 and 10, changing the chunk size and layout for RAID 0,4,5,6,10 as well as adding or removing a write-intent bitmap.

Incremental Assembly

Add a single device to an appropriate array. If the addition of the device makes the array runnable, the array will be started.

This provides a convenient interface to a hot-plug system. As each device is detected, mdadm has a chance to include it in some array as appropriate. Optionally, when the –fail flag is passed in we will remove the device from any active array instead of adding it.

If a CONTAINER is passed to mdadm in this mode, then any arrays within that container will be assembled and started.

Manage

This is for doing things to specific components of an array such as adding new spares and removing faulty devices.

Misc

This is an 'everything else' mode that supports operations on active arrays, operations on component devices such as erasing old superblocks, and information gathering operations.

Auto-detect

This mode does not act on a specific device or array, but rather it requests the Linux Kernel to activate any auto-detected arrays.

Примеры

Замена диска в RAID 1

В данном примере приведена последовательность действий по замене диска в RAID 1 (зеркало).

  1. Физическая замена диска на новый
  2. При необходимости: Установка GRUB

Состояние

Состояние массивов выдаёт команда:

cat /proc/mdstat

То же самое но с обновлением:

watch cat /proc/mdstat

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

mdadm --create /dev/md/1 --metadata=1.2 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1

Добавление раздела в массив

Добавление раздела в массив

mdadm --manage /dev/md1 --add /dev/sdc1

Изменения статуса раздела на сбойный

mdadm --manage /dev/md1 --fail /dev/sdc1

Удаление раздела из массива

mdadm --manage /dev/md1 --remove /dev/sdc1

Вывод:

mdadm: hot removed /dev/sdc1 from /dev/md1

Удаление массива

Для начала нужно размонтировать и остановить массив:

umount /dev/md0
mdadm -S /dev/md0

Затем необходимо выполнить Удаление данных массива.

Удаление данных массива

Нужно очистить superblock каждого из составляющих массива:

mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sda2

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

dd if=/dev/zero of=/dev/sda1 bs=512 count=1
dd if=/dev/zero of=/dev/sda2 bs=512 count=1

resync=pending

Если режим синхронизации был прерван, resync=pending, то массив из состояния auto-read-only можно перевести командой:

mdadm --readwrite /dev/md/1 

How to clear up pending resync on RAID array

Вывод подробной информации

О всех устройствах

mdadm --detail --scan --verbose

О конкретном массиве

mdadm --detail /dev/md1

Создание двух массивов (по одному для каждого физического раздела)

mdadm --create /dev/md1 -l1 -n2 missing /dev/sdb1
mdadm --create /dev/md2 -l1 -n2 missing /dev/sdb2

Увеличение скорости работы

FIXME

Для увеличения скорости выполнения операции resync можно увеличить speed_limit_min

Пример:

cat /proc/sys/dev/raid/speed_limit_min
echo 50000 > /proc/sys/dev/raid/speed_limit_min

Мониторинг средствами Zabbix

FIXME

Template MD RAID

Необходимые файлы нужно загрузить с github.com, вот прямая ссылка.

На агенте нужно:

  • Скопировать userparameter_md.conf в /etc/zabbix/zabbix_agentd.conf.d/
  • Перезапустить агента:
     service zabbix-agent restart

На сервере нужно импортировать шаблон template_md.xml

Ссылки

Интересная концепция расположения RAID-массивов на устройствах разного размера

mdadm/mdadm.txt · Последние изменения: 2018-12-23 13:14 — GreyWolf