Установите рабочий стол Ubuntu 18.04 с RAID 1 и LVM на компьютер с UEFI BIOS

11

У меня есть машина с UEFI BIOS. Я хочу установить Ubuntu 18.04, настольную версию с RAID 1 (и LVM), чтобы моя система продолжала работать, даже если один из дисков выйдет из строя. Я не нашел HOWTO о том, как это сделать. Настольный установщик не поддерживает RAID. Ответ на этот вопрос почти работает, но требует немного USB-оболочки GRUB / аварийного восстановления и волшебства настроек UEFI. Кто-нибудь знает о процедуре, которая работает без волшебных частей?

Никлас Бёрлин
источник

Ответы:

18

С некоторой помощью из Как установить сервер Ubuntu с UEFI и RAID1 + LVM , RAID, установленным в Ubuntu 18.04 , и поддержкой RAID в установщике Ubuntu 18.04 Desktop? и как избавиться от «сканирования файловых систем btrfs» при запуске? Мне удалось собрать рабочий HOWTO, используя только команды linux.

Короче говоря

  1. Загрузите установщик альтернативного сервера.
  2. Установите с разделением вручную, EFI + RAID и LVM на раздел RAID.
  3. Клонировать раздел EFI из установленного раздела на другой диск.
  4. Установите второй раздел EFI в загрузочную цепочку UEFI.
  5. Чтобы избежать длительного ожидания при загрузке в случае поломки диска, удалите btrfsзагрузочные сценарии.

В деталях

1. Загрузите установщик

  • Загрузите установщик альтернативного сервера с http://cdimage.ubuntu.com/ubuntu/releases/bionic/release/
  • Создайте загрузочный CD или USB и загрузите новый компьютер с него.
  • Выберите Install Ubuntu Server.

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 также может быть полезным.

Никлас Бёрлин
источник
Как бы вы использовали LUKS для зашифрованного зеркального набора / RAID 1, чтобы избежать шифрования дважды (например, LUKS находится под mdadm, так что IO происходит дважды, но само шифрование происходит только один раз, на самом деле это не происходит с некоторыми настройками (например, те, которые рекомендованы для ZFS, где тома шифруются дважды, по одному на устройство, что эффективно дублирует стоимость шифрования). Я не смог найти последние инструкции по этой настройке.
18:30
2
@soze, к сожалению, у меня нет опыта работы с зашифрованными разделами Linux. Я бы сделал несколько проб и ошибок в виртуальной машине, чтобы выяснить это. NB: я добавил раздел выше о виртуальных машинах.
Никлас Бёрлин
Спасибо @ NiclasBörlin! Я боролся с созданием загрузочного раздела под RAID и LVM, и ваш ответ был кристально чист. Большое спасибо!
Ги Амброс
Святая корова! Ницца!
Pileofrogs
Кажется, это больше не работает с Focal Fossa, так как альтернативный установщик пропал. Установщик Focal не имеет упомянутых опций разделения и настаивает на устройстве, /bootесли вы попытаетесь пойти по пути автоматической установки рейда.
WEDI
3

RAID-1 + XFS + UEFI

С ответом @Niclas Börlin мне удалось пройти около 99% пути, спасибо!

Я также обратился за помощью из следующих ответов:

Вот способы, которыми я все испортил

  1. Наличие BIOS в режиме «Авто», что позволило загружать USB-ключ НЕ в режиме UEFI. Это привело к неправильной установке Grub. Я переключил режим на UEFI-only, перезагрузил и удалил все логические тома, рейд-группы и разделы и начал заново. Далее я попытался переустановить grub на разделы EFI, что только ухудшило ситуацию.
  2. Наличие /bootраздела будет на XFS. Grub2, который поставляется с Ubuntu 18.04LTS, очевидно, не справляется с этим. Хотя это нигде не задокументировано. Я создал отдельный /bootраздел EXT-4 . Обратите внимание, что это по-прежнему на томе RAID-1 LVM, а не на отдельных разделах, таких как EFI! Многие старые ответы говорят, что это невозможно, но, похоже, сейчас. Я закончил тем, что получил grub, но получил неизвестные ошибки файловой системы (например, как исправить "ошибку: неизвестная файловая система. Grub rescue> ), которая дала мне ключ к разгадке XFS /bootв качестве запрета.
  3. Где-то в середине этого я закончил с установленным grub, но пустым приглашением grub, без меню grub. (например, https://help.ubuntu.com/community/Grub2/Trou устранение неполадок#Specific_Trou устранение неполадок ). Это было из-за /bootнедоступности.

Что сработало для меня

Начните с ответа @Niclas Börlin и измените несколько незначительных вещей.

Таблица разделов

Я предпочитаю один большой /раздел, так что это отражает этот выбор. Основным изменением является /bootраздел EXT4 вместо раздела XFS.

sda/
          GPT     1M (auto-added)
   sda1 - EFI - 512M
   sda2 - MD0 - 3.5G

sdb/
          GPT     1M (auto-added)
   sdb1 - EFI - 512M
   sdb2 - MD0 - 3.5G

md0/
   vg/
     boot - 1G   - EXT4 /boot
     swap - 16G  - SWAP 
     root - rest - XFS  /

После завершения установки я был в состоянии ddсодержания sda1в sdb2как описано в другом ответе. Я также смог добавить второй диск в цепочку загрузки, используя, efibootmgrкак подробно.

maxslug
источник
очень полезно! Я столкнулся с той же проблемой с сервером Ubuntu 18.04 + UEFI + RAID1 + LVM. Следование вашей схеме разделов мне очень помогло. Спасибо!
Лукас Аймаретто