С некоторой помощью из Как установить сервер Ubuntu с UEFI и RAID1 + LVM , RAID, установленным в Ubuntu 18.04 , и поддержкой RAID в установщике Ubuntu 18.04 Desktop? и как избавиться от «сканирования файловых систем btrfs» при запуске? Мне удалось собрать рабочий HOWTO, используя только команды linux.
Короче говоря
- Загрузите установщик альтернативного сервера.
- Установите с разделением вручную, EFI + RAID и LVM на раздел RAID.
- Клонировать раздел EFI из установленного раздела на другой диск.
- Установите второй раздел EFI в загрузочную цепочку UEFI.
- Чтобы избежать длительного ожидания при загрузке в случае поломки диска, удалите
btrfs
загрузочные сценарии.
В деталях
1. Загрузите установщик
2. Установите с ручным разделением
- Во время установки на
Partition disks
шаге выберите Manual
.
- Если на дисках есть разделы, удалите их.
- Если на ваших дисках есть какие-либо логические тома, выберите
Configure the Logical Volume Manager
.
- Выберите,
Delete logical volume
пока все тома не будут удалены.
- Выберите,
Delete volume group
пока все группы томов не будут удалены.
- Если присутствует какое-либо устройство RAID, выберите
Configure software RAID
.
- Выберите,
Delete MD device
пока все устройства MD не будут удалены.
- Удалите все разделы на физических дисках, выбрав их и выбрав
Delete the partition
.
- Создать физические разделы
- На каждом диске создайте раздел 512 (я видел другие используют 128 Мбайт) в начале диска, использования в качестве:
EFI System Partition
.
- На каждом диске, создать второй раздел с «макс» размером, Использовать как:
Physical Volume for RAID
.
- Настроить RAID
- Выберите
Configure software RAID
.
- Выберите
Create MD device
, введите RAID1
, 2 активных диски, 0 запасных дисков, и выберите /dev/sda2
и /dev/sdb2
устройства.
- Настроить LVM
- Выберите
Configure the Logical Volume Manager
.
- Создать группу томов
vg
на /dev/md0
устройстве.
- Создать логические тома, например
swap
в 16G
root
в 35G
tmp
в 10G
var
в 5G
home
в 200G
- Настройте, как использовать логические разделы
- Для
swap
раздела выберите Use as: swap
.
- Для других разделов, выберите
Use as: ext4
с надлежащей точкой монтирования ( /
, /tmp
, /var
, /home
соответственно).
- Выберите
Finish partitioning and write changes to disk
.
- Позвольте программе установки завершиться и перезагрузиться.
Если вы переустанавливаете диск, на котором ранее была конфигурация RAID, описанный выше шаг создания RAID может завершиться неудачно, и вы никогда не получите md
устройство. В этом случае вам может потребоваться создать USB-флешку Ubuntu Live, загрузиться на нее, запустить, gparted
чтобы очистить все таблицы разделов, прежде чем перезапустить это HOWTO.
3. Осмотрите систему
Проверьте, какой раздел EFI был смонтирован. Скорее всего /dev/sda1
.
крепление | grep boot
Проверьте состояние RAID. Скорее всего это синхронизация.
cat / proc / mdstat
4. Клонировать раздел EFI
Загруженный EFI должен быть установлен на /dev/sda1
. Поскольку этот раздел не отражается через систему RAID, нам необходимо его клонировать.
sudo dd if=/dev/sda1 of=/dev/sdb1
5. Вставьте второй диск в загрузочную цепь
Этот шаг может не потребоваться, так как если один из дисков умирает, система должна загрузиться с (идентичных) разделов EFI. Тем не менее, кажется разумным обеспечить загрузку с любого диска.
- Запустите
efibootmgr -v
и обратите внимание на имя файла для ubuntu
загрузочной записи. На моей установке это было \EFI\ubuntu\shimx64.efi
.
- Беги
sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi
. В зависимости от вашей оболочки, вы можете избежать обратной косой черты.
- Убедитесь,
efibootmgr -v
что у вас одинаковое имя файла для элементов загрузки ubuntu
и ubuntu2
загрузки, и что они являются первыми двумя в порядке загрузки.
- Теперь система должна загрузиться, даже если один из дисков выйдет из строя!
7. Подождите
Если вы хотите попытаться физически удалить или отключить любой диск для проверки вашей установки, вы должны сначала дождаться окончания синхронизации RAID! Следите за ходом выполнения, cat /proc/mdstat
однако, вы можете выполнить шаг 8 ниже во время ожидания.
8. Удалить BTRFS
В случае сбоя одного диска (после завершения синхронизации) система все равно будет загружаться. Тем не менее, последовательность загрузки потратит много времени на поиск файловых систем btrfs. Чтобы убрать ненужное ожидание, запустите
sudo apt-get purge btrfs-progs
Это должно удалить btrfs-progs
, btrfs-tools
и ubuntu-server
. Последний пакет является всего лишь мета-пакетом, поэтому, если больше пакетов не указано для удаления, все будет в порядке.
9. Установите настольную версию
Запустите sudo apt install ubuntu-desktop
для установки настольной версии. После этого синхронизация, вероятно, завершена, и ваша система настроена и должна выдержать сбой диска!
10. Обновите раздел EFI после обновления grub-efi-amd64
Когда пакет grub-efi-amd64
обновляется, файлы в разделе EFI (смонтированном в /boot/efi
) могут измениться. В этом случае обновление необходимо вручную клонировать в зеркальный раздел. К счастью, вы должны получить предупреждение от менеджера обновлений, который grub-efi-amd64
скоро будет обновлен, поэтому вам не нужно проверять после каждого обновления.
10.1 Узнайте источник клона, быстрый способ
Если вы не перезагрузились после обновления, используйте
mount | grep boot
узнать, какой раздел EFI смонтирован. Этот раздел, как правило /dev/sdb1
, должен использоваться в качестве источника клона.
10.2 Узнайте источник клона, параноидальный путь
Создайте точки монтирования и смонтируйте оба раздела:
sudo mkdir /tmp/sda1 /tmp/sdb1
sudo mount /dev/sda1 /tmp/sda1
sudo mount /dev/sdb1 /tmp/sdb1
Найти метку времени нового файла в каждом дереве
sudo find /tmp/sda1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sda1
sudo find /tmp/sdb1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sdb1
Сравните временные метки
cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"'
Следует напечатать /dev/sdb1 is newest
(скорее всего) или /dev/sda1 is newest
. Этот раздел должен использоваться в качестве источника клона.
Размонтируйте разделы перед клонированием, чтобы избежать несогласованности кэша / раздела.
sudo umount /tmp/sda1 /tmp/sdb1
10.3 Клон
Если /dev/sdb1
был источником клона:
sudo dd if=/dev/sdb1 of=/dev/sda1
Если /dev/sda1
был источником клона:
sudo dd if=/dev/sda1 of=/dev/sdb1
Выполнено!
11. Виртуальная машина попала
Если вы хотите сначала попробовать это на виртуальной машине, есть несколько предостережений: по-видимому, NVRAM, которая содержит информацию UEFI, запоминается между перезагрузками, но не между циклами выключения-перезапуска. В этом случае вы можете оказаться в консоли UEFI Shell. Следующие команды должны загрузить вас с вашего компьютера /dev/sda1
(используйте FS1:
для /dev/sdb1
):
FS0:
\EFI\ubuntu\grubx64.efi
Первое решение в верхнем ответе загрузки UEFI в virtualbox - Ubuntu 12.04 также может быть полезным.