В одной заметке я описывал как установить Ubuntu на ею же создаваемый в процессе установки RAID. То дело описывалось для классического инсталлятора и для Legacy системы. Однако на дворе уже давно властвуют UEFI системы. А может и не властвуют. Главное, что надо знать сейчас, так это то, что мы будем ставить Ubuntu на софтовый RAID в UEFI режиме.
Требований немного и они стандартны
- Ubuntu 20 или 18
- Система, на которую ставится Ubuntu, работает в UEFI режиме
- Есть несколько дисков, на которых будет стоять система
После запуска установщика и выбора языка установки может появиться предложение обновить установщик. Соглашаемся.
Дойдя до шага разметки дисков, останавливаемся и выбираем настраиваемый вариант:
Выбираем один из дисков и делаем его загрузочным
Выбираем другой диск и делаем на нём резервный загрузочный раздел
Так повторяем с каждым диском в будущей группе RAID.
В итоге должна получится такая картина:
Таким образом сейчас мы создали два загрузочных диска, один из которых содержит главный EFI раздел с загрузчиком, и дополнительный с тем же самым загрузчиком, который при порче основного возьмёт управление загрузкой на себя
Теперь подготовим разделы для RAID-группы
Для каждого диска создаём новый GPT раздел.
Делаем как на рисунке: выделяем весь диск под раздел, и не форматируем его.
Так проделываем с каждым диском, добавляя пустой GPT-раздел. Он-то и будет служить основой для RAID-устройства.
Выбираем «Создать программный RAID»
В диалоге создания указываем имя устройства и выбираем те пустые разделы, что создали на предыдущем шаге.
После создания RAID-устройства, выбираем его и создаём на нём GPT раздел.
В диалоге создания можно выбрать размер, тип файловой системы и задать точку монтирования.
Повторяем то же самое, создав домашний раздел и растянув его на весь остальной объём. Для этого оставляем поле ввода размера пустым, что логично.
Должна получиться вот такая картина: наверху логическая структура файловой системы, ниже неиспользуемые устройства (должно быть пустым, если все шаги были сделаны верно), и внизу используемые устройства с картой разметки. Как видно, на каждом есть EFI раздел и раздел для RAID. На самом устройстве RAID показаны созданные разделы.
На этом этапе разметка дисков закончена, можно нажать Done и продолжать ставить систему.
После загрузки структура разделов будет примерно такой:
Как выяснилось, ставить Ubuntu 20 или Ubuntu 18 в режиме UEFI на RAID оказалось не так сложно.
Сложнее будет при отказе диска и восстановлении загрузки.
И для того, чтобы система при отказе диска грузилась с уцелевшего, сделаем совсем немного. По советам с одного хорошего сайта:
lsblk -o +uuid
В выводе находим идентификатор EFI раздела. Для EFI — это что-то типа 012F-CD4F. Этот номер\идентификатор переносим на каждый резервный EFI раздел
mkdosfs -i 012FCD4F /dev/sdb1
Теперь скопируем содержимое активного загрузочного раздела на резервный, примонтировав резервный
mount /dev/sdb1 /mnt
cp -R /boot/efi/EFI/ /mnt
И отмонтируем резервный раздел
umount /dev/sdb1
Повторять копирование для каждого раздела на каждом диске в массиве.
Теперь при пропаже основного диска (и загрузочной записи с него) система загрузится с резервного.
При отказе диска нужно восстановить массив. Добавим в систему новый исправный диск.
Запустим gdisk и создадим два раздела: 512 МБ для EFI раздела, и всё остальное для RAID.
gdisk /dev/sdb
Вводим n, задаём размер в 512 МБ, указываем тип раздела как ef00
Создаём второй раздел. Снова вводим n, ставим всё по-умолчанию, указываем тип раздела как fd00.
Записываем изменения нажатием клавиши w.
Добавляем в массив новый раздел
mdadm --add /dev/md0 /dev/sdb2
Начинаем процесс синхронизации
mdadm --assemble --scan
Пока идёт синхронизация, повторим шаги с копированием метки EFI раздела и его содержимого.
mkdosfs -i 012FCD4F /dev/sdb1
mount /dev/sdb1 /mnt
cp -R /boot/efi/EFI/ /mnt
umount /dev/sdb1
Всё. Диск заменён. Можно пить чай.
А как создать swp не помещая его в raid?
Достаточно при установке в момент разметки диска, не выбирать весь раздел для GPT, а взять нужный объём для swap, а остальное место отдать под пустой GPT.
Правда при этом потеряется немного места при создании raid.
Разметка будет выглядеть примерно такой:
А что за области диска loop0, loop1, loop2.
Статья полезная. Нигде не нашел такой инфы в доступном виде!