Какая стратегия резервного копирования является подходящей для LXD с бэкэндами хранения BTRFS?

Какая стратегия резервного копирования является подходящей для LXD с бэкэндами хранения BTRFS?

Я собираюсь перенастроить свой домашний сервер с нуля и размышляю, какая стратегия будет лучшей для резервного копирования моих контейнеров LXD. Между тем, я использую Ubuntu 20.04 LTS и некоторые службы настроены для работы в качестве контейнеров LXD/LXC. Например:

  • контейнер "cloudserv" с запущенным seafile
  • контейнер «вебсервис» с запущенными nginx и MariaDB

Эти два контейнера находятся на моем SSD с файловой системой btrfs. Для хранения данных я использую массив дисков (также с BTRFS), где я создал еще один пул хранения LXC с томом хранения, который присоединен к контейнеру seafile для хранения всех данных. Схема примерно такая:

SSD

  • BTRFS Филсистема
    • Пул хранения «По умолчанию»
      • контейнер "cloudserv"
      • контейнер "вебсервис"
      • изображений

HDD-диски

  • Файловая система BTRFS
    • Пул хранения «DataPool1»
      • пользовательский том хранилища "seafile-data" --> присоединен к контейнеру "cloudserv"

Используя BTRFS, я надеялся, что смогу использовать снимки BTRFS и отправлять и получать инструменты для легкой передачи контейнеров и томов хранения как подтомов, например, на RasPi с присоединенным томом BTRFS. Но чтение, например,Руководство пользователя LXDилиКак сделать резервную копию и восстановить контейнеры LXDУ меня такое впечатление, что мне всегда приходится создавать tarball для резервного копирования экземпляра, который затем можно перенести. Это означало бы, что я фактически теряю некоторые привлекательные функции BTRFS, такие как возможность отправлять/получать подтома/снимки и делать инкрементальные резервные копии моих экземпляров LXC и данных.

Я что-то упустил? Может кто-нибудь дать подсказки по правильному процессу резервного копирования для LXD/LXC с BTRFS?

решение1

Если вы устанавливаете LXD на удаленном сервере и оба сервера используют Btrfs, вы можете использоватьОптимизированная передача экземпляратак:

lxc remote add mybtrfsremotebackupserver XXX
lxc snapshot mycontainer snap1
lxc copy mycontainer mybtrfsremotebackupserver: --verbose

И он будет использоваться btrf-sendдля первоначальной передачи контейнера и всех его снимков.

Тогда у вас есть очень удобный способ обслуживания контейнера и его снимков, отправляющих только инкрементные изменения, используя опцию--refresh(ДХД 3,7)

lxc copy --refresh mycontainer mybtrfsremotebackupserver: --verbose

Но, к сожалению, он использует rsync, по крайней мере в LXD 4.0, поэтому вы потеряете оптимизацию btrfs-send.

Для получения более подробной информации проверьте этот выпуск:Запрос функции: флаг --snapshots-only для копирования

Также есть«Обновить поддержку пользовательских копий томов»но я не уверен, использует ли он оптимизированный путь или он может быть полезен для вашей цели. Вы также можете проверить --optimized-storage в экспорте lxc

С уважением

Связанный контент