В данной статье мы опишем действия, необходимые при замене неисправного жёсткого диска в программном RAID 1-массиве на примере различных операционных систем, таких как Linux: (CentOS, Debian, Ubuntu).

Оглавление

  1. Определение проблемы
  2. Удаление поврежденного диска
  3. Подготовка нового диска
  4. Добавление жёсткого диска в массив после замены

 

Определение проблемы

Для начало разберем проблему. Имеется физический сервер с установленным на нём CentOS 7, в котором 2 HDD диска по 2 ТБ: /dev/sda, /dev/sdb. Эти диски собраны в софтварный RAID1. Предположим, что вышел из строя диск — sdb. Проверив диск в массиве, вы увидите следующую картину:

# cat /proc/mdstat

У нас имеется 3 массива:

# /dev/md125 — /boot

# /dev/md126 — swap

# /dev/md127 — /

В данном случае мы можем наблюдать, что диски действительно собраны в RAID1. Когда массив в порядке, то он отображается как [UU]. Так как диски зеркальны, то каждый раздел объединяет между собой и назван по своему. Например: md125 состоит из sda2,sdb2. Md125 в данном случае это — /boot. Более подробную информацию о разбивки дисков вы можете узнать, командой:

# lsblk

Если вы хотите знать подробную информацию о массиве и что в него входит, то используйте команде:

# mdadm —detail /dev/md125

 

Удаление поврежденного диска

Для установки нового диска в RAID 1 массив, необходимо удалить сперва сбойный диск. Данную процедура проводится для каждого раздела.

# mdadm /dev/md125 -r /dev/sdb2

# mdadm /dev/md126 -r /dev/sdb1

# mdadm /dev/md127 -r /dev/sdb3

В некоторых случаях, жёсткий диск может быть повреждён частично. Пример: статус [U_] у массива /dev/md127, а у других массивов статус [UU]. В данном случае нам необходимо указать только одну команду:

# mdadm /dev/md127 -r /dev/sdb3

Следовательно остальные разделы будут отображены, как устройство /dev/sdb1 и /dev/sdb2 — в порядке. После попытки удалить раздел из массива, будет отображаться ошибка.

Чтобы исправить и изъять их, необходимо будет выполнить команды:

# mdadm —manage /dev/md125 —fail /dev/sdb2

# mdadm —manage /dev/md126 —fail /dev/sdb1

Тем самым вы измените их статус на [U_]. Далее провести процедуру, что и с массивом md127.

Посмотрим диски и разделы, входящие в массив, чтобы убедиться, что диск был изъят полность:

# mdadm —detail /dev/md125

# mdadm —detail /dev/md126

# mdadm —detail /dev/md127

# cat /proc/mdstat

Теперь диск готов к замене. Необходимо будет отправить запрос через нашу систему тикетов, для замены диска и согласовать время проведения работ с техником.

П.С. Сервер будет остановлен на некоторое время!

 

 Подготовка нового диска

Определение таблицы разделов(GPT, MBR) и перенос её на новый диск.

Новый диск, будучи в массиве должен иметь абсолютно одинаковое разбиение. В зависимости от используемых типов таблиц разделов (GPT/MBR), нужно использовать соответствующие утилиты для копирования таблиц разделов.

GPT — sgdisk

MBR — sfdisk

Так как у нас диски HDD по 2ТБ, то мы будем использовать утилиту sgdisk. Можно также увидеть, что именно мы будем копировать, на второй диск. Используйте команду:

# gdisk -l /dev/sda

Утилиту можно скачать, используя репозиторий операционной системы. В зависимоти от ОС, необходимо указать корректный менеджер пакетов.

CentOS: yum install sgdisk/sfdisk

Debian/Ubuntu: apt install sgdisk/sfdisk

Создание и восстановление резервного копирования MBR/GPT

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

Для MBR

Создать:

# sfsdisk —dump /dev/sdx > sdх_parttable_mbr.bak

Восстановить:

# sfdisk /dev/sdb < sdх_parttable_mbr.bak

Для GPT

Создать:

# sgdisk —backup=sdх_parttable_gpt.bak /dev/sda

Восстановить:

# sgdisk —load-backup=sdх_parttable_gpt.bak /dev/sdb

sda — диск, с которого создаётся копия.

sdb — диск, на который загружается копия таблицы.

Добавление жёсткого диска в массив после замены

Вставте скопированную таблицу разделов с первого диска в новый, используя команду выше. Как только повреждённый диск удалён из массива, можно добавить новый. Это необходимо сделать для каждого раздела.

# mdadm /dev/md125 -a /dev/sdb2

# mdadm /dev/md126 -a /dev/sdb1

# mdadm /dev/md127 -a /dev/sdb3

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

# cat /proc/mdstat

Далее перезагружаем сервер и видим, что все разделы смонтированы правильно:

# lsblk