我最近注意到我的一台服务器运行在相当旧的 Xen 版本上:
$ dpkg-query -l | grep xen
ii libc6-xen 2.11.3-4 Embedded GNU C Library: Shared libraries [Xen version]
ii libxenstore3.0 4.0.1-5.10 Xenstore communications library for Xen
ii linux-image-2.6.32-5-xen-686 2.6.32-48squeeze1 Linux 2.6.32 for modern PCs, Xen dom0 support
ii xen-hypervisor-4.0-amd64 4.0.1-5.10 The Xen Hypervisor on AMD64
ii xen-linux-system-2.6-xen-686 2.6.32+29 Xen system with Linux 2.6 for modern PCs (meta-package)
ii xen-linux-system-2.6.32-5-xen-686 2.6.32-48squeeze1 Xen system with Linux 2.6.32 on modern PCs (meta-package)
ii xen-tools 4.2-1 Tools to manage Xen virtual servers
ii xen-utils-4.0 4.0.1-5.10 XEN administrative tools
ii xen-utils-common 4.0.0-1 XEN administrative tools - common files
ii xenstore-utils 4.0.1-5.10 Xenstore utilities for Xen
Dom0 也很老了:
$ uname -a
Linux Dom0 2.6.32-5-xen-686 #1 SMP Mon Feb 25 05:55:06 UTC 2013 i686 GNU/Linux
我对这样的生产服务器不是很熟悉,我宁愿在做之前三思而后行:
$ apt-get update
$ apt-get upgrade
在进行升级之前我需要检查什么?在升级期间我是否需要关闭并重新启动我的所有 VM?
我只能从使用 Citrix XenServer(免费版)的经验中看出。有一个升级真的是儿戏。从 Citrix 下载 .iso,将其刻录/写入 CD/USB 驱动器,从中启动并选择升级。它只会编辑您安装的现有分区/文件,不会触及您的虚拟机虚拟磁盘所在的存储库。重新启动后,一切都和以前一样,甚至自动启动机器也重新联机。
但据我了解,您既不使用 Citrix 版本,也不打算这样做。根据我使用 KVM-QEMU 的经验,更新虚拟化环境应该不会有任何问题(上次重大升级甚至在没有重新启动的情况下也可以工作)。在所有情况下(如果可能的话)我建议关闭或暂停虚拟机,您的升级至少应该像这样更快地进行。如果你能忍受一点停机时间。
顺便说一句:Aptitude 总是询问您是否要安装更多软件包或是否有任何冲突。或者您可以使用 --show-upgraded 运行它,然后它只显示它想要升级的内容。
在这种情况下,最小风险和停机时间可能有点主观,也可能受到可用资源的限制。
在不停机且对 VM 数据风险最小的情况下进行更新的“理想”方式将涉及多台服务器,至少 3 台,可能更多,具体取决于负载和存储要求:
一旦系统就位,迁移活动虚拟机就相对简单了。一旦从 server0 迁移到 server1 并且一切都被验证在 server1 上正确运行,server0 上的相关服务可以停止和升级。
如果您有资源来设置这种基础设施,那么以这种方式运行虚拟机管理程序/VM 池可能有很多优势。拥有经过测试和记录的在虚拟机管理程序之间迁移虚拟机的过程将允许您安排虚拟机管理程序的定期维护和停机时间。计划中的升级和维护使您能够掌握可能影响安全性和性能的更新。
如果/当需要将关键安全补丁应用于生产系统时,即使是在虚拟机管理程序之间临时迁移服务的最小基础架构设置也可以减少对客户的影响和可见性。
在可以接受一些停机时间并且“理想”更新方案的基础设施的情况下,我通常可以成功使用此过程,尽管偶尔会出现无法预料的问题;根据过去的经验,如果可能,为关键系统和基础设施保留热备件始终是一个好主意。我在 openSUSE 和 CentOS 上使用了 KVM 和 Xen 这组步骤的一些变体: