
Я собираюсь перенастроить свой домашний сервер с нуля и размышляю, какая стратегия будет лучшей для резервного копирования моих контейнеров 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"
- Пул хранения «DataPool1»
Используя 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
С уважением