====== mdadm ====== Управление устройствами типа MD (Linux Software ''[[raid:raid|RAID]]'') Устройства RAID это виртуальные устроройства, созданные на базе одного или нескольких обычных блочных устройств. Это позволяет нескольким устройствам (обычно диски или их разделы) быть в одном устройстве, чтобы быть (например) в одной файловой системе. Некоторые уровни RAID включают резервирование и поэтому могут сохранять работоспособность в случае отказе определенного числа устройств. Устройства Linux Software RAID работают через системный драйвер устройств ''md'' (Multiple Devices). В настоящее время, Linux поддерживает: * Linear md * RAID 0 (чередование) * RAID 1 (зеркалирование) * RAID 4 * RAID 5 * RAID 6 * RAID 10 * 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. ====== Примеры использования ====== [[examples:mdadm_lvm|Работа c MDadm+LVM]] [[examples:mdadm_raid1_lvm_failover|Отказоустойчивая схема работы MDadm+LVM]] ====== Установка ====== apt-get install mdadm ====== Настройка ====== mdadm [режим] [options] ===== GRUB ===== Настройка [[grub:grub#mdadm|GRUB]] ==== Установка 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:raid|RAID]] 1 (зеркало). - [[#Изменения статуса раздела на сбойный]] - [[#Удаление раздела из массива]] - Физическая замена диска на новый - [[sfdisk:sfdisk|Копирование таблицы разделов]] - [[#Добавление раздела в массив]] - При необходимости: [[#Установка 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 [[https://blog.sleeplessbeastie.eu/2015/03/23/how-to-clear-up-pending-resync-on-raid-array/|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 **[[https://share.zabbix.com/cat-server-hardware/template-md-raid|Template MD RAID]]** Необходимые файлы нужно загрузить с [[https://github.com/krom/zabbix_template_md|github.com]], вот прямая [[https://github.com/krom/zabbix_template_md/archive/master.zip|ссылка]]. На агенте нужно: * Скопировать ''userparameter_md.conf'' в ''/etc/zabbix/zabbix_agentd.conf.d/'' * Перезапустить агента: service zabbix-agent restart На сервере нужно импортировать шаблон ''template_md.xml'' ====== Ссылки ====== MDADM(8) v3.3.2 http://neil.brown.name/blog/mdadm [[wpru>Mdadm]] **[[http://xgu.ru/wiki/mdadm|xgu.ru : Программный RAID в Linux]]** [[http://vladimir-stupin.blogspot.ru/2013/09/mdadm.html|Решение проблемы с зеркалом mdadm после обновления ядра]] [[http://www.dtulyakov.ru/content/mdadm-utilita-dlya-upravleniya-programmnymi-raid-massivami-v-linux-linux-software-raid-ranee|mdadm — утилита для управления программными RAID массивами в Linux (Linux Software Raid), ранее известная, как mdctl. MD — сокращение от Multiple Devices]] **[[http://vladimir-stupin.blogspot.ru/2013/10/debian-raid-1.html|Перевод работающей системы Debian на RAID 1]]** **[[http://xgu.ru/wiki/Установка_Debian_на_Linux_RAID|Установка Debian на Linux RAID]]** [[https://wiki.archlinux.org/index.php/Software_RAID_and_LVM|ArchLinux : Software RAID and LVM]] [[http://www.opennet.ru/base/sys/linux_lvm2.txt.html|Управление дисковым пространством в Linux с помощью LVM (linux disk lvm partition raid)]] **[[http://debian-handbook.ru/advanced-administration.html|Глава 12. Углублённое администрирование]]** [[https://wiki.debian.org/DebianInstaller/SoftwareRaidRoot|DebianInstaller SoftwareRaidRoot]] [[http://megapuper.ru/mediawiki/index.php/Софтовый_RAID-1_с_LVМ_на_Debian|Софтовый RAID-1 с LVМ на Debian]] [[http://blog.dtulyakov.ru/2015/01/mdadm.html|mdadm — утилита для управления программными RAID массивами в Linux (Linux Software Raid), ранее известная, как mdctl. MD — сокращение от Multiple Devices ]] [[http://www.mythtv.org/wiki/LVM_on_RAID|LVM on RAID]] [[http://avreg.net/howto_software-raid-replacing-faulty-drive.html|Замена сбойного диска в программном RAID массиве]] [[https://romanrm.net/mdadm-raid|Заметки о программном RAID с помощью mdadm]] **[[http://habrahabr.ru/post/122379/|shared hotspare для mdadm]]** [[http://www.idimmu.net/2014/03/26/speeding-up-mdadm-raid-rebuilds/|Speeding Up MDADM RAID Rebuilds]] [[http://www.logix.cz/michal/devel/nagios/nagios-linux-swraid.pl|nagios-linux-swraid.pl]] **https://wiki.dieg.info/mdadm** **[[https://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/|Замена диска в програмном RAID1 в Linux]]** [[https://serveradmin.ru/vosstanovlenie-tabliczy-razdelov-v-linux/|Восстановление таблицы разделов в Linux | serveradmin.ru]] ===== Интересная концепция расположения RAID-массивов на устройствах разного размера ===== [[http://www.vigneras.name/pierre/wp/2010/04/14/prouhd-raid-for-the-end-user/|PROUHD: RAID for the end-user]] {{:mdadm:prouhd.pdf|PROUHD: RAID for the end-user}} {{tag>Prepare_Storage_Device Linux RAID}}