Ubuntu 如何备份/移动LXC容器?
我想备份lxc容器。我们的服务器带有Ubuntu 如何备份/移动LXC容器?,ubuntu,backup,lxc,Ubuntu,Backup,Lxc,我想备份lxc容器。我们的服务器带有12.04 LTS ubuntu服务器,我在其中安装了LXC-1.0.0.alpha2。我想把我们的ubuntu服务器升级到14.04 LTS。所以我想做的是备份LXC容器->将操作系统升级到14.04->恢复LXC容器。在早期版本(我猜是0.7.5)中,有lxc备份和lxc恢复,但在1.0.0.alpha2中,我们没有备份和恢复操作。如何让lxc容器备份。我花了3个多小时将容器文件夹(/var/lib/lxc/my_container/)复制到pendriv
12.04 LTS ubuntu服务器
,我在其中安装了LXC-1.0.0.alpha2
。我想把我们的ubuntu服务器升级到14.04 LTS。所以我想做的是备份LXC容器->将操作系统升级到14.04->恢复LXC容器。在早期版本(我猜是0.7.5)中,有lxc备份和lxc恢复,但在1.0.0.alpha2中,我们没有备份和恢复操作。如何让lxc容器备份。我花了3个多小时将容器文件夹(/var/lib/lxc/my_container/)复制到pendrive中,并将其粘贴到另一个12.04 LTS服务器中,但它不起作用。我得到的错误是
#sudo lxc-start -n my_container
lxc-start: invalid sequence number 1, expected 4.
lxc-start: failed to spwan "my_container"
那么,我怎么能期望它在升级的14.04服务器操作系统中工作呢
有没有关于lxc容器备份的想法?编辑:2017年11月
要将lxc
容器快速备份到没有btrfs
文件系统的remote
主机上,我需要将带有sshfs
和cd
的remote
主机上的文件系统装载到装载中。停止容器并创建它的tar.xz
存档
编辑:2016年3月 现在,我在
btrfs
文件系统上运行我的lxc
容器,以便对运行中的容器进行快照
btrfs子快照
检测到proc run sys
是虚拟文件系统&不包括在快照中
我用来备份LXC容器。与备份普通计算机不同,您需要在备份中包含LXC容器中的
/dev
apt-get install duply
duply mybackup create
在~/.duply/mybackup/exclude
中,我使用了:
- /cdrom
- /dev
- /lost+found
- /media
- /mnt
- /proc
- /run
- /sys
- /tmp
- /var/backup/restore/*
- /var/backup/tmp/*
- /var/lib/lxc/*/rootfs/lost+found
- /var/lib/lxc/*/rootfs/media/*
- /var/lib/lxc/*/rootfs/mnt/*
- /var/lib/lxc/*/rootfs/proc/*
- /var/lib/lxc/*/rootfs/run/*
- /var/lib/lxc/*/rootfs/sys/*
- /var/lib/lxc/*/rootfs/tmp/*
- /var/lib/lxcfs/*
以上内容将备份整个机器和所有LXC容器
要仅备份容器,请编辑~/.duply/mybackup/conf
&将SOURCE='/'
更改为SOURCE='/var/lib/lxc'
&从~/.duply/mybackup/exclude>中删除非lxc行
通过running测试-也可以在Debian上使用
-您还可以对本地文件执行非常简单的未加密备份(在~/.duply/mybackup/conf
中设置TARGET='file://[relative |/absolute]/local/path'
)
要对备份进行签名,请参阅(无密码签名密钥,而不是以明文形式存储密码)
为cron作业在Duplyconf
文件中设置GPG\u TEST='disabled'
如果您在conf
donot中存储任何明文密码,请在还原时禁用GPG\u测试
,以便缓存您的密码。我发现备份容器的最简单方法就是运行lxc clone
lxc-clone -o NAMEOFCONTAINER -n NAMEOFCONTAINER -P BACKUPDIR
恢复它就像将备份复制或移回/var/lib/lxc一样简单
您还可以对其加焦油以节省空间。编辑:2016年3月29日
如果你无意中发现了这篇文章,我的答案实际上是关于在系统之间移动LXC容器,因为这似乎是要问的问题
如果您想备份您的LXC容器,请参阅@Stuart的答案以获得一些很好的选项
在主机系统之间移动LXC容器
这就是我在系统之间迁移LXC容器的方式。我已经成功地将基于ubuntu的12.04容器迁移到14.04主机上,它们工作得很好
- 关闭容器
# lxc-stop -n $NAME
# rsync -avh container_fs.tar.gz user@newserver:/var/lib/lxc/
- 存档容器rootfs&config
# cd /var/lib/lxc/$NAME/
# tar --numeric-owner -czvf container_fs.tar.gz ./*
数字所有者标志非常重要!如果没有它,容器可能无法启动,因为uid/GID在提取的文件系统中被损坏。
tar创建存档时,会保留用户/组所有权信息。默认情况下,提取时,tar尝试使用运行tar的系统上的id解析存档用户/组所有权名称。这是为了确保在新系统上解决用户所有权问题,以防系统之间的UID数值不同
这对于LXC文件系统是不好的,因为数字uid/gid所有权是为整个文件系统保留的。如果它被解析为不同的值,坏事情就会发生
- 将文件复制到新服务器上
# lxc-stop -n $NAME
# rsync -avh container_fs.tar.gz user@newserver:/var/lib/lxc/
- 提取rootfs
# mkdir /var/lib/lxc/$NAME/
# cd /var/lib/lxc/$NAME/
# tar --numeric-owner -xzvf container_fs.tar.gz .
如果您使用的是覆盖备份的容器,那么还需要迁移这个新容器所基于的容器。最后,您可能会看到一些关于跳过的套接字文件的警告:
tar:/var/lib/lxc/$NAME/rootfs/dev/log:socket被忽略
我忽略了这个错误,并且我管理的任何容器都没有任何问题。如果您还有其他问题,请将您的错误消息添加到原始帖子中,我将详细说明。我同意Brad Jasperson的观点。我是这样做的:
lxc-clone -KMP /path/to/backup name name
如果您的容器出现问题,并且宕机成本很高,您可以运行拷贝:
lxc-start -n name -P /path/to/backup
并停止:
lxc-stop -n name -P /path/to/backup
您可以稍后在适当的时间将其复制回原位。祝你好运 如果对它进行tar,并在系统之间移动它,则在提取它时可能无法工作,除非使用--numeric owner标志,我只想补充一点,您需要将rootfs(tar-xzvf)提取为root(或者至少使用sudo)在我的系统上,容器存储在:cd/var/lib/lxd/containers/$NAME/
是的,lxd将它存储在这里。这个过程主要适用于LXC,但它应该对LXD进行一些小的调整。使用LXD,您实际上可以使用lxc copy
或lxc publish
来备份您的集装箱。这个答案应该针对现代LXD进行更新,在现代LXD中,lxc move
命令可用答案应该包括在提取tar mv container_fs.tar.gz$NAME之前先将容器移动到lxc/$NAME。或者,您可以使用前端到duply,duplicity
来执行很多操作。我有一个pre
和