Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Вышел менеджер репликации ZFS для Proxmox VE (pve-zsync)

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Вышел менеджер репликации ZFS для Proxmox VE (pve-zsync), Proxmox Виртуальная Среда
     
    martin
    Guest
    #1
    0
    30.06.2015 12:16:00
    Мы только что выпустили совершенно новый менеджер репликации ZFS для Proxmox VE (pve-zsync)! Этот CLI-инструмент синхронизирует вашу виртуальную машину (виртуальные диски и конфигурацию ВМ) или директорию, хранящуюся на ZFS, между двумя серверами — очень полезно для задач резервного копирования и репликации. Огромное спасибо нашей активной сообществу за все отзывы, тестирование, сообщения об ошибках и предложения по исправлениям. Документация http://pve.proxmox.com/wiki/PVE-zsync Git https://git.proxmox.com/?p=pve-zsync.git;a=summary Трекер ошибок https://bugzilla.proxmox.com/ __________________ С уважением, Мартин Маурер, руководитель проекта Proxmox VE
     
     
     
    jeanlau
    Guest
    #2
    0
    25.09.2015 10:48:00
    Привет! Вчера я создал тему по этому вопросу, но никто не ответил. Может, если я оставлю ссылку здесь, кто-то увидит и сможет мне помочь? http://forum.proxmox.com/threads/23673-can-t-make-zfs-zsync-working С наилучшими пожеланиями, Jeanlau
     
     
     
    blackpaw
    Guest
    #3
    0
    24.08.2015 07:13:00
    Это выглядит очень полезно, Мартин, а я как раз занимаюсь настройкой пары серверов хранения на ZFS, так что спасибо. Один вопрос: в вики ты упоминаешь: Какова конкретная процедура для этого? Видны ли скопированные виртуальные машины на втором узле каким-то образом?
     
     
     
    wolfgang
    Guest
    #4
    0
    24.08.2015 07:42:00
    Ты должен вручную копировать диски с помощью zfs send и receive, смотри https://pve.proxmox.com/wiki/PVE-zsync#Recovering_an_VM. Нет, интеграция в GUI появится позже.
     
     
     
    blackpaw
    Guest
    #5
    0
    24.08.2015 07:43:00
    Окей, спасибо, Вольфганг. Поиграю с этим.
     
     
     
    mciacci
    Guest
    #6
    0
    14.09.2015 16:38:00
    Всем привет, у меня задача в состоянии error, где можно найти какие-то логи? Большое спасибо.  
    Источник          Имя           Состояние       Последняя синхронизация       Тип  
    100                  test1          error           0                                     ssh
     
     
     
    wolfgang
    Guest
    #7
    0
    14.09.2015 20:54:00
    Привет! Если используешь это с Proxmox, то сообщение об ошибке должно прийти на электронную почту администратора по умолчанию.
     
     
     
    vkhera
    Guest
    #8
    0
    17.09.2015 17:47:00
    Хотелось бы предложить несколько идей, которые помогут в разработке этого решения, пока оно еще не финальное. Мой кейс таков: у меня есть два узла PVE, на которых я запускаю виртуальные машины для поддержки разработки (NFS файловый шар для общих объектов, кеш-серверы образов, Jira и т.д.), а также для работы серверов офиса и софта АТС. Для меня не оправданы дополнительные затраты и сложность обслуживания ради HA с автоматическим фейловером. Я могу терпеть небольшие простои при переносе машин.

    Я настроил оба узла с ZFS, дав хранилищам одинаковые имена на каждом. Это позволяет через UI переносить машины, когда они маленькие. Но у меня есть две ВМ с огромным объёмом дискового пространства. Их копирование между узлами занимает часы. Здесь я бы хотел предложить изменить подход к восстановлению с помощью zfs-sync. Вместо очередного шага send/recv было бы идеально, если бы синхронизация могла сразу сбрасывать бэкап-файлы прямо в доступное ZFS-хранилище на удалённом узле. Тогда восстановление сводилось бы к переносу конфигурационного файла QEMU на новый узел и запуску машины (возможно, с переименованием хранилища), без многочасового копирования.

    Кроме того, на удалённом узле может не хватить места для двух полных копий дисков (одна для zfs-send, другая – чтобы ВМ могла её использовать). У меня вопрос: не вызовет ли путаницы на удалённом узле наличие лишних VM-дисков в его ZFS-хранилище, если они не используются?

    Вот как я вижу использование: на PVE1 есть хранилище "tank" с образами дисков vm-104-disk-1, vm-104-disk-2, vm-104-disk-3. Итого около 1 ТБ данных. Я хотел бы напрямую синхронизировать это с узлом PVE2 в его "tank" (каждый "tank" свой и локальный для каждого узла, но с одинаковым именем). У меня нет места, чтобы сначала синхронизировать в другое место на PVE2, а потом делать send/recv в "tank" по факту необходимости. На этом сервере всего один ZFS-пул для данных, и свободного пространства для дублирования просто нет.

    Если синхронизировать диски на третий узел (просто файловый сервер), то процесс восстановления через send/recv по LAN занимает около 6 часов. Если же образы дисков уже окажутся в ZFS-хранилище, которое хочет использовать PVE2, восстановление станет лёгким и быстрым.

    Кроме того, если PVE создавала бы отдельный ZFS dataset на каждый VM внутри пула, работа с send/recv была бы проще: можно было бы делать "zfs snap -r tank/vm-104@xx" и "zfs send -r", а не каждый диск по отдельности. Эта схема предполагала бы структуру типа "tank/vm-104/disk-1". Также так проще было бы настраивать свойства ZFS для каждой ВМ, например, отключать сжатие, если файловая система ВМ уже сжата.
     
     
     
    jeanlau
    Guest
    #9
    0
    25.09.2015 23:27:00
    Привет! Просто маленькое сообщение с просьбой обновить вики. Пожалуйста, загляните в тему, которую я только что упомянул — моя проблема решилась благодаря redmop.  

    Но есть одно улучшение, которое нужно внести в скрипт pve-zsync или хотя бы ЧЁТКО УКАЖИТЬ ОБ ЭТОМ В ВИКИ: скрипт pve-zsync не работает с именами хостов! Это очень странно — имя или IP моего целевого хоста были в моём файле hosts, но команда не срабатывала, потому что скрипт работает только с IP-адресами!!!  

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

    С наилучшими пожеланиями,
     
     
     
    tom
    Guest
    #10
    0
    26.09.2015 08:30:00
    Спасибо за отзыв — вики открыта, так что зарегистрируйтесь и добавляйте свои комментарии!
     
     
     
    jeanlau
    Guest
    #11
    0
    26.09.2015 11:46:00
    Регистрация завершена.
     
     
     
    jeanlau
    Guest
    #12
    0
    27.09.2015 19:22:00
    Привет! Если кому-то интересно, я написал классный скрипт. Что он делает: держит синхронизацию на двух хостах, создаёт новый лог-файл каждый день для записи всего процесса синхронизации и присылает тебе на почту этот лог, если что-то пойдёт не так. По сути, это цикл, цель которого — чтобы на обоих хостах всегда были самые свежие копии дисков виртуальных машин. Почти так же интересно, как DRBD, но без проблем с так называемым split-brain.

    В моём случае, например, у меня примерно 15 KVM ВМ, которые не сильно нагружены, и скрипт тратит около минуты на один цикл. Думаю, в периоды большой нагрузки — может 2-3 минуты, но точно меньше 5. Всё новое, опыта пока нет, будет здорово, если кто-то попробует и расскажет, как у него работает.

    Скрипт сделан почти “из коробки” для полной установки ZFS Proxmox в кластере из двух хостов. Если у вас другая конфигурация — придется адаптировать. Главное — проверить, что установлены пакеты pve-zsync и screen, и прописать свой почтовый адрес в переменной monmail в начале скрипта.

    Извиняюсь, комментарии в скрипте на французском, надеюсь, это не проблема.

    Код:

    #!/bin/bash

    monmail="admin@mydomain.com"

    gosync() {
    ## Начинаем цикл
    while true; do
    ## Создаём лог (проверяем, что папка для логов есть)
    if [ ! -d "/var/log/syncro" ]; then
    mkdir -p /var/log/syncro
    fi
    logfic="/var/log/syncro/syncro-`date '+%d-%m-%Y'`.log"
    ## Определяем, на какой машине мы и какая машина удалённая
    loc=`hostname`
    dist=`ls /etc/pve/nodes/ | grep -v $loc`
    ### Получаем ID ВМ, использующих локальный ZFS, и удалённые ВМ
    vmloc=`grep rpool /etc/pve/nodes/$loc/qemu-server/*.conf | cut -d / -f 7 | cut -d . -f 1`
    vmdist=`grep rpool /etc/pve/nodes/$dist/qemu-server/*.conf | cut -d / -f 7 | cut -d . -f 1`
    ### Получаем IP удалённого хоста
    ipdist=$(ping -c 1 $dist | gawk -F'[()]' '/PING/{print $2}')
    ## Проверяем наличие директории узлов кластера
    if [ ! -d "/etc/pve/nodes/" ]; then
    echo "Проблема с кластером в `date '+%d-%m-%Y_%Hч%Mm%Ss'`" >> $logfic
    ## Сохраняем факт отправки почты и отправляем её
    if [ $logfic != `cat /tmp/mail.tmp` ]; then
    echo $logfic > /tmp/mail.tmp
    cat $logfic | mail -s "Проблема Syncro ZFS" $monmail;
    fi
    fi

    echo "Синхронизация с $loc на $dist" >> $logfic
    for n in $vmloc
    do
    if test -f "/tmp/stopsync.req"
    then
    rm /tmp/stopsync.req
    touch /tmp/stopsync.ok
    exit 0
    else
    echo "Начало синхронизации машины $n в `date '+%d-%m-%Y_%Hч%Mm%Ss'`" >> $logfic
    pve-zsync sync --source $n --dest $ipdist:rpool/lastsync --maxsnap 1 --verbose >> $logfic
    if test ${?} -eq 0 ; then
    echo "Синхронизация машины $n завершена в `date '+%d-%m-%Y_%Hч%Mm%Ss'`" >> $logfic
    else
    ## Сохраняем факт отправки почты и отправляем её
    if [ $logfic != `cat /tmp/mail.tmp` ]; then
    echo $logfic > /tmp/mail.tmp
    cat $logfic | mail -s "Проблема Syncro ZFS" $monmail;
    fi
    fi
    fi
    done

    echo "Синхронизация с $dist на $loc" >> $logfic
    for n in $vmdist
    do
    if test -f "/tmp/stopsync.req"
    then
    rm /tmp/stopsync.req
    touch /tmp/stopsync.ok
    exit 0
    else
    echo "Начало синхронизации машины $n в `date '+%d-%m-%Y_%Hч%Mm%Ss'`" >> $logfic
    pve-zsync sync --source $ipdist:$n --dest rpool/lastsync --maxsnap 1 --verbose >> $logfic
    if test ${?} -eq 0 ; then
    echo "Синхронизация машины $n завершена в `date '+%d-%m-%Y_%Hч%Mm%Ss'`" >> $logfic
    else
    ## Сохраняем факт отправки почты и отправляем её
    if [ $logfic != `cat /tmp/mail.tmp` ]; then
    echo $logfic > /tmp/mail.tmp
    cat $logfic | mail -s "Проблема Syncro ZFS" $monmail;
    fi
    fi
    fi
    done

    done
    }

    stop() {
    touch /tmp/stopsync.req
    ## Начинаем новый цикл, чтобы дождаться окончания текущей синхронизации
    while true; do
    if test -f "/tmp/stopsync.ok"
    then
    echo "Остановка синхронизации: ОК"
    ## Останавливаем сам скрипт
    rm /tmp/stopsync.ok
    kill $$
    exit 0
    else
    echo "Остановка в процессе..."
    echo "Текущая синхронизация завершается, это может занять немного времени..."
    sleep 3
    fi
    done
    }

    case "$1" in
    gosync)
    gosync
    ;;
    start)
    screen -d -m -S syncro-zfs bash -c '/root/scripts/syncro-zfs gosync'
    echo "Запуск синхронизации: ОК"
    echo "Введите команду 'screen -r syncro-zfs', чтобы увидеть вывод."
    ;;
    stop)
    stop
    ;;
    *)
    echo "Использование: $0 {start|stop}" >&2
    exit 1
    ;;
    esac

    Надеюсь, вам понравится, обязательно дайте знать, как пойдёт. Всего доброго!
     
     
     
    wbumiller
    Guest
    #13
    0
    28.09.2015 13:45:00
    Не только комментарии, но и вывод/лог-файлы — это немного... нестандартно. Ещё рекомендую брать все переменные в двойные кавычки в командах и использовать двойные квадратные скобки для if-конструкций, особенно если там есть обратные кавычки, так как это может привести к куче проблем. Похоже, ты любишь писать shell-скрипты, поэтому обязан подсказать тебе вот эту очень полезную статью[1].
    [1] http://mywiki.wooledge.org/BashPitfalls/
     
     
     
    jeanlau
    Guest
    #14
    0
    28.09.2015 14:16:00
    Спасибо за отзыв, я внимательно прочитаю вашу ссылку и благодарю за то, что вернули моему скрипту его изначальную форму. Я сделаю другой скрипт, который будет своего рода плагином для Nagios, чтобы сравнивать дату и время последней синхронизации и выдавать предупреждение, если прошло слишком много времени... Я выложу скрипт здесь, когда он будет готов. С наилучшими пожеланиями,
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры