
У меня есть сервер с Debian Jessie, 4 диска sda на sdd, все из которых размечены одинаково. Система находится в raid1 md raid на всех дисках. На всех дисках есть grub, и я могу менять диски между собой, каждый из них загрузочный, и система успешно загружается. Все диски содержат абсолютно одинаковый формат:
sdx1 - Boot Partition, GRUB installed
sdx2 - Raid 1 /boot
sdx3 - Raid 1 /
sdx4 - Raid 10 swap
sdx5 - non-md btrfs Raid 6 /data
Раздел данных — это raid6 btrfs, в настоящее время я пытаюсь увеличить его емкость, заменив диск на больший, поскольку у меня может произойти два сбоя, и моим первым побуждением было просто заменить один из дисков и загрузиться заново, восстановить сбойные массивы raid с помощью недавно установленного диска, и после перестройки все вернется в норму.
НО машина (которая, к сожалению, сейчас безголовая) не загружается, как только я меняю диски на что-то, что делает массив raid недействительным. Я могу менять диски друг с другом целый день, и она успешно загружается. Но если я извлекаю диск или меняю что-то, что не является частью raid, она не загружается.
Я что-то упустил? Как мне сказать md, что нормально автоматически загружаться с отсутствующими дисками/деградировавшим массивом? В конце концов, что касается md, то даже один из четырех дисков может поддерживать всю систему сам по себе, раздел данных — это еще один зверь, так как ему нужно как минимум два диска, но md не должен беспокоиться об этом, так как это чистый рейд btrfs.
Я знаю, что в текущем варианте использования я мог бы просто удалить диск из рейда, обновить его, а затем вернуть обратно, но в случае сбоя у меня нет возможности удалить диск, если система не запустится.
решение1
В качестве обновления и ответа - тем временем я выяснил, что единственное, чего здесь действительно не хватает, это флага nofail в fstab. Файловая система была деградирована, и он не монтировал файловую систему в деградированном состоянии без установки опции nofail.
решение2
Насколько мне известно, пока невозможно создать raid с mdadm, с которого можно загрузиться без отдельных загрузочных разделов. Я предполагаю, что вы настроили его так же, как описано здесь, он использует raid10, но применим к другим уровням raid:
Возможно, вы не настроили в биосе загрузку с других дисков? Или загрузочные разделы не совсем одинаковые, то есть точные копии с одинаковым UUID.
Чтобы включить загрузку с определенного диска, ему понадобится загрузочный сектор, а BIOS нужно настроить на загрузку с него (вместе со списком других загрузочных дисков, входящих в рейд). Конечно, для успешного завершения загрузки диску также понадобится загрузочный раздел. Поскольку эти загрузочные разделы не являются частью рейда, у каждого загрузочного диска есть свой собственный. Если вы убедитесь, что каждый загрузочный раздел содержит одну и ту же файловую систему (например, с помощью dd, чтобы скопировать ее), и на каждом диске есть загрузочный сектор, созданный с использованием образов на этом загрузочном разделе, система сможет загружаться с любого из дисков. Даже если рейд деградирован, деградированный рейд не должен помешать успешной загрузке. В противном случае это делает большое преимущество наличия рейда спорным.
Цитата из ссылки:
Каждый диск, который является частью рейда, должен иметь загрузочный раздел размером около 1 ГБ, который НЕ является частью рейда. Создайте эти разделы как обычно, они должны быть точно такого же размера. Пометьте их как загрузочные, точка монтирования на одном из дисков должна быть /boot, вы можете оставить другие как не смонтированные.
После того, как вы использовали dd для создания точных копий загрузочного раздела:
Теперь убедитесь, что ваш BIOS настроен на попытку загрузки со всех 3 дисков, порядок не имеет значения. Пока BIOS будет пытаться загрузиться с любого диска, то в случае отказа одного из дисков система автоматически загрузится с другого диска, поскольку UUID точно такие же.