LINUX.ORG.RU

Вопрос по RAID 1 (зеркалирование)

 , , ,


1

2

Всем привет!

Настроил RAID-массив (зеркало), изначально планируя перемещать этот RAID между своим PC и ноутбуком (на время поездок).

Разбивка такая:

/dev/sda1 // монтирование: /boot
/dev/sda2 // монтирование: /boot/efi
/dev/sda3 // монтирование: / (RAID 1)
 
/dev/sdb1 // клон через dd: /boot
/dev/sdb2 // клон через dd: /boot/efi
/dev/sdb3 // монтирование: / (RAID 1)

/dev/sda3 & /dev/sdb3 - RAID. Внутри LVM с LUKS-шифрованием и одним разделом подо всё.
Bitmap - internal.
  1. Систему поставил на RAID находясь на ноутбуке. Переставил оба диска в PC - грузится с любого, второй в RAID не включает на автомате. UUID у партиций одинаковые и в mdadm.conf указал диск по UUID. lsblk / fdisk -l видят все диски, но примонтирован в raid только /dev/sda3. cat /proc/mdstat говорит, что второй диск missing. Почему не срабатывает?

  2. Поставил оба диска обратно в ноутбук - загрузился нормально и оба диска включились в RAID автоматом. НО - Linux «не заметил», что диски больше не синхронны (я ведь писал на деградировавший массив). И он не знает, какой из них более актуальный, но молча запустился и начал работу. Почему он по Bitmap не видит, что есть несинхронность и не предлагает выбрать более актуальный диск для синхронизации? Как это настроить?

  3. Иметь два клона /boot это конечно здорово, но нельзя ли его тоже объединить в RAID, желательно с шифрованием? При каждом обновлении ядра или update-initramfs в моем случае придется заново использовать dd.



Последнее исправление: DOKA (всего исправлений: 1)

Выносить /boot за пределы рейда нет никакой необходимости. Только надо чтобы /boot находился на том же разделе что и корень, в том смысле, что если ты используешь raid + lvm, то и /boot должен располагаться на lvm, а не так что корень на лвм, а boot на отдельном рейдовом разделе – так нифига не работает. Правда esp всё равно должен быть вне рейда, так что х.з. насколько оно нужно. Про остальное не знаю.

anonymous
()
Ответ на: комментарий от DOKA

Увы, /boot внутри рейда не заработал вообще никак.

Посмотри официальную документацию Void Linux. Недавно делал пошагово оттуда, всё завелось сразу и без плясок.

mord0d ★★★★★
()
Ответ на: комментарий от DOKA

Не знаю, у меня на дебиане всё работает… И в случае когда система располагается на голом raid, и в случае когда на raid + lvm.

anonymous
()

1. Посмотрите по dmesg когда обнаруживаются диски в стационарнике. Может в момент initramfs еще нет второго диска, может он на другом контроллере, для которого нужен модуль, которого нет в initramfs.

2. Как не заметил? В /proc/mdstat смотрели, там должен быть указан процент синхронизации.

mky ★★★★★
()
Ответ на: комментарий от mky

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

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

Можете что угодно нашаманить в скриптах initramfs. Там можно изучать вывод команды mdadm --examine для обоих дисков (разделов), сравнивать «Events», задавать вопросы. Правда я не знаю, как корректнее заставить mdadm синхронизироваться по диску с меньшим «Events».

mky ★★★★★
()
Ответ на: комментарий от doc0

в lvm встроенный raid есть же вроде, зачем mdadm?

Все уже привыкли использовать raid+lvm. Почему так, давно забылось ) Главное работает.

Может дело в том, что raid идёт в самом низу, и если физический диск отвалится, синхронизация будет делаться один раз для всего носителя.

anonymous
()
Ответ на: комментарий от mky

у кого счётчик больше, тот и актуальнее

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

Это не расчитано на то, что диски одновременно работали в разных компах

В принципе, это меня устраивает. Я тестировал предельный случай.

В /proc/mdstat смотрели, там должен быть указан процент синхронизации. Знаю об этом, смотрел, но не увидел никаких особенностей. Просто рейд заработал и всё. Вот и удивился.

Остальное (dmesg) проверю попозже, напишу. Это может быть правдой (два контроллера на матплате).

P. S.: Кстати, как относитесь к идее иметь загрузочную флешку с /boot, и делать RAID не партишнов, а дисков целиком?

DOKA
() автор топика
Ответ на: комментарий от DOKA

флешку с /boot, и делать RAID не партишнов, а дисков целиком

Отношусь нейтрально, но сам бы делать не стал. Лень держать две флешки (одна всегда может умереть в самый неподходящий момент).

Да ещё такие подводные камни бывают: https://unix.stackexchange.com/questions/320103/whats-the-difference-between-...  — материнки ASRock, если видят остатки GPT, пытаются восстановить таблицу разделов и херят данные. Не хочется оказаться в ситуации, когда сдохла материнка, ты её срочно поменял на что попало, а новая тебе raid уничтожила :)

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо за помощь!

Переткнул разъем, raid собрался.

Только на компьютере синхронизовался с другого диска, не с того, с которого хотел синхронизоваться ноут. Похоже, это завязано не на счетчик, а на порядок загрузки. Там вообще интересная вещь - разделы /boot и /boot/efi берутся с разных физических дисков почему-то. Ни на что не влияет, конечно.

Если будет необходимость синхронизации конкретного диска, я так понимаю, буду грузиться именно с него, а второй подключать на лету и делать --re-add.

Ещё добавил параметр ядру libata.force=noncq (поправил ошибки передачи данных по SATA), обновил grub, и склонировал заново boot-разделы. Решил остаться на разбивке по разделам, а не по физическим дискам.

Зеркалирование есть, бекап на внешние носители настроен, теперь могу спать спокойно :)

DOKA
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.