Назад | Перейти на главную страницу

Откуда берутся определения md-массивов?

Я создал массив md на компьютере ARM с двумя дисками USB / SATA в RAID 1. Затем я переместил оба диска на рабочий стол Ubuntu и установил mdadm. Установка обнаружила RAID и добавила определение в /etc/mdadm/mdadm.conf. Итак, откуда это взялось?

Позже я снова создал RAID со своего рабочего стола и теперь (даже после перезагрузки) mdadm --examine --scan показать оба двух массива:

ARRAY /dev/md/0  metadata=1.2 UUID=19846240:ff2a5429:8b22a9bd:a3760e2e name=microserver.delrio.red:0
ARRAY /dev/md/0  metadata=1.2 UUID=49a26458:5449d0ff:4606e203:ddad2fe8 name=ubuntu:0

Когда вы создаете RAID-массив с mdadm в GNU / Linux где хранится определение массива?

Как я могу удалить только первый?

Метаданные хранятся в суперблок.

Чтобы удалить, я думаю, вы хотите посмотреть mdadm --zero-superblock. Прежде чем начинать возиться, убедитесь, что у вас есть резервная копия метаданных.

Это сильно отличается в разных системах. Программный raid linux использует raid superbock, который находится на последних 64 КБ каждого из устройств-членов.

Точнее, если размер устройства n байт, суперблок рейда находится в n&~65535-65536.

Суперблок рейда находится в конце, потому что на зеркальных уровнях рейда упрощается использование устройства-члена независимо от массива (потому что вы можете просто смонтировать его, конечно, вам нужно выполнить восстановление массива после этого).

Его точный формат суперблока рейда подробно описан в эта вики.

Его фактические байтовые данные вы можете просматривать / редактировать любым шестнадцатеричным редактором, например dhex.

Фактически, он описывает всю схему рейда (уровень рейда, контрольную сумму) и то, что является устройством-участником всего массива.

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

mdadm --examine --scan показывает именно эту информацию о суперблоке рейда без вмешательства драйвера рейда ядра.

В вашем случае в вашем массиве есть явное несоответствие. Отсюда нелегко выяснить, в чем его причина. Но у вас есть raid1, который является зеркалом, поэтому реальной опасности потери данных нет. Самое простое, что можно сделать:

  1. Вы уничтожаете суперблок рейда на одном из участников рейда с помощью mdadm --zero-superblock команда
  2. А затем снова вставьте это устройство в массив с mdadm --add.

Начнется новая повторная синхронизация.

П.с. # 1:

Думаю суперблок рейда уже переписал твоей убунту, но не уверен. Обнуление суперблока и повторная установка устройства исправят его.

П.с. # 2:

Формат суперблока рейда не зависит от платформы, он должен быть одинаковым до последнего байта между разными архитектурами, даже в случае несовместимости по порядку байтов. Ваша проблема почти наверняка не в архитектурной несовместимости, а в ошибочной перезаписи суперблока рейда на одном из ваших устройств.