Авг 20

Программный RAID-6 под Linux: опыт восстановления массива 16Тб

Опубликовано в Винчестеры, Сетевые данные

Рассматриваем ситуацию поломки одного из дисков на массиве из 16 hdd по 1 ТБ, которая осложнена выходом из строя кулера на видеокарте и зависаниями во время синхронизации.

Итак, структура массива.

16х1Тб HDD

разделы:
md0 — /root 8х1 Гб, RAID 6
md1 — /data: 16х999Гб, RAID 6

На первом этапе восстановления необходимо подгрузиться с 1-го диска Дебиан в режиме «Resque mode». Пытаемся собрать массив при помощи команды, но в ответ получаем «недостаточно дисков для сборки массива».

mdadm —assemble —scan

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

mdadm —examine /dev/sd[abcdefghijklmnop]1 > /mnt/raid_layout1
mdadm —examine /dev/sd[abcdefghijklmnop]2 > /mnt/raid_layout2

Приведем пример вывода одного из разделов.

/dev/sdp1:
Version : 0.90.00
Raid Level : raid6
Used Dev Size : 975360 (952.66 MiB 998.77 MB)
Raid Devices : 8
Total Devices : 8

Number Major Minor RaidDevice State
this 4 8 177 4 active sync /dev/sdl1

0 0 8 97 0 active sync /dev/sdg1
1 1 8 113 1 active sync /dev/sdh1
2 2 8 129 2 active sync /dev/sdi1
3 3 8 145 3 active sync /dev/sdj1
4 4 8 177 4 active sync /dev/sdl1
5 5 8 193 5 active sync /dev/sdm1
6 6 8 209 6 active sync /dev/sdn1
7 7 8 225 7 active sync /dev/sdo1

Расшифровываем:

sdf2 — текущая анализируемая партиция
Version 0.90.00 — версия суперблока
Из этих данных можно также узнать размер массива, UUID, Level, количество устройств и т.п.

Нас интересует последняя строчка, из которой можно понять, каким по счету жестким диском в массиве является тестируемый нами экземпляр.

this 4 8 177 4 active sync /dev/sdl1

Кстати, буковка диска в строчке статуса другая — sdl1 — это означает, что hdd был проинициализирован на другом SATA порту, после чего перемещен.

Сохраняем созданный файл raid_layout и приступаем ко второму этапу.

Массив, как известно, можно собирать двумя способами — «ручками» и автоматически.

Собираем массив автоматически

mdadm —assemble —scan -v

Если уже на этом этапе массив собрался, то считайте, что вам крупно повезло. В нашем же случае пишет, что устройств недостаточно, из 8 устройств 4 нет, массив работать не будет.

mdadm: /dev/md2 assembled from 4 drives — not enough to start the array.

Проверяем статус массива

cat /proc/mdstat

md2 : inactive sdn1[3](S) sdk1[7](S) sdj1[6](S) sdp1[4](S)
3907264 blocks

Чтобы увидеть, на каком этапе прекратилась сборка — полезно использовать флаг «-v»

Ручная сборка массива

mdadm —assemble /dev/sd[abcdefgh]1 -v

В принципе, все то же самое, но в этот раз мы уже самостоятельно указываем, какие диски использовать. Скорее всего массив не соберется. Если есть в метаданных раздела жесткий диск помечен как «faulty», массив также не соберется.

Игнорируем статус «faulty» при помощи команды:

mdadm —assemble /dev/md3 /dev/sd[abcdefghijklmnop]2 -f

Или вот так:

mdadm —assemble —scan -f -v

Получаем массив из 14 дисков (Всего, напомним, 16). Добавляем оставшиеся 2 диска.

mdadm —add /dev/md3 /dev/sdX2

Х — буковка раздела нового HDD

You must be logged in to post a comment.