Скрипты, описанные в данной статье, выполняют резервное копирование конфигурации, необходимой для функционирования ПК СВ "Брест". Пользовательская конфигурация не затрагивается. Если требуется сохранить индивидуальные параметры конфигурации, а также ВМ, запущенные вне управления ПК СВ "Брест", перед выполнением нижеуказанных действий, следует самостоятельно произвести их резервное копирование.

Обновление ОС СН ALSE, установленной на серверах виртуализации и управления, производится путем ее переустановки на версию 1.8.3.UU1 с сохранением конфигурации и базы данных (БД). 

Подготовка к процессу обновления

В связи с тем, что структура БД ПК СВ "Брест" версий 3.3.3 и 4.0.1 имеет существенные различия, перед обновлением ПК СВ, необходимо вывести все серверы из зоны объединения (Raft). Для этого следует:

  1. Выбрать сервер управления ПК СВ версии 3.3.3, который будет управлять кластером виртуализации во время обновления до версии 4.0.1 всех остальных серверов управления ПК СВ, ранее входящих в зону объединения (далее по тексту - Текущий лидер). 

    На время обновления будет доступен только один сервер управления.

  2. Вывести Текущий лидер из зоны объединения путем установки в конфигурационном файле /etc/one/one.d/raft.conf значения параметра SERVER_ID = -1:
    FEDERATION = [
        MODE          = "STANDALONE",
        ZONE_ID       = 0,
        SERVER_ID     = -1,
        MASTER_ONED   = ""
    ]
    CODE
  3. Остановить службу opennebula на всех серверах управления, выполнив команду: 
    sudo systemctl stop opennebula
  4.  На текущем лидере вновь запустить службу opennebula:
    systemctl start opennebula


  5. На остальных серверах управления отключить ее: 
    sudo systemctl disable opennebula
  6. На Текущем лидере удалить все отключенные серверы из конфигурации Raft, для каждого из них выполнив команду:
    sudo onezone server-del <0> <X>
    CODE

    где:

    <0> – идентификатор зоны;<X> – идентификатор сервера управления в конфигурации Raft. По завершении процесса удаления серверов, в конфигурации Raft  не должно остаться ни одного сервера.
    Пример вывода после успешного выполнения команд:
    #onezone show 0
    ZONE 0 INFORMATION                                                              
    ID                : 0                   
    NAME              : OpenNebula         
    ZONE TEMPLATE                                                                   
    ENDPOINT="http://localhost:2633/RPC2"  
    CODE

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

  1. Освободить сервер управления от ВМ путем их миграции на другой, входящий в кластер, сервер виртуализации (мигрировать нужно как включенные так и выключенные ВМ). Если мигрировать ВМ не возможно, следует выключить ВМ и сохранить их диски и системные образы на отдельный сервер или внешний носитель.
  2. Сделать резервную копию БД командой: 
    sudo onedb backup /var/tmp/brest_front_backup.sql
  3. Скопировать полученный файл копии БД на отдельный сервер или внешний носитель.
  4. Остановить и отключить службу opennebula, последовательно выполнив команды: 

    sudo systemctl stop opennebula

    sudo systemctl disable opennebula

Создание резервной копии конфигурации сервера

Для создания резервной копии параметров ПК СВ "Брест" может быть использован следующий скрипт:

Для корректной отработки данного скрипта, перед его выполнением необходимо установить пакет genisoimage, который создаст ISO-образ /var/tmp/<имя узла>_backup_brest.iso  с резервной копией конфигурации и информации о сервере для дальнейшего использования при восстановления конфигурации. Образ необходимо скопировать на отдельный сервер или внешний носитель. Данный ISO-образ далее  будет удобно использовать для передачи сохраненной конфигурации путем подключения его к серверу посредством IPMI.

brest_backup.sh

#!/bin/bash
 
BCK_DIR="/var/tmp/backup"
 
TMPL="/tmp/system.tmpl"
PKGS=${BCK_DIR}"/system.pkg"
 
mkdir -p ${BCK_DIR}
 
# Системная конфигурация
cat <<EOF > /tmp/system.tmpl
/etc/network/interfaces
/etc/network/interfaces.d/
/etc/hosts
/etc/fstab
/etc/resolv.conf
/etc/hostname
/etc/lvm/lvm.conf
/etc/lvm/lvmlocal.conf
/etc/systemd/network/
/var/lib/one/.ssh/
EOF
 
# Отслеживаемый список пакетов
cat <<EOF > /tmp/packages.tmpl
^lvm2-lockd
^open-iscsi
^ceph-mon
^ceph-osd
^ceph-mgr
^ceph-base
^ceph-common
^network-manager
^openvswitch-switch
^multipath-tools
^ocfs2-tools
^nfs-common
^ifenslave
^bridge-utils
EOF
 
# Отслеживаемые службы
 
# Получение списка установленных пакетов
dpkg --get-selections | grep -f /tmp/packages.tmpl > ${PKGS}
 
# Сохранение конфигурации установленных пакетов
PCKG_LIST=$(cat ${PKGS} | cut -f 1 )
 
for PCKG_SAVE in ${PCKG_LIST}
do
    case ${PCKG_SAVE} in
    network-manager)
        echo "NetworkManager установлен, сохранение конфигурации."
        tar -zcf ${BCK_DIR}/${PCKG_SAVE}.tgz /etc/NetworkManager/ >/dev/null 2>&1
    ;;
    open-iscsi)
        echo "ISCSI Initiator установлен, сохранение конфигурации."
        tar -zcf ${BCK_DIR}/${PCKG_SAVE}.tgz /etc/iscsi/ >/dev/null 2>&1
    ;;
    ocfs2-tools)
        echo "OCFS2 Установлен, сохранение конфигурации."
        tar -zcf ${BCK_DIR}/${PCKG_SAVE}.tgz /etc/ocfs2/ /etc/default/o2cb >/dev/null 2>&1
    ;;
    ceph-common)
        echo "CEPH Установлен, сохранение конфигурации."
        systemctl list-units --type=service --state=loaded --no-pager --plain --no-legend | cut -d " " -f 1 | grep "^ceph-.*@" >> ${BCK_DIR}/ceph-services.list
        tar -zcf ${BCK_DIR}/${PCKG_SAVE}.tgz --exclude="/var/lib/ceph/osd/*" /etc/ceph/ /var/lib/ceph/ >/dev/null 2>&1
    ;;
    multipath-tools)
        echo "Multipath установлен, сохранение конфигурации."
        tar -zcf ${BCK_DIR}/${PCKG_SAVE}.tgz /etc/multipath/ /etc/multipath.conf >/dev/null 2>&1
    ;;
    openvswitch-switch)
        ovsdb-client backup > ${BCK_DIR}/ovs.db
    ;;
    esac
done
 
# Сохранение ключей авторизации libvirtd в ceph, если они есть
if dpkg-query -s ipa-libvirt-qemu > /dev/null 2>&1
then
        OIFS=$IFS
        IFS=$'\n'
            read -ra SECRETS <<< `virsh -c qemu:///system secret-list | grep ceph | awk '{print $1,$3}'`
 
            for SECRET in ${SECRETS[@]}
            do
                TIFS=$IFS; IFS=" "; KEY=( $SECRET ); IFS=$TIFS
                virsh -c qemu:///system secret-dumpxml ${KEY[0]} > ${BCK_DIR}/${KEY[1]}-secret.xml
                ceph auth get-key ${KEY[1]} > ${BCK_DIR}/${KEY[1]}.key
            done
        IFS=$OIFS
fi
 
