company_banner

Proxmox VE обновился до версии 6.3


    Proxmox Server Solutions GmbH выпустила новый релиз платформы виртуализации Proxmox VE 6.3, сообщается в пресс-релизе компании. Обновление включает в себя Debian Buster 10.6 c ядром Linux версии 5.4 (LTS), актуальные версии приложений для сред виртуализации, таких как QEMU 5.1, LXC 4.0, Ceph 15.2, и файловую систему ZFS версии 0.85.

    Ключевые изменения


    Прежде всего обновления направлены на удобство интеграции с недавно вышедшей системой резервного копирования Proxmox Backup Server 1.0, обзор которой мы уже делали в одной из предыдущих статей. Интеграция сводится к добавлению Proxmox Backup Server в качестве целевого хранилища для резервных копий Proxmox VE.

    Весь трафик между клиентом и сервером может быть зашифрован на стороне клиента и безопасно передан на сервер резервного копирования. Создание и управление ключами — достаточно простая процедура, предусматривающая сохранение ключевых файлов как на защищенном файл-сервере или USB-носителе, так и в текстовом виде (можно распечатать или сохранить в парольном менеджере).

    Поддержка Ceph Octopus и Ceph Nautilus


    В Proxmox 6.3 была реализована поддержка объектных хранилищ Ceph Octopus версии 15.2.6 и Ceph Nautilus версии 14.2.15. Нужную версию пользователь может выбрать на этапе установки. В интерфейс Proxmox VE было добавлено множество специфических для Ceph возможностей управления. В частности, функция мониторинга прогресса восстановления на статус-панели.

    Новая версия позволяет отображать и настраивать режим автомасштабирования для групп размещения (Placement Groups) в каждом пуле кластера Ceph. Это дает дополнительную гибкость в управлении кластером и снижает затраты на обслуживание. Ceph Octopus теперь включает в себя возможность multi-site репликации, что важно для обеспечения отказоустойчивости.

    Улучшения веб-интерфейса


    Веб-интерфейс Proxmox версии 6.3 значительно расширил возможности управления виртуальным дата-центром за счет следующих нововведений:

    • Поддержка внешних серверов метрик. Теперь в качестве внешних сервисов можно добавить отображение данных в InfluxDB или Graphite из веб-интерфейса.
    • Улучшенный редактор порядка загрузки ВМ. Появилась возможность выбора нескольких устройств по типу (дисковые или сетевые) простым перетаскиванием.
    • Поддержка опциональной проверки TLS сертификата для LDAP и Active Directory.
    • Резервное копирование и восстановление. Возможность детального просмотра гостевых машин и дисков, которые будут задействованы в процессе бэкапа.
    • Возможность добавления комментариев. Для каждого типа хранилища теперь можно оставить заметку, что, несомненно, будет полезным для системных администраторов. Также Proxmox Backup Server будет отображать процесс проверки всех выполненных снапшотов.

    Прочие улучшения


    • Новые настройки политик хранения бэкапов. Для каждого задания резервного копирования можно тонко настроить, сколько резервных копий хранить и на протяжении какого времени.
    • Улучшен механизм определения износа твердотельных накопителей.
    • Расширение возможностей контейнеров. Теперь поддерживаются системы с количеством ядер до 8192. Официальную поддержку получили контейнеры с пентест-дистрибутивом Kali Linux и Devuan, форком Debian без systemd. Разумеется, все последние версии Ubuntu, Fedora и CentOS также будут корректно работать. Улучшены возможности мониторинга запуска контейнеров и установки для контейнеров отдельных часовых поясов.
    • Управление пользователями и разрешениями. Учтены особенности Active Directory и LDAP, такие как чувствительность логина к регистру, а также возможность использования клиентских сертификатов и ключей.
    • Улучшена обработка реплицированных ВМ при миграции.
    • Файервол. Обновленный API и графический интерфейс для сопоставления типов ICMP.
    • Установка. После успешного завершения инсталляции система автоматически перезагружается.

    Скачать Proxmox VE 6.3 можно на официальном сайте Proxmox Server Solutions GmbH.

    Selectel
    ИТ-инфраструктура для бизнеса

    Комментарии 9

      +1

      Планирую прикупит себе HPE Microserver gen 10 plus. Оказалось, что esxi не поддерживает там встроенный raid. Кто-то знает, может ли proxmox дома быть полноценной заменой esx? Есть какие-то важные особенности о которых стоит знать заранее?

        +2

        Используем проксмокс где-то два года. Соскочили с OpenStack за ненадобностью и громоздкостью.
        Замечания которых мне не хватало в самом начале:


        • openvswitch вместо bridge
        • под ceph лучше отдельные ноды
        • lvm-cache круто, но может посыпаться внезапно — лучше просто ssd
        • программно-определяемые сети пока не про них (то что есть, не имеет практически никакого адекватного функционала по управлению сетью), так что на это лучше не рассчитывать
        • lxc вместо виртуалок действительно может хватать, а производительность не страдает
        • и без подписки прекрасно
        • это Debian, но есть особенности с пересекаемыми пакетами (типа qemu), хотя дрова на рейд поднялись легко
        • не спешите на старом железе удалять старые ядра (хотя с переходом на 5.4 проблем с запуском не было)
        • это не то же самое, что и esxi, но основные понятия пересекаются
        • Victoria Metrics оказывается (ирония) может собирать данные как Influx, но дашборды не подойдут (однако я написал оный и выложил в офф стор)
        • не заморачивайтесь с всплывающим окном о подписке: обновления всё равно сломает, а не так уж оно и мешает.

        Надеюсь вам будет полезно. Ещё бы конечно кто добавил, особенно пользовавшийся esxi.

          +1

          Lvm-cache давно хотел попробовать, не расскажите что с ним не так?
          Разве proxmox не на zfs?
          Вы имеете в виду использовать полностью только ssd? Не дороговато?

            +1

            lvm-cache крут, но при условии всегда корректном выключении питания и записи блоками, если не страшны задержки (время поиска в метаданных, потом в кеше, потом на диске). Отдельная боль это удаление диска с кешем — всё колом на это время. Ну и раздел с подключенным кешем полностью фиксируется по размеру. Хотите изменить, поменять диск и т.п.? Удаляйте кеш-диск, меняйте размер и включайте кеш назад. Если во время этого произойдёт затык, то пиши пропало.
            У меня диск с кешем для 2Тб — 10%. 2 часа нужно для удаления диска с кешем. В общем сырой в удобстве, но справедливости ради — очень полезный в хозяйстве, когда данных много, а денег мало.


            Насчёт zfs. Я ставил на lvm+ext4, потому что знаю этот стек. ZFS для реального быстродействия требует RAM и надёжное питание, которое я ей обеспечить не мог.


            SSD сейчас не настолько дорогие, но с lvm можно сэкономить на raid и дисках. Практика показывает, что портятся они примерно одинаково, поэтому вместо костылей реально ssd выходит дешевле потом при не огромном потоке на перезапись. Но последнее это чисто личный опыт — не навязываю.

              +2
              Proxmox поддреживает не только zfs.
              Можно установить чистый debian на mdraid, а поверх из пакетов накатить proxmox.
            +2

            Для одиночного домашнего гипервизора proxmox будет не хуже esxi. А может даже и лучше. Меня он полностью устраивает дома.

            0
            Всем привет.
            Пользуем Proxmox VE более 6 лет. Также пользуем Proxmox Mail Gateway (стоит перед связкой Sogo + postfix + dovecot + apache solr + apache tika + tesseract OCR — привет, Zimbra) и с релизом 1.0 — Proxmox Backup Server.

            Зы. Веду недовики по Proxmox, ZFS, кластеризации, pfsense\opnsense — forum.netgate.com/topic/120102/proxmox-ceph-zfs-pfsense-%D0%B8-%D0%B2%D1%81%D0%B5-%D0%B2%D1%81%D0%B5-%D0%B2%D1%81%D0%B5/
            Периодически обновляю.

            Зы2. Если интересно, могу выложить скрипт по замене диска(-ов) в zfs (root-пуле и обычном) для Proxmox-а. Писал для себя, но могу поделиться.
              0
              Скрипт в любом случае будет интересен. Поделитесь, пожалуйста.
                0
                Добрый.
                Скрипт по замене сбойного диска(-ов) в ZFS-пуле(-ах) или для замены дисков на более емкие с последующим расширением пула после замены всех дисков в пуле (команда zpool set autoexpand=on и далее).
                Писался для себя в свободное время. Прошу строго не судить.
                Пользовать на свой страх и риск.

                #!/usr/bin/env bash
                #http://redsymbol.net/articles/unofficial-bash-strict-mode/
                #set -euxo pipefail
                set -euo pipefail
                
                #Colors
                BK=$'\e[30m'
                RD=$'\e[31m'
                GR=$'\e[32m'
                YE=$'\e[33m'
                BL=$'\e[34m'
                MA=$'\e[35m'
                CY=$'\e[36m'
                WT=$'\e[01;37m'
                LRD=$'\e[01;31m'
                LGR=$'\e[01;32m'
                LYE=$'\e[01;33m'
                LBL=$'\e[01;34m'
                LGY=$'\e[37m'
                LCY=$'\e[96m'
                BRD=$'\e[41m'
                BGR=$'\e[42m'
                BYE=$'\e[43m'
                BBL=$'\e[44m'
                BMA=$'\e[45m'
                BCY=$'\e[46m'
                BLGR=$'\e[47m'
                BDGR=$'\e[100m'
                BLYE=$'\e[103m'
                BLBL=$'\e[104m'
                RST=$'\e[0m'
                
                PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
                
                clear
                
                if [[ "$(id -u)" != "0" ]]; then
                    printf "This script must be run as root!\n"
                    exit 1
                fi
                
                pause() {
                   read -r -p "$*"
                }
                
                spinner() {
                    pid=$!
                    spin='-\|/'
                    i=0
                    while kill -0 $pid 2>/dev/null
                    do
                        i=$(( (i+1) %4 ))
                        printf "${WT}[${spin:$i:1}]\rSearch for hot-plugged disk(s), please wait${RST} "
                        sleep .1
                    done
                }
                
                
                LISTPOOLS="$(zpool list -H -o name)"
                if [ ! "${LISTPOOLS}" ]; then
                   printf '%s\n' "${LYE}No pools were found!${RST}"
                   exit 0
                fi
                
                if ! zpool list -H -o health | grep -v -q 'ONLINE'; then
                  printf '%s\n' "${BGR}${WT}Pool(s) looks good :)${RST}"
                  printf "\n\n"
                  zpool status -LP | sed "s/\(ONLINE\)/${BGR}${WT}\1${RST}/g"
                  printf "\n"
                  exit 0
                fi
                
                tput cuu1; tput el; read -r -p "${WT}Search for hot-plugged device(s)? [y/N]:${RST} " YN
                if [[ "${YN}" =~ ^[yY]$ ]]; then
                  ( for host in /sys/class/scsi_host/*; do echo "- - -" | tee "${host}/scan"; done ) >/dev/null 2>&1 & spinner
                  printf "\n\n"
                fi
                
                mapfile -t POOL_DEGRADED < <(zpool list -H | awk '!/ONLINE/{print $1}')
                printf '%s\n' "${WT}Pool(s) status:${RST}"
                printf "\n"
                
                mapfile -t COLOR_POOL < <(zpool list -H -o name)
                mapfile -t COLOR_POOL < <(printf '%s\n' "${COLOR_POOL[*]}" | sed "s/ /\\\|/g")
                
                mapfile -t COLOR_MIRROR < <(zpool status -LP | awk '/mirror|raidz/{print $1" "$2}'| awk '!/ONLINE/{print $1}')
                mapfile -t COLOR_MIRROR < <(printf '%s\n' "${COLOR_MIRROR[*]}" | sed "s/ /\\\|/g")
                
                for POOL in ${POOL_DEGRADED[@]}; do
                 zpool status -L ${POOL} \
                  | awk '/NAME/{while(getline line) {if (line !~/NAME|^$/) print line; else break}}' \
                  | sed "/\("${COLOR_POOL}"\)/ s/\(DEGRADED\)/${BRD}${BK}\1${RST}/g" \
                  | sed "/\("${COLOR_MIRROR}"\)/ s/\(DEGRADED\)/${BYE}${BK}\1${RST}/g" \
                  | sed "s/\(ONLINE\)/${BGR}${WT}\1${RST}/g" \
                  | sed "s/\(FAULTED\|OFFLINE\|UNAVAIL\|REMOVED\|FAIL\|DESTROYED\|corrupt\|cannot\|unrecover\)/${BLBL}${BK}\1${RST}/g"
                  printf "\n"
                done
                
                printf "\n"
                while true; do
                  tput cuu1; tput el; read -r -p "1) Enter ${BRD}${BK}DEGRADED${RST} [$(printf '%s\n' "${POOL_DEGRADED[@]}" | sed ':a;N;$!ba;s/\n/\//g')]: " POOL
                  if printf '%s\n' "${POOL_DEGRADED[@]}" | grep -x -q "${POOL}"; then
                    break
                  fi
                done
                printf "\n"
                
                mapfile -t MIRROR_DEGRADED < <(zpool status -LP -v $POOL | awk '/mirror|raidz/{print $1" "$2}'| awk '!/ONLINE/{print $1}')
                printf "\n"
                while true; do
                  tput cuu1; tput el; read -r -p "2) Enter ${BYE}${BK}DEGRADED${RST} [$(printf '%s\n' "${MIRROR_DEGRADED[@]}" | sed ':a;N;$!ba;s/\n/\//g')]: " NAME
                  if printf '%s\n' "${MIRROR_DEGRADED[@]}" | grep -x -q "${NAME}"; then
                    break
                  fi
                done
                printf "\n"
                
                mapfile -t ONLINE_DEVICE < <(
                 zpool status -L ${POOL} | awk '/'${NAME}'.*DEGRADED/{print; while(getline line) {if (line !~/mirror|raidz|^$/) print line; else break}}' \
                 | awk '/ONLINE/{print $1}' | awk '!/mirror|raidz|^$/{print $1}'
                )
                
                printf "\n"
                while true; do
                  tput cuu1; tput el; read -r -p "3) Enter ${BGR}${WT}ONLINE${RST} [$(printf '%s\n' "${ONLINE_DEVICE[@]}" | sed ':a;N;$!ba;s/\n/\//g')]: " SOURCE
                  if printf '%s\n' "${ONLINE_DEVICE[@]}" | grep -x -q "${SOURCE}"; then
                    SOURCE_COLOR="${SOURCE}"
                    SOURCE="${SOURCE%%[0-9]*}"
                    break
                  fi
                done
                
                mapfile -t ONLINE_DEVICE < <(zpool status -LP -v | awk '/ONLINE/{print $1}' | awk '/\/dev\//{print}' | sed -E "s/([0-9]+?|\/dev\/)//g")
                mapfile -t TARGET_DEVICE < <(lsblk -S -o NAME,TYPE | awk '/disk/{print $1}')
                
                mapfile -t TARGET_DEVICE < <(printf '%s\n' "${TARGET_DEVICE[@]}" "${ONLINE_DEVICE[@]}" | sort | uniq -u)
                mapfile -t TARGET_COLOR_DEVICE < <(printf '%s\n' "${TARGET_DEVICE[*]}" | sed "s/ /\\\|/g")
                
                printf "\n"
                
                lsblk -o NAME,SIZE,TYPE | grep -E -w "disk|part" | sed "0,/${SOURCE_COLOR}/s//${BGR}${WT}${SOURCE_COLOR}${RST}/" | sed "s/\("${TARGET_COLOR_DEVICE[*]}"\)/${BCY}${WT}\1${RST}/g"
                printf "\n\n"
                
                while true; do
                  tput cuu1; tput el; read -r -p "4) Enter ${BCY}${WT}TARGET${RST} [$(printf '%s\n' "${TARGET_DEVICE[@]}" | sed ':a;N;$!ba;s/\n/\//g')]: " TARGET
                  if printf '%s\n' "${TARGET_DEVICE[@]}" | grep -x -q "${TARGET}"; then
                    printf "\n"
                    fdisk -l "/dev/${TARGET}" | sed "s/\("${TARGET}"\)/${BCY}${WT}\1${RST}/g"
                    break
                  fi
                done
                printf "\n"
                
                mapfile -t FAILED_DEVICE < <(
                  zpool status -LP ${POOL} \
                  | awk '/'${NAME}'.*DEGRADED/{while(getline line) {if (line !~/mirror|raidz|^$/) print line; else break}}' \
                  | awk '!/ONLINE/{print $1}'
                )
                
                mapfile -t FAILED_DEVICE_STATE < <(
                  zpool status -LP ${POOL} \
                  | awk '/'${NAME}'.*DEGRADED/{while(getline line) {if (line !~/mirror|raidz|^$/) print line; else break}}' \
                  | awk '!/ONLINE/{print $2}'
                )
                
                printf "\n"
                while true; do
                  tput cuu1; tput el; read -r -p "5) Enter ${BLBL}${BK}$(printf '%s\n' "${FAILED_DEVICE_STATE[@]}"${RST} | sed ':a;N;$!ba;s/\n/\//g') [$(printf '%s\n' "${FAILED_DEVICE[@]}" | sed ':a;N;$!ba;s/\n/\//g')]: " FAILED
                  if printf '%s\n' "${FAILED_DEVICE[@]}" | grep -x -q "${FAILED}"; then
                    zpool offline -f ${POOL} "${FAILED}"
                    break
                  fi
                done
                printf "\n"
                
                NEW_DEVICE="$(ls -l /dev/disk/by-id | awk '/\/'${TARGET}'$/{print $9; exit}')"
                printf "\n"
                while true; do
                  tput cuu1; tput el; read -r -p "6) The device ${BLBL}${BK}${FAILED}${RST} will be replaced with a ${BCY}${WT}${TARGET}${RST} device? Type without quotes 'YES' or 'no': " YN
                  if [[ "${YN}" == 'YES' || "${YN}" == 'no' ]]; then
                    case "${YN}" in
                      YES)
                        printf "\n"
                        sgdisk -Z "/dev/${TARGET}"
                
                        if [[ -z $(sgdisk -p "/dev/${SOURCE}" | sed -e "0,/^Number/d" | awk '!/BF01|BF07/{print $1}') ]]; then
                          sgdisk -G "/dev/${TARGET}"
                          zpool replace -f ${POOL} "${FAILED}" "${NEW_DEVICE}" &
                        else
                          sgdisk -R "/dev/${TARGET}" "/dev/${SOURCE}"
                          sgdisk -G "/dev/${TARGET}"
                
                          mapfile -t PART_NUMBER < <(sgdisk -p "/dev/${SOURCE}" | sed -e "0,/^Number/d" | awk '!/BF01|BF07/{print $1}')
                          for PART_NUMBER in ${PART_NUMBER[*]}; do
                            printf "\n"
                            lsblk | awk '/'${SOURCE}''$PART_NUMBER'/ {print $1" "$4}'
                            dd if="/dev/${SOURCE}$PART_NUMBER" bs=512K | dd of="/dev/${TARGET}$PART_NUMBER" bs=512K
                          done
                
                          printf "\n"
                          mapfile -t PART_NUMBER < <(sgdisk -p "/dev/${TARGET}" | awk '/BF01|BF07/{print $1}')
                          for PART_NUMBER in ${PART_NUMBER[*]}; do
                            zpool replace -f ${POOL} "${FAILED}" "${NEW_DEVICE}-part$PART_NUMBER" &
                          done
                        fi
                        ;;
                
                      no)
                        printf "\n"
                        exit 0
                        ;;
                    esac
                    break
                  fi
                done
                
                printf "\n"
                zpool status -LP -v 5 2
                

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое