Удалить диск из массива
RAID-массивы обеспечивают повышенную производительность и избыточность путем объединения отдельных дисков в виртуальные запоминающие устройства. В Linux утилита mdadm упрощает создание и управление программными RAID-массивами.
Предыдущий мануал помог вам создать RAID-массив с помощью mdadm в Ubuntu 16.04. В этом мануале вы узнаете, как использовать mdadm для управления массивами – в большинстве случаев это очень просто.
Создание файла mdadm.conf
В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ ' >> /etc/mdadm/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=proxy.dmosk.local:0 UUID=411f9848:0fae25f9:85736344:ff18e41d
* в данном примере хранится информация о массиве /dev/md0 — его уровень 1, он собирается из 2-х дисков.
Запасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
Диском Hot Spare станет тот, который просто будет добавлен к массиву:
mdadm /dev/md0 --add /dev/sdd
Информация о массиве изменится, например:
.
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
2 8 48 1 active sync /dev/sdc
3 8 32 - spare /dev/sdd
Проверить работоспособность резерва можно вручную, симулировав выход из строя одного из дисков:
mdadm /dev/md0 --fail /dev/sdb
И смотрим состояние:
.
Rebuild Status : 37% complete
.
Number Major Minor RaidDevice State
3 8 32 0 spare rebuilding /dev/sdd
2 8 48 1 active sync /dev/sdc
0 8 16 - faulty /dev/sdb
.
* как видим, начинается ребилд. На замену вышедшему из строя sdb встал hot-spare sdd.
Создание файловой системы
Файловую систему в массиве можно создать с помощью mkfs, например:
Для лучшей производительности файловой системы имеет смысл указывать при её создании количество дисков в рейде и количество блоков файловой системы, которое может поместиться в один страйп (chunk), это касается массивов уровня RAID0, RAID5 ,RAID6 ,RAID10. Для RAID1 (mirror) это не имеет значения так как запись идет всегда на один device, a в других типах массивов данные записываются последовательно на разные диски порциями, соответствующими размеру stripe. Например, если мы используем RAID5 из 3 дисков с дефолтным размером страйпа в 64К и файловую систему ext3 с размером блока в 4К то можно вызывать команду mkfs.ext3 так:
stripe-width обычно рассчитывается как
где N — это диски с данными в массиве, например, в RAID5 два диска с данными и один parity для контрольных сумм. Для файловой системы XFS нужно указывать не количество блоков файловой системы, соответствующих размеру stripe в массиве, а размер самого страйпа:
Добавить диск к массиву
В данном примере рассмотрим вариант добавления активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
Добавляем диск к массиву:
mdadm /dev/md0 --add /dev/sde
4 8 16 - spare /dev/sde
Теперь расширяем RAID:
mdadm -G /dev/md0 --raid-devices=3
* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.
Расширение массива
Расширить массив можно с помощью ключа --grow (-G). Сначала добавляется диск, а потом массив расширяется:
Проверяем, что диск добавился:
Если диск добавился, расширяем массив:
Опция --raid-devices указывает новое количество дисков в массиве с учётом добавленного. Рекомендуется задать файл бэкапа на случай прерывания перестроения массива, например, добавить опцию:
При необходимости, можно регулировать скорость процесса расширения массива, указав нужное значение в файлах:
- /proc/sys/dev/raid/speed_limit_min
- /proc/sys/dev/raid/speed_limit_max
Убедитесь, что массив расширился:
Нужно обновить конфигурационный файл с учётом сделанных изменений:
2: Сбор информации о компонентах
Вы также можете использовать mdadm для запроса отдельных компонентных устройств.
Параметр -Q при использовании с компонентным устройством сообщает вам массив, в который он входит, и его роль в этом массиве:
sudo mdadm -Q /dev/sdc
/dev/sdc: is not an md array
/dev/sdc: device 2 in 4 device active raid10 /dev/md0. Use mdadm --examine for more detail.
Более подробную информацию можно получить с помощью опции -E или –examine:
sudo mdadm -E /dev/sdc
/dev/sdc:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d
Name : mdadmwrite:0 (local to host mdadmwrite)
Creation Time : Mon Aug 8 21:19:06 2016
Raid Level : raid10
Raid Devices : 4
Avail Dev Size : 209584128 (99.94 GiB 107.31 GB)
Array Size : 209584128 (199.88 GiB 214.61 GB)
Data Offset : 131072 sectors
Super Offset : 8 sectors
Unused Space : before=130984 sectors, after=0 sectors
State : active
Device UUID : b0676ef0:73046e93:9d9c7bde:c80352bb
Update Time : Mon Aug 8 21:36:36 2016
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 8be1be96 - correct
Events : 18
Layout : near=2
Chunk Size : 512K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
Эта информация аналогична той, которая отображается при использовании опции -D с устройством массива, но сфокусирована на отношении конкретного компонентного устройства к массиву.
Массивы RAID 0
Поскольку массивы RAID 0 не могут поддерживать запасные диски (они не смогут восстановить поврежденный массив RAID 0), вы можете добавить диск как новое активное устройство.
Сначала выясните текущее количество RAID-устройств в массиве:
sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 10 19:17:14 2016
Raid Level : raid0
Array Size : 209584128 (199.88 GiB 214.61 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
. . .
Теперь можно увеличить количество RAID-устройств:
sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc
mdadm: level of /dev/md0 changed to raid4
mdadm: added /dev/sdc
Это нормально и ожидаемо. Массив вернется в RAID 0, когда данные будут перераспределены на все существующие диски.
Вы можете проверить процесс, набрав:
После завершения синхронизации измените размер файловой системы, чтобы использовать дополнительное пространство:
sudo resize2fs /dev/md0
Создание рейда
Для сборки избыточного массива применяем следующую команду:
mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/sd
- /dev/md0 — устройство RAID, которое появится после сборки;
- -l 1 — уровень RAID;
- -n 2 — количество дисков, из которых собирается массив;
- /dev/sd — сборка выполняется из дисков sdb и sdc.
Мы должны увидеть что-то на подобие:
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
mdadm: size set to 1046528K
Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:
Continue creating array? y
Мы увидим что-то на подобие:
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
. и находим информацию о том, что у наших дисков sdb и sdc появился раздел md0, например:
.
sdb 8:16 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
sdc 8:32 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
.
* в примере мы видим собранный raid1 из дисков sdb и sdc.
Проверка целостности
Для проверки целостности вводим:
echo 'check' > /sys/block/md0/md/sync_action
Результат проверки смотрим командой:
* если команда возвращает 0, то с массивом все в порядке.
echo 'idle' > /sys/block/md0/md/sync_action
3: Чтение информации в /proc/mdstat
Чтобы получить подробную информацию о каждом собранном массиве на вашем сервере, проверьте файл /proc/mdstat. Чаще всего это лучший способ определить текущий статус активных массивов в вашей системе:
cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0] 209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] unused devices:
Этот файл содержит очень много информации, представленной в короткой форме.
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] Строка Personalities описывает уровни RAID и текущую конфигурацию ядра.
Строка, начинающаяся с md0 – это начало описания устройства RAID. Строка или строки с отступом, которые идут после нее, также описывают это устройство.
. . .
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0] . . .
В первой строке указано, что массив активен (работает без ошибок) и настроен как RAID 10. Далее перечислены компоненты, которые были использованы для сборки массива. Цифры в скобках описывают текущую «роль» устройства в массиве (это влияет на то, какие копии данных передаются устройством).
. . .
209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] . . .
Вторая строка в этом примере определяет количество блоков, предоставляемых виртуальными устройствами, версию метаданных (здесь – 1.2) и размер блока массива. Поскольку это массив RAID 10, он также содержит информацию о топологии массива (здесь массив настроен для хранения двух копий каждого фрагмента данных по типу «near»).
Элементы в квадратных скобках представляют имеющиеся в настоящее время устройства из здорового набора. Первое число в скобках указывает размер здорового массива, а второе число – количество доступных в настоящее время устройств. Следующие скобки – это визуальная индикация состояния массива, где «U» представляет здоровые устройства, а «_» – неисправные.
. . .
[>. ] resync = 0.9% (2032768/209584128) finish=15.3min speed=225863K/sec
. . .
Это описывает текущую работу и прогресс несколькими различными способами, а также определяет текущую скорость и расчетное время до завершения.
Определив, какие массивы в настоящее время работают в вашей системе, вы можете предпринять следующий ряд действий.
Требования
- Сервер Ubuntu 16.04, настроенный по этому мануалу.
- Один или несколько RAID-массивов (создать их можно по этому мануалу).
Создание файловой системы и монтирование массива
Создание файловой системы для массива выполняется также, как для раздела:
* данной командой мы создаем на md0 файловую систему ext4.
Примонтировать раздел можно командой:
mount /dev/md0 /mnt
* в данном случае мы примонтировали наш массив в каталог /mnt.
Чтобы данный раздел также монтировался при загрузке системы, добавляем в fstab следующее:
/dev/md0 /mnt ext4 defaults 1 2
Для проверки правильности fstab, вводим:
Мы должны увидеть примонтированный раздел md, например:
/dev/md0 990M 2,6M 921M 1% /mnt
Сборка RAID
Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива.
Массивы RAID 5 или 6
Начните с добавления нового устройства в качестве запасного, как показано в последнем разделе:
sudo mdadm /dev/md0 --add /dev/sde
Определите текущее количество RAID-устройств в массиве:
sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 10 18:38:51 2016
Raid Level : raid5
Array Size : 209584128 (199.88 GiB 214.61 GB)
Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
. . .
Как видите, в этом примере массив настроен на активное использование трех устройств, а всего в массиве доступно четыре устройства (потому что мы добавили запасной диск).
Теперь переконфигурируйте массив, чтобы настроить его для использования дополнительного активного устройства. При увеличении массива RAID 5 или RAID 6 важно включить дополнительный параметр –backup-file. Он должен указывать на расположение вне массива, где будет храниться файл резервной копии, содержащий критически важную информацию.
Примечание: Файл резервной копии используется только в течение очень короткого, но критического момента во время этого процесса, после чего он будет автоматически удален. Поскольку он необходим в течение очень короткого времени, вы, вероятно, никогда не увидите файл на диске, но в случае, если что-то пойдет не так, его можно использовать для перестройки массива. Если вы хотите узнать больше, читайте этот пост.
sudo mdadm --grow --raid-devices=4 --backup-file=/root/md0_grow.bak /dev/md0
Следующий вывод говорит о том, что критическая информация скопирована в файл:
mdadm: Need to backup 3072K of critical section..
Массив начнет перенастраиваться с дополнительным активным диском. Чтобы просмотреть ход синхронизации данных, введите:
После перенастройки вам нужно будет расширить файловую систему в массиве, чтобы использовать дополнительное пространство:
sudo resize2fs /dev/md0
7: Увеличение количества активных устройств в массиве
Можно увеличить массив, увеличив количество активных устройств внутри сборки. Точная процедура зависит от уровня RAID, который вы используете.
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
mdadm --assemble --scan
* данная команда сама найдет необходимую конфигурацию и восстановит RAID.
Также, мы можем указать, из каких дисков пересобрать массив:
mdadm --assemble /dev/md0 /dev/sdb /dev/sdc
5: Запуск массива
Чтобы запустить все массивы, определенные в конфигурации или в /proc/mdstat, введите:
sudo mdadm --assemble --scan
Чтобы запустить конкретный массив, вы можете передать его в качестве аргумента в mdadm –assemble:
sudo mdadm --assemble /dev/md0
Это сработает, если массив определен в конфигурации.
Если же в файле конфигурации нет правильного определения массива, его все равно можно запустить, передав компонентные устройства:
sudo mdadm --assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Собрав массив, его можно смонтировать как обычно:
sudo mount /dev/md0 /mnt/md0
Теперь массив доступен в точке монтирования.
8: Удаление устройства из массива
Диски удаляют из массива RAID, если произошла ошибка или если нужно отключить диск.
Сначала пометьте устройство, которое нужно удалить, как нерабочее. Вы можете проверить наличие нерабочих устройств в массиве с помощью команды mdadm –detail:
sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 10 21:42:12 2016
Raid Level : raid5
Array Size : 209584128 (199.88 GiB 214.61 GB)
Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Aug 11 14:10:43 2016
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Name : mdadmwrite:0 (local to host mdadmwrite)
UUID : bf7a711b:b3aa9440:40d2c12e:79824706
Events : 144
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 0 1 active sync /dev/sda
2 8 16 2 active sync /dev/sdb
0 8 32 - faulty /dev/sdc
Все выделенные строки указывают, что диск больше не работает (в этом примере это /dev/sdc).
Если вам нужно удалить рабочий диск, вы можете вручную пометить его как нерабочий – с помощью опции –fail:
sudo mdadm /dev/md0 --fail /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
Команда mdadm –detail покажет, что устройство нерабочее.
Теперь вы можете удалить его из массива с помощью команды mdadm –remove:
sudo mdadm /dev/md0 --remove /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0
Затем вы можете заменить его новым диском, используя команду mdadm –add, которая добавляет запасные устройства:
sudo mdadm /dev/md0 --add /dev/sdd
mdadm: added /dev/sdd
Массив начнет восстанавливаться, скопировав данные на новый диск.
Создание массива
Для создания массива нужно использовать не смонтированные разделы. Убедитесь в этом, при необходимости демонтируйте и уберите из fstab.
Пример создания RAID5 массива из трёх дисков:
- /dev/nvme0n1
- /dev/nvme1n1
- /dev/nvme2n1
Я использую NVMe диски, у вас названия дисков будут другие.
Желательно изменить тип разделов на FD (Linux RAID autodetect). Это можно сделать с помощью fdisk (t).
Занулить суперблоки дисков:
Стереть подпись и метаданные:
С помощью ключа --create создать RAID5 массив:
- /dev/md0 — массив, который мы создаём;
- --level 5 — уровень RAID;
- --raid-devices=3 — количество дисков, из которых собирается массив;
- /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 — диски.
Для примера RAID1 из двух дисков /dev/sdb и /dev/sdc можно создать так:
- /dev/md2 — массив, который мы создаём;
- -l 5 — уровень RAID;
- -n 2 — количество дисков, из которых собирается массив;
- /dev/sd — диски sdb и sdc.
Состояние массива
Посмотреть инициализацию массива и текущее состояние можно с помощью команды:
Требования
- Сервер Ubuntu 16.04, настроенный по этому мануалу.
- Один или несколько RAID-массивов (создать их можно по этому мануалу).
Список массивов
Установка mdadm
Утилита mdadm может быть установлена одной командой.
Если используем CentOS / Red Hat:
yum install mdadm
Если используем Ubuntu / Debian:
apt-get install mdadm
Подготовка носителей
Сначала необходимо занулить суперблоки на дисках, которые мы будем использовать для построения RAID (если диски ранее использовались, их суперблоки могут содержать служебную информацию о других RAID):
mdadm --zero-superblock --force /dev/sd
* в данном примере мы зануляем суперблоки для дисков sdb и sdc.
Если мы получили ответ:
mdadm: Unrecognised md component device - /dev/sdb
mdadm: Unrecognised md component device - /dev/sdc
. то значит, что диски не использовались ранее для RAID. Просто продолжаем настройку.
Далее нужно удалить старые метаданные и подпись на дисках:
wipefs --all --force /dev/sd
Проверка целостности массива
Есть ли ошибки в процессе проверки программного RAID-массива по команде check или repair:
1: Запрос информации о RAID-устройствах
Одним из наиболее важных аспектов управления является поиск информации о структуре, компонентных устройствах и текущем состоянии массива.
Чтобы получить подробную информацию о RAID-устройстве, передайте устройство утилите mdadm в параметре -D или –detail:
sudo mdadm -D /dev/md0
Команда выведет информацию о массиве:
/dev/md0:
Version : 1.2
Creation Time : Mon Aug 8 21:19:06 2016
Raid Level : raid10
Array Size : 209584128 (199.88 GiB 214.61 GB)
Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Aug 8 21:36:36 2016
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : mdadmwrite:0 (local to host mdadmwrite)
UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d
Events : 18
Number Major Minor RaidDevice State
0 8 0 0 active sync set-A /dev/sda
1 8 16 1 active sync set-B /dev/sdb
2 8 32 2 active sync set-A /dev/sdc
3 8 48 3 active sync set-B /dev/sdd
В этом выводе вы найдете уровень RAID, размер массива, состояние отдельных частей, UUID массива, компонентные устройства и их роли. Информация, представленная в этом выводе, достаточно хорошо размечена.
Чтобы получить сокращенные данные о массиве (которые удобно добавить в файл /dev/mdadm/mdadm.conf), вы можете передать флаги –brief или -b:
sudo mdadm -Db /dev/md0
ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=0dc2e687:1dfe70ac:d440b2ac:5828d61d
Чтобы получить удобочитаемое описание RAID-устройства, используйте параметр -Q:
sudo mdadm -Q /dev/md0
/dev/md0: 199.88GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.
Эта команда выведет ключевые данные о RAID-массиве.
Замена диска
В случае выхода из строя одного из дисков массива, команда cat /proc/mdstat покажет следующее:
Personalities : [raid1]
md0 : active raid1 sdb[0]
1046528 blocks super 1.2 [2/1] [U_]
* о наличии проблемы нам говорит нижнее подчеркивание вместо U — [U_] вместо [UU].
.
Update Time : Thu Mar 7 20:20:40 2019
State : clean, degraded
.
* статус degraded говорит о проблемах с RAID.
Для восстановления, сначала удалим сбойный диск, например:
mdadm /dev/md0 --remove /dev/sdc
Теперь добавим новый:
mdadm /dev/md0 --add /dev/sde
Смотрим состояние массива:
.
Update Time : Thu Mar 7 20:57:13 2019
State : clean, degraded, recovering
.
Rebuild Status : 40% complete
.
* recovering говорит, что RAID восстанавливается; Rebuild Status — текущее состояние восстановления массива (в данном примере он восстановлен на 40%).
Если синхронизация выполняется слишком медленно, можно увеличить ее скорость. Для изменения скорости синхронизации вводим:
echo '10000' > /proc/sys/dev/raid/speed_limit_min
* по умолчанию скорость speed_limit_min = 1000 Кб, speed_limit_max — 200000 Кб. Для изменения скорости, можно поменять только минимальную.
9: Удаление массива
Чтобы удалить массив, включая все данные, которые он хранит, сначала остановите массив.
Для этого нужно демонтировать файловую систему:
cd ~
sudo umount /mnt/md0
Затем остановите массив:
sudo mdadm --stop /dev/md0
Теперь можно удалить массив с помощью команды –remove:
sudo mdadm --remove /dev/md0
После удаления массива нужно использовать mdadm –zero-superblock на каждом из компонентов устройства. Это очистит суперблок md, заголовок, который mdadm использует для сборки и управления компонентными устройствами в составе массива. Если этот заголовок не удалить, это может вызвать проблемы при попытке повторно использовать диск для других целей.
Вы можете определить, что суперблок все еще присутствует в массиве, проверив столбец FSTYPE в выводе lsblk –fs:
lsblk --fs
NAME FSTYPE LABEL UUID MOUNTPOINT
sda linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706
sdb linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706
sdc linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706
sdd
vda
├─vda1 ext4 DOROOT 4f8b85db-8c11-422b-83c4-c74195f67b91 /
└─vda15
В этом примере устройства /dev/sda, /dev/sdb и /dev/sdc, которые входили в массив, все еще содержат этот заголовок.
sudo mdadm --zero-superblock /dev/sda /dev/sdb /dev/sdc
Удалите или закомментируйте все ссылки на массив в файле /etc/fstab:
Сохраните и закройте файл.
Удалите или закомментируйте все ссылки на массив в файле /etc/mdadm/mdadm.conf:
Сохраните и закройте файл.
sudo update-initramfs -u
Устройство будет удалено из автозагрузки.
Восстановление RAID
Рассмотрим два варианта восстановлении массива.
Удаление массива
При удалении массива внимателнее смотрите на имена массива и дисков и подставляйте свои значения.
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:
* где /mnt — каталог монтирования нашего RAID.
* где /dev/md0 — массив, который мы хотим разобрать.
* если мы получим ошибку mdadm: fail to stop array /dev/md0: Device or resource busy, с помощью команды lsof -f -- /dev/md0 смотрим процессы, которые используют раздел и останавливаем их.
Затем очищаем суперблоки на всех дисках, из которых он был собран:
mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc
mdadm --zero-superblock /dev/sdd
* где диски /dev/sdb, /dev/sdc, /dev/sdd были частью массива md0.
Массивы RAID 1 или 10
Начните с добавления нового устройства в качестве запасного, как показано в последнем разделе:
sudo mdadm /dev/md0 --add /dev/sde
Определите текущее количество RAID-устройств в массиве:
sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 10 15:29:26 2016
Raid Level : raid1
Array Size : 104792064 (99.94 GiB 107.31 GB)
Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
. . .
Как видите, в этом примере массив настроен на активное использование двух устройств, а всего в массиве доступно три устройства (потому что мы добавили запасной диск).
Теперь переконфигурируйте массив, чтобы настроить его для использования дополнительного активного устройства.
sudo mdadm --grow --raid-devices=3 /dev/md0
Массив начнет перенастраиваться с дополнительным активным диском. Чтобы просмотреть ход синхронизации данных, введите:
Вы можете использовать устройство после завершения процесса.
Подробный статус выбранного массива
Информация о RAID
Посмотреть состояние всех RAID можно командой:
В ответ мы получим что-то на подобие:
md0 : active raid1 sdc[1] sdb[0]
1046528 blocks super 1.2 [2/2] [UU]
* где md0 — имя RAID устройства; raid1 sdc[1] sdb[0] — уровень избыточности и из каких дисков собран; 1046528 blocks — размер массива; [2/2] [UU] — количество юнитов, которые на данный момент используются.
** мы можем увидеть строку md0 : active(auto-read-only) — это означает, что после монтирования массива, он не использовался для записи.
Подробную информацию о конкретном массиве можно посмотреть командой:
* где /dev/md0 — имя RAID устройства.
Version : 1.2
Creation Time : Wed Mar 6 09:41:06 2019
Raid Level : raid1
Array Size : 1046528 (1022.00 MiB 1071.64 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Mar 6 09:41:26 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : proxy.dmosk.local:0 (local to host proxy.dmosk.local)
UUID : 304ad447:a04cda4a:90457d04:d9a4e884
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
- Version — версия метаданных.
- Creation Time — дата в время создания массива.
- Raid Level — уровень RAID.
- Array Size — объем дискового пространства для RAID.
- Used Dev Size — используемый объем для устройств. Для каждого уровня будет индивидуальный расчет: RAID1 — равен половине общего размера дисков, RAID5 — равен размеру, используемому для контроля четности.
- Raid Devices — количество используемых устройств для RAID.
- Total Devices — количество добавленных в RAID устройств.
- Update Time — дата и время последнего изменения массива.
- State — текущее состояние. clean — все в порядке.
- Active Devices — количество работающих в массиве устройств.
- Working Devices — количество добавленных в массив устройств в рабочем состоянии.
- Failed Devices — количество сбойных устройств.
- Spare Devices — количество запасных устройств.
- Consistency Policy — политика согласованности активного массива (при неожиданном сбое). По умолчанию используется resync — полная ресинхронизация после восстановления. Также могут быть bitmap, journal, ppl.
- Name — имя компьютера.
- UUID — идентификатор для массива.
- Events — количество событий обновления.
- Chunk Size (для RAID5) — размер блока в килобайтах, который пишется на разные диски.
Подробнее про каждый параметр можно прочитать в мануале для mdadm:
Также, информацию о разделах и дисковом пространстве массива можно посмотреть командой fdisk:
Работа с дисками
Диск в массиве можно условно сделать сбойным с помощью ключа --fail (-f):
Удалить из массива отказавший диск:
Добавить в массив заменённый диск:
6: Добавление запасных устройств в массив
Запасные устройства можно добавить в любой массив, который поддерживает избыточность (например, RAID 1, 5, 6 или 10). Такие устройства будут использоваться массивом только в случае сбоя одного из постоянных активных устройств. Если это произойдет, массив переконфигурирует данные на запасной диск для восстановления своей работоспособности. Запасные устройства нельзя добавить в резервные массивы (RAID 0), потому что массив не сможет выдержать сбой накопителя.
Чтобы добавить запасной диск, просто передайте массив и новое устройство в команде mdadm –add:
sudo mdadm /dev/md0 --add /dev/sde
Если массив находится в рабочем состоянии, новое устройство будет добавлено в качестве запасного. Если одно устройство в массиве в настоящее время не работает, операция повторной синхронизации немедленно начнет использовать запасной диск для замены неисправного.
После добавления нового диска обновите конфигурации, чтобы отобразить новые устройства:
sudo nano /etc/mdadm/mdadm.conf
Переместите или закомменитруйте текущее определение массива:
А затем вставьте свою новую конфигурацию:
sudo mdadm --detail --brief /dev/md0 | sudo tee -a /etc/mdadm/mdadm.conf
Утилита mdadm использует новую информацию для сбора массива.
Сборка существующего массива
Собрать существующий массив можно с помощью mdadm --assemble:
4: Остановка массива
Чтобы остановить массив, нужно сначала размонтировать его.
Для этого введите:
cd ~
sudo umount /mnt/md0
Чтобы остановить все активные массивы, введите:
sudo mdadm --stop --scan
Чтобы остановить конкретный массив, передайте его команде mdadm –stop:
sudo mdadm --stop /dev/md0
Чтобы получить доступ к остановленному массиву, вам нужно будет снова собрать его.
Возобновление отложенной синхронизации resync=PENDING
Если синхронизации массива отложена, состояние массива resync=PENDING, то синхронизацию можно возобновить:
Правильное удаление сбойного диска из RAID: сначала ФИЗИЧЕСКИ отсоединить диск, только потом уже, загрузившись, в системе в RAID отметить выпавший диск как сдохший и не нужный системе.
Интересно теперь буду знать , так а вчём причина такой странной реакции ?
точно не могу сказать, но наблюдал такое после
в результате создавались устройства /dev/md <127. >из устройств, которые в данный момент не добавлены руками. т.е. по идее при автоматической сборке массивов создаются mdN, где N=127..max_possible (вероятно, чтобы не смешиваться с неавтоматически-собранными)127.>
кто тебе такое сказал?!
Гмм весело в принципе похоже на мою ситуацию у меня два диска в рэйде + два подготовлены , похоже действительно идёт авто сборка , ну а как победить этот косяк ?
Не обязательно. ТС действовал верно: пометить как сбойный, удалить.
Не исключает человеческий фактор: по ошибке можно пометить якобы сбойный, и тогда система не сможет загрузиться вообще. А так (с отключенным по ошибке исправным диском), хоть шанс останется.
Это обратная нумерация. Наблюдается, например, при использовании именованных массивов
когда даже явное требование создать md0 и т.д. фактически игнорируется.
более того, совсем необязательно :)
Не исключает человеческий фактор: по ошибке можно пометить якобы сбойный, и тогда система не сможет загрузиться вообще. А так (с отключенным по ошибке исправным диском), хоть шанс останется.
хватит разводить демагогию? на человеческий фактор влияет много чего, который, в свою очередь, влияет на не меньшее множество, но это же не мешает тебе не попадать под машину, переходя дорогу, т.к. осторожность и внимательность. да? (надеюсь)
Хотя ситуация конечно интересная , получается что на базе выведенного из массива, но не выключенного диска автоматически сформировался новый массив 0_0
>> на базе выведенного из массива, но не выключенного диска
Гы, я, выходит, не понял ОП %) Тогда, скорее всего, это нормальное поведение.
ну шас пораскинув мозгами ,я начинаю также думать получается так - диск выведен из массива но на нём не очищены супер блоки , идентиифкатор -fd , в итоге получаем новый рэйд из одного диска автоматом
у меня два диска в рэйде + два подготовлены
а что значит два подготовлены?
я как-то грузился с live usb Parted Magic, в системе был 1 диск, разделы которого входили в raid1 (т.е. U_ вместо UU у всех md), так после автосборки все правильно собралось, за исключением номеров, которые тоже были в области 120 (каж. 127..121)
А на счёт того как вытаскивать харды из рейда. Надо трижды подумать, один раз сделать :)
Я новичок, поэтому прошу не пинать, если вопрос не по теме (поиском в интернет не ищется вообще). Есть RAID-5, 4 диска. Один из них начал жаловаться на smart, я решил его убрать. Как это корректно сделать? Сначала fail, потом remove?
Места свободного полно, так что я хочу просто сделать более маленький массив: будет три диска вместо четырех. (Похоже, я уже там всё испортил, но мало ли есть выход. )
данные при этом сохраняются? у меня похерились.
Не знаю, я никогда не делал RAID-5 с помощью mdadm.
на raid1 я 1 раз успешно заменил саташный диск.
Стесняюсь спросить: в гугле забанили?
Ну куча же документации написана. Гораздо быстрее у гугла спросить, чем тут ждать ответа.
Всегда тренируйся сначала в virtualbox.
И странно упоминать fail/remove, для операции _уменьшения_ массива. Они нужны для замены диска, но не уменьшения. Тут уже привели полезную ссылку на grow
mdadm --manage /dev/md0 --fail /dev/sdc mdadm --manage /dev/md0 --remove /dev/sdc mdadm --grow /dev/md0 --array-size 1953262592 mdadm --grow /dev/md0 --raid-devices=3 --backup-file=/root/grow_md1.bak
быстрее я не нашел. вы знаете ответ?
по идее, не надо было делать fail, remove перед grow. И после этого вытаскивать spare disk (согласно cat /proc/mdstat ).
Ты не привел ни показания cat /proc/mdstat ни ./mdadm -Q -D /dev/md9, что там у тебя творилось никому не известно, даже тебе.
«по идее», именно так диски и изымаются. что там было, мне известно, просто не вижу смысла сюда валить всё это. вопрос в другом: после grow данные могут быть живы или нет?
mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.
Заключение
Утилита mdadm упрощает управление массивами, но для этого нужно понимать используемые ею соглашения и места, где вы можете искать информацию. Данный мануал ни в коем случае не является исчерпывающим, он описывает только базовые задачи управления, которые могут потребоваться для повседневной работы.
Научившись создавать и управлять массивами RAID с помощью mdadm, вы можете изучить еще несколько различных направлений. Управление томами (LVM) тесно интегрируется с RAID и позволяет гибко разделить пространство на логические тома. LUKS и dm-crypt обычно используются для шифрования RAID-устройств до написания файловой системы. Linux позволяет интегрировать все эти технологии для повышения емкости хранилища.
Соберу в одном месте список полезных команд для mdadm.
mdadm — утилита для управления программными RAID-массивами в Linux.
С помощью mdadm можно выполнять следующие операции:
- mdadm --create, C Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве.
- mdadm --assemble, -A Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам.
- mdadm --build, -B Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются.
- mdadm --manage Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного.
- mdadm --misc Действия, которые не относятся ни к одному из других режимов работы.
- mdadm --grow, G Расширение или уменьшение массива, включаются или удаляются новые диски.
- mdadm --incremental, I Добавление диска в массив.
- mdadm --monitor, --follow, -F Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла.
И другие: mdadm --help.
Создание mdadm.conf
Операционная система не запоминает какие RAID-массивы ей нужно создать и какие диски в них входят. Эта информация содержится в файле mdadm.conf.
В интернете советуют применять команду mdadm --detail --scan --verbose, но я не рекомендую, т.к. она пишет в конфигурационный файл названия разделов, а они в некоторых случаях могут измениться, тогда RAID-массив не соберётся. А mdadm --detail --scan записывает UUID разделов, которые не изменятся.
Читайте также: