如何将物理 12.04 机器迁移到 LXC

如何将物理 12.04 机器迁移到 LXC

是否有标准方法(或标准工具)将物理机迁移到 Ubuntu 的 LXC 容器中?我正在使用 12.04.5 机器。我遇到过

但它是专门为 debian 设计的。程序似乎

  1. 复制根文件系统
  2. 删除不需要的文件
  3. 配置容器

这似乎是一个简单的过程,但我对 LXC 完全陌生,希望能找到一些不太容易出错的方法。我的另一个想法是从模板创建一个 ubuntu 容器,然后复制该文件系统。不过我敢打赌,很多 /etc 都会被错误地破坏。

答案1

自从我发布这个问题以来,我已经完成了六次这个过程,没有太多麻烦。我想我会从我学到的知识中添加一些提示,希望有人觉得它们有用:

您需要做的就是将根文件系统复制到容器的 rootfs 目录中(/var/lib/lxc/YOUR_CONTAINER/rootfs/ 用于基于磁盘的备份存储)。排除 /proc、/dev、/sys 和 /tmp。

然后:

  • 将容器中的 fstab 清空
  • 确保 /dev 下有一组最少的设备文件。我从使用模板创建的示例容器中复制了设备文件。
  • 如果你要使用 lxcbr0 进行联网,请在 /etc/network/interfaces 中将网络接口设置为 DHCP
  • 如果要桥接物理接口,请将接口设置为静态或手动。如果是手动,请将 IP 地址放入容器的配置中。不要设置为 DHCP。
  • 确保在容器配置中设置了 hwaddr。如果不设置,LXC 将在容器加载时随机生成一个,从而导致网络上出现大量过时的 ARP 条目。
  • 通读 /usr/share/lxc/templates/lxc-ubuntu。特别注意 configure_ubuntu() 函数。您可能希望在容器中运行大多数这些命令。

容器启动后,检查 pstree 中的所有进程,删除容器中不需要的进程(udevd、ntpdate、mdadm 等)。请随意删除所有内核包。

以下是完整的容器配置示例。此配置适用于可信主机。此实例中的容器非常精确。

lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.start.auto=1
lxc.rootfs = /var/lib/lxc/myhost/rootfs
lxc.mount = /var/lib/lxc/myhost/fstab
lxc.utsname = myhost
lxc.arch = amd64

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.ipv4 = 172.27.3.13/24
lxc.network.ipv4 = 172.27.3.15/24
lxc.network.ipv4.gateway = 172.27.3.1
lxc.network.hwaddr = 52:12:a1:a5:d3:23

如果主机操作系统非常精确,您也需要在配置中包含此内容。通用文件将不可用。

lxc.devttydir = lxc
lxc.tty = 4
lxc.pts = 1024
lxc.cap.drop = sys_module mac_admin
lxc.pivotdir = lxc_putold

相关内容