
홈 서버를 처음부터 다시 구성하려고 하는데 LXD 컨테이너를 백업하는 가장 좋은 전략이 무엇인지 궁금합니다. 한편 저는 Ubuntu 20.04 LTS를 실행 중이며 일부 서비스를 LXD/LXC 컨테이너로 실행하도록 구성했습니다. 예를 들어:
- Seafile을 실행하는 컨테이너 "cloudserv"
- nginx 및 MariaDB를 실행하는 컨테이너 "webservice"
이 두 컨테이너는 btrfs 파일 시스템이 있는 SSD에 있습니다. 데이터 저장을 위해 저는 디스크 배열(BTRFS도 포함)을 사용하고 있습니다. 여기서는 모든 데이터를 보관하기 위해 Seafile 컨테이너에 연결된 저장 볼륨이 있는 또 다른 LXC 저장소 풀을 생성했습니다. 레이아웃은 다음과 같습니다.
SSD
- BTRFS 파일 시스템
- 스토리지 풀 "기본값"
- 컨테이너 "cloudserv"
- 컨테이너 "웹 서비스"
- 이미지
- 스토리지 풀 "기본값"
HDD
- BTRFS 파일 시스템
- 스토리지 풀 "DataPool1"
- 사용자 정의 저장 볼륨 "seafile-data" --> "cloudserv" 컨테이너에 연결됨
- 스토리지 풀 "DataPool1"
BTRFS를 사용함으로써 BTRFS 스냅샷을 활용하고 컨테이너와 스토리지 볼륨을 BTRFS 볼륨이 연결된 RasPi와 같은 하위 볼륨으로 쉽게 전송할 수 있는 도구를 보내고 받을 수 있기를 바랐습니다. 하지만 예를 들어 읽기LXD 매뉴얼또는LXD 컨테이너를 백업하고 복원하는 방법나는 전송될 수 있는 인스턴스를 백업하기 위해 항상 tarball을 생성해야 한다는 인상을 받았습니다. 이는 하위 볼륨/스냅샷을 보내고 받을 수 있고 LXC 인스턴스 및 데이터의 증분 백업을 수행하는 것과 같은 BTRFS의 매력적인 기능 중 일부가 실제로 손실되었음을 의미합니다.
내가 놓친 게 있나요? BTRFS를 사용하는 LXD/LXC의 적절한 백업 워크플로에 대한 힌트를 줄 수 있는 사람이 있습니까?
답변1
원격 서버에 LXD를 설치하고 두 서버 모두 Btrfs를 사용하는 경우최적화된 인스턴스 전송이와 같이:
lxc remote add mybtrfsremotebackupserver XXX
lxc snapshot mycontainer snap1
lxc copy mycontainer mybtrfsremotebackupserver: --verbose
btrf-send
그리고 컨테이너와 모든 스냅샷의 초기 전송에 사용됩니다 .
그러면 컨테이너를 유지 관리하는 매우 편리한 방법이 있으며 옵션을 사용하여 증분 변경 사항만 보내는 스냅샷입니다.--refresh
(LXD3.7)
lxc copy --refresh mycontainer mybtrfsremotebackupserver: --verbose
그러나 불행히도 적어도 LXD 4.0에서는 를 사용하므로 최적화 rsync
가 손실됩니다 btrfs-send
.
자세한 내용은 이 문제를 확인하세요.기능 요청: 복사를 위한 --snapshots-only 플래그
또한,"사용자 정의 볼륨 사본에 대한 지원 새로 고침"하지만 그것이 최적화된 경로를 사용하는지 아니면 귀하의 목표에 유용할 수 있는지는 확실하지 않습니다. lxc 내보내기에서 --optimized-storage를 확인할 수도 있습니다.
문안 인사