Важно. Официально Proxmox VE не поддерживает mdadm (рекомендуются ZFS или аппаратный RAID). Массив собирается вручную, все действия — на свой риск. Данные на дисках будут уничтожены.


1. Подготовка

Проверить текущие диски:

bashlsblk -o NAME,SIZE,TYPE,MODEL,MOUNTPOINT
ls -l /dev/disk/by-id/

Установить mdadm:

bashapt update
apt install -y mdadm

2. Очистка дисков (только для б/у дисков)

Новые диски из коробки чистить не нужно — сразу переходите к шагу 3.

Очистка нужна, если диск ранее использовался: на нём остались разделы, файловая система, LVM, ZFS или суперблок старого RAID. Проверить:

bashlsblk -f /dev/sdb          # покажет FSTYPE: ext4, LVM2_member, zfs_member, linux_raid_member

Если вывод пустой — диск чистый, очистка не требуется.

Если что-то найдено, для каждого диска (пример: /dev/sdb, /dev/sdc):

bashwipefs -a /dev/sdb              # стирает сигнатуры ФС/LVM/RAID
sgdisk --zap-all /dev/sdb       # удаляет таблицы разделов GPT и MBR

Если диск был частью старого mdadm-массива — дополнительно затереть суперблок:

bashmdadm --zero-superblock /dev/sdb1     # или /dev/sdb, если массив был на «сыром» диске

3. Разметка (GPT + раздел типа Linux RAID)

Задача: создать на каждом диске один раздел на весь объём и присвоить ему тип «Linux RAID» — по этому типу ядро и mdadm понимают, что раздел предназначен для массива.

Вариант A. sgdisk (неинтерактивно)

bashsgdisk -n 1:0:0 -t 1:fd00 /dev/sdb
sgdisk -n 1:0:0 -t 1:fd00 /dev/sdc
partprobe /dev/sdb /dev/sdc

Разбор:

Часть команды Что делает
sgdisk утилита работы с GPT (пакет gdisk)
-n 1:0:0 создать раздел №1; первый 0 — начало по умолчанию (с выравниванием), второй 0 — до конца диска
-t 1:fd00 задать разделу №1 тип-код fd00 = Linux RAID
partprobe заставить ядро перечитать таблицу разделов без перезагрузки

Вариант B. fdisk (интерактивно)

bashfdisk /dev/sdb

Последовательность ввода:

Ввод Действие
g создать новую пустую таблицу разделов GPT
n новый раздел
Enter номер раздела — по умолчанию 1
Enter первый сектор — по умолчанию
Enter последний сектор — по умолчанию (весь диск)
t сменить тип раздела
29 код типа Linux RAID (в fdisk для GPT это номер 29; можно ввести L для списка)
p посмотреть результат перед записью
w записать изменения на диск и выйти

Повторить для /dev/sdc и остальных дисков.

Проверка

bashlsblk
fdisk -l /dev/sdb          # тип должен быть "Linux RAID"

Можно собирать массив и на «сырых» дисках (/dev/sdb без раздела), но разметка предпочтительнее: она оставляет запас в конце диска и упрощает замену диска другой модели с чуть меньшим объёмом.


4. Создание массива

RAID1 (зеркало, 2 диска):

bashmdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

RAID10 (4 диска):

bashmdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

RAID5 (3+ дисков):

bashmdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

RAID6 (4+ дисков):

bashmdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

Контроль синхронизации:

bashcat /proc/mdstat
watch -n5 cat /proc/mdstat
mdadm --detail /dev/md0

Массив можно использовать сразу, не дожидаясь окончания ресинка.

Ускорить пересборку (опционально):

bashecho 200000 > /proc/sys/dev/raid/speed_limit_min
echo 500000 > /proc/sys/dev/raid/speed_limit_max

5. Сохранение конфигурации

bashmdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u -k all

Проверить, что в /etc/mdadm/mdadm.conf нет дублирующихся строк ARRAY.


6. Подключение массива к Proxmox (Directory storage)

6.1. Файловая система и монтирование

bashmkfs.ext4 -m 0 /dev/md0        # -m 0 — не резервировать 5% под root
mkdir -p /mnt/raid

Узнать UUID и добавить в /etc/fstab:

bashblkid /dev/md0
fstabUUID=xxxx-xxxx-xxxx  /mnt/raid  ext4  defaults,nofail  0  2

nofail — сервер загрузится даже при недоступном массиве.

bashmount -a
df -h /mnt/raid

6.2. Добавление хранилища через GUI

  1. Открыть веб-интерфейс: https://<ip-сервера>:8006.
  2. В левом дереве выбрать Datacenter (не узел!).
  3. Перейти в Storage → Add → Directory.
  4. Заполнить поля:
Поле Значение
ID raid-storage (произвольное имя, латиница)
Directory /mnt/raid
Content отметить нужное: Disk image, ISO image, Container template, VZDump backup file, Container, Snippets
Nodes выбрать узел, где физически находится массив (важно в кластере)
Enable включено
Shared не включать — хранилище локальное
  1. Вкладка AdvancedPreallocation: оставить Default (metadata).
  2. Нажать Add.

После этого хранилище появится в дереве под узлом. Проверить свободное место: выбрать хранилище → Summary.

Каталог /mnt/raid должен быть уже смонтирован до добавления. Если Proxmox добавит хранилище на несмонтированный каталог, при отвале массива он начнёт писать данные на системный диск. Чтобы этого избежать, после создания хранилища можно включить в /etc/pve/storage.cfg параметр is_mountpoint 1:

dir: raid-storage
        path /mnt/raid
        content images,iso,vztmpl,backup
        is_mountpoint 1

6.3. То же самое через CLI (альтернатива GUI)

bashpvesm add dir raid-storage --path /mnt/raid --content images,iso,vztmpl,backup,snippets --is_mountpoint 1
pvesm status

7. Мониторинг и уведомления

В /etc/mdadm/mdadm.conf:

MAILADDR admin@example.com
bashsystemctl enable --now mdmonitor
mdadm --monitor --scan --test --oneshot   # тестовое письмо

Регулярная проверка состояния:

bashcat /proc/mdstat
mdadm --detail /dev/md0

8. Замена вышедшего из строя диска

bashmdadm --detail /dev/md0                    # найти failed/removed
mdadm --manage /dev/md0 --fail /dev/sdc1
mdadm --manage /dev/md0 --remove /dev/sdc1

Физически заменить диск, затем скопировать разметку с рабочего:

bashsgdisk --backup=/tmp/sdb.gpt /dev/sdb
sgdisk --load-backup=/tmp/sdb.gpt /dev/sdc
sgdisk -G /dev/sdc                          # новый GUID
mdadm --manage /dev/md0 --add /dev/sdc1
cat /proc/mdstat

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

Действие Команда
Остановить массив mdadm --stop /dev/md0
Собрать заново mdadm --assemble --scan
Добавить hot-spare mdadm --manage /dev/md0 --add-spare /dev/sde1
Расширить массив mdadm --grow /dev/md0 --raid-devices=4 --add /dev/sde1
Проверка целостности echo check > /sys/block/md0/md/sync_action
Удалить массив mdadm --stop /dev/md0 && mdadm --zero-superblock /dev/sdb1 /dev/sdc1

10. Примечание про RAID для системного диска

Установщик Proxmox не умеет ставить систему на mdadm. Варианты:

  1. Установить Debian с RAID1 через его установщик, затем поверх поставить Proxmox VE из репозитория.
  2. Использовать ZFS RAID1 (mirror) — поддерживается установщиком Proxmox «из коробки».

При загрузке с mdadm-раздела обязательно ставить загрузчик на оба диска:

bashgrub-install /dev/sdb
grub-install /dev/sdc
update-grub

Для UEFI — синхронизировать ESP-разделы (/boot/efi) вручную или через proxmox-boot-tool.