В данной статье мы опишем действия, необходимые при замене неисправного жёсткого диска в программном RAID 1-массиве на примере различных операционных систем, таких как Linux: (CentOS, Debian, Ubuntu).
Определение проблемы
Для начало разберем проблему. Имеется физический сервер с установленным на нём 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
Заключение
Замена диска в Software RAID1 является необходимой процедурой для поддержания безопасности и целостности данных как на Облачном KVM-сервере, так и на Выделенном Сервере. Перед выполнением данной процедуры необходимо убедиться в наличии достаточных знаний и опыта или обратиться за помощью к профессиональному специалисту. Следование рекомендациям провайдера хостинга и регулярная замена дисков могут предотвратить потерю данных и обеспечить бесперебойную работу ваших бизнес-приложений.