Установите Ubuntu 20.04 desktop с RAID 1 и LVM на машину с UEFI BIOS.

Содержание
  1. Вопрос или проблема
  2. В кратце
  3. В деталях
  4. 1. Загрузите установщик и загрузитесь в Ubuntu Live
  5. 1.1 Загрузка
  6. 1.2 Загрузка Ubuntu Live
  7. 2. Настройте mdadm и lvm
  8. 2.0 Установите ssh сервер
  9. 2.1 Создайте разделы на физических дисках
  10. 2.2 Установите mdadm и создайте md-устройство
  11. 2.4 Разделите md-устройство
  12. 2.3 Создайте LVM-устройства
  13. 3. Запустите установщик
  14. 4. Добавьте mdadm в целевую систему
  15. 4.1 chroot в целевую систему
  16. 4.2 Обновите целевую систему
  17. 5. Клонирование раздела EFI
  18. 6. Вставьте EFI раздел второго диска в цепочку загрузки
  19. 7. Перезагрузите
  20. 8. Обновите раздел EFI после обновления grub-efi-amd64
  21. 8.1 Узнайте источник клонирования, быстрый способ
  22. 8.2 Узнайте источник клонирования, параноидальный способ
  23. 8.3 Обновлено: Клонирование с rsync
  24. 8.4 Оригинально: Клонирование с dd
  25. 9. Ошибки виртуальной машины
  26. Ответ или решение
  27. Предварительная подготовка
  28. Настройка RAID 1 и LVM
  29. Установка Ubuntu
  30. Последующие действия

Вопрос или проблема

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

После нескольких недель экспериментов и с помощью по этой ссылке, я наконец нашел решение, которое работает. Последовательность ниже была выполнена с Ubuntu 20.04.2.0 LTS. Я также успешно выполнил процедуру с 21.04.0 внутри виртуальной машины. (Однако, обратите внимание, что с Ubuntu 21.04 и некоторыми старыми системами UEFI сообщается о проблеме).

В кратце

  1. Скачайте и загрузитесь в Ubuntu Live для 20.04.
  2. Настройте mdadm и lvm.
  3. Запустите установщик Ubuntu, но не перезагружайте компьютер.
  4. Добавьте mdadm в целевую систему.
  5. Клонируйте раздел EFI на второй диск.
  6. Установите второй раздел EFI в цепочку загрузки UEFI.
  7. Перезагрузитесь

В деталях

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

1.1 Загрузка

  • Скачайте установщик Ubuntu Desktop с https://ubuntu.com/download/desktop и запишите его на загрузочный носитель. (По состоянию на 2021-12-13, образ назывался ubuntu-20.04.3-desktop-amd64.iso.)

1.2 Загрузка Ubuntu Live

  • Загрузитесь с носителя из шага 1.1.
  • Выберите Try Ubuntu.
  • Откройте терминал, нажав Ctrl-Alt-T. Команды ниже следует вводить в этом терминале.

2. Настройте mdadm и lvm

В примере ниже устройства диска называются /dev/sda и /dev/sdb. Если ваши диски называются иначе, например, /dev/nvme0n1 и /dev/sdb, вам следует соответственно заменить имена дисков. Вы можете использовать sudo lsblk для нахождения имен ваших дисков.

2.0 Установите ssh сервер

Если вы не хотите вводить все команды вручную, вы можете установить ssh для входа и скопировать-вставить команды.

  • Установите

    sudo apt install openssh-server

  • Установите пароль для разрешения внешнего входа

    passwd

  • Если вы тестируете это внутри виртуальной машины, вы, вероятно, захотите перенаправить подходящий порт. Выберите Settings, Network, Advanced, Port forwarding и нажмите плюс. Введите, например, 3022 как Host Port и 22 как Guest Port, и нажмите OK. Или из командной строки вашей хост-системы (замените VMNAME на имя вашей виртуальной машины):

    VBoxManage modifyvm VMNAME --natpf1 "ssh,tcp,,3022,,22"
    VBoxManage showvminfo VMNAME | grep 'Rule'
    

Теперь вы можете войти в сессию Ubuntu Live с внешнего компьютера, используя

ssh <hostname> -l ubuntu

или, если вы тестируете на виртуальной машине на localhost,

ssh localhost -l ubuntu -p 3022

и пароль, который вы установили выше.

2.1 Создайте разделы на физических дисках

  • Обнулите таблицы разделов с помощью

    sudo sgdisk -Z /dev/sda
    sudo sgdisk -Z /dev/sdb
    
  • Создайте два раздела на каждом диске; один для EFI и один для устройства RAID.

    sudo sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/sda
    sudo sgdisk -n 2:0:0 -t 2:fd00 -c 2:"Linux RAID" /dev/sda
    sudo sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/sdb
    sudo sgdisk -n 2:0:0 -t 2:fd00 -c 2:"Linux RAID" /dev/sdb
    
  • Создайте систему FAT32 для раздела EFI на первом диске. (Позже будет клонированный на второй диск.)

    sudo mkfs.fat -F 32 /dev/sda1
    

2.2 Установите mdadm и создайте md-устройство

Установите mdadm

  sudo apt-get update
  sudo apt-get install mdadm

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

  sudo mdadm --create /dev/md0 --bitmap=internal --level=1 --raid-disks=2 /dev/sda2 /dev/sdb2

Проверьте статус md-устройства.

$ cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      1047918528 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.0% (1001728/1047918528) finish=69.6min speed=250432K/sec
      bitmap: 8/8 pages [32KB], 65536KB chunk

unused devices: <none>

В этом случае устройство синхронизирует диски, что нормально и может продолжаться в фоновом режиме в процессе ниже.

2.4 Разделите md-устройство

  sudo sgdisk -Z /dev/md0
  sudo sgdisk -n 1:0:0 -t 1:E6D6D379-F507-44C2-A23C-238F2A3DF928 -c 1:"Linux LVM" /dev/md0

Это создает один раздел /dev/md0p1 на устройстве /dev/md0. Строка UUID определяет раздел как LVM-раздел.

2.3 Создайте LVM-устройства

  • Создайте физический том на md-устройстве

    sudo pvcreate /dev/md0p1
    
  • Создайте группу томов на физическом томе

    sudo vgcreate vg0 /dev/md0p1
    
  • Создайте логические тома (разделы) на новой группе томов. Размеры и названия ниже моя выбор. Вы можете решить иначе.

    sudo lvcreate -Z y -L 25GB --name root vg0
    sudo lvcreate -Z y -L 10GB --name tmp vg0
    sudo lvcreate -Z y -L 5GB --name var vg0
    sudo lvcreate -Z y -L 10GB --name varlib vg0
    sudo lvcreate -Z y -L 200GB --name home vg0
    

Теперь разделы готовы для установки Ubuntu.

3. Запустите установщик

  • Дважды щелкните на значок Установить Ubuntu 20.04.2.0 LTS на рабочем столе нового компьютера. (НЕ запускайте установщик по любой SSH-сессии!)
  • Ответьте на вопросы о языке и клавиатуре.
  • На странице Тип установки выберите Что-то еще. (Это важная часть.) Это представит вам список разделов, называемых /dev/mapper/vg0-home и т.д.
  • Дважды щелкните на каждом разделе, начиная с /dev/mapper/vg0-. Выберите Использовать как: Ext4, отметьте поле Форматировать раздел и выберите соответствующую точку монтирования (/ для vg0-root, /home для vg0-home и т.д., /var/lib для vg0-varlib).
  • Выберите первое устройство /dev/sda для загрузчика.
  • Нажмите Установить сейчас и продолжите установку.
  • Когда установка завершится, выберите Продолжить тестирование.

В терминале выполните lsblk. Вывод должен быть таким:

$ lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
...
sda                  8:0    0  1000G  0 disk  
├─sda1               8:1    0   512M  0 part  
└─sda2               8:2    0 999.5G  0 part  
  └─md0              9:0    0 999.4G  0 raid1 
    └─md0p1        259:0    0 999.4G  0 part  
      ├─vg0-root   253:0    0    25G  0 lvm   /target
      ├─vg0-tmp    253:1    0    10G  0 lvm   
      ├─vg0-var    253:2    0     5G  0 lvm   
      ├─vg0-varlib 253:3    0    10G  0 lvm   
      └─vg0-home   253:4    0   200G  0 lvm   
sdb                  8:16   0  1000G  0 disk  
├─sdb1               8:17   0   512M  0 part  
└─sdb2               8:18   0 999.5G  0 part  
  └─md0              9:0    0 999.4G  0 raid1 
    └─md0p1        259:0    0 999.4G  0 part  
      ├─vg0-root   253:0    0    25G  0 lvm   /target
      ├─vg0-tmp    253:1    0    10G  0 lvm   
      ├─vg0-var    253:2    0     5G  0 lvm   
      ├─vg0-varlib 253:3    0    10G  0 lvm   
      └─vg0-home   253:4    0   200G  0 lvm   
...

Как вы можете видеть, установщик оставил установленную корневую систему, смонтированную в /target. Однако остальные разделы не смонтированы. Более важно, что mdadm еще не является частью установленной системы.

4. Добавьте mdadm в целевую систему

4.1 chroot в целевую систему

Сначала мы должны смонтировать немонтированные разделы:

sudo mount /dev/mapper/vg0-home /target/home
sudo mount /dev/mapper/vg0-tmp /target/tmp
sudo mount /dev/mapper/vg0-var /target/var
sudo mount /dev/mapper/vg0-varlib /target/var/lib

Далее, связываем некоторые устройства для подготовки к chroot

cd /target
sudo mount --bind /dev dev 
sudo mount --bind /proc proc
sudo mount --bind /sys sys

…и chroot в целевую систему.

sudo chroot .

4.2 Обновите целевую систему

Теперь мы внутри целевой системы. Установите mdadm

apt install mdadm

Если вы получите ошибку DNS, выполните

echo "nameserver 1.1.1.1" >> /etc/resolv.conf 

и повторите

apt install mdadm

Вы можете игнорировать любые предупреждения о утечках труб.

Проверьте конфигурационный файл /etc/mdadm/mdadm.conf. Он должен содержать строку вблизи конца, подобную этой

ARRAY /dev/md/0 metadata=1.2 UUID=7341825d:4fe47c6e:bc81bccc:3ff016b6 name=ubuntu:0

Удалите часть name=... чтобы строка выглядела так

ARRAY /dev/md/0 metadata=1.2 UUID=7341825d:4fe47c6e:bc81bccc:3ff016b6

Обновите список модулей, которые ядро должно загружать при загрузке.

echo raid1 >> /etc/modules

Обновите загрузочный образ ramdisk

update-initramfs -u

Наконец, выйдите из chroot

exit

5. Клонирование раздела EFI

Теперь установленная целевая система завершена. Более того, основная часть защищена от отказа одного диска через устройство RAID. Однако раздел загрузки EFI не защищен через RAID. Вместо этого мы его клонируем.

sudo dd if=/dev/sda1 of=/dev/sdb1 bs=4096

Запустите

$ sudo blkid /dev/sd[ab]1
/dev/sda1: UUID="108A-114D" TYPE="vfat" PARTLABEL="EFI System" PARTUUID="ccc71b88-a8f5-47a1-9fcb-bfc960a07c16"
/dev/sdb1: UUID="108A-114D" TYPE="vfat" PARTLABEL="EFI System" PARTUUID="fd070974-c089-40fb-8f83-ffafe551666b"

Обратите внимание, что FAT UUIDs идентичны, но GPT PARTUUIDы различаются.

6. Вставьте EFI раздел второго диска в цепочку загрузки

Наконец, мы должны вставить EFI раздел на втором диске в цепочку загрузки. Для этого мы будем использовать efibootmgr.

sudo apt install efibootmgr

Запустите

sudo efibootmgr -v

и изучите вывод. Должна быть строка, подобная этой

Boot0005* ubuntu HD(1,GPT,ccc71b88-a8f5-47a1-9fcb-bfc960a07c16,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)

Обратите внимание на путь после File. Запустите

sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l '\EFI\ubuntu\shimx64.efi'

чтобы создать новую запись загрузки на разделе 1 /dev/sdb с тем же путем, что и для записи ubuntu. Снова запустите

sudo efibootmgr -v

и убедитесь, что есть вторая запись под названием ubuntu2 с тем же путем, что и ubuntu:

Boot0005* ubuntu  HD(1,GPT,ccc71b88-a8f5-47a1-9fcb-bfc960a07c16,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0006* ubuntu2 HD(1,GPT,fd070974-c089-40fb-8f83-ffafe551666b,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)

Кроме того, обратите внимание, что строка UUID каждой записи идентична соответствующей PARTUUID строке выше.

7. Перезагрузите

Теперь мы готовы к перезагрузке. Проверьте, завершен ли процесс синхронизации.

$ cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      1047918528 blocks super 1.2 [2/2] [UU]
      bitmap: 1/8 pages [4KB], 65536KB chunk

unused devices: <none>

Если синхронизация еще в процессе, должно быть в порядке сделать перезагрузку. Однако я предлагаю подождать до завершения синхронизации перед перезагрузкой.

После перезагрузки система должна быть готова к использованию! Более того, если один из дисков выйдет из строя, система будет использовать UEFI раздел с исправного диска и загружаться с Ubuntu в режиме degrado для md0 устройства.

8. Обновите раздел EFI после обновления grub-efi-amd64

Когда пакет grub-efi-amd64 обновлен, файлы на разделе EFI (смонтированном в /boot/efi) могут измениться. В этом случае обновление должно быть клонировано вручную на зеркальный раздел. К счастью, вы получите предупреждение от менеджера обновлений, что grub-efi-amd64 собирается обновиться, так что вам не нужно проверять после каждого обновления.

8.1 Узнайте источник клонирования, быстрый способ

Если вы не перезагружались после обновления, используйте

mount | grep boot

чтобы узнать, какой раздел EFI смонтирован. Этот раздел, обычно /dev/sdb1, должен быть использован как источник клонирования.

8.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

8.3 Обновлено: Клонирование с rsync

Как отметил Jon Hulka, вы можете использовать rsync вместо dd:

mkdir mnt
sudo mount /dev/sd?1 mnt #какой-либо из sda1 или sdb1, который не смонтирован в /boot/efi
sudo rsync -av --delete /boot/efi/ mnt
sudo umount mnt

8.4 Оригинально: Клонирование с dd

Если /dev/sdb1 был источником клонирования:

sudo dd if=/dev/sdb1 of=/dev/sda1

Если /dev/sda1 был источником клонирования:

sudo dd if=/dev/sda1 of=/dev/sdb1

Готово!

9. Ошибки виртуальной машины

Если вы хотите попробовать это сначала в виртуальной машине, есть некоторые проблемы: По-видимому, NVRAM, который хранит информацию UEFI, запоминается между перезагрузками, но не между циклами выключения-перезапуска. В этом случае вы можете оказаться в консоли UEFI Shell. Следующие команды должны загрузить вас в ваше устройство с /dev/sda1 (используйте FS1: для /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

Первое решение в лучшем ответе в UEFI загрузка в virtualbox – Ubuntu 12.04 может также помочь.

Если вы используете ответ Niclas Börlin здесь, рассмотрите возможность использования rsync вместо dd:

mkdir mnt
sudo mount /dev/sd?1 mnt #какой-либо из sda1 или sdb1, который не смонтирован в /boot/efi
sudo rsync -av --delete /boot/efi/ mnt
sudo umount mnt

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

Это отличные подробные инструкции. Я просто хочу добавить, что установщик Desktop для 22.10 и 23.04 не поддерживает RAID или LVM. Он не видит разделы/файловые системы, созданные таким образом. Решение состоит в переключении на серверный установщик. После установки сервера выполните “sudo apt install ubuntu-desktop”, а также установите все дополнительные драйверы (например, nvidia).

Извините. Мой отзыв был, видимо, неясен, так что вот еще раз. Вопрос: “У кого-нибудь есть процесс, который работает для 20.04 с LVM поверх RAID 1 для машины с UEFI?”

Мой “ответ” заключается в том, что инструкции, данные в шагах 1-7, были как точно, так и надлежащими – большое спасибо – но у меня были трудности с 20.04, потому что он не поддерживал встроенную графику XID 641 моей современной материнской платы. Я попробовал с 21.10 desktop и не встретил проблем. Обратите внимание, что я переключил SATA с RAID на AHCI в BIOS заранее и ждал завершения синхронизации на шаге 7, иначе, процедура безболезненная. Целевая машина – Ryzen 9 5950X, материнская плата ASUS Crosshair VIII Hero, 2x8TB дисков.

.

Ответ или решение

Установка Ubuntu 20.04 Desktop с RAID 1 и LVM на машине с UEFI BIOS: Подробная инструкция

Если вы IT-специалист и столкнулись с потребностью установки Ubuntu 20.04 Desktop с использованием LVM поверх RAID 1 на системе с UEFI BIOS, то приготовьтесь к нескольким важным шагам. Встроенные функции инсталлятора Ubuntu Desktop не поддерживают RAID, поэтому потребуются дополнительные манипуляции. Давайте разберемся, как это сделать.

Предварительная подготовка

  1. Загрузка образа Ubuntu и подготовка загрузочного носителя:

    • Скачайте Ubuntu 20.04 Desktop с официального сайта Ubuntu.
    • Создайте загрузочный USB-носитель.
  2. Загрузка с медиа и подготовка системы:

    • Загрузитесь с подготовленного USB и выберите опцию "Try Ubuntu".
    • Откройте терминал с помощью комбинации Ctrl-Alt-T.

Настройка RAID 1 и LVM

  1. Конфигурация дисков:

    • Проверьте названия ваших дисков с помощью sudo lsblk. Например, они могут быть /dev/sda и /dev/sdb.
    • Очистите таблицы разделов:
      sudo sgdisk -Z /dev/sda
      sudo sgdisk -Z /dev/sdb
  2. Создание необходимых разделов:

    • Создайте разделы. Один для EFI и один для RAID:
      sudo sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/sda
      sudo sgdisk -n 2:0:0 -t 2:fd00 -c 2:"Linux RAID" /dev/sda
      sudo sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/sdb
      sudo sgdisk -n 2:0:0 -t 2:fd00 -c 2:"Linux RAID" /dev/sdb
    • Создайте FAT32 файловую систему для EFI:
      sudo mkfs.fat -F 32 /dev/sda1
  3. Установка и настройка mdadm для RAID:

    • Установите mdadm и создайте RAID 1:
      sudo apt-get update
      sudo apt-get install mdadm
      sudo mdadm --create /dev/md0 --bitmap=internal --level=1 --raid-disks=2 /dev/sda2 /dev/sdb2
  4. Создание физического и логического тома LVM:

    • Создайте физический том и группу:
      sudo pvcreate /dev/md0p1
      sudo vgcreate vg0 /dev/md0p1
    • Создайте логические тома:
      sudo lvcreate -L 25GB --name root vg0
      sudo lvcreate -L 10GB --name tmp vg0
      sudo lvcreate -L 5GB --name var vg0
      sudo lvcreate -L 10GB --name varlib vg0
      sudo lvcreate -L 200GB --name home vg0

Установка Ubuntu

  1. Запуск установщика:
    • Запустите установку с рабочего стола, выберите "Something else".
    • Настройте тома LVM для установки.
    • Установите загрузчик на /dev/sda.

Последующие действия

  1. Настройка системы после установки:

    • Добавьте mdadm в целевую систему:
      sudo mount --bind /dev dev 
      sudo mount --bind /proc proc
      sudo mount --bind /sys sys
      sudo chroot /target
      apt install mdadm
      echo "nameserver 1.1.1.1" >> /etc/resolv.conf 
  2. Клонирование EFI раздела:

    • Клонируйте EFI на второй диск:
      sudo dd if=/dev/sda1 of=/dev/sdb1 bs=4096
    • Используйте efibootmgr для обновления цепочки загрузки:
      sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l '\EFI\ubuntu\shimx64.efi'
  3. Завершение и тестирование:

    • Отследите окончание синхронизации RAID и перезагрузите:
      cat /proc/mdstat 

Теперь ваша система Ubuntu 20.04 установлена и защищена от отказа одного из дисков благодаря конфигурации RAID 1. Убедитесь, что после любой модификации связанные файлы EFI обновляются и отражают изменения на обоих дисках.

Оцените материал
Добавить комментарий

Капча загружается...