如何备份和还原LXD容器
时间:2019-11-20 08:53:40 来源:igfitidea点击:
在Ubuntu/Debian或Fedora/CentOS Linux中如何备份和还原LXD容器?
步骤1收集有关LXD的信息
使用lxd命令备份LXD服务器配置信息:
包括实例
,镜像
,网络
,存储
,系统profile
等。
查看所有实例,运行:
# lxc list
查看有关当前网络,存储池和配置文件的信息:
# lxd init --dump
将这些信息保存到/backups/lxd/目录中:
# mkdir -pv /backups/lxd/ # lxd init --dump >/backups/lxd/lxd.config.$(date +'%m-%d-%Y') # ls -l /backups/lxd/lxd.config.$(date +'%m-%d-%Y')
因为存储卷使用了ZFS文件系统,所以使用下面命令查看:
# zpool list # zfs list
lxd所有数据都位于/var/snap/lxd/common/lxd /目录中:
# ls -l /var/snap/lxd/common/lxd/
所以这个目录也需要备份。
对/var/snap/lxd/common/lxd/目录进行全备
全备即完整备份。
我们可以使用rsync命令:
# rsync --sparse -avrP \ /var/snap/lxd/common/lxd /backups/lxd/lxd-full-backup/
或者备份到远程服务器:
# rsync --sparse -avrP \ /var/snap/lxd/common/lxd user@server-ip:/backups/lxd/lxd-full-backup/
使用快照备份所有正在运行的实例
使用下面语法将实例导出,压缩成tar包:
lxc export {container} /path/to/{container}-backup-$(date +'%m-%d-%Y').tar.xz ## 如果是zfs或者btrfs文件系统,使用 --optimized-storage可以节省磁盘空间 lxc export {container} /path/to/{container}-backup-$(date +'%m-%d-%Y').tar.xz --optimized-storage
示例: 备份LXD容器nginx-www:
# lxc export nginx-www \ /backups/lxd/nginx-www-backup-$(date +'%m-%d-%Y').tar.xz \ --optimized-storage
输出示例:
Backup exported successfully!
备份所有实例脚本:
#!/bin/bash NOW=$(date +'%m-%d-%Y') ## 导出LXD容器配置 lxd init --dump > "/backups/lxd/lxd.config.${NOW}" ## 导出所有容器实例 lxc list > "/backups/lxd/lxd.instances.list.${NOW}" ## 备份所有容器版本信息 snap list lxd > "/backups/lxd/lxd-version.${NOW}" ## 备份所有实例 for i in $(lxc list -c n --format csv) do echo "Making backup of ${i} ..." lxc export "${i}" "/backups/lxd/${i}-backup-$(date +'%m-%d-%Y').tar.xz" --optimized-storage done
还原lxd实例
为了演示,我们先删除现有的lxd服务器和所有数据。
# lxc list # snap remove lxd --purge # snap list ## get rid of data stored in zfs too ## # zpool destroy lxdzfs # zfs list
恢复LXD容器命令
首先安装lxd:
## 查看LXD的版本 # cat /backups/lxd/lxd-version.05-26-2020 ## 安装LXD # snap install lxd --channel 4.0/stable ## 恢复lxd容器的配置 # cat /backups/lxd/lxd.config.05-26-2020 | lxd init --preseed # lxc list ## 恢复容器实例 # ls -l /backups/lxd/*backup*xz # lxc import /backups/lxd/nginx-www-backup-05-26-2020.tar.xz # lxc list # lxc start nginx-www
使用lxc copy命令备份LXD容器
另一种备份LXD容器的方法是将所有容器复制到另一台LXD服务器。
假设server2是我们的备用LXD服务器:
## on $BACKUP_SERVER (server2) ## BACKUP_SERVER=192.168.100.100 lxc config set core.https_address ${BACKUP_SERVER}:8443 lxc config set core.trust_password Same_super_PASSWORD_here
在server1上执行:
BACKUP_SERVER=192.168.100.100 lxc remote add server2 BACKUP_SERVER lxc remote list ## backup www-nginx to server2 using snapshots ## lxc snapshot www-nginx lxc info www-nginx lxc copy www-nginx/snap0 server2:www-nginx-backup --verbose ## Restore www-nginx from server2 ## lxc copy server2:www-nginx-backup www-nginx