# Сохранение конфигурации ПК СВ
if dpkg-query -s opennebula-common > /dev/null 2>&1
then
        echo "Сервер управления ПК СВ установлен, сохранение конфигурации."
        tar -zcf ${BCK_DIR}/opennebula.tgz /etc/one/ /var/lib/one/.one/ /var/lib/one/homes/ >/dev/null 2>&1
fi
 
# Фиксация имен сетевых интерфейсов
IFACES=$( ls -l /sys/class/net/ | grep '/devices/pci' | grep -v usb | awk '{print $9}' )
ITER=10
for IFACE in $IFACES
do
        MAC=`cat /sys/class/net/$IFACE/address`
cat <<EOF > /etc/systemd/network/${ITER}-${IFACE}_rename.link
[Match]
MACAddress=${MAC}
 
[Link]
Name=${IFACE}
EOF
((ITER+=1))
done
 
# Сохранение конфигурации системы
#echo ${PKGS} >> /tmp/system.tmpl
tar -zcf ${BCK_DIR}/system.tgz -T /tmp/system.tmpl >/dev/null 2>&1
 
cat <<'EOT' > ${BCK_DIR}/00-system_restore.sh
#!/bin/bash
 
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
 
#Установка требуемых пакетов
apt install -y `cat ${SCRIPT_DIR}/system.pkg | awk '{print $1}'`
 
# Восстановление конфигурации установленных пакетов
PCKG_LIST=$(cat ${SCRIPT_DIR}/system.pkg | cut -f 1 )
 
for PCKG_RES in ${PCKG_LIST}
do
    case ${PCKG_RES} in
    network-manager)
        echo "Восстановление конфигурации NetworkManager."
        tar -zxf ${SCRIPT_DIR}/${PCKG_RES}.tgz -C /
    ;;
    open-iscsi)
        echo "Восстановление конфигурации ISCSI Initiator."
        tar -zxf ${SCRIPT_DIR}/${PCKG_RES}.tgz -C /
    ;;
    ocfs2-tools)
        echo "Восстановление конфигурации OCFS2."
        tar -zxf ${SCRIPT_DIR}/${PCKG_RES}.tgz -C /
        dpkg-reconfigure ocfs2-tools
    ;;
    ceph-common)
        echo "Восстановление конфигурации CEPH."
        tar -zxf ${SCRIPT_DIR}/${PCKG_RES}.tgz -C /
        CEPH_SERV_FILE=$(cat ${SCRIPT_DIR}/ceph-services.list)
        for CEPH_SERV in ${CEPH_SERV_FILE}
        do
            systemctl enable ${CEPH_SERV}
        done
    ;;
    multipath-tools)
        echo "Восстановление конфигурации Multipath."
        tar -zxf ${SCRIPT_DIR}/${PCKG_RES}.tgz -C /
    ;;
    openvswitch-switch)
        echo "Восстановление конфигурации OVS."
        ovsdb-tool convert ${SCRIPT_DIR}/ovs.db
        ovsdb-client restore < ${SCRIPT_DIR}/ovs.db
    ;;
    esac
done
 
#Восстановление системной конфигурации
tar -zxf ${SCRIPT_DIR}/system.tgz --exclude='etc/hosts' --exclude='etc/fstab' -C /
systemctl daemon-reload
update-initramfs -u
EOT
chmod 755 ${BCK_DIR}/00-system_restore.sh
 
cat <<'EOT' > ${BCK_DIR}/01-fstab_restore.sh
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
tar -zxf ${SCRIPT_DIR}/system.tgz -C /tmp/ etc/fstab 
echo >> /etc/fstab
#Получение списка точек монтирования NFS, OCFS2 и CEPH
OIFS=$IFS; IFS=$'\n'
FSTAB_FILE=$(cat /tmp /etc/fstab | grep -v '^#')
for FSTAB_LINE in ${FSTAB_FILE}
do
    TIFS=$IFS; IFS=" "; SPLITTED_LINE=( ${FSTAB_LINE} ); IFS=$TIFS
    if [ "${SPLITTED_LINE[2]}" = "ocfs2" ] || [ "${SPLITTED_LINE[2]}" = "nfs" ] || [ "${SPLITTED_LINE[2]}" = "ceph" ]
    then
        echo "Создание каталогов точек монтирования ${SPLITTED_LINE[2]}: ${SPLITTED_LINE[1]} и добавление точек монтирования в fstab"
        mkdir -p ${SPLITTED_LINE[1]}
        echo ${FSTAB_LINE} >> /etc/fstab
    fi
done
IFS=${OIFS}
systemctl daemon-reload
EOT
chmod 755 ${BCK_DIR}/01-fstab_restore.sh
 
cat <<'EOF' > ${BCK_DIR}/03-brest_db_update.sh
#!/usr/bin/bash
# Легенда
LEGEND=$(cat<<"EOT"
Параметры использования:\n
-d Имя БД Брест\n
-u Пользователь БД ПК СВ\n
-p Пароль пользователя БД ПК СВ\n
-b (Обязательный) Путь до файла резервной копии БД ПК СВ Версии 3.x\n
EOT
)
  
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
tar -zxf ${SCRIPT_DIR}/opennebula.tgz -C / var/
 
# Чтение параметров
if [ $# != 0 ]; then
    while [ -n "$1" ]
    do
        case "$1" in
            -d) DBNAME="$2"; shift ;;
            -p) DBPASSWD="$2"; shift ;;
            -u) DBUSER="$2"; shift ;;
            -b) DBBCK="$2"; shift ;;
        esac
        shift
    done
    if [ -x ${DBBCK} ];then
        echo 'Пропущен обязательный параметр -b <Путь файла резервной копии БД ПК СВ 3.x>'; exit 1
    fi
    OIFS=$IFS
    IFS=$'\n'
    SECRETS=$(cat /etc/one/one.d/db.conf | grep -v "^#"| tr -d "[:punct:]" | awk '{print $1,$2}')
    for SECRET in ${SECRETS[@]}
    do
        TIFS=$IFS; IFS=" "; KEY=( $SECRET ); IFS=$TIFS
        case "${KEY[0]}" in
            USER)
                if [ -z ${DBUSER} ];then
                    DBUSER="${KEY[1]}"
                fi
                ;;
            PASSWD)
                if [ -z ${DBPASSWD} ];then
                    DBPASSWD="${KEY[1]}"
                fi
                ;;
            DBNAME)
                if [ -z ${DBNAME} ];then
                    DBNAME="${KEY[1]}"
                fi
            ;;
        esac
    done
    IFS=$OIFS
else
    echo -e ${LEGEND}; exit 1
fi
  
#Остановка службы opennebula
systemctl stop opennebula
  
# Импорт БД ПК СВ версии 3.x
cat <<'EOS' > /tmp/dropdb.sql
DO $$
BEGIN
    EXECUTE (
        SELECT string_agg('DROP TABLE IF EXISTS ' || tablename || ' CASCADE;', ' ')
        FROM pg_tables
        WHERE schemaname = 'public'
    );
END $$;
EOS

PGPASSWORD="${DBPASSWD}" psql -h localhost -U ${DBUSER} -d ${DBNAME} < /tmp/dropdb.sql >/dev/null 2>&1
PGPASSWORD="${DBPASSWD}" psql -h localhost -U ${DBUSER} -d ${DBNAME} < ${DBBCK} >/dev/null 2>&1
  
# Обновление БД ПК СВ до версии 4.x
sudo -u oneadmin onedb upgrade -t postgresql -d ${DBNAME} -u ${DBUSER} -p "${DBPASSWD}" -S localhost
  
if [ $? == 0 ]; then
    psql "postgresql://${DBUSER}:${DBPASSWD}@localhost/${DBNAME}" -c "ALTER TABLE vm_pool ADD pdp_label character varying(32)"
else
    echo "Ошибка обновления БД ПК СВ до версии 4.x"
    exit 1
fi
  
# Запуск службы opennebula
systemctl start opennebula
  
# Обновление информации БД для системных хранилищ
declare -A DATASTORES
  
VM_DS=$( sudo -u oneadmin onevm list -x | xmlstarlet sel -t -v "/VM_POOL/VM/HISTORY_RECORDS/HISTORY[last()]/DS_ID" )
  
for DS in ${VM_DS}
do
    if [ -z ${DATASTORES[$DS]} ]; then
        DATASTORES[$DS]=1
    else
        ((DATASTORES[$DS]+=1))
    fi
done
  
DS_LIST=$( sudo -u oneadmin onedatastore list -x | xmlstarlet sel -t -v "/DATASTORE_POOL/DATASTORE/ID" )
for DSID in ${DS_LIST}
do
    if [ -z ${DATASTORES[$DSID]} ]; then
        sudo -u oneadmin onedb change-body datastore --id ${DSID} '/DATASTORE/SYSTEM_DEPLOY_VMS' 0 --append
    else
        sudo -u oneadmin onedb change-body datastore --id ${DSID} '/DATASTORE/SYSTEM_DEPLOY_VMS' ${DATASTORES[$DSID]} --append
    fi
done
systemctl restart opennebula-sunstone
EOF
chmod 755 ${BCK_DIR}/03-brest_db_update.sh
 
if dpkg-query -s genisoimage > /dev/null 2>&1
then
    BCK_ISO="/var/tmp/`hostname -s`_backup_brest.iso"
    echo "Генерация ISO с резервной копией: ${BCK_ISO}"
    genisoimage -V `hostname -s`_backup -r -o ${BCK_ISO} -graft-points /=${BCK_DIR}/ >/dev/null 2>&1
else
    echo "genisoimage не установлен. Генерация ISO не доступна"
fi
BASH

Обновление ОС СН ALSE до версии 1.8.3.UU1

Обновление ОС СН ALSE до версии 1.8.3.UU1 производится путем ее переустановки.

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

При использовании кластера Ceph, перед переустановкой ОС СН ALSE, необходимо перевести данный кластер в режим обслуживания, выполнив команду:

ceph osd set noout

Это позволит избежать выполнения автоматической балансировки кластера Ceph во время переустановки ОС.

ОС необходимо устанавливать на те же диски/разделы, где она была установлена ранее, во избежание затирания образов ВМ, размещенных на дисках, используемых кластером Ceph, либо LUN, подключенных с использованием FC.

Переустановка ОС СН ALSE производится согласно документации.

После установки ОС СН ALSE следует подключить ISO-образ резервной копии конфигурации, смонтировать его и скопировать его содержимое в директорию /var/tmp/brest_backup, командами:

sudo mount -o ro /dev/<sr0> /media/cdrom0/
mkdir /var/tmp/brest_backup
cp -R /media/cdrom0/* /var/tmp/brest_backup/
BASH

где <sr0> – имя устройства cdrom.

Перед началом процесса восстановления конфигурации необходимо на установленную ОС подключить репозитории требуемых версий ОС СН ALSE и ПК СВ "Брест". 

Восстановление конфигурации

На данном этапе необходимо установить и восстановить конфигурацию системных компонентов, установленных в Брест 3.3.3. Для этого:

  1. Обновить список пакетов командой: 
    sudo apt update
  2. Перейти в директроии /var/tmp/brest_backup/ и запустить скрипт 00-system_restore.sh, последовательно выполнив команды:

    cd /var/tmp/brest_backup/

    ./00-system_restore.sh

    Перед запуском скрипта необходимо удостовериться, что список пакетов был успешно получен.

    Данный скрипт устанавливает требуемые системные пакеты и восстанавливает их предыдущую конфигурацию.

    По завершении выполнения скрипта необходимо перезагрузить сервер. 

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

Установка ПК СВ "Брест" версии 4.0.1

Установка ПК СВ "Брест" версии 4.0.1 производится в несколько этапов:

  1. Введение обновленного сервера в домен FreeIPA/ALDPro.
  2. Установка ПК СВ на обновленный сервер управления.
  3. Перенос и обновление БД ПК СВ "Брест" с версии 3.3.3 на версию 4.0.1.

Введение обновленного сервера в домен FreeIPA/ALD Pro

Так как сервер ранее уже был введен в домен FreeIPA/ALD Pro на данном этапе необходимо заменить уже имеющуюся в домене запись на новую.

Пример замены записи при использованием DC FreeIPA

  1. Установка на обновленный сервер клиента FreeIPA:
    sudo apt install astra-freeipa-client
  2. Введение обновленного сервера в домен с обновлением введенной информации: 
    sudo astra-freeipa-client -d brest.loc --par --force-join

Установка ПК СВ на обновленный сервер управления

Далее на обновленном сервере управления требуется:

  1. Установить пакет brestcloud-ipa, выполнив команду:
    sudo apt install brestcloud-ipa
  2. Если в кластере используется хранилище типа BREST_LVM, активировать требуемые службы, последовательно выполнив команды:

    sudo systemctl enable lvmlockd sanlock brest-lvm

    sudo systemctl restart lvmlockd sanlock brest-lvm

  3. Если в кластере использовались хранилища на базе файловой технологии хранения (NFS, OCFS2), восстановить точки монтирования: 
    cd /var/tmp/brest_backup/
    sudo ./01-fstab_restore.sh
    sudo mount -a
  4. Сконфигурировать установленный пакет ПК СВ "Брест" командой: 
    brestcloud-ipa-configure

Перенос и обновление БД ПК СВ "Брест" с версии 3.3.3 на версию 4.0.1

Перенос и обновление БД выполняется только на одном сервере управления. Синхронизация БД между ним и последующими серверами управления будет произведена автоматически при настройке зоны объединения (Raft).

Для переноса и обновления БД ПК СВ "Брест" с версии 3.3.3 на версию 4.0.1 необходимо:

  1.  Перейти на Текущий лидер ПК СВ "Брест" версии 3.3.3., осуществить выгрузку Базы данных ПК СВ и скопировать ее на новый сервер управления, выполнив следующий скрипт:
    sudo systemctl stop opennebula
    sudo onedb backup /var/tmp/brest.sql
    scp /var/tmp/brest.sql admin@brest3.brest.loc:/tmp 				
    ssh admin@brest3.brest.loc "sudo mv /tmp/brest.sql /var/tmp"
    BASH
     где:  
    <admin> – локальный администратор на обновленном сервере управления;
    <brest3.brest.loc> – имя обновленного сервера управления.

    Отключение службы openenbula в рамках данного скрипта необходимо во избежание записи новых данных в выгружаемую БД.

  2. Вернуться на обновленный сервер управления ПК СВ "Брест", восстановить и обновить БД до версии 4.0.1, выполнив команды:

    cd /var/tmp/brest_backup/

    ./03-brest_db_update.sh -b /var/tmp/brest.sql

    После выполнения команд обновленный сервер управления станет основным сервером управления кластера виртуализации.

Если в кластере виртуализации роль сервера управления совмещена с ролью сервера виртуализации,  после завершения обновления сервер необходимо дополнительно сконфигурировать

Восстановление зоны объединения (Raft)

Для восстановления зоны объединения необходимо:

  1. По аналогии с первым сервером управления, последовательно переустановить ОС и восстановить системную конфигурацию на всех серверах управления ПК СВ.

    На втором и последующих серверах управления восстанавливать и обновлять БД не требуется – при настройке зоны объединения база данных будет автоматически синхронизирована с текущим сервером управления, работающим в одиночном режиме.

  2. Обеспечить беспарольный доступ пользователю root с первого обновленного сервера управления до остальных.
  3. Удалить из контроллера домена FreeIPA/ALDPro записи о плавающем IP-адресе и имени предыдущего лидера зоны объединения, выполнив следующие действия:
    1. Авторизоваться на сервере в качестве администратора контроллера домена, используя протокол kerberos
      kinit admin
    2. Выполнить удаление записи командой: 
      ipa host-del leader.brest.loc --updatedns
  4. На первом обновленном сервере управления запустить конфигурирование зоны объединения и следовать инструкциям:
    brestcloud-raft-configure

Обновление серверов виртуализации

Перед началом процесса обновления серверов виртуализации их необходимо выключить в веб-интерфейсе ПК СВ. Для этого:

  1. В веб-интерфейсе ПК СВ "Брест" выбрать пункт меню слева Инфраструктура – Узлы.
  2. В открывшемся окне Узлы выбрать, планируемый к обновлению, сервер виртуализации и нажать кнопку Выкл:
  3. Дождаться, когда статус выбранного сервера виртуализации изменится на Выключено.


По аналогии с обновлением серверов управления так же производится обновление серверов виртуализации. Для этого необходимо выполнить следующие действия:

  1. Создать резервную копию конфигурации.
  2. Переустановить ОС СН ALSE.
  3. Восстановить системную конфигурацию.
  4. Заново ввести сервер в домен FreeIPA/ALDPro.

Далее следует:

  1. Установить пакет для обеспечения работы сервера виртуализации командой:
    sudo apt install ipa-libvirt-qemu
  2. Если в кластере используется хранилище типа BREST_LVM, необходимо активировать требуемые службы, последовательно выполнив команды:

    sudo systemctl enable lvmlockd sanlock brest-lvm

    sudo systemctl restart lvmlockd sanlock brest-lvm

  3. Если в кластере использовались хранилища на базе файловой технологии хранения (NFS, OCFS2), восстановить точки монтирования: 

    cd /var/tmp/brest_backup/
    sudo ./01-fstab_restore.sh
    sudo mount -a
  4. Сконфигурировать сервер виртуализациии и следовать инструкциям:
    sudo ipa-libvirt-qemu-configure
  5. Обновить конфигурацию libvirtd: 
    sudo sed -i "s/#FQDN = 1/\FQDN = 1/g" /etc/libvirt/libvirtd.conf
    sudo sed -i "s/#\?check_users = "local"\|#\?check_users = "domain"/check_users = "both"/g" /etc/libvirt/libvirtd.conf
  6. Перезагрузить сервер виртуализации командой:
    sudo reboot

Восстановление доступа libvirt к Сeph

Если в качестве хранилища данных используется Ceph, при резервном копировании будут сохранены пары ключа Ceph и secret.xml для регистрации в Ceph.

Чтобы восстановить доступ libvirtd к Ceph c использованием этих ключей необходимо:

  1. Скопировать файлы в каталог /var/lib/one/, выполнив команду:

    cd /var/tmp/brest_backup/

    cp *.key *-secret.xml /var/lib/one/

  2. Зарегистрировать secret UUID: 
    sudo -u oneadmin virsh -c qemu:///system secret-define /var/lib/one/client.libvirt-secret.xml
    где client.libvirtd-secret – ключ пользователя Ceph.

    Пример вывода после успешного выполнения команды: 

    Секрет c84b8321-6d49-4b43-8d1b-0efc1686edc4 создан
    CODE
  3.  Cвязать зарегистрированный UUID с ключом пользователя командой: 

    sudo -u oneadmin virsh -c qemu:///system secret-set-value --secret c84b8321-6d49-4b43-8d1b-0efc1686edc4 --file /var/lib/one/client.libvirt.key 

    где c84b8321-6d49-4b43-8d1b-0efc1686edc4 – ранее зарегистрированный UUID.

    Еcли в кластере Ceph зарегистрировано несколько пользователей, восстановление доступа libvirt к Сeph необходимо выполнить для каждого из этих пользователей.

Обновление АРМ администратора кластера Ceph

Для восстановления работы скрипта ceph-deploy требуется переустановка ОС СН ALSE на АРМ администратора кластера Ceph. В данной статье приведена инструкция только для сохранения конфигурации ceph-deploy. Перед переустановкой ОС на АРМ администратора кластера Ceph необходимо создать резервную копию персональной конфигурации и всех данных, сохраненных на АРМ. Либо создать новую АРМ и перенести данные на нее.

В случае работы ПК СВ в гиперконвергентном режиме, для сохранения возможности управления кластером Ceph с использованием ceph-deploy, необходимо так же обновить ОС на АРМ администратора до ОС СН ALSE версии 1.8.3.UU1 и установить ceph-deploy актуальной версии.

Перед переустановкой ОС СН ALSE следует сохранить конфигурацию скрипта ceph-deploy, расположенную в домашней директории администратора Ceph, командами:

cd /home/cephadmin/
tar -zcf /tmp/ceph-deploy-backup.tgz ceph.*
CODE

где /home/cephadmin/ – домашняя директория администратора кластера Ceph.

Полученный файл /tmp/ceph-deploy-backup.tgz необходимо скопировать на другой сервер или внешний носитель.

Далее следует  переустановить АРМ администратора кластера Ceph, выполнив следующие действия:

  1. Создать пользователя администратора Ceph на АРМ администратора и всех серверах, где размещен Ceph, последовательно выполнив команды: 
    sudo adduser cephadmin
    echo "cephadmin ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadmin sudo chmod 0440 /etc/sudoers.d/cephadmin sudo pdpl-user -i 63 cephadmin
  2. Сгенерировать ssh-ключи (публичный и приватный) командой:
    ssh-keygen
  3. Скопировать публичный ключ на все серверы кластера, выполнив команду:
    for N in $(seq 1 3); do ssh-copy-id cephadmin@storage$N; done

    В  ходе выполнения команд для каждого сервераа кластера Ceph необходимо подтвердить дествие, нажав на кнопку Y (Да) и указав пароль пользователя cephadmin.

  4. Скопировать ssh-ключ для беспарольного доступа к АРМ администратора: 
    ssh-copy-id cephadmin@arm
  5. Установить ceph-deploy командой:

    В связи с исключением из репозиториев ОС СН версии 1.8 и старше пакета ceph-deploy, перед выполнением данной команды, необходимо подключить репозиторий ПК СВ 4.0.1 или старше.

    sudo apt install ceph-deploy python3-setuptools
  6. Восстановить конфигурацию ceph-deploy, последовательно выполнив команды:
    cd /home/cephadmin/
    tar -zxf /tmp/ceph-deploy-backup.tgz

На этом обновление АРМ администратора кластера Ceph будет завершено.

Действия после полного обновления кластера Ceph

После полного обновления кластера Ceph в выводе может отобразиться сообщение следующего содержания: all OSDs are running quincy or later but require_osd_release < quincy. Данное сообщение свидетельствует о том, что в кластере Ceph включена поддержка версий Ceph ниже, чем quincy, тогда как все osd уже используют версию quincy.

Пример вывода после установки Ceph

ceph -s
  cluster:systemctl enable ceph-volume@lvm-0-c99d269d-9696-4697-a067-109efc21ee00.service ceph-mgr@brest1.service ceph-mon@brest1.service ceph-osd@0.service
    id:     687570e8-9f2b-4076-93b1-4f0b6ce0bfe7
    health: HEALTH_WARN
            all OSDs are running quincy or later but require_osd_release < quincy
BASH

Для отключения поддержки старых версий следует выполнить команду:

ceph osd require-osd-release quincy

По завершении обновления необходимо перевести Ceph в работу в нормальном режиме:

ceph osd unset noout