我有一个测试设置,我正尝试尽可能多地使用虚拟机而不是裸机进行迁移。现有设置的结构是运行容器(特别是 LXC)中的所有内容,并且它不会消失,所以如果可能的话,我希望在虚拟机上使用现有结构。其他服务正在运行的虚拟机集群是 QEMU。
乍一看,这个方法似乎很简单,但我团队中最后一个尝试的人却困惑地放弃了。所以,我想知道的是:
在 QEMU VM 或虚拟机内运行 LXC 是否存在已知问题?
我应该预料到哪些障碍?如果有,是什么?
这是否更可能是我们特殊设置的问题,而不是一般的兼容性问题?
答案1
兼容性
应该不会有问题。QEMU 在功能上与常规硬件和客户系统没有任何不同,并且 LXC 不会执行任何需要 QEMU 无法模拟的硬件的特殊行为的操作。
但...
你可能不想这样做,因为这不仅会损害性能,还会使管理变得非常复杂。你可能应该重新评估你认为为什么需要在容器下使用虚拟机(或者,更好的是,如果你已经在部分基础设施中使用容器,那么为什么你需要在其余部分使用虚拟机)。除非你真的如果您关心实时迁移或改进容器提供的功能之外的工作负载隔离,那么最好只是调整其余基础设施以使用容器,因为它们使用的资源更少。唯一的例外是提供可供外界访问的服务的系统,除非它们位于虚拟机中(因为容器崩溃通常会导致主机崩溃),否则它们永远不应位于共享主机上,即使如此,通常也不应该位于具有内部服务的共享主机上。
好吧,但是我真的无论如何我都想这么做。
在这种情况下,请努力调整您的软件以使用 VM 而不是容器。实际上,调整应该不太难。实际上,设置 QEMU 以直接启动 Linux 内核非常容易(因此无需引导加载程序,也无需分区表),一旦您可以做到这一点,就很容易将该容器基础映像提取到文件系统映像中,然后您可以直接将其用作磁盘(这仍然会比容器性能低一点,但远不及在 VM 中运行容器那么糟糕)。