Вопрос или проблема
Я заменил свой RAID-массив с RAID 1, состоящим из 2 дисков по 4 ТБ, на 2 диска по 10 ТБ с использованием mdadm. Процесс можно кратко описать следующим образом: добавьте 2 новых диска в RAID-массив, подождите синхронизации, удалите 2 старых диска из массива, увеличьте и расширьте файловую систему. Все прошло хорошо. Однако я не отключил и не очистил старые диски. Через несколько дней один из дисков вышел из строя, я удалил один диск из массива (mdadm –remove /dev/md125 /dev/sdf1) и перезагрузил сервер, но RAID вернулся к старой конфигурации (RAID-массив состоял из 2 старых дисков, данные и точки монтирования вернулись в состояние до изменения массива RAID). Могу ли я воссоздать md125, чтобы это исправить?
Резюме:
Старый: /dev/md125 (sdc1 + sdd1)
Новый: /dev/md125 (sdf1 + sde1)
Удалите sdf1 и перезагрузите сервер.
После перезагрузки: /dev/md125 (sdc1 + sdd1)
ОС: Centos 7
Диск (lsblk) при замене массива RAID:
sdc 8:32 0 3.7T 0 диск
└─sdc1 8:33 0 3.7T 0 часть
sdd 8:48 0 3.7T 0 диск
└─sdd1 8:49 0 3.7T 0 часть
sde 8:64 0 10.9T 0 диск
└─sde1 8:65 0 10.9T 0 часть
└─md125 9:125 0 3.7T 0 raid1 /data
sdf 8:80 0 10.9T 0 диск
└─sdf1 8:81 0 10.9T 0 часть
└─md125 9:125 0 3.7T 0 raid1 /data
Я ожидал, что конфигурация останется прежней после перезагрузки, но вышло так:
sdc 8:32 0 3.7T 0 диск
└─sdc1 8:33 0 3.7T 0 часть
└─md125 9:125 0 3.7T 0 raid1 /data
sdd 8:48 0 3.7T 0 диск
└─sdd1 8:49 0 3.7T 0 часть
└─md125 9:125 0 3.7T 0 raid1 /data
sde 8:64 0 10.9T 0 диск
└─sde1 8:65 0 10.9T 0 часть
sdf 8:80 0 10.9T 0 диск
└─sdf1 8:81 0 10.9T 0 часть
mdstat перед перезагрузкой:
Личности : [raid1]
md125 : активный raid1 sde1[2]
11718752256 блоков супер 1.2 [2/1] [_U]
битмап: 22/22 страницы [88KB], 262144KB штука
blkid и mdstat.conf сейчас:
# grep a5c2d1ec blkid.txt
/dev/sdc1: UUID=”a5c2d1ec-fa7f-bba4-4c83-bfb2027ab635″ UUID_SUB=”a411ac50-ac7c-3210-c7f9-1d6ab27926eb” LABEL=”localhost:data” TYPE=”linux_raid_member” PARTUUID=”270b5cba-f8f4-4863-9f4a-f1c35c8088bf”
/dev/sdf1: UUID=”a5c2d1ec-fa7f-bba4-4c83-bfb2027ab635″ UUID_SUB=”4ac242ae-d6a2-0021-cd71-a9a7a357a3bb” LABEL=”localhost:data” TYPE=”linux_raid_member” PARTLABEL=”Linux RAID” PARTUUID=”4ca94453-20e7-4bde-ad3c-9afedbfa8cdb”
/dev/sde1: UUID=”a5c2d1ec-fa7f-bba4-4c83-bfb2027ab635″ UUID_SUB=”1095abff-9bbf-c705-839d-c0e9e8f68624″ LABEL=”localhost:data” TYPE=”linux_raid_member” PARTLABEL=”primary” PARTUUID=”7bd23a9e-3c6f-464c-aeda-690a93716465″
/dev/sdd1: UUID=”a5c2d1ec-fa7f-bba4-4c83-bfb2027ab635″ UUID_SUB=”0d6ef39a-03af-ffd4-beb8-7c396ddf4489″ LABEL=”localhost:data” TYPE=”linux_raid_member” PARTUUID=”be2ddc1a-14bc-410f-ae16-ada38d861eb3″
# cat /etc/mdadm.conf
ARRAY /dev/md/boot metadata=1.2 name=localhost:boot UUID=ad0e75a7:f80bd9a7:6fea9e4d:7cf9db57
ARRAY /dev/md/root metadata=1.2 name=localhost:root UUID=266e79a9:224eb9ed:f4a11322:025564be
ARRAY /dev/md/data metadata=1.2 spares=1 name=localhost:storage UUID=a5c2d1ec:fa7fbba4:4c83bfb2:027ab635
Спасибо
Как только диск удален из массива, его метаданные больше не обновляются. Поэтому последнее состояние метаданных — это состояние до его удаления, так что оно «выглядит хорошо», если только другой диск не заявит о более позднем времени обновления и т.п. Поэтому, если вы удаляете диски RAID-1 и ожидаете, что массив продолжит работу на двух других дисках, это может привести к путанице. В этом есть слабое место формата метаданных mdadm. Более того, ваш mdadm.conf слишком многословен. Удалите metadata=, name= и spares= в частности. Такие записи могут привести к игнорированию вашего нового массива (в этом примере, если нет запасных дисков). Если вы хотите оставить оба массива, как минимум, вы должны изменить UUID одного из них (mdadm –assemble –update=uuid), а также изменить UUID любого, что находится на этом массиве. Вы также должны рассмотреть –update=super-minor и/или –update=name. Если вы не хотите оставлять массив для старых дисков, –stop неверный массив, а затем –zero-superblock его диски. Вы также можете воссоздать, однако не ожидайте, что данные на этих дисках будут доступны позже. Это возможно только при определенных условиях, см. Должен ли я использовать mdadm –create для восстановления моего RAID?
Ответ или решение
Вопрос: Ревертирование массива RAID на старый диск после перезагрузки
Вы столкнулись с серьезной проблемой после замены дисков в массиве RAID и последующей перезагрузки сервера. Давайте разберемся с ситуацией и возможными решениями, опираясь на предоставленные вами данные.
Описание проблемы
Вы заменили массив RAID 1, состоящий из двух дисков по 4 ТБ, на два диска по 10 ТБ, используя утилиту mdadm
. Процесс прошел успешно: вы добавили новые диски, дождались завершения синхронизации, удалили старые диски, а затем увеличили размер массива и файловой системы. Однако, после удаления одного из новых дисков и перезагрузки сервера, массив RAID вернулся к конфигурации, включающей старые диски, а данные на новом массиве стали недоступны.
Это может произойти по нескольким причинам, связанным с управлением метаданными RAID и конфигурацией mdadm
, а также наличием конфигурационных файлов, которые могут конфликтовать с новой настройкой.
Причины проблемы
-
Кэширование метаданных: После удаления диска из массива, метаданные оставшегося массива не обновляются. Поэтому при перезагрузке может происходить загрузка старого состояния, если информация о старых дисках сохраняется как "основная". Это происходит из-за того, что метаданные RAID могут не отражать текущее состояние новой конфигурации.
-
Конфликт конфигураций: В вашем файле
/etc/mdadm.conf
также присутствуют старые метаданные, которые могут приводить к конфликтам при сборке массивов. Например, конфигурации массива с указанием параметровmetadata=
,name=
иspares=
могут вызвать игнорирование новой конфигурации RAID. -
Существует старая суперблокировка: Метаданные, сохраняемые на старых дисках, могут привести к тому, что при перезагрузке система неверно определит текущий массив.
Рекомендации по решению
Чтобы исправить ситуацию и восстановить доступ к данным на новом массиве, рассмотрите следующие шаги:
-
Проверка и изменение конфигурации
mdadm.conf
:- Удалите из файла
/etc/mdadm.conf
излишние параметры, такие какmetadata=
,name=
иspares=
. Это может помочь системе лучше определить правильный массив при загрузке.
- Удалите из файла
-
Пересоберите массив:
- Убедитесь, что служба
mdadm
дальнейшую сборку массива выполняет корректно. Для этого выполните команду:mdadm --assemble --force /dev/md125 /dev/sde1 /dev/sdf1
- Использование параметра
--force
может помочь загрузить массив, даже если система считает его неполным.
- Убедитесь, что служба
-
Изменение UUID:
- Поскольку у вас существует конфликт из-за одинаковых UUID на старых и новых дисках, вы можете изменить UUID одного из массивов с помощью команды:
mdadm --assemble --update=uuid /dev/md125 /dev/sde1 /dev/sdf1
- Поскольку у вас существует конфликт из-за одинаковых UUID на старых и новых дисках, вы можете изменить UUID одного из массивов с помощью команды:
-
Очистка суперблока старых дисков:
- Если вы не планируете использовать старые диски, рекомендуется очистить суперблок старых дисков, чтобы избежать путаницы в будущем:
mdadm --zero-superblock /dev/sdc1 mdadm --zero-superblock /dev/sdd1
- Если вы не планируете использовать старые диски, рекомендуется очистить суперблок старых дисков, чтобы избежать путаницы в будущем:
-
Перезагрузка системы:
- После внесения всех изменений выполните перезагрузку системы и убедитесь, что массив RAID формируется корректно.
Заключение
Ситуации с реинциализацией массивов RAID могут быть сложными, особенно когда конфигурации меняются, а старая информация продолжает влиять на новые настройки. Следуя вышеперечисленным шагам и внимательно проверяя конфигурации, вы сможете восстановить доступ к данным и обеспечить стабильную работу вашего RAID-массива.