Зачем нужен сервер резервных копий?
Создание, хранение и восстановление из резервных копий становится актуальным вопросом как только Вы начинаете использовать самохостинг
на постоянной основе. У меня ядро Linux на всех моих устройствах, в том
числе на рабочем ноутбуке и там периодически возникают вопросы,
требующие решения. На рабочем ноутбуке для этих целей настроено создание
снимков системы при каждой установке новых пакетов или их обновлении,
но существует зависимость от диска внутри этого ноутбука. То есть, если
что-то случится с диском или самим рабочим ноутбуком, то не будет еще
одной версии системы для восстановления. Я с самого начала начал
использовать Proxmox Backup Server (далее PBS) на виртуальной машине внутри самого Proxmox Virtual Environment
(далее PVE), но это не самое лучшее решение для случаев, когда сам PVE
не запускается, и у меня это уже несколько раз происходило :). С
течением времени увидел, что проще восстановиться из резервной копии,
чем искать и исправлять ошибку внутри VM
или PVE. Таким образом, можно сделать вывод что сервер резервных копий
должен быть на отдельной машине и должен быть доступен 24/7.
Ключевые причины использования PBS:
- Максимальная экономия места: Глобальная дедупликация и инкрементальное резервное копирование кардинально сокращают объём хранилища.
- Быстрое копирование и восстановление: Отправляются только изменённые данные, что ускоряет работу и снижает нагрузку на сеть.
- Надёжная безопасность данных: Сквозное шифрование на стороне клиента и проверка целостности данных.
- Бесшовная работа с Proxmox VE: Глубокая интеграция для удобного управления резервными копиями и восстановлением прямо из интерфейса PVE.
- Гибкое восстановление: Можно восстановить как всю виртуальную машину, так и один файл.
- Простота управления: Единый веб-интерфейс для настройки, мониторинга и управления всеми задачами.
- Надёжная экосистема: Open-source решение с возможностью получения профессиональной поддержки.
В этой статье попытаюсь раскрыть свой опыт установки и использования PBS.
Оборудование
Коллеги с работы на день рождения подарили мне NanoPi R5C Rockchip RK3568B2 (далее Nano PI), и я решил что это устройство будет отвечать за серверную часть. Для дисков я использую док-станцию для дисков DEXP HAF134, которая была у меня уже в наличии. Также у меня были в наличии 8 TB HDD и 32 GB MicroSD карта. Итак:
- Nano PI использую как сервер.
- Док-станцию и 8 TB диск использую как устройства для хранения резервных копий.
- MicroSD карту использую для хранения системы.
Установка PBS и Proxmox Backup Client
Установка программы для записи образов (Arch linux):
yay etcher-bin
Сначала нам необходимо установить образ Debian (bookworm). Заходим на страницу NanoPi R5C,
ищем необходимый образ, качаем и записываем на MicroSD карту. На
страницу смог зайти только через прокси-сервер (TOR), так и не понял
причину. Провод от роутера вставляем в разъем LAN на Nano PI. Подключаем
провод питания, HDMI-кабель и видим загрузку нашей системы. После
загрузки Debian смотрим через роутер какие новые устройства появились,
таким образом, узнаем IP-адрес нового сервера. Сразу на роутере
«привязываем» MAC-адрес к IP-адресу, чтобы IP всегда был одинаковый для
сервера. Соединяюсь с сервером по ssh:
ssh root@<your IP>
Пароль по умолчанию fa. Тут следует оговориться, что официальной версии PBS под архитектуру ARM не существует, но добрые люди из open-source сообщества уже собрали для нас необходимые компоненты, воспользуемся их опытом.
# Обновляемся и устанавливаем необходимые пакеты
apt update && apt upgrade -y
apt install dpkg-dev curl zram-tools git jq -y
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -sSf | sh -s
source ~/.cargo/env
git clone https://github.com/wofferl/proxmox-backup-arm64.git
cd proxmox-backup-arm64
# Настройка zram
$ nano /etc/default/zramswap
# Установите:
# ALGO=lz4
# PERCENT=100
# Перезагружаем службу
systemctl restart zramswap
# Проверяем
cat /proc/swaps
# Сборка пакетов, если есть желание и возможность. Лучше скачать и установить с собранных пакетов
# ./build.sh
# Скачиваем собранные пакеты
curl -s https://api.github.com/repos/wofferl/proxmox-backup-arm64/releases/tags/3.4.8-1 | jq -r '.assets[] | .browser_download_url' | grep "\.deb$" > download_links.txt
# Скачиваем каждый файл из списка
while read -r url; do
curl -LO "$url"
done < download_links.txt
# Устанавливаем пакеты PBS
apt install -y \
./libjs-extjs_*_all.deb \
./libjs-qrcodejs_*_all.deb \
./libproxmox-acme-plugins_*_all.deb \
./pbs-i18n_*_all.deb \
./proxmox-backup-docs_*_all.deb \
./proxmox-backup-server_*_arm64.deb \
./proxmox-mini-journalreader_*_arm64.deb \
./proxmox-widget-toolkit_*_all.deb \
./proxmox-termproxy_*_arm64.deb \
./pve-xtermjs_*_all.deb
# Устанавливаем Proxmox Backup Client
apt install -y ./proxmox-backup-client_*_arm64.deb ./proxmox-backup-file-restore_*_arm64.deb
# Запускаем сервис
systemctl status proxmox-backup
После успешного запуска PBS он должен быть доступен по адресу https://<your IP>:8007. Заходим в UI PBS: Administration -> Repositories. Оформляем подписку на No-Subscription репозиторий и отключаем подписку наEnterprise.
# Качаем необходимый ключ для обновлений
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
# Обновлялемся
apt update && apt upgrade -y
# Меняем пароль по умолчанию
proxmox-backup-manager user update root@pam --password <ВашНовыйНадежныйПароль>
Установка neofetch:
$ apt install neofetch -y
$ neofetch
_,met$$$$$gg. root@NanoPi-R5C
,g$$$$$$$$$$$$$$$P. ---------------
,g$$P" """Y$$.". OS: Debian GNU/Linux 12 (bookworm) aarch64
,$$P' `$$$. Host: FriendlyElec NanoPi R5C
',$$P ,ggs. `$$b: Kernel: 6.1.118
`d$$' ,$P"' . $$$ Uptime: 1 hour, 45 mins
$$P d$' , $$P Packages: 709 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.2.15
$$; Y$b._ _,d$P' Terminal: /dev/pts/1
Y$$. `.`"Y$$$$P"' CPU: (4) @ 1.992GHz
`$$b "-.__ Memory: 275MiB / 3904MiB
`Y$$
`Y$$.
`$$b.
`Y$$b.
`"Y$b._
`"""
Для хранения резервных копий добавляем диск через «Datastore». Осталось настроить внутренние задачи:
- Datastore -> Наш Datastore -> Prune & GC Jobs -> Настраиваем задачи для сборки мусора и очистки нашего хранилища.Сборку мусора и очистку я настроил на периодичность каждые 2 часа.
Для очистки я лично сделал настройку, чтобы оставалось всегда только 3 последние резервные копии. - Datastore
-> Наш Datastore -> Verify Jobs. Это важная задача, так как мало
записать резервную копию, ее еще необходимо проверить на предмет наличия
ошибок.Проверку я настроил делать ежечасно. Рекомендую восстанавливаться только с проверенных резервных копий.
Создаем нового пользователя, от которого будут создаваться резервные копии:
- Configuration -> Access Control -> User Management -> Add. Создаем пользователя backup@pbs
- Выдаем ему права Admin на все наше хранилище через вкладку Permission.
Чтобы система нашего сервера также была в безопасности, настроим создание резервной копии для PBS:
# Создаем файлы и выдаем права
$ mkdir backup
$ touch {.fingerprint,.pbs_pass,backup.sh}
$ chmod +x ./backup/backup.sh
# Заполняем файлы
$ proxmox-backup-manager cert info | grep Fingerprint > .fingerprint
echo '<ПарольДляbackup@pbs>' > .pbs_pass
# Заполняем файл скрипта для создания резервных копий
$ nano backup.sh
export PBS_REPOSITORY="backup@pbs@<IP PBS>:<Datastore>"
export PBS_PASSWORD=$(cat /home/volokzhanin/backup/.pbs_pass)
export PBS_FINGERPRINT=$(cat /home/volokzhanin/backup/.fingerprint)
echo $PBS_PASSWORD | proxmox-backup-client backup root.pxar:/ \
--repository "$PBS_REPOSITORY" \
--include-dev /home
# Создаем запуск по расписанию нашего скрипта
$ crontab -e
@daily /root/backup/backup.sh
PVE
В PVE добавляем PBS:
- Datacenter -> Add -> Proxmox Backup Server -> Заполняем все необходимые поля.
- Datacenter -> Backup -> Add -> Заполняем поля.
Теперь все резервные копии будут создаваться автоматически.
Чтобы восстановиться:
- VM -> Backup -> Выбираем необходимую резервную копию.
- Restore. Примечание: в этот момент все данные в VM будут удалены и заменены на резервную копию.
Чтобы для PVE сделать резервную копию или автоматизировать этот процесс см. выше (PBS).
Хост
Ubuntu:
# Импорт GPG-ключа репозитория
sudo wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
# Создание файла репозитория
echo "deb [arch=amd64] http://download.proxmox.com/debian/pbs-client bookworm main" | sudo tee /etc/apt/sources.list.d/pbs-client.list
# Установка клиента
sudo apt update && sudo apt install -y proxmox-backup-client
Чтобы для хоста сделать резервную копию или автоматизировать этот процесс см. выше (PBS).
# Получаем список резервных копий
echo $PBS_PASSWORD | proxmox-backup-client snapshot list
# Просмотр содержимого резервной копии
echo $PBS_PASSWORD | proxmox-backup-client catalog dump host/your_backup
# Восстановление в тестовую директорию, далее можно восстанавливать отдельные файлы или директории
echo $PBS_PASSWORD | proxmox-backup-client restore "host/your_backup" root.ppxar /tmp/restore_test/
У хостов в PVE есть
возможность просмотра структуры папок и скачивания выбранных объектов.
Очень часто только этого достаточно для решения возникших вопросов.
В PVE и PBS рекомендую настроить раздел Notification, чтобы в случае проблем сервер сам отправлял сообщения через настроенный канал связи.
Мониторинг работы PBS
На PBS устанавливаем Glances :
sudo apt install glances
# Создаем пользователя и пароль:
glances -w --username
Создаем службу:
$ touch /etc/systemd/system/glances.service
$ nano /etc/systemd/system/glances.service
[Unit]
Description=Glances
After=network.target
[Service]
ExecStart=/usr/bin/glances -w -B 0.0.0.0
Restart=on-abort
RestartSec=10
[Install]
WantedBy=multi-user.target
Активируем службу:
sudo systemctl daemon-reload
sudo systemctl enable glances.service
sudo systemctl start glances.service
Проверка:
systemctl status glances.service
В умном доме добавляем интеграцию Glances. Теперь у нас есть необходимые объекты для мониторинга через стандартные механизмы умного дома.
Итог
Теперь все машины у нас имеют резервные копии, и мы можем контролировать работу этих сервисов.
*.wikipedia.org - РКН: иностранный владелец ресурса нарушает закон РФ.
Ссылки:
- Зачем нужен собственный сервер в 2025?
- Как установить Proxmox?
- Как запустить сервис по управлению умным домом?