Виртуализация · 6 min read · Nov 28, 2025

Proxmox VE 2.x с программным RAID

Proxmox VE 2.x с программным RAID

Proxmox Virtual Environment — это простая в использовании платформа виртуализации с открытым исходным кодом для запуска виртуальных устройств и виртуальных машин. Proxmox официально не поддерживает программный RAID, но я обнаружил, что программный RAID очень стабилен, и в некоторых случаях мне везло с ним больше, чем с аппаратным RAID.

Я не даю никаких гарантий, что это сработает для вас!

Обзор

Сначала установите Proxmox V2 обычным способом с CD, загруженным с Proxmox. Затем мы создаем массив RAID 1 на втором жестком диске и перемещаем установку proxmox на него.

Затем мы настраиваем параметры Grub, чтобы он загружался с новой конфигурацией.

Благодарности

Эти следующие учебники — это то, что я использовал:

https://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub2-configuration-debian-squeeze

Особая благодарность Фалко из HowtoForge, так как много из этого материала повторно используется из его руководства. https://www.howtoforge.com/linux_lvm

Установка Proxmox

Установите proxmox с последнего загруженного CD с Proxmox http://www.proxmox.com/downloads/proxmox-ve/17-iso-images

Если вы хотите установить ext4, введите это на экране загрузки:

linux ext4

Инструкции по установке здесь: http://pve.proxmox.com/wiki/Quick_installation

Затем войдите через ssh и выполните:

apt-get update
apt-get upgrade

Установка RAID

Примечание: этот учебник предполагает, что proxmox установлен на /dev/sda, а запасной диск — это /dev/sdb. Используйте следующую команду, чтобы отобразить текущее разделение:

fdisk -l

Вывод должен выглядеть следующим образом:

root@proxmox:/# fdisk -l

Диск /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009f7a7

Device Boot Start End Blocks Id System
/dev/sda1 * 1 66 523264 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 66 121602 976237568 8e Linux LVM

Диск /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00078af8

Device Boot Start End Blocks Id System

Здесь больше информации, но нас сейчас интересуют только первые два диска. Мы видим, что /dev/sda имеет установку proxmox, а /dev/sdb не имеет разделов.

Сначала мы устанавливаем программный RAID, также известный как mdraid:

apt-get install mdadm

В окне конфигурации пакета выберите ok, затем all.
Затем мы запускаем модули ядра с помощью modprobe:

modprobe linear
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

Теперь выполните:

cat /proc/mdstat

Вывод должен выглядеть следующим образом:

root@proxmox:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices:
root@proxmox:~#

Теперь нам нужно скопировать таблицу разделов с sda на sdb:

sfdisk -d /dev/sda | sfdisk –force /dev/sdb

Вывод должен быть:

root@proxmox:/# sfdisk -d /dev/sda | sfdisk –force /dev/sdb
Проверка, что никто не использует этот диск прямо сейчас …
OK

Диск /dev/sdb: 121601 cylinders, 255 heads, 63 sectors/track
Старая ситуация:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System
/dev/sdb1 0 - 0 0 0 Empty
/dev/sdb2 0 - 0 0 0 Empty
/dev/sdb3 0 - 0 0 0 Empty
/dev/sdb4 0 - 0 0 0 Empty
Новая ситуация:
Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 1048575 1046528 83 Linux
/dev/sdb2 1048576 1953523711 1952475136 8e Linux LVM
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
Предупреждение: раздел 1 не заканчивается на границе цилиндра
Успешно записана новая таблица разделов

Повторное чтение таблицы разделов …

Если вы создали или изменили раздел DOS, /dev/foo7, скажем, то используйте dd(1),
чтобы обнулить первые 512 байт: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(См. fdisk(8).)
root@vmh:/# root@vmh:/# sfdisk -d /dev/sda | sfdisk –force /dev/sdb
-bash: root@vmh:/#: Нет такого файла или каталога
Проверка, что никто не использует этот диск прямо сейчас …
OK

Диск /dev/sdb: 121601 cylinders, 255 heads, 63 sectors/track
Старая ситуация:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System
/dev/sdb1 * 0+ 65- 66- 523264 83 Linux
/dev/sdb2 65+ 121601- 121536- 976237568 8e Linux LVM
/dev/sdb3 0 - 0 0 0 Empty
/dev/sdb4 0 - 0 0 0 Empty
Новая ситуация:
Разделы не найдены

sfdisk: нет таблицы разделов.

Теперь нам нужно изменить типы разделов на linux raid autodetect:

fdisk /dev/sdb

root@proxmox:/# fdisk /dev/sdb

ПРЕДУПРЕЖДЕНИЕ: Режим, совместимый с DOS, устарел. Настоятельно рекомендуется
отключить режим (команда ‘c’) и изменить единицы отображения на
сектора (команда ‘u’).

Команда (m для помощи): t
Номер раздела (1-4): 1
Шестнадцатеричный код (введите L для отображения кодов): fd
Изменен системный тип раздела 1 на fd (Linux raid autodetect)

Команда (m для помощи): t
Номер раздела (1-4): 2
Шестнадцатеричный код (введите L для отображения кодов): fd
Изменен системный тип раздела 2 на fd (Linux raid autodetect)

Команда (m для помощи): p
Диск /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00078af8

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 66 523264 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdb2 66 121602 976237568 fd Linux raid autodetect

Команда (m для помощи): w
Таблица разделов была изменена!

Вызов ioctl() для повторного чтения таблицы разделов.
Синхронизация дисков.

Как мы видим, теперь у нас есть два раздела linux raid autodetect на /dev/sdb.

Чтобы убедиться, что на /dev/sdb нет остатков от предыдущих установок RAID, мы выполняем следующие команды:

mdadm –zero-superblock /dev/sdb1
mdadm –zero-superblock /dev/sdb2

Если остатков от предыдущих установок RAID нет, каждая из вышеуказанных команд выдаст ошибку, подобную этой (что не является поводом для беспокойства):

root@proxmox:~# mdadm –zero-superblock /dev/sdb1
mdadm: Неизвестное устройство компонента md - /dev/sdb1
root@server1:~#

В противном случае команды не отобразят ничего вообще.

Теперь нам нужно создать наши новые массивы RAID:

mdadm –create /dev/md0 –level=1 –raid-disks=2 missing /dev/sdb1
mdadm –create /dev/md1 –level=1 –raid-disks=2 missing /dev/sdb2

Это покажет (ответьте да):

root@proxmox:/# mdadm –create /dev/md0 –level=1 –raid-disks=2 missing /dev/sdb1
mdadm: Примечание: этот массив имеет метаданные в начале и
может не подходить в качестве загрузочного устройства. Если вы планируете
хранить ‘/boot’ на этом устройстве, пожалуйста, убедитесь, что
ваш загрузчик понимает метаданные md/v1.x, или используйте
–metadata=0.90
Продолжить создание массива? y
mdadm: По умолчанию используется версия 1.2 метаданных
mdadm: массив /dev/md0 запущен.
root@proxmox:/#

Команда

cat /proc/mdstat

root@proxmox:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid1 sdb1[1]
523252 blocks super 1.2 [2/1] [_U]

md1 : active (auto-read-only) raid1 sdb2[1]
976236408 blocks super 1.2 [2/1] [_U]

unused devices:

Теперь должно отображаться, что у вас есть два деградированных массива RAID ( [_U] или [U_] означает, что массив деградирован, в то время как [UU] означает, что массив в порядке). Далее мы должны настроить /etc/mdadm/mdadm.conf (который еще не содержит информации о наших новых массивах RAID) на новую ситуацию: cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig mdadm --examine --scan >> /etc/mdadm/mdadm.conf Стандартная установка proxmox использует /dev/sda1 для загрузочного раздела и использует lvm на /dev/sda2 для корневого, swap и данных. Если вы новичок в разделах lvm, я рекомендую вам ознакомиться с ссылкой в разделе благодарностей в начале этого руководства. Чтобы увидеть разделы lvm, используйте команду: lvscan Это должно вывести: root@proxmox:~# lvscan ACTIVE '/dev/pve/swap' [15.00 GiB] inherit ACTIVE '/dev/pve/root' [96.00 GiB] inherit ACTIVE '/dev/pve/data' [804.02 GiB] inherit Теперь мы создадим новую группу объемов с именем pve1 и соответствующие логические объемы для swap, root и данных. Сначала физический объем: pvcreate /dev/md1 Это выводит Запись данных физического объема на диск "/dev/md1" Физический объем "/dev/md1" успешно создан Эта команда: pvscan показывает наш новый физический объем: PV /dev/sda2 VG pve lvm2 [931.01 GiB / 16.00 GiB free] PV /dev/md1 lvm2 [931.01 GiB] Total: 2 [1.82 TiB] / in use: 1 [931.01 GiB] / in no VG: 1 [931.01 GiB]
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.