Резервное копирование с помощью Proxmox Backup Server (PBS). Делаем правильные бэкапы

Возврат:: к списку статей мои статьи


Вступление, или от простых бэкапов к отдельной системе

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

В моей схеме домашней инфраструктуры резервные копии виртуальных машин создавались каждую ночь в 4 часа утра. Полученные архивы сохранялись на жестком диске, подключенном к тому же мини-ПК. Это позволяло хранить до 7 копий виртуальных машин на диске, что было приемлемо, пока я не развернул отдельный контейнер с Nextcloud.

Для меня важным стало резервное копирование жесткого диска, на котором хранятся пользовательские файлы Nextcloud. Это привело к увеличению суммарного размера ежедневной резервной копии с 5 ГБ до 30 ГБ и более.

Такая ситуация оказалась неприятной и требовала поиска решения. Кроме того, я передавал полученные резервные копии из Nextcloud на основной компьютер для дополнительного резервного копирования, так как я не хотел рисковать потерей данных в случае отказа жесткого диска. Однако передача такого объема данных ежедневно по сети вызывала определенные неудобства, особенно учитывая тенденцию к увеличению объема данных.

Попытка обсудить эту проблему в профильных чатах привела меня к изучению нового инструмента - Proxmox Backup Server (PBS).

Зачем это все и что нам это дает?

Основное отличие PBS заключается в том, что он не хранит полные копии бэкапов, а осуществляет запись только изменений в файлах. Этот процесс часто описывается термином 'инкрементальное резервное копирование' или 'дифференциальное резервное копирование'.

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

В моем случае, я хранил бэкапы за 3 дня (после добавления Nextcloud пришлось сократить историю с 7 до 3 дней), что в сумме занимало около 90-110 Гб на жестких дисках сервера и основного компьютера. Размер каждой виртуальной машины в архиве составлял от 5 до 10 Гб, а Nextcloud занимал около 20 Гб.

После перехода на использование PBS, я теперь храню 30 резервных копий каждой виртуальной машины, занимающих примерно 65 Гб. Стоит отметить, что эти значения ситуативны и зависят от степени изменений данных. Если в вашем случае много изменений в больших файлах, то и объемы будут увеличиваться соответственно. Например, если вы решите создавать резервные копии фильмов (хотя зачем это нужно - другой вопрос).

Pasted image 20240620143949.png

Pasted image 20240620144002.png

Фактически, PBS создает полную копию на первом этапе, а затем сохраняет только изменения по сравнению с предыдущей версией, что позволяет создавать некую 'машина времени' для данных.

Особенности использования, или не все так радужно как хотелось бы...

В отличие от бэкапов, создаваемых в виде архива, в данном случае мы получаем служебные файлы, которые кроме Proxmox никто прочитать не сможет. Это может быть серьезной проблемой, если надо вручную что-то вытащить, но всегда можно открыть и скачать архив через веб-интерфейс сервиса. Также для душевного спокойствия я оставил формирование классических бэкапов Proxmox в архив, но только раз в неделю, которые Nextcloud перекладывает на основной компьютер, а я уже руками забираю на внешний жесткий диск.

Pasted image 20240620144022.png

Еще одной проблемой является то, что PBS не может делать синхронизацию через Samba для переноса бэкапов на тот же компьютер под Windows. Сам PBS поддерживает только NFS, который Microsoft не предоставляет на не серверных версиях Windows. Перенести файлы в ручном режиме или через WebDAV тоже не особо поможет, так как они являются скрытыми и частично зашифрованными. Для решения этой проблемы я испробовал много разных способов: от создания NFS сторонним софтом и в WSL до запуска отдельной виртуальной машины. Но самым оптимальным у меня получилось решение по запуску через Docker, о котором я расскажу отдельно.

Также сам PBS можно поставить несколькими способами. Рекомендуемым вариантом является развертывание отдельной машины с образом ISO PBS, альтернативой может быть установка в Debian как пакет. Не рекомендуемым, но допустимым является установка в PVE, не рекомендуется из-за того, что данные могут быть потеряны, если возникнут проблемы с хостом. Еще один не очевидный, не заявленный и точно не рекомендуемый (но кого это остановит) способ - это установка как Docker-контейнер.

Основная часть, или хватит лирики

В моем случае у меня был мини-ПК с жестким диском, на котором хранились бэкапы, так что вариант с установкой в PVE мне показался достаточно оптимальным, так как не требовал отдельной железки и вообще это домашний тестовый стенд (ака подопытный кролик). С этим делом все достаточно просто, можем обратиться к официальной инструкции: [https://pbs.proxmox.com/docs/installation.html#install-proxmox-backup-server-on-proxmox-ve\] Но я вынес сюда основные шаги, на самом деле их будет всего 2. Подключаемся по SSH к хосту Proxmox и приступаем.

1. Добавляем репозиторий с PBS в источники для PVE

nano /etc/apt/sources.list

И добавляем запись

deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription

Внимание!!! Я предполагаю, что лишние репозитории у вас были заранее выключены и используется бесплатная версия. Для этого можно воспользоваться скриптом для настройки Proxmox (применять после чистой установки, иначе на свой страх может ломать источники и бог знает что еще)

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)"

Все скрипты: [https://tteck.github.io/Proxmox/\]

2. Обновляем список пакетов и устанавливаем PBS

apt update && apt install proxmox-backup-server

Собственно на этом все, у нас есть PBS на нашем основном хосте, заходим на него по адресу:

[https://:8007]

Pasted image 20240620144155.png

Нас встречает стандартный интерфейс proxmox и полное непонимание что с этим всем делать, но где наши не пропадали велики методом тыка идем в раздел хранилище данных, и создаем новое хранилище данных.

Pasted image 20240620144210.png

Pasted image 20240620144221.png

Фактически мы указываем путь, где будут лежать наши файлы бэкапов в разбиении на служебные файлы proxmox.

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

Pasted image 20240620144231.png

Тут же настроим задание проверки резервных копий на целостность.

Pasted image 20240620144245.png

Pasted image 20240620144257.png

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

Pasted image 20240620144307.png

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

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

Pasted image 20240620144319.png

В итоге должно получиться

Pasted image 20240620144333.png

В интерфейсе хранилища данных так же должны быть такие записи

!!! Внимание !!! Дополнительный раздел и не обязательные действия.

Если у вас есть свой домен и отдельный пунктик на предупреждения браузера о само подписанных сертификатах можно выпустить новый сертификат с помощью dns chelenge если или закинуть свой сертификат. Это надо если не используете прокси сервер или для обеспечения стабильности когда npm лежит. Данная инструкция так же актуальна для Proxmox VE. Переходим в раздел сертификаты, вкладка учетные записи:

Pasted image 20240620144347.png

Создаем новую учетную запись, и новую запись модуля.

Pasted image 20240620144356.png

На вкладке сертификаты добавляем новую запись ACME и выполняем запрос сертификата

Pasted image 20240620144404.png

Данные действия обязательно делать до подключения так как получение сертификата изменяет подпись вашего сервера PBS.

Подключение PBS к proxmox VE, или когда это уже закончиться…

Заходим в веб интерфейс proxmox VE, идем в раздел хранилища и добавляем наш PBS

Pasted image 20240620144416.png

Pasted image 20240620144425.png

В моем случае настройки выглядят так:

Pasted image 20240620144434.png

Сервер указываем IP вашего хоста, отдельно обращаю внимание что соединение происходит по 8007 порту, отдельно стоит обратить внимание при настройки прокси сервера.

Настройки по хранению резервных копий делать не надо за это будет отвечать сам PBS.

Отдельно надо отметить поле отпечаток, он нужен для установки ssl соединения между нашими системами. Что бы его получить возвращаемся в интерфейс PBS и на вкладке панель мониторинга нажимаем показать отпечаток.

Pasted image 20240620144450.png

После завершения настройки у вас появиться новое хранилище в вашем интерфейсе Proxmox VE

Pasted image 20240620144510.png

Pasted image 20240620144517.png

Настроим резервное копирование. Переходим в раздел корня – «Резервное копирование» и создаем новую запись.

Pasted image 20240620144526.png

Дополнительных настроек не надо. Отдельно надо отметить, что вариант сжатия мы не выбираем за это, отвечает сам PBS.

Так же не маловажная особенность по режимам, которая, может быть, и при обычном создании бэкапов, но при использовании PBS она возникает гарантировано.

Если выбирать режим «Снимок», которые делает бэкапы без остановки виртуальных машин, в процессе бэкапа создается копия виртуальной машины со всеми подключенными (и указанными для бэкапа) дисками. Эта копия создается в директории /var основного хоста, и если в процессе не хватит места, то возникнет ошибка типа такой:

ERROR: Backup of VM 101 failed - command 'rsync --stats -h -X -A --numeric-ids -aH --delete --no-whole-file --sparse --one-file-system --relative '--exclude=/tmp/?*' '--exclude=/var/tmp/?*' '--exclude=/var/run/?*.pid' /proc/1632/root//./ /proc/1632/root//./mnt/nextcloud /var/tmp/vzdumptmp128654_101' failed: exit code 11

Для исправления ее есть несколько способов я использовал два:

1.       Та виртуалка которая не помещается во временные файлы бэкапиться в режиме «Остановка»

2.       Увеличение пространства lvm root для того что бы поместились данные. При этом не надо что бы туда мог уместиться весь выделенный диск, достаточно что бы в свободное пространство помещались все сохраняемые данные.

Так же есть способы с переопределением директории /var но данные методы мне показались запутанными и пока для моей ситуации не востребованы.

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

Pasted image 20240620144629.png

Фактически на этом настройка PBS закончена, вы можете создавать более правильные и оптимальные бэкапы.

В отдельном материале я расскажу как настроить синхронизацию PBS с компьютером для создание дополнительного хранилища бэкапов.

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

Pasted image 20240620144612.png