Рубрики
HDD \ SSD \ ISO \ CD-ROM \ LVM \ FS \ RAID \ Диск

mdadm spare / hot spare / error / raid10 / raid1

Пример для raid10, raid1

!!! Без резервной копии дальше ни нагой.
!!! spateЗапасной диск с  автоматической подменой неисправного диска
0. cat /proc/mdadm - смотрим что у нас там за raid и какой диск вылетел
1. smartctl -a /dev/sda - отобразить подробную информацию об устройстве  /dev/sda (пригодится при поиски диска)
2. fdisk -l - показать все диски и разметку (пригодится при поиски диска)

3. Перед добавлением диск нужно подготовить
Таблица разделов:
!!! sgdisk - копирует таблицу разделов
sgdisk /dev/sdx -R /dev/sdz - копировать таблицу разделов с /dev/sdx на /dev/sdz
Загрузчик:
!!! пред этим определись что у тебя за диск GPT или MBR
!!! dd if=что of=куда
!!! dd if=/dev/hda of=/temp/backu_bmr.img bs=512 count=1 - создание копии MBR ( Master Boot Record ) с /dev/hda в файл /temp/backu_bmr.img
!!! dd if=/temp/backu_bmr.img of=/dev/hda bs=512 count=1 - восстановить MBR из файла /temp/backu_bmr.img на диск /dev/hda
!!! dd if=/dev/sdx1 of=/dev/sdz1 - копируем 512M раздел /dev/sdx1 в раздел /dev/sdz1 (в данном примере в этом разделе uefi) 

grub-install /dev/zdz -  можно установить вот так grub загрузчик
  

4. Добавление диска или раздела как spare
!!! Правильнее будет всё-таки добавлять раздел
!!! Рекомендуется создавать таблицу разделов на диске и добавлять раздел
!!! Работать будет и без таблицы разделов, но вот при сбои raid будет сложно починить
!!! В таблице разделов находится информация о массиве
mdadm --manage /dev/md22 --add-spare /dev/sdj - добавляем диск /dev/sdj как запасной (spare) в массив /dev/md22 
mdadm --manage /dev/md22 --add-spare /dev/sdv2 - добавляем диск /dev/sdv2 как запасной (spare) в массив /dev/md22 

RAID развалился что делать?:

!!!Выполнять нужно с чистой головой, чтобы не затереть вообще все данные!!!
С первой проблемой с которой вы возможно можете столкнутся это система не загружается и вы проваливаетесь initramfs
0. Смотрим что там у нас с массивом 
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm -E /dev/sd[abcd]2
1. Предположим мы знаем какой у нас raid, допустим raid10 и в mdadm диск sdb вылетел
-1- Помечаем раздел как сбойный:
mdadm --manage /dev/md0 --fail /dev/sdb1
-2- Отключаем раздел (удаляем из RAID1):
mdadm --manage /dev/md0 --remove /dev/sdb1
-3- Выключаем сервер и вставляем новый диск
-4- Производим различные проверки что бы убедится кокой диск новый 
fdisk -l
smartctl -a /dev/sdz 
-5- Копируем таблицу разделов
sgdisk /dev/sdx -R /dev/sdz
-6- Если требуется копируем загрузчик с помощью dd
-7-


2. Развалилось все нафиг
!!! Без архивных копий сюда ни нагой !!!
Предположим мы знаем какой у нас raid, допустим raid10 и в mdadm нету дисков или один торчит
Диски у нас разбиты следующим образом: GPT разметка, sd?1 - загрузчик UEFI, sd?2 - массив RAID10

-0- Можем попробовать собрать raid 10 снова
mdadm --stop - останавливаем raid
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2

-1- Проверяем что там у нас с массивом 
mdadm --examine /dev/sd[a-d]1
mdadm --detail /dev/md0
cat /proc/mdadm

Возможно понадобится выполнить fsck

Как закончит ребилд пробуем загрузится CTRL+D (напоминаю мы все еще  initramfs)

-2- Если все загрузилось ставим первым делом загрузчик
grub-install /dev/vda
grub-install /dev/vdb
grub-install /dev/vdc
grub-install /dev/vdd



-3- Если перезагрузились и торчим в rescue grub
!!! https://www.supergrubdisk.org/ - можно воспользоваться этим диском загрузится в систему и далее установить загрузчик grub-install /dev/vdX

ls - показать все диски
set prefix=(md/0,gpt1)/boot/grub 
set root=(md/0,gpt1)
ls /boot/grub - убедились что есть загрузочные файлы
insmod ext2 - загрузили модуль ext2
insmod normal - загрузили модуль normal
normal - загружаемся в систему
Ставим загрузчик:
grub-install /dev/vda
grub-install /dev/vdb
grub-install /dev/vdc
grub-install /dev/vdd

Замена диска, подключение диска, удаление диска, добавление запасной диск:

mdadm --manage --fail /dev/md100 /dev/sdb3 - в массиве /dev/md100 пометить диск /dev/sdb3 как сбойный
mdadm --remove /dev/md100 /dev/sdb3 - из массива /dev/md100 убрать диск /dev/sdb3
mdadm --add /dev/md0 /dev/sdf1 - добавить новый диск /dev/sdf1 в массив /dev/md0
mdadm --manage /dev/md22 --add-spare /dev/sdv2 - добавляем диск /dev/sdv2 как запасной (spare) в массив /dev/md22 

Сборка существующего массива:


Собрать существующий массив можно с помощью mdadm --assemble. 
Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.
mdadm --assemble /dev/md0 /dev/hde1 /dev/hdf2 /dev/hdg1
mdadm --assemble --scan

Таблицы разделвов:

Создание таблицы разделов:
fdisk /dev/vdX - создание таблицы разделов MBR
gsisk /dev/vdX - создание таблицы разделов MBR/GPT

Копирование таблицы разделов:
!!! fdisk не умеет работать с GPT
sfdisk -d /dev/sda | sfdisk /dev/sdb  - копирование таблицы разделов (MBR)
sgdisk /dev/sdx -R /dev/sdz - копирование таблицы разделов (MBR or GPT)

Копирование таблицы разделов sfdisk:
sfdisk -d /dev/sda > part_table - сохранить
sfdisk /dev/sda < part_table - восстановить


Копирование таблицы разделов с помощью dd:
dd if=/dev/sda of=partitiontable.bin bs=1 skip=446 count=64 # backup
dd if=partitiontable.bin of=/dev/sda bs=1 seek=446 count=64 # restore

Установка загрузчика:

grub-install /dev/vdX - установка загрузчика

оффтоп

Типы разделов:
8300 - linux file system
FD00 - linux raid

Создание массивов:
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/vd[a-d]1 - создание массива raid10
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/vd[xz]1 -  создание массива raid1

Проверка состояния массивов:
cat /proc/mdstat - проверка состояния массива
mdadm --examine /dev/sdf
mdadm --examine /dev/sdf1
mdadm --detail /dev/md0

Сохранение настроек mdadm:
mdadm --detail --scan --verbose >> /etc/mdadm.conf - копирование конфигурации

Создание файловой системы ext4:
mkfs.ext4 /dev/md100 - создание файловой системы

Монтирование дисков:
lsblk - показать UUID диска
/etc/fstab - файл авто монтирования дисков при загрузке
maunt -a - перечитать файл /etc/fstab и примонтировать устройства


Пометка диска как сбойного:
mdadm /dev/md0 --fail /dev/hde1
mdadm /dev/md0 -f     /dev/hde1


Удаление сбойного диска:
mdadm /dev/md100 --remove /dev/hde1
mdadm /dev/md100 -r       /dev/hde1


Добавление нового диска:
mdadm /dev/md0 --add /dev/hde1
mdadm /dev/md0 -a    /dev/hde1

Ссылки:

http://xgu.ru/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9_RAID_%D0%B2_Linux
https://valynkin.ru/shpargalka-po-mdraid.html