PRF&PUB:Part 9 - LXD 2.0--Live migration.md

@geekpi 胜利在望~
This commit is contained in:
wxy 2017-03-04 10:18:58 +08:00
parent bf5da1a9dc
commit 094081ad3d

View File

@ -7,26 +7,26 @@ LXD 2.0 系列(九):实时迁移
### 介绍
LXD 2.0中的有一个尽管是实验性质的但非常令人兴奋的功能,那就是支持容器检查点和恢复。
LXD 2.0 中的有一个尽管是实验性质的但非常令人兴奋的功能,那就是支持容器检查点和恢复。
简单地说,检查点/恢复意味着正在运行的容器状态可以被序列化到磁盘,然后在与容器状态快照相同的主机上或者在等同于实时迁移的另一主机上恢复
简单地说,检查点/恢复意味着正在运行的容器状态可以被序列化到磁盘,要么可以作为同一主机上的有状态快照,要么放到另一主机上相当于实时迁移
### 要求
访问容器实时迁移和有状态快照,你需要以下条件:
使用容器实时迁移和有状态快照,你需要以下条件:
- 一个最近的Linux内核4.4或更高版本。
- CRIU 2.0,可能有一些cherry-pick的提交,具体取决于你确切的内核配置。
- 直接在主机上运行LXD。 不能在容器嵌套下使用这些功能。
- 对于迁移,目标机必须至少实现源的指令集,目标内核必须至少提供与源相同的系统调用,并且在源上挂载的任何内核文件系统也必须可挂载到目标主机上。
- 一个非常新的 Linux 内核4.4 或更高版本。
- CRIU 2.0,可能需要一些 cherry-pick 的提交,具体取决于你确切的内核配置。
- 直接在主机上运行 LXD。 不能在容器嵌套下使用这些功能。
- 对于迁移,目标机必须至少实现源主机的指令集,目标主机内核必须至少提供与源主机相同的系统调用,并且在源主机上挂载的任何内核文件系统也必须可挂载到目标主机上。
Ubuntu 16.04 LTS已经提供了所有需要的依赖在这种情况下您只需要安装CRIU本身
Ubuntu 16.04 LTS 已经提供了所有需要的依赖,在这种情况下,您只需要安装 CRIU 本身:
```
apt install criu
```
### 使用CRIU
### 使用 CRIU
#### 有状态快照
@ -46,7 +46,7 @@ stgraber@dakara:~$ lxc info c1 | grep second
second (taken at 2016/04/25 19:36 UTC) (stateful)
```
这意味着所有容器运行时状态都被序列化到磁盘并且作为了快照的一部分。像你还原无状态快照那样还原一个有状态快照:
这意味着所有容器运行时状态都被序列化到磁盘并且作为了快照的一部分。可以像你还原无状态快照那样还原一个有状态快照:
```
stgraber@dakara:~$ lxc restore c1 second
@ -55,7 +55,7 @@ stgraber@dakara:~$
#### 有状态快照的停止/启动
比方说你想要升级内核或者其他类似的维护。与其等待所有的容器启动,你可以:
比方说你由于升级内核或者其他类似的维护而需要重启机器。与其等待重启后启动所有的容器,你可以:
```
stgraber@dakara:~$ lxc stop c1 --stateful
@ -266,38 +266,37 @@ stgraber@dakara:~$ lxc list s-tollana:
### 限制
正如我之前说的,容器的检查点/恢复还是非常新的功能,我们还在努力地开发这个功能、修复问题已知问题。我们确实需要更多的人来尝试这个功能,并给我们反馈,但我不建议在生产中使用这个功能。
正如我之前说的,容器的检查点/恢复还是非常新的功能,我们还在努力地开发这个功能、修复已知问题。我们确实需要更多的人来尝试这个功能,并给我们反馈,但我不建议在生产中使用这个功能。
我们跟踪的问题列表在[Launchpad上][1]。
我们跟踪的问题列表在 [Launchpad上][1]。
我们期望在Ubuntu 16.04上有一个基本的带有几个服务的Ubuntu容器能够与CRIU一起工作。然而在更复杂的容器、使用设备传递、复杂的网络服务或特殊的存储配置可能会失败。
我们估计在带有 CRIU 的 Ubuntu 16.04 上带有几个服务的基本的 Ubuntu 容器能够正常工作。然而在更复杂的容器、使用了设备直通、复杂的网络服务或特殊的存储配置下可能会失败。
只要有可能CRIU会在转储时失败,而不是在恢复时。在这种情况下,源容器将继续运行,快照或迁移将会失败,并生成一个日志文件用于调试。
要是有问题CRIU 会尽可能地在转储时失败,而不是在恢复时。在这种情况下,源容器将继续运行,快照或迁移将会失败,并生成一个日志文件用于调试。
在极少数情况下CRIU无法恢复容器在这种情况下源容器仍然存在但将被停止并且必须手动重新启动。
在极少数情况下CRIU 无法恢复容器,在这种情况下,源容器仍然存在但将被停止,并且必须手动重新启动。
### 发送bug报告
### 发送 bug 报告
我们正在跟踪Launchpad上关于CRIU Ubuntu软件包的检查点/恢复相关的错误。大多数修复bug工作是在上游的CRIU或Linux内核上但是这种方式我们更容易跟踪。
我们正在跟踪 Launchpad 上关于 CRIU Ubuntu 软件包的检查点/恢复相关的错误。大多数修复 bug 工作是在上游的 CRIU Linux 内核上进行,但是这种方式我们更容易跟踪。
要提交新的bug报告请看这里。
要提交新的 bug 报告,请看这里。
请务必包括:
你运行的命令和显示给你的错误消息
- 你运行的命令和显示给你的错误消息
- `lxc info` 的输出(*
- `lxc info <container name> `的输出
- `lxc config show -expanded <container name>` 的输出
- `dmesg`*)的输出
- `/proc/self/mountinfo` 的输出(*
- `lxc exec <container name> - cat /proc/self/mountinfo` 的输出
- `uname -a`*)的输出
- `/var/log/lxd.log`*)的内容
- `/etc/default/lxd-bridge`*)的内容
- `/var/log/lxd/<container name>/` 的 tarball*
- “lxc info”的输出*
- “lxc info <container name>”的输出
- “lxc config show -expanded <container name>”的输出
- “dmesg”*)的输出
- “/proc/self/mountinfo”的输出*
- “lxc exec <container name> - cat /proc/self/mountinfo”的输出
- “uname -a”*)的输出
- /var/log/lxd.log*)的内容
- /etc/default/lxd-bridge*)的内容
- /var/log/lxd/<container name>/ 的tarball*
如果报告迁移错误,而不是状态快照或有状态停止错误,请将上面所有含有(*)标记的源与目标主机的信息发来。
如果报告迁移错误,而不是状态快照或有状态停止的错误,请将上面所有含有(*)标记的源与目标主机的信息发来。
### 额外信息
@ -314,11 +313,11 @@ LXD 的 IRC 频道: #lxcontainers on irc.freenode.net
--------------------------------------------------------------------------------
via: https://www.stgraber.org/2016/03/19/lxd-2-0-your-first-lxd-container-312/
via: https://stgraber.org/2016/04/25/lxd-2-0-live-migration-912/
作者:[Stéphane Graber][a]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出