Начиная с версии 3.6 в установщике Proxmox появилась опция установки на различные варианты ZFS Raid, но так и не появилась, используемая многими, конфигурация с расположением корня и области хранения дисков виртуальных машин на программном рейд массиве.
На хабре и в сети есть множество аналогичных статей, но они актуальны для версии 3,6, а в версии 4.0 появилось несколько интересных нюансов. Кроме это в данной инструкции я подойду к решению этой задачи совершенно другим путем.


Нюансы


1.Установщик Proxmox 4-й версии ставит нам efi загрузчик и я не вижу способа как его резервировать при помощи софт рейда — если кто-то знает — поделитесь.
2.Proxmox 4.0 собран на Debian 8, а в нем есть известный баг — при старте системы не собираются массивы если в нем вылетел один из дисков. Совсем не собираются и не действует опция «bootdegraded=1»
3.Рассмотрев пункты 1 и 2 мне подумалось, а зачем нам править что-то за инстялляторм Proxmox, когда мы можем спокойно поставить Debian 8 так как нам надо, а уже поверх установить Proxmox. Вот этот расклад и будет рассмотрен в инструкции.

Ставим Debian 8


Я думаю с установкой Debian 8 minimal с neinst диска вы справитесь.
Все настройки делаем как вам надо, рассмотрим только разбивку дисков:
— диски у меня с таблицей разделов в GPT
— выделяем раздел 1 Мб и отмечаем его как bios boot
— выделяем оставшееся место в раздел под массив
— собираем массив md0
— поверх массива пускаем LVM
— создаем LV под корень и своп

Проверяем баг — выдергиваем любой из дисков, членов массива, и загружаемся. Вернее не загружаемся, потому-как загрузчик не может найти LVM с корневым разделом, потому что не собрался массив на котором этот самый LVM и лежит.

Чиним сборку массива при загрузке


Я ставил grub на оба раздела при установке, если вы этого не сделали:
# dpkg-reconfigure grub-pc


Накладываем патч:
cd /etc/initramfs-tools/scripts/local-top
cp /usr/share/initramfs-tools/scripts/local-top/mdadm .
patch --verbose --ignore-whitespace <<'EndOfPatch'
--- mdadm
+++ mdadm
@@ -76,7 +76,15 @@
   if $MDADM --assemble --scan --run --auto=yes${extra_args:+ $extra_args}; then
     verbose && log_success_msg "assembled all arrays."
   else
-    log_failure_msg "failed to assemble all arrays."
+    log_warning_msg "failed to assemble all arrays...attempting individual starts"
+    for dev in $(cat /proc/mdstat | grep md | cut -d ' ' -f 1); do
+      log_begin_msg "attempting mdadm --run $dev"
+      if $MDADM --run $dev; then
+        verbose && log_success_msg "started $dev"
+      else
+        log_failure_msg "failed to start $dev"
+      fi
+    done
   fi
   verbose && log_end_msg

EndOfPatch

Обновляем конфиг:
update-initramfs -u


Внимание: если вы будете проверять как работает патч и загружаться с выдернутым диском — на забудьте потом его вернуть обратно в массив:
# mdadm --add /dev/md0 /dev/sda2


Ставим Proxmox


Приводим /etc/hosts к виду:
127.0.0.1       localhost.localdomain localhost
123.456.789.1   myproxmox.mydomain.ru  myproxmox pvelocalhost


Добавляем в /etc/apt/sources.list
deb http://download.proxmox.com/debian jessie pve-no-subscription


Добавляем цифровую подпись:
# wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -


Обновляемся:
# apt-get update && apt-get dist-upgrade


Устанавливаем Proxmox:
# apt-get install proxmox-ve ntp ssh postfix ksm-control-daemon open-iscsi


При установке в /etc/apt/sources.list.d/pve-enterprise.list пропишется коммерческий репозиторий, если нет подписки — закомментируем его.

Перезагружаемся и пользуемся.

Комментарии (22)


  1. evg_krsk
    21.12.2015 19:54

    Неплохой перевод официальной доки (http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Jessie). Плюс про баг с mdadm в джесси весьма хорошо что упомянули.

    Пара замечаний:
    1) PVE 4.1 на дворе. Наверное, лучше исправить просто на «PVE 4». Недавно писал роль ansible для накатывания PVE 4.1 на джесси (правда, на raid10) — всё в статье актуально.
    2) Насколько я понимаю, инсталлятор джесси не даёт возможности создать GPT, если не загрузиться в UEFI (ну, у меня не получилось и дебиановская вики вроде бы подтверждает). Если диски больше 2Tb, то надо что-то думать. Хорошо бы поподробнее осветить этот момент.
    3) В составе proxmox-ve вам прилетит apt-репозиторий pve-enterprise, так что дальнейший apt-get update будут сломан :-)


    1. sau777
      22.12.2015 09:01

      Баг с mdadm обнаружил только из-за привычки обкатывать все новенькое на стенде во всех позах, а уже потом в работу.

      1.И правда, поправил.
      2.Пока еще не тестировал такой вариант на дисках более 2Тб, на неделе попробую и добавлю решение проблемы если она подтвердится.
      3.На тестовых установках я уже как-то на автомате убираю apt-репозиторий pve-enterprise что даже не подумал об этом написать, поправил.


    1. merlin-vrn
      22.12.2015 13:15
      +1

      3) В составе proxmox-ve вам прилетит apt-репозиторий pve-enterprise, так что дальнейший apt-get update будут сломан :-)

      Не будет сломан, просто будет ругаться каждый раз, что вот отсюда загрузить не удалось. pve-no-subscription никуда же не деваетсяю


      1. evg_krsk
        22.12.2015 13:26

        Виноват, некорректно выразился.

        Судя по моему опыту, в дебиане apt-get update возвращает ненулевой код возврата, если не удалось обновить один и более источников. Я обновляюсь не вручную, а через SCM, для него это и есть — «сломано, нельзя продолжать».


    1. evg_krsk
      23.12.2015 12:25

      2) Беру слова назад. Инсталлятор всё умеет, если есть UEFI в режиме CSM.


  1. vasilisc
    22.12.2015 08:06

    Для тех кто будет обновляться с 3.4 до 4 версии будет интересно узнать о подводных камнях
    http://vasilisc.com/upgrade-proxmox-3-4-to-4


    1. merlin-vrn
      22.12.2015 08:39

      С 2.х на 3.х кластер обновлялся без даунтайма (сам обновлял). В 4.0 обновили мажорную версию Corosync, поэтому с третьего нельзя. Но подозреваю, что дальше опять будет можно обновлять кластер без даунтайма до следующего мажорного обновления Corosync.


  1. past
    22.12.2015 13:30

    А зачем ставить на софтрейд, если можно на ZFS RAID-1?
    Чтобы на ZFS заработали конейнеры необходимо создать том и добавить его как ZFS хранилише.


    1. sau777
      22.12.2015 13:41
      +1

      Вот тут я подробно описывал процедуру установки PVE4 на софт рейд ZFS RAID-1.
      В этом решении все хорошо, но только если у вас или памяти девать некуда или она бесплатная. ZFS даже в варианте RAID-1 сьедает несопоставимое с mdadm количество памяти.


    1. merlin-vrn
      23.12.2015 22:02

      zfs плох тем, что это решение как винда, не unix-way

      unix-way решение слоёное: каждый слой делает только свою задачу и делает её хорошо. Отдельно отказоустойчивость, отдельно тома, отдельно файловая система. И уже админ собирает всё вместе.


  1. Magister7
    22.12.2015 19:58

    Жаль что DRBD 8-й отломали, а 9-й что-то не горю желанием ставить… может кто пробовал ставить 4-й Proxmox с DRBD 8.x?


    1. Diden05
      22.12.2015 20:27

      А в чем проблема с DRBD 9 в связке с Proxmox?
      Предстоит обновление кластера, а он на DRBD интересно узнать подводные камни.


      1. Magister7
        23.12.2015 04:44

        Ну, насколько я вижу на оф. сайте — в 9-й ветке ещё не было стабильных релизов.
        А на production-сервер ставить dev-ветку как-то совсем не хочется.


    1. merlin-vrn
      23.12.2015 22:00

      По-моему уж лучше сразу заводить Ceph


      1. Magister7
        23.12.2015 22:15

        На двух нодах? Это для больших кластеров Ceph — хорошая штука, а для маленьких — DRBD самое то.
        Или Ceph на двух годах можно завести без проблем?


        1. merlin-vrn
          23.12.2015 22:40

          Ну, по-нормальному вы и Proxmox-кластер всё равно на двух нодах не заведёте. Я в общем даже не мыслю категориями кластера из двух нод.


          1. Magister7
            24.12.2015 02:58

            Мне от него достаточно возможности вручную запустить виртуалки на второй ноде в случае сбоя первой.
            Этакий хот-бекап (данные всегда актуальны благодаря DRBD).


          1. siv237
            26.12.2015 14:42

            нормально все из двух нод собирается. ha через ipmi


            1. past
              28.12.2015 16:21

              На двух нодах Вы моментально получите split barin.


              1. merlin-vrn
                29.12.2015 08:47

                Это если затюнить и разрешить работать с минимальным кворумом 1. А если оставить по умолчанию, то гибель или останов любой ноды рушит весь кластер, т.к. для двух (и для трёх) нод минимальный кворум по умолчанию будет 2, и останов любой из нод ведёт к потере кворума и как следствие к блокированию pmxcfs (/etc/pve) и clvm, так что никакой пользы от такого кластера для отказоустойчивости нет, только вред.


                1. siv237
                  29.12.2015 13:20

                  Пожалуйста опишите ситуацию с разрушением кластера из двух нод proxmox настроеных по умолчанию. Что включено в это понятие?


              1. siv237
                29.12.2015 13:18

                Ваше утверждение в корне ошибочно. Не подтверждается не теорией ни практикой эксплуатации более 30 двухнодовых кластеров.