LINUX.ORG.RU

Перенос системного диска Ubuntu на RAID1 + LVM

 , , ,


0

1

Всем привет! Задача - перенести систему на программный raid1 + lvm. Что сделал:

  1. В системе 3 диска: sda, sdb, sdc
  2. На дисках sdb, sdc создаю fdisk таблицу разделов GPT, затем 2 partition: sdb1 - 512M, type(1) EFI и на 2 - оставшийся объем и тоже самое для sdc1.
  3. mkfs -t vfat /dev/sdb1, mkfs -t vfat /dev/sdc1
  4. На разделах sdb2, sdc2 созданы таблицу GPT и разделы на весь объем.
  5. Создаю массив mdadm создал raid1 - md0
  6. Создаю lvm - pvcreate, vgcreate, lvcreate из md0
  7. mkfs.ext4 /dev/vg0/lv0
  8. Монтирую lv в /mnt
  9. Копирую rsync раздел системного диска sda2 на lv0.

Теперь с этого момента у меня главная затыка.

  1. В примонтированном lv0 в fstab добавляю boot с указанием sdb1, sdc1
/dev/disk/by-uuid/****-**** /boot/efi vfat defaults 0 1
/dev/disk/by-uuid/****-**** /boot/efi vfat defaults 0 1

/dev/disk/by-uuid/****-**** / ext4 defaults 0 1
  1. Устанавливаю grub: grub-install /dev/sdb и grub-install /dev/sdc
  2. Обновляю update-grub

После этого в VB отключаю системный диск. Пробую загрузиться - консоль shell или переходит в консоль grub

Большая просьба, кто может помочь. Напишите подробнее, в чем ошибка и как ее конкретно исправить?? Заранее всем большое спасибо!


На дисках sdb, sdc создаю fdisk таблицу разделов GPT, затем 2 partition: sdb1 - 512M, type(1) EFI и на 2 - оставшийся объем и тоже самое для sdc1.

VirtualBox по умолчанию работает в Legacy режиме. Изменить можно через Настройки => Система => Включить EFI.

Устанавливаю grub: grub-install /dev/sdb и grub-install /dev/sdc

Вот тут не уверен, но мне кажется устанавливать граб нужно на LV, а не на физические волюмы.

Да и вообще, на будущее, установщик линукса - это отличный генератор конфигов граба. Проще будет поставить в соседнюю виртуалку убунту с целевой конфигурацией (рутовик на зеркальном софтрейде) и посмотреть как это всё будет выглядеть. Альтернативно, можно зачрутиться и посмотреть вывод dracut –print-cmdline

GLaDOS
()

На разделах sdb2, sdc2 созданы таблицу GPT и разделы на весь объем.

Зачем?

В примонтированном lv0 в fstab добавляю boot с указанием sdb1, sdc1

Два раздела в одну точку монтирования?

Grub у вас записал себя на /dev/sdb1? Обчно, когда устанавливают grub загрузившись с другого диска, либо делают chroot, либо указывают ″--boot-directory″ и ″--efi-directory″.

Обновляю update-grub

И в какой файл и что пишет эта команда? Содержимое grub.cfg смотрели, какой там UUID прописан для корневой ФС?

Копирую rsync раздел системного диска sda2 на lv0.

Без монтирования? Или система загружена с sda2?

Не знаю какой у вас initramfs, может нам нет поддержки mdraid, lvm.

консоль shell или переходит в консоль grub

″grub rescue″? То есть grub не может найти/прочитать свой конфиг?

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

По поводу EFI. У вас их два раздела. В теории можно объединить их в mdraid-1 и это монтировать в /boot/efi, как здесь https://askubuntu.com/questions/66637/can-the-efi-system-partition-be-raided , но я такое не пробовал. Иначе, можно монтировать их по очереди в /boot/efi или куда ещё для установки grub, а потом вобще не монтиоровать и grub не обновлять (именно сам efi-загрузчик), а не конфиг.

В приниципе, grub можно устанавиливать один раз, допустим на sdb1, а на sdc1 скоприровать sdb1. Но на sdb1 именно нужно устанавливать, а не копировать, чтобы в efi-файл прописался правильный путь к каталогу grub.

Проверьте, что в efi (ESP) разделе создались каталоги/файлы, и, проверьте, что там есть загрузчик по умолчанию EFI/BOOT/BOOTX64.EFI и желательно, чтобы это был grub. Некоторые bios не хотят грузится, если нет загрузчика по умолчанию, некоторые вобще только его загружают, игнорируя записи в nvram.

Если интерестно, можете выполнить команду ″strings BOOTX64.EFI″, там поискать ″/grub″, чтобы знать к чему привязался ваш загрузчик — uuid файловой системы или номер раздела.

Если у вас grub выбрасывает в rescue mode, значит grub-instll что-то неправильно распознал и grub'у нехватает модулей (pre-load модулей). И нужно команде ″grub-install″ через опцию ″--modules″ указывать нужные модули для gpt, lvm, raid.

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

Что-то у меня путаница похоже полная. В мануалах пишут, что надо выносить за пределы RAID, LVM. Я тоже сначала хотел объединить sda1, sdb1 в один массив md0, а для корня md1 и сверху него LVM.

В результате создал sdb1, sdc1, форматнул в FAT32. Ведь цель - это дуалбут сделать.

Теперь я загрузился с другого диска sda (не livecd). Вот что lsblk показывает 1.png

Делаю попытку установки:

grub-install --boot-directory=/dev/datavg/datalv/boot --efi-directory=/dev/sdb1 --target=x86_64-efi

Выдает: grub-install error: failed to get canonical path of ‘/dev/datavg/datalv/boot/grub’

Если не затруднит, может через удаленный рабочий стол посмотрите в мой VirtualBox, что я делаю не так с установкой grub? Кофе за время с меня!

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

Да, ESP (efi system partition) нужно выносить за пределы RAID, LVM. Но, чтобы на них было одинаковое содержимое, в теории их можно объединить в mdraid1 суперблок 1.0. Но вам, пока, что, лучше так не делать.

В результате создал sdb1, sdc1, форматнул в FAT32.

Какой тип (код) раздела у sdb1, sdc1?

Делаю попытку установки:

Это вобще неправильная строка.

Нужно как-то так:

mount /dev/sdb1 /dev/datavg/datalv/boot/efi
grub-install --boot-directory=/dev/datavg/datalv/boot/grub --efi-directory=/dev/datavg/datalv/boot/efi --target=x86_64-efi /dev/sdb1
ls -l -R /boot/efi/
и по выводу ls убедиться, что есть файлы/каталоги на ESP, и что размер BOOTX64.EFI в каталоге EFI/BOOT совпадает с grubx64.efi в каталоге EFI/дистрибутив.

После этого grub должен загружаться и выводить меню из /dev/datavg/datalv/boot/grub/grub.cfg. Этот файл должен существовать, его вы можете поредактировать руками — поменять название одного из пунктов загрузки (после слова ″menuentry″), чтобы точно убедиться, что grub читает именно этот файл.

может через удаленный рабочий стол посмотрите в мой VirtualBox

Нет, это не спортивно, тем более это учебная виртуалка.

mky ★★★★★
()
Ответ на: комментарий от mky
  1. Тип раздела для sdb1, sdc1 - EFI System
  2. По команде
grub-install --boot-directory=/mnt/boot/grub --efi-directory=/mnt/boot/efi --target=x86_64-efi /dev/sdb1

Error: doesn’t look like EFI partition Я не уверен, что это правильная команда..

Ввожу

grub-install /dev/sdb
grub-install /dev/sdc

Успешно ставит x86_64-efi Installation finished. No error reported.

Далее делаю.

update-grub /dev/sdb
update-grub /dev/sdc

Вроде как успешно, вот скриншот - https://imgbb.su/image/xBkQjx (не работает у меня буффер обмена никак (((

Размеры файла BOOTX64.EFI в /boot/efi/EFI/BOOT - 955656,а файл grubx64.efi в /boot/efi/EFI/ubuntu - 1726344. Не совпадают :((

В файле (примонтирован datalv) /mnt/boot/grub/grub.cfg данные другого раздела (системного диска). т.е. обновления не прошло так как надо. Немного уже запарил GRUB, как все таки его можно нормально установить……

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

Error: doesn’t look like EFI partition

В /mnt/boot/efi подмонтирован /dev/sdb1?

Блин, я ещё ошибся, нужно ″grub-install ... /dev/sdb″, то есть ставить grub на диск, а не на раздел. Незнаю, видимо совсем не выспался.

#mount /dev/datavg/datalv/ /mnt
#mount /dev/sdb1 /mnt/boot/efi
#grub-install --boot-directory=/mnt/boot --efi-directory=/mnt/boot/efi --target=x86_64-efi /dev/sdb
#ls -l -R /mnt/boot/efi/

потом, если что:

cp /mnt/boot/efi/EFI/ubuntu/grubx64.efi /mnt/boot/efi/EFI/BOOT/BOOTX64.EFI

grub-install /dev/sdb

Это команда не имеет смысла. grub определяет, что efi, устанавливается в /boot/efi, а туда у вас смотирован /dev/sda1.

update-grub лучше делать из уже загруженной системы, первый раз отредактировать grub.cfg руками или указав всё из меню grub. Но, сначала нужно установить grub на /dev/sdb, чтобы он выводил меню, то есть читал этот grub.cfg, до этого момента не важно что там написано.

Насколько я знаю, update-grub не понимает аргумент /dev/sdb, поэтому вы просто пересоздали grub.cfd на /dev/sda2.

Немного уже запарил GRUB, как все таки его можно нормально установить

Когда разберётесь, не будет проблем с восстановлением загрузчика, очень неудобная операция, так как её обычно нужно делать быстро и без интернета :)

mky ★★★★★
()