Mdadm

mdadm - Программный RAID в Linux.

Установка Debian 12 на программный RAID с UEFI разделом, для дальнейшей установки Proxmox VE

Размечаем оба диска одинаково, создаем следующие разделы:

  1. 512 MB - Используем как EFI
  2. 16 GB - Для программного RAID
  3. "Остаток свободного места за минусом половины объема оперативки" GB - Для программного RAID
  4. "Половина объема оперативки" - раздел подкачки Потом создаем два MD устройства RAID1 в разделах 2 и 3
    • md0 форматируем в ext4 и монтируем в корень /
    • md1 форматируем в ext4 и монтируем в /mnt/pve/local-mirror1 - тут будут лежать виртуалки Далее устанавливаем систему как обычно.

После установки:

  1. Устанавливаем apt install dosfstools если вдругего нет
  2. Смотрим uuid наших разделов lsblk -o +uuid
  3. Копируем uuid раздела примонтированного к /boot/efi (например FF1D-D36B)
  4. Присваиваем другому EFI -разделу такой же uuid (который мы скопировали, но убираем дефис) mkdosfs -i FF1DD36B /dev/sdb1
  5. Проверяем uuid наших EFI разделов lsblk -o +uuid - они должны быть одинаковыми.
  6. Смотрим загрузочные записи efibootmgr -v указаны как boot0000, boot0001... BootOrder указывает на порядок загрузки. Нам нужно скопировать путь загрузки Debian, обычно \EFI\DEBIAN\SHIMX64.EFI
  7. Создадим такую же запись для второго диска, если вдруг первый протухнет efibootmgr -c -d /dev/sdb -p 1 -L "debian mirror" -l "\EFI\DEBIAN\SHIMX64.EFI", где /dev/sdb - второй диск, 1 - номер раздела EFI, debian mirror - название в списке загрузки
  8. Изменяем порядок загрузки так, что бы первым грузился debian а вторым debian mirror efibootmgr -o 2,1
  9. Если нужно удалить лишнюю запись используем efibootmgr -b 5 -B - где 5 номер записи 0005
  10. Проверяем efibootmgr -v видим две записи с одинаковыми путями, но разными uuid дисков
  11. Теперь скопируем содержимое EFI раздела с первого диска на второй mkdir -p /mnt/temp && mount /dev/sdb2 /mnt/temp && cp -R /boot/efi/EFI/ /mnt/temp && umount /dev/sdb2
  12. Готово! Теперь система загрузится с любого диска.

Установка Debian 12 на программный RAID с одним диском и UEFI разделом, с дальнейшим подключением второго диска.

Такой изврат мне пришлось делать на одной из площадок, там использовался программный рейд на базе ZFS и было принято решение переделать на mdadm и при этом сохранить критичные данные. Учитывая что сервер в другом городе пришлось пойти таким путем.... Сервер был с интерфейсом управления IPMI по этому смог удалённо переустановить систему...

Устанавливаем Дебиан по инструкции выше, но при создании разделов размечаем только один диск, второй диск с данными не трогаем. При создании рейд-разделов указываем только один раздел! После успешной установки монтируем диск с данными во временную папку mkdir -p /mnt/temp && mount /dev/sdb1 /mnt/temp и копируем данные ручками на диск который уже подключен к mdadm - это позволит полностью очистить и в дальнейшем присоединить второй диск к нашему массиву.

  1. Отмонтируем umount /dev/sdb1
  2. Установим apt install gdisk
  3. Создадим новую таблицу разделов на втором диске sdb fdisk /dev/sdb далее g и w
  4. Скопируем таблицу разделов sgdisk /dev/sda -R /dev/sdb
  5. Очищаем UUID'ы sgdisk -G /dev/sdb
  6. Скопируем содержимое EFI раздела dd if=/dev/sda1 of=/dev/sdb1
  7. Форматируем SWAP раздел mkswap /dev/sdb4 запоминаем UUID и монтируем в fstab по аналогии первого
  8. Добавляем разделы в массив mdadm /dev/md0 --add /dev/sdb2 и mdadm /dev/md1 --add /dev/sdb3
  9. Смотрим п.6-10 предыдущего поста что бы настроить UEFI загрузчик

Полезные команды

  • Посмотреть состояние RAID массивов cat /proc/mdstat
  • Посмотреть максимальную скорость синхронизации cat /proc/sys/dev/raid/speed_limit_max
  • Увеличить скорость синхронизации mdadmecho 1200000 > /proc/sys/dev/raid/speed_limit_max