Docs/docs/11-backup.md
2026-04-11 18:39:41 +05:00

15 KiB
Raw Blame History

11. Резервное копирование

Обзор

Резервное копирование критически важно для защиты данных и возможности восстановления после сбоев, ошибок или атак.

Текущий статус (апрель 2026): Настроена полнофункциональная система резервного копирования на базе Proxmox Backup Server

  • Отдельный физический сервер PBS (192.168.1.199)
  • Хранилище 1 TB с дедупликацией и компрессией
  • Автоматические бэкапы всех критичных систем
  • Протестированное восстановление

Текущее состояние

Настроено и работает

Компонент Статус Описание
Proxmox Backup Server Отдельный сервер (Olimpbs, 192.168.1.199)
Хранилище 1 TB (LVM), datastore olimpbkp
Бэкапы ВМ/LXC Автоматические, по расписанию
Дедупликация Встроена в PBS
Компрессия ZSTD (fast and good)
Расписание 2 раза в день (02:30 и 22:30)
Retention 14 последних, 7 ежедневных, 4 недельных, 4 месячных
Режим Snapshot (без остановки сервисов)

📊 Архитектура

&&&mermaid graph TD A[Proxmox VE Host
Olimp 192.168.1.220] --> B[LXC Containers
201-211] A --> C[Virtual Machines
205, 213] A -->|Network| D[Proxmox Backup Server
Olimpbs 192.168.1.199] D --> E[Datastore: olimpbkp
1 TB LVM] E --> F[/var/lib/proxmox-backup/olimpbkp] &&&


Что бэкапится

LXC Контейнеры (10 шт.)

ID Имя Тип данных Примерный размер
201 gateway Конфигурации, прокси ~5 GB
202 data Базы данных (BookStack, Mealie) ~10 GB
203 media Конфигурации Jellyfin, метаданные ~60 GB*
204 photo Immich конфиги ~20 GB
206 talk Matrix, XMPP конфиги ~10 GB
207 games Конфигурации игровых серверов ~20 GB
208 manage Grafana, Loki, мониторинг ~15 GB
209 git GitLab репозитории ~30 GB
210 ansible Ansible конфиги, vault ~5 GB
211 torrent qBittorrent настройки ~5 GB

*Без медиафайлов (исключены из бэкапа)

Виртуальные машины (2 шт.)

ID Имя Тип данных Примерный размер
205 Nextcloud Файлы, БД PostgreSQL ~10 GB
213 VPN OpenVPN/WireGuard конфиги ~12 GB

Исключено из бэкапа

  • Большие диски (16 TB RAID6): медиафайлы, игры, загрузки
  • Причина: занимают слишком много места, можно восстановить из источников
  • Что включено: только конфигурации и метаданные (через backup=1)

Расписание бэкапов

Автоматическое расписание

Два раза в день:

  • 02:30 — ночной бэкап
  • 22:30 — вечерний бэкап

Proxmox Backup Server автоматически определяет:

  • Первый бэкап — полный
  • Последующие — инкрементальные (только изменения)
  • Периодически — полный для целостности данных

Retention политика

Тип хранения Количество Фактический срок
Keep Last 14 Минимум 14 последних бэкапов
Keep Daily 7 7 ежедневных копий
Keep Weekly 4 4 недельных копии
Keep Monthly 4 4 месячных копии

Итого: ~1-2 месяца истории бэкапов


Текущая конфигурация

На Proxmox VE (Olimp)

Хранилище подключено:

  • ID: olimpbkp
  • Тип: Proxmox Backup Server
  • Server: 192.168.1.199:8007
  • Datastore: olimpbkp
  • Content: Backup
  • Status: Enabled

Backup Job: &&& Node: Olimp Storage: olimpbkp Schedule: 02:30, 22:30 (daily) Mode: Snapshot Compression: ZSTD VM/CT: 201-211, 205, 213 Retention: keep-last=14, keep-daily=7, keep-weekly=4, keep-monthly=4 &&&

На PBS (Olimpbs)

Datastore: &&& Name: olimpbkp Path: /var/lib/proxmox-backup/olimpbkp Size: 1 TB (912 GB available) GC Schedule: daily Prune Schedule: daily &&&

Пользователи:

  • root@pam — администратор (веб-интерфейс)
  • pve@pbs — для Proxmox VE (API токен)

Управление бэкапами

Просмотр бэкапов

Через веб-интерфейс PBS: &&& https://192.168.1.199:8007 → Datastore → olimpbkp → Content &&&

Через Proxmox VE: &&& https://192.168.1.220:8006 → Datacenter → Storage → olimpbkp → Content &&&

Через CLI: &&&bash

Список бэкапов

proxmox-backup-client list --repository root@pam@192.168.1.199:8007:olimpbkp

Детальная информация

proxmox-backup-client show-backup --repository root@pam@192.168.1.199:8007:olimpbkp ct/201

Статистика datastore

proxmox-backup-client datastore stats olimpbkp &&&

Ручной запуск бэкапа

Один контейнер/ВМ: &&&bash vzdump 201 --storage olimpbkp --mode snapshot --compress zstd &&&

Все бэкапируемые системы: &&&bash for id in 201 202 203 204 205 206 207 208 209 210 211 213; do vzdump $id --storage olimpbkp --mode snapshot --compress zstd & done wait &&&

Восстановление из бэкапа

Через веб-интерфейс Proxmox VE:

  1. Datacenter → Storage → olimpbkp → Content
  2. Выбрать бэкап → Restore
  3. Указать:
    • Storage: целевое хранилище (local-lvm, vmsystem)
    • VMID: новый ID (или существующий для перезаписи)
  4. Start

Через CLI: &&&bash

LXC контейнер

pct restore 216 olimpbkp:backup/ct/201/2026-04-11T13:19:03Z --storage local-lvm

Виртуальная машина

qm restore 216 olimpbkp:backup/vm/205/2026-04-11T13:19:03Z --storage vmsystem &&&

Восстановление отдельных файлов

Через File Restore:

  1. PBS веб-интерфейс → Datastore → Content
  2. Выбрать бэкап → File Restore
  3. Смонтировать бэкап
  4. Скачать нужные файлы
  5. Unmount

Через CLI: &&&bash

Смонтировать бэкап

mkdir -p /mnt/restore proxmox-backup-client mount ct/201/2026-04-11T13:19:03Z /mnt/restore
--repository root@pam@192.168.1.199:8007:olimpbkp

Скопировать файлы

cp /mnt/restore/root.pxar/etc/config/file.conf /tmp/

Размонтировать

proxmox-backup-client unmount /mnt/restore &&&


Мониторинг и обслуживание

Проверка статуса бэкапов

Ежедневная проверка: &&&bash

Последние задачи

pvesm status olimpbkp

Логи бэкапов

tail -f /var/log/pve/tasks/*

Проверка места на PBS

ssh root@192.168.1.199 "df -h /var/lib/proxmox-backup/olimpbkp" &&&

Garbage Collection (очистка)

PBS автоматически запускает GC ежедневно. Вручную:

&&&bash

На PBS сервере

proxmox-backup-manager garbage-collection start olimpbkp

Проверка статуса

proxmox-backup-manager garbage-collection status olimpbkp &&&

Prune (удаление старых бэкапов)

Автоматически по retention политике. Вручную:

&&&bash proxmox-backup-manager prune-job run &&&

Проверка целостности (Verify)

&&&bash

Проверить все бэкапы

proxmox-backup-manager verify olimpbkp

Проверить конкретный бэкап

proxmox-backup-client verify ct/201/2026-04-11T13:19:03Z
--repository root@pam@192.168.1.199:8007:olimpbkp &&&


Миграция со старого PBS

История

Март 2026: PBS был развёрнут в LXC контейнере (CT 220) на том же хосте Olimp

  • Хранилище: ZFS dataset rpool/pbs-backups (187 GB)
  • Datastore: ssd-backups

Апрель 2026: Развёрнут отдельный физический сервер PBS (Olimpbs)

  • Хранилище: 1 TB LVM
  • Datastore: olimpbkp

Перенос старых бэкапов (опционально)

&&&bash

На новом PBS

mkdir -p /mnt/old-pbs sshfs root@192.168.1.220:/rpool/pbs-backups /mnt/old-pbs

Копирование

rsync -avh /mnt/old-pbs/data/ /var/lib/proxmox-backup/olimpbkp/

Исправление прав

chown -R backup:backup /var/lib/proxmox-backup/olimpbkp

Перезапуск

systemctl restart proxmox-backup-proxy &&&

Удаление старого PBS

После подтверждения что новые бэкапы работают:

&&&bash

На Proxmox VE (Olimp)

pvesm remove pbs-ssd

Удалить dataset

zfs destroy rpool/pbs-backups

Удалить LXC контейнер (опционально)

pct stop 220 pct destroy 220 &&&


Безопасность

Аутентификация

  • PBS пользователи: root@pam, pve@pbs
  • API токены: для автоматизации (без паролей)
  • Fingerprint: SHA-256 отпечаток сертификата

Сетевая безопасность

  • Порт: 8007 (TCP)
  • Шифрование: TLS 1.3
  • Доступ: только из локальной сети (192.168.1.0/24)

Рекомендации

  • Включить 2FA для root@pam
  • Создать отдельного пользователя для бэкапов (не root)
  • Настроить firewall на PBS сервере
  • Регулярно обновлять систему (unattended-upgrades)

Планы на будущее

🔵 Краткосрочные (1-2 месяца)

  • Настроить уведомления (email/telegram) о статусе бэкапов
  • Включить 2FA для доступа к PBS
  • Настроить репликацию в облако (Backblaze B2 / Wasabi)
  • Провести тестовое восстановление всех критичных ВМ

🔵 Долгосрочные (3-6 месяцев)

  • Добавить второй PBS для репликации
  • Настроить оффсайт-копии (внешний диск + облако)
  • Внедрить шифрование бэкапов на стороне клиента
  • Автоматизировать тестирование восстановления

Troubleshooting

Бэкап не запускается

&&&bash

Проверить хранилище

pvesm status | grep olimpbkp

Проверить подключение к PBS

ping 192.168.1.199 nc -zv 192.168.1.199 8007

Переподключить хранилище

pvesm remove olimpbkp pvesm add proxmox-backup olimpbkp
--server 192.168.1.199
--datastore olimpbkp
--username pve@pbs &&&

Закончилось место на PBS

&&&bash

Проверить занятое место

proxmox-backup-client datastore stats olimpbkp

Запустить GC

proxmox-backup-manager garbage-collection start olimpbkp

Удалить старые бэкапы вручную

proxmox-backup-client prune
--repository root@pam@192.168.1.199:8007:olimpbkp
--max-daily 7 --max-weekly 2 &&&

Ошибка аутентификации

&&&bash

Сгенерировать новый токен

proxmox-backup-manager user generate-token pve@pbs backup-token

Обновить в Proxmox VE

pvesm update olimpbkp --password <новый_токен> &&&


Полезные команды

На Proxmox VE

&&&bash

Список хранилищ

pvesm list

Статус бэкап хранилища

pvesm status olimpbkp

Запустить бэкап

vzdump --storage olimpbkp --mode snapshot

Восстановить

pct restore olimpbkp:backup/ct// qm restore olimpbkp:backup/vm// &&&

На PBS

&&&bash

Список datastore

proxmox-backup-manager datastore list

Статистика

proxmox-backup-client datastore stats olimpbkp

Список бэкапов

proxmox-backup-client list --repository root@pam@192.168.1.199:8007:olimpbkp

Информация о бэкапе

proxmox-backup-client show-backup ct/201 --repository root@pam@192.168.1.199:8007:olimpbkp

Проверка целостности

proxmox-backup-manager verify olimpbkp

Garbage collection

proxmox-backup-manager garbage-collection start olimpbkp &&&


Метрики и отчётность

Ежедневная проверка

&&&bash

Размер бэкапов за сегодня

du -sh /var/lib/proxmox-backup/olimpbkp/data/*

Количество бэкапов

proxmox-backup-client list --repository root@pam@192.168.1.199:8007:olimpbkp | wc -l

Свободное место

df -h /var/lib/proxmox-backup/olimpbkp &&&

Еженедельный отчёт

&&&bash

Дедупликация

proxmox-backup-client datastore stats olimpbkp | grep "Deduplication"

Прирост за неделю

Сравнить размер datastore с прошлой неделей

&&&


Связанные разделы: