Важно. Официально 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
- Открыть веб-интерфейс:
https://<ip-сервера>:8006. - В левом дереве выбрать Datacenter (не узел!).
- Перейти в Storage → Add → Directory.
- Заполнить поля:
| Поле | Значение |
|---|---|
| ID | raid-storage (произвольное имя, латиница) |
| Directory | /mnt/raid |
| Content | отметить нужное: Disk image, ISO image, Container template, VZDump backup file, Container, Snippets |
| Nodes | выбрать узел, где физически находится массив (важно в кластере) |
| Enable | включено |
| Shared | не включать — хранилище локальное |
- Вкладка Advanced → Preallocation: оставить
Default (metadata). - Нажать 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. Варианты:
- Установить Debian с RAID1 через его установщик, затем поверх поставить Proxmox VE из репозитория.
- Использовать ZFS RAID1 (mirror) — поддерживается установщиком Proxmox «из коробки».
При загрузке с mdadm-раздела обязательно ставить загрузчик на оба диска:
bashgrub-install /dev/sdb
grub-install /dev/sdc
update-grub
Для UEFI — синхронизировать ESP-разделы (/boot/efi) вручную или через proxmox-boot-tool.