Фэндом


Актуально для версии Proxmox 4 и выше, в том числе для дисков больше 2Тб с gpt разметкой.

  • Proxmox должен быть установлен с параметрами по умолчанию, а конкретно использовать ext4 и lvm. При установке на ZFS данная инструкция не применима!
  • Установку необходимо выполнять не через UEFI иначе загрузчик в конце процедуры установить не удастся!

ЗадачаПравить

  • Необходимо создать надежную отказоустойчивую дисковую систему. При выходе из строя любого жесткого диска, система должна продолжить работу
  • Перенос на RAID должен происходить без прерывания работы системы и без потери данных
  • Необходимо использовать средства, не требующие привязки к оборудованию, т.е. без использования как встроенных так и внешних RAID контроллеров
  • Необходимо обеспечить систему надежными средствами уведомления о сбоях дисков для оперативной замены
  • Замена жестких дисков должна производиться без прерывания работы в "горячем" режиме.

Перенос PROXMOX4.x на RAID1 (Зеркало)Править

Принцип работыПравить

  • Добавляем в систему жесткий диск идентичный по размеру. Если диски не равны по размеру, установку надо выполнить на меньший.
  • Создаем на нем 3 раздела (под bios загрузчик, под загрузочный раздел и под данные)
  • Создаем 2 зеркальных рейд массива в degrade (разрушенном) состоянии (это когда массив который должен состоять из 2-х дисков, а состоит всего из одного.
  • Переносим всё (загрузочный раздел и раздел с данными) с первого диска на рейд массивы второго диска
  • Уничтожаем данные и структуру разделов на первом диске и подключаем его в качестве не хватающего диска в уже созданный рейд массив
  • Делаем оба диска загрузочными

Загрузка и установка компонентовПравить

Перед установкой компонентов, если нет официальной подписки на промышленный репозиторий proxmox-а, нужно добавить текущий не стабильный:

nano /etc/apt/sources.list.d/pve-enterprise.list

заменяем в строке

deb https://enterprise.proxmox.com/debian jessie pve-enterprise

на

deb http://download.proxmox.com/debian jessie pve-no-subscription
  • mdadm - менеджер программного RAID для Linix
  • initramfs -временная файловая система, использующаяся ядром при начальной загрузке
apt-get update
apt-get install -y mdadm initramfs-tools parted

Создание новой структуры разделов на втором дискеПравить

Посмотрим список обнаруженных в системе физических дисков:

dmesg | egrep 'logical blocks|Direct-Access'

Убедимся, что система загружается с первого жесткого диска /dev/sda

pvs

Видим нечто подобное:

 PV         VG   Fmt  Attr PSize  PFree
 /dev/sda3  pve  lvm2 a--  31.87g 3.87g
  • Если раздел lvm том pve находится не на /dev/sda3, необходимо отключить компьютер и поменять местами sata кабеля подключенные к жестким дискам.

Разметим второй жесткий диск таким образом, чтобы разделы на нем суммарно не превысил размер исходного диска, иначе исходный диск не удастся включить в массив на последнем этапе.

Определение размеров дисков (системного и нового)Править

Задаем диски, который будем готовить под RAID

workdsk=sda # Системный
newdsk=sdb  # Новый (дополнительный) диск, на который будем копировать данные

Определим размеры и создадим переменные с размерами разделов. Можно их откорректировать на этом этапе при необходимости.

sizedsk_work=`parted /dev/$workdsk print -m | grep "/dev/$workdsk" | awk -F ":" '{print $2}'`
sizedsk_new=`parted /dev/$newdsk print -m | grep "/dev/$newdsk" | awk -F ":" '{print $2}'`
echo ""
echo "Активный системный:" $sizedsk_work ", Новый пустой:" $sizedsk_new

Создание разметки под RAIDПравить

Очищаем таблицу разделов на указанном жестком диске и размечаем диск в GPT.

dd if=/dev/zero of=/dev/$newdsk bs=512 count=1
parted /dev/$newdsk mklabel gpt

Создаем на новом диске разделы таким образом, чтобы в сумме они не превысили размер исходного (системного) диска.

parted /dev/$newdsk mkpart primary 1M 10M
parted /dev/$newdsk set 1 bios_grub on
parted /dev/$newdsk mkpart primary 10М 1G
parted /dev/$newdsk mkpart primary 1G $sizedsk_work
parted /dev/$newdsk print


Все параметры по умолчанию

Далее необходимо убедится, что на дисках не осталось суперблоков. Эти блоки являются метками, которые проставляются в конец диска если он являлся частью рейд массива ранее. Часто они не удаляются в процессе форматирования жесткого диска при установке PROXMOX и их нужно затереть вручную!

  • Проверяем, нет ли суперблоков
mdadm --misc --examine /dev/sda
mdadm --misc --examine /dev/sdb
mdadm --misc --examine /dev/sdb1
mdadm --misc --examine /dev/sdb2

Если все в порядке и суперблоков нет, то увидим нечто подобное:

mdadm: No md superblock detected on /dev/sdb

Если есть, то перед продолжением настройки их необходимо удалить! Удаление суперблоков

Настройка параметров mdadmПравить

Создадим файл настроек, предварительно сохранив оригинальный.

Укажем права на массивы и почтовый адрес для уведомлений о событиях происходящих с массивом

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.orig
echo "" > /etc/mdadm/mdadm.conf
nano /etc/mdadm/mdadm.conf
CREATE owner=root group=disk mode=0660 auto=yes
MAILADDR user@mail.domain

Предварительная настройка RAID в режиме деградацииПравить

mdadm --create /dev/md0 --metadata=0.90 --level=1 --raid-devices=2 missing /dev/${newdsk}2
mdadm --create /dev/md1 --metadata=0.90 --level=1 --raid-devices=2 missing /dev/${newdsk}3

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

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Проверим, что информация о наших массивах записалась в файл параметров

cat /etc/mdadm/mdadm.conf

Перенос данных из LVM на второй дискПравить

Создаем LVM-раздел на втором диске и добавляем его в группу pve

pvcreate /dev/md1 -ff
vgextend pve /dev/md1

Переместим данные с LVM-раздела первого диска, на RAID-LVM-раздел второго диска. Процедура может продолжаться очень долго. Время зависит от объема и скорости жестких дисков.

pvmove /dev/${workdsk}3 /dev/md1

Убираем из LVM первый диск

vgreduce pve /dev/${workdsk}3

Перенос загрузочных файлов на RAIDПравить

Подготовим загрузочный RAID-раздел второго диска и скопируем на него все файлы из папки /boot первого диска

mkfs.ext3 /dev/md0
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
cp -ax /boot/* /mnt/md0
umount /mnt/md0
rmdir /mnt/md0

Добавим монтирование загрузочного раздела.

  • Определим UUID идентификатор раздела
blkid |grep md0

Видим похожее: /dev/md0: UUID="b20e584b-88ab-4262-ba9d-7e1a2523ff95" SEC_TYPE="ext2" TYPE="ext3" Добавляем в конец файла строку со своим UUID

nano /etc/fstab
UUID="b20e584b-88ab-4262-ba9d-7e1a2523ff95" /boot ext3 defaults 0 1

Премонтируем загрузочный раздел с raid тома

mount /boot

Разрешим системе автоматически запускаться, если один из дисков вышел из строя или отсутствует (по умолчанию при загрузке будет выдаваться запрос на разрешение запуска)

echo "BOOT_DEGRADED=true" > /etc/initramfs-tools/conf.d/mdadm

Настроим загрузку

mkinitramfs -o /boot/initrd.img-`uname -r`

Отключим графический режим загрузчика из-за которого система может не загружаться с рейда.

echo "GRUB_TERMINAL=console" >> /etc/default/grub

Установим загрузчик на новый диск

grub-install /dev/sdb

На текущем этапе система полностью перенесена на RAID массив, часть которого расположена на новом диске, а вторая часть отсутствует. Теперь необходимо подключить дополнительный диск для второй части массива. Дальнейшие действия равнозначны как для добавления еще не использовавшегося диска после сбоя так и для задействования исходного диска на котором была система до начала выполнения процедуры переноса.

Добавление диска в RAIDПравить

Диск который будет добавляться в массив, на данном этапе не должен быть быть членом рейда. Проверим, какой диск в рейде:

cat /proc/mdstat|grep md0|grep -Po "raid1 ..."

Видим подобное

raid1 sdb

Значит система находится на диске sdb

Горячее добавление дискаПравить

  • Если диски не заменялись на включенной системе, этот этап пропускаем

Если диск был подключен на горячую и не увиделся в системе, необходимо пересканировать порт в который его подключили.

Если не известно, в какой конкретно порт подключен носитель, то можно пересканировать все.
  • Список имеющихся портов
ls /sys/class/scsi_host/
  • Пример пересканирования порта host3
echo "- - -" > /sys/class/scsi_host/host3/scan
  • Если новый диск физически при подключении получил другое имя например sdc, надо отключить его программно выполнив:
echo "1" > /sys/block/sdc/device/delete

Копирование структуры разделов и расширение массива на пустой дискПравить

  • Чтобы не ошибиться в дальнейших действиях и не испортить данные создадим переменные с именами дисков.
workdsk=sdb  # Диск, который подключен к массиву и содержит систему
cleandsk=sda # чистый (пустой) диск, который будет добавлен

Произведем копирование структуры разделов с рабочего на чистый диск и подключим его к массиву

sgdisk /dev/${workdsk} -R=/dev/${cleandsk}
sgdisk -G /dev/${workdsk}

Подключаем разделы с нового диска к массивам

mdadm --add /dev/md0 /dev/${cleandsk}2
mdadm --add /dev/md1 /dev/${cleandsk}3

Установим загрузчик на добавленный дискПравить

Перед установкой загрузчика на новый диск, нужно убедиться, что массив md0 с загрузочным разделом уже синхронизировался в массиве (Состояние [UU])

cat /proc/mdstat

И только в этом случае устанавливаем загрузчик

grub-install /dev/$cleandsk

На этом действия по переносу системы на рейд массив завершены, осталось дождаться окончания синхронизации массива. Контролировать процесс в реальном времени можно с помощью команды:

watch cat /proc/mdstat
  • Если это первая, экспериментальная попытка, то для неплохо проверить работу путем поочередной загрузки системы то с первого диска, то со второго путем их поочередного отключения. После этого эксперимента массив автоматически не соберется и один из дисков нужно будет востановить по схеме добавления диска в RAID.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики