35 从 LXC 迁移到 libvirt-lxc
#
从 SUSE Linux Enterprise Server 12 开始,LXC 已集成到 libvirt
库中。相比将 LXC 作为单独的解决方案使用,此决策可带来多项优势 — 例如,与其他虚拟化解决方案保持统一,或者在使用的内核方面获得独立性。本章将会说明需要执行哪些步骤来迁移可与 libvirt
库搭配使用的现有 LXC 环境。
35.1 主机迁移 #
迁移本身包括两个阶段。首先需要迁移主机,接着需迁移 LXC 容器。然后便可在 libvirt
环境中将原始容器作为 VM Guest 运行。
使用官方 DVD 媒体将主机升级到 SUSE Linux Enterprise Server 15。
升级后,安装
libvirt-daemon-lxc
和libvirt-daemon-config-network
软件包。基于现有的容器
lxc_container
创建libvirt
XML 配置lxc_container.xml
:tux >
sudo
virt-lxc-convert /etc/lxc/lxc_container/config > lxc_container.xml检查主机上的网络配置是否与容器配置文件中的配置相同,并根据需要予以修复。
检查
lxc_container.xml
文件中是否存在任何异常或缺少的配置。请注意,某些 LXC 配置选项无法映射到libvirt
配置。尽管转换通常应该会正常完成,但仍请查看第 34.4 节 “libvirt LXC 驱动程序与 LXC 之间的差异”了解更多细节。根据创建的 XML 定义在
libvirt
中创建容器:tux >
sudo
virsh -c lxc:/// define lxc_container.xml
35.2 容器迁移 #
迁移主机后,libvirt
中的 LXC 容器将无法引导。您需要将此容器也迁移到 SUSE Linux Enterprise Server 15 才能使一切正常运行。
缺少
baseproduct
文件(zypper
一直在指出此问题)。创建相关的符号链接:root #
ROOTFS=/var/lib/lxc/lxc_container/rootfsroot #
ln -s $ROOTFS/etc/products.d/SUSE_SLES.prod $ROOTFS/etc/products.d/baseproduct添加 DVD 储存库。请注意,您需要将 DVD 设备替换为挂接到容器的相应设备:
root #
zypper --root $ROOTFS ar \ cd:///?devices=/dev/dvd SLES15-0禁用或去除以前的储存库:
root #
zypper --root $ROOTFS lr | Alias | Name | Enabled | Refresh --+-----------------------------+------------------------------+---------+-------- 1 | SLES12 | SLES12 | Yes | No 2 | SUSE-[...]-Server-12-SP3 38 | SUSE-[...]-Server-12-SP3 138 | Yes | Noroot #
zypper --root $ROOTFS rr 2禁用或去除以前的储存库:
root #
zypper --root $ROOTFS lr | Alias | Name | Enabled | Refresh --+-----------------------------+------------------------------+---------+-------- 1 | openSUSE 42.3 Main | openSUSE 42.3 Main | Yes | No 2 | openSUSE 42.3 Update | openSUSE 42.3 Update | Yes | Noroot #
zypper --root $ROOTFS rr 2升级容器:
root #
zypper --root $ROOTFS dup安装极简模式,以确保安装所需的所有组件:
root #
zypper --root $ROOTFS in -t pattern Minimal
35.3 启动容器 #
完成主机和容器迁移后,便能够启动容器:
root #
virsh -c lxc:/// start lxc_container
如果您需要通过控制台查看容器生成的日志记录消息,请运行:
root #
virsh -c lxc:/// console lxc_container