Установка Debian с применением UEFI на LVM в RAID1
Эта небольшая заметка посвящена установке Debian на ПК с UEFI с использованием LVM на RAID1.
Установка
Процедура установки в целом тривиальна и не требует еще одного описания, но немного внимания будет уделено деталям деления дисков на разделы.
В описании далее, предполагается, что вы загрузились с установочного носителя в режиме UEFI.
Выберить Manual для деления дисков вручную:

Создайте на дисках новые схемы разделов (в данном случае по-умолчанию будет создана таблица GPT):

Создайте на каждом диске по разделу типа EFI размером 500MB:

Далее нужно создать дисковый массив для операционной системы:

Добавьте в дисковый массив разделы:

Теперь нужно создать логическую группу томов и сами логические тома.
Добавьте в логическую группу созданный дисковый массив и в этой группе создайте логические тома rootfs размером 50GB и swapfs размером 1GB (размеры даны для примера, используйте свои значения в зависимости от задачи).
Настройка загрузки
Чтобы система могла загружаться с любого диска, нужно создать дисковый массив, добавить в него разделы типа EFI двух имеющихся дисков и затем добавить в систему UEFI записи, содержащие сведения о разделах, с которых можно загрузиться.
Отобразите список блочных устройств:

Из списка видно, что на разделе sdb1 нет раздела EFI. Его нужно будет создать. Мы сделаем это путем копирования чуть позже.
Отобразите список записей загрузки системы UEFI и список идентификаторов разделов дисков:

Из списка записей системы UEFI видно, что сейчас загрузка возможна только с раздела с идентификатором 1f95f89b..... Найдем этот идентификатор в списке разделов - он соответствует разделу sda1. То есть система может быть загружена только с этого раздела именно этого диска.
Дополнительно, можно посмотреть статус дисковых массивов:

Из вывода команды видно, что есть только один исправный дисковый массив md0, в который входят разделы sda2 и sdb2. Это дисковый массив для самой операционной системы.
Создадим еще один дисковый массив для разделов типа EFI, но включим в него изначально только пока еще пустой раздел sdb1:

Если теперь посмотреть данные о дисковых массивах, можно увидеть, что появился второй массив, но в него входит только раздел sdb1:

Далее, нужно отформатировать новый дисковый массив в файловой системе FAT32 и смонтировать его во временную директорию:

Теперь нужно скопировать данные из действующего раздела sda1 на новый дисковый массив:

Теперь данные идентичны и на действующем разделе EFI, и на новом дисковом массиве. Остается только добавить в этот массив сам действующий раздел. Для этого его нужно сначала отмонтировать, а затем добавить в массив:

После этого необходимо заменить строку загрузки системы в /etc/fstab на строку, содержащую имя дискового массива:

Остается только добавить запись о дисковом массиве в конфигурацию mdadm и пересобрать образ initrd:


Если теперь вывести данные о дисковых массивах, мы увидим два массива, в каждом из которых есть по два раздела с двух разных дисков:

Чтение данных с диска
Если по каким-либо причинам вам нужно прочитать диск на другом ПК, после подключения его нужно выполнить сборку массива и подключение логических томов, как показано ниже.
Далее предполагается, что в системе, к которой вы подключаете диск, уже установлены пакеты
mdamdиlvm2. Если это не так, установите эти пакеты.
Отобразите список блочных устройств:

На примере видно, что система опознала и автоматически смонтировала массивы md126 и md127. Можно отобразить более подробную информацию о любом из разделов подключенного диска и посмотреть данные массива:

Если нужно остановить дисковый массив, выполните:

А чтобы собрать массив вручную, выполните:

Здесь собирается массив md3, состоящий только из раздела sda2.
Далее нужно просканировать логические группы, импортировать логические тома и смонтировать полученные разделы:
pvscan
vgck --updatemetadata lvg01
vgimport lvg01
vgchange -a y lvg01
lvscan
mount /dev/lvg01/rootfs /mnt

Теперь файловая система rootfs логической группы lvg01 смонтирована в /mnt.
Чтобы корректно отмонтировать такой раздел выполните:

Загрузка с одним диском
Система не сможет загрузиться, если в UEFI нет корректных записей, содержащих данные о разделах с загрузчиком. Такая ситуация может возникнуть по нескольким причинам, например, если вы переставите диск в другой ПК или если данные UEFI будут изменены по другим причинам.
Если такое произойдет, вы получите ошибку загрузки и UEFI предоставит возможность загрузки вручную при помощи UEFI Interactive Shell:

Чтобы выполнить загрузку вручную, введите имя раздела и затем имя загрузчика:

Здесь описан только один небольшой частный случай ручной загрузки и вам может потребоваться дополнительная информация. Более подробно о UEFI Shell можно почитать, например, здесь.
Восстановление RAID1
После того, как один из дисков массива вышел из строя, его нужно заменить. Установите новый диск и загрузите систему.
В зависимости от того, используете ли вы диск на том же ПК, или на другом, или же изменились данные UEFI, вам может потребоваться загрузить систему вручную, как показано в предыдущем параграфе.
После загрузки системы можно просмотреть список дисков и разделов командой
Например, вывод команды содержит:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 48G 0 disk
sdb 8:16 0 48G 0 disk
|-sdb1 8:17 0 476M 0 part
| `-md100 9:100 0 475.9M 0 raid1 /boot/efi
`-sdb2 8:18 0 47.5G 0 part
`-md0 9:0 0 47.5G 0 raid1
|-lvg01-rootfs 253:0 0 46.6G 0 lvm /
`-lvg01-swapfs 253:1 0 960M 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
Здесь можно видеть, что диск sdb содержит разделы, а диск sda - пустой. Значит нужно выполнить клонирование структуры и данных с диска sdb на sda и затем восстановить дисковые массивы.
Сначала сохраним структуру диска sdb в файл:
Теперь восстановим ее на диске sda:
Добавим первый раздел диска sda в дисковый массив md100:
Добавим второй раздел диска sdb к дисковому массиву md0:
Просмотрим записи в UEFI:
В каждой записи есть идентификатор раздела, с которого возможна загрузка. Чтобы сравнить, какие идентификаторы у существующих разделов EFI выполните:
Идентификаторы разделов в выводе должны совпадать с идентификаторами в списке загрузки UEFI. Если это не так, нужно содержимое списка загрузки UEFI привести в соответствие имеющимся разделам.
Если для этого нужно удалить запись из списка загрузки UEFI выполните:
Вместо NUMBER укажите номер записи, например, 0005.
Чтобы добавить запись в UEFI выполните команду по шаблону:
Вмето /dev/sda подставьте имя диска, раздел с которого является загрузочным; в параметре --part 1 укажите номер этого раздела; в --label укажите уникальное имя записи.
Добавьте записи для загрузки с каждого из имеющихся у вас дисков.