Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    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 Backup Server
    Оптимизация производительности восстановления pbs (параллелизация)

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Оптимизация производительности восстановления pbs (параллелизация), Proxmox Backup Server
     
    logics
    Guest
    #1
    0
    24.11.2020 15:24:00
    Ребята, спасибо за выпуск Proxmox Backup Server! PBS выглядит очень перспективно с точки зрения того, что нужно нашей компании:

    - Инкрементные бэкапы виртуальных машин, например, каждые 15 минут
    - Гибкий цикл хранения, например, хранить последние 8, хранить 22 часа и т.д.
    - Один клиент PVE, который отправляет данные, и несколько серверов бэкапа, которые тянут данные через sync-задания
    - В случае сбоя оператор выбирает бэкап (обычно последний, не старше 15 минут) и запускает процесс восстановления ВМ.

    Сейчас мы оцениваем железо для сервера бэкапа. Производительность инкрементных бэкапов нормальная, даже на HDD — проблем нет.

    Но время восстановления слишком большое: на нашем текущем хосте у Hetzner мы видим время восстановления от 1 часа 17 минут до 1 часа 21 минуты со средней скоростью 156–165 МБ/с для больших ВМ около 750 ГБ. Я хочу сократить время восстановления до примерно 0 часов 15–45 минут, для этого нужны скорости восстановления от 300 до 800 МБ/с.

    Давайте сосредоточимся на скоростях восстановления ВМ в 750 ГБ. Вот характеристики нашего текущего хоста:

    - Хост: выделенный сервер у Hetzner
    - CPU: Intel® Xeon® CPU E5-1650 v3 (6 ядер, 12 потоков)
    - Оперативная память: 256 ГБ
    - Источник (PBS chunks): HDD 2 ТБ, Цель: тот же HDD. Скорость: 35 МБ/с
    - Источник (PBS chunks): HDD 2 ТБ, Цель: SSD TOSHIBA_KHK61RSE1T92. Скорость: 139 МБ/с
    - Источник (PBS chunks): SSD TOSHIBA_THNSN81Q92CSE, Цель: SSD TOSHIBA_KHK61RSE1T92. Скорость: 156–165 МБ/с

    Потом я подумал, может NVMe смогут хотя бы 300 МБ/с, и провёл тесты на Amazon EC2 и Microsoft Azure.

    - Хост: AWS EC2 i3.metal, выделенный экземпляр
    - CPU: 80 x AMD EPYC 7551 32-Core Processor (2 сокета)
    - Память: 512 ГБ
    - Источник (PBS chunks): массив mdadm RAID0 из 2x 2 ТБ NVMe, цель — другой массив mdadm RAID0 из 2x 2 ТБ NVMe. Скорость: 140 МБ/с
    - Источник (PBS chunks): массив mdadm RAID0 из 8x 2 ТБ NVMe, цель — тот же массив. Скорость: 142 МБ/с

    - Хост: Azure L80s_v2
    - CPU: 72 x Intel® Xeon® CPU E5-2686 v4 @ 2.30GHz (2 сокета)
    - Память: 640 ГБ
    - Источник (PBS chunks): 2 ТБ NVMe, цель — другой 2 ТБ NVMe. Скорость: 204 МБ/с
    - Источник (PBS chunks): массив mdadm RAID0 из 2x 2 ТБ NVMe, цель — другой массив из 2x 2 ТБ NVMe. Скорость: 229 МБ/с
    - Источник (PBS chunks): массив mdadm RAID0 из 5x 2 ТБ NVMe, цель — другой массив из 5x 2 ТБ NVMe. Скорость: 208 МБ/с

    Хосты могли скачать начальный бэкап ВМ со скоростью 1200–2200 МБ/с (10–18 Гбит/с), а данные fio говорят сами за себя (см. вложение).

    В итоге тесты с NVMe-дисками не показали ожидаемых скоростей восстановления. AWS EC2 даже не смогла обогнать по производительности нашего E5-1650 v3 с Toshiba SSD...

    Давайте посмотрим на htop во время восстановления:

    Причина низкой скорости восстановления очевидна: /usr/bin/pbs-restore использует только один поток, что приводит к загрузке почти на 100% одного виртуального ядра.

    Однопоточный процессор не справляется, чтобы заполнить очереди ввода-вывода моих NVMe.

    При использовании SSD и NVMe узким местом в восстановлении становится производительность одного CPU-потока.

    Поэтому я заглянул в репозиторий proxmox-backup-qemu, особенно в файл src/restore.rs.

    В конструкторе pub fn new(setup: BackupSetup) инициализируется proxmox-restore-worker с builder.max_threads(6) и builder.core_threads(4), но восстановительные воркеры не работают параллельно при восстановлении одной ВМ: в функции pub async fn restore_image я не вижу параллелизма в цикле for pos in 0..index.index_count().

    Возможно, я смотрю не в тот репозиторий или не в те строки кода, но...

    Можете представить себе распараллеливание pbs-restore для восстановления одного бэкапа PBS ВМ, чтобы использовать преимущества современных SSD и NVMe?

    Дополнительные ссылки:
    https://docs.rs/rayon/1.5.0/rayon/
    https://rust-lang-nursery.github.io/rust-cookbook/concurrency/parallel.html
    http://smallcultfollowing.com/babysteps/blog/2015/12/18/rayon-data-parallelism-in-rust/
     
     
     
    DerDanilo
    Guest
    #2
    0
    20.09.2021 19:18:00
    Жду с нетерпением улучшения скорости восстановления. Может быть, можно добавить опцию для кластера/хоста, которая позволит запускать до x процессов, как это сделано с vzdump?! Восстановление идёт очень медленно, при этом CPU, NVME и даже HDD большую часть времени простаивают. Я посмотрел список багов, но так и не понял, движется ли это в сторону решения в ближайшее время? Возможно, можно получить обновление по этому вопросу. Спасибо!
     
     
     
    logics
    Guest
    #3
    0
    21.09.2021 11:39:00
    Я попробовал распараллелить процесс восстановления, см. parallelize restore.rs на https://lists.proxmox.com/pipermail/pbs-devel/2020-December/subject.html. Но есть ограничение, о котором говорилось здесь: https://lists.proxmox.com/pipermail/pbs-devel/2020-December/001685.html. В любом случае, я действительно заметил улучшение в своих тестах, результаты бенчмарков здесь: https://lists.proxmox.com/pipermail/pbs-devel/2020-December/001687.html. Но в большинстве случаев теперь меня устраивает Live Restore.
     
     
     
    voarsh
    Guest
    #4
    0
    23.09.2021 14:06:00
    В чём тут преимущество или улучшение функции live restore?
     
     
     
    logics
    Guest
    #5
    0
    23.09.2021 14:39:00
    Потому что в случае проблемы мы можем использовать live-restore, и так наш виртуальный сервер и веб-сервер будут работать примерно через 7-9 минут. Если делать полный рестор, даже без параллелизации, вряд ли получится восстановить 750 ГБ меньше чем за 10 минут, как мне кажется. Конечно, если совместить оба подхода — параллелизовать live-restore, — тогда мы в работе уже через минуту?..
     
     
     
    Felix.
    Guest
    #6
    0
    23.09.2021 21:38:00
    Это, мягко говоря, преуменьшение, как мне кажется. Эти цифры просто потрясающие! Хотя это, возможно, и не раскрывает весь потенциал базового хранилища, если я смогу восстановить в 2 или 3 раза быстрее на том же железе — я соглашусь! При скорости восстановления выше 1 ГБ/с узким местом, наверное, станет сеть для многих пользователей. Но если живая (live) восстановление по какой-то причине не удастся, все изменения в виртуальной машине за это время пропадут. Для некоторых ВМ, например файловых серверов и уж тем более баз данных, это недопустимо. А вот для простого веб-сервера, который в любом случае пишет в внешнюю базу данных, это, вероятно, нормально. Рисков тут почти нет.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

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