使用 xe CLI 应用更新
使用 xe CLI 将更新应用到您的 XenServer 8 主机和池。
要接收更新,您的 XenServer 主机需要 Internet 访问权限。如果您的主机位于防火墙后面,请确保其能够访问 ops.xenserver.com
的子域。有关详细信息,请参阅连接要求。
请完成以下步骤以便能够更新您的 XenServer 池:
为池配置更新
必须先通过为您的池或主机订阅更新通道来配置主机更新,才能将更新应用到您的 XenServer 主机和池。这些频道控制您多久可以访问内容交付网络 (CDN) 中提供的更新。
两个更新通道如下:
为您的池订阅其中一个更新通道后,您的池将定期自动与更新通道同步。或者,请手动将您的池与更新通道同步。此同步操作会将所有可用更新下载到池协调器。然后,您可以使用 xe CLI 应用下载的更新。
-
为您的池创建并启用抢先体验版更新通道:
pool_uuid=$(xe pool-list --minimal) base_binary_url="https://repo.ops.xenserver.com/xs8/base" base_source_url="https://repo-src.ops.xenserver.com/xs8/base" base_repo_uuid=$(xe repository-introduce name-label=base_repo name-description=Base binary-url=<base_binary_url> source-url=<base_source_url> update=false) update_binary_url="https://repo.ops.xenserver.com/xs8/earlyaccess" update_source_url="https://repo-src.ops.xenserver.com/xs8/earlyaccess" update_repo_uuid=$(xe repository-introduce name-label=early_access_repo name-description="Early Access" binary-url=<update_binary_url> source-url=<update_source_url> update=true) xe pool-param-set uuid=<pool_uuid> repositories=<base_repo_uuid>,<update_repo_uuid> <!--NeedCopy-->
或者,请为您的池创建并启用普通更新通道:
pool_uuid=$(xe pool-list --minimal) base_binary_url="https://repo.ops.xenserver.com/xs8/base" base_source_url="https://repo-src.ops.xenserver.com/xs8/base" base_repo_uuid=$(xe repository-introduce name-label=base_repo name-description=Base binary-url=<base_binary_url> source-url=<base_source_url> update=false) update_binary_url="https://repo.ops.xenserver.com/xs8/normal" update_source_url="https://repo-src.ops.xenserver.com/xs8/normal" update_repo_uuid=$(xe repository-introduce name-label=normal name-description="Normal" binary-url=<update_binary_url> source-url=<update_source_url> update=true) xe pool-param-set uuid=<pool_uuid> repositories=<base_repo_uuid>,<update_repo_uuid> <!--NeedCopy-->
-
请检索当前启用的存储库 UUID 列表:
pool_uuid=$(xe pool-list --minimal) xe pool-param-get uuid=<pool_uuid> param-name=repositories <!--NeedCopy-->
-
使用存储库 UUID 时,请查看有关特定存储库的更多详细信息:
xe repository-param-list uuid=<UUID> <!--NeedCopy-->
-
(可选)配置和启用 HTTP 连接代理服务器,该服务器用于主机与托管存储库的公共 CDN 之间的通信:
xe pool-configure-repository-proxy proxy-url=<http://proxy.example.com> proxy-username=<proxy-user> proxy-password=<proxy-password> <!--NeedCopy-->
禁用代理服务器配置:
xe pool-disable-repository-proxy <!--NeedCopy-->
查看代理服务器配置:
pool_uuid=$(xe pool-list --minimal) xe pool-param-get uuid=<pool_uuid> param-name=repository-proxy-url xe pool-param-get uuid=<pool_uuid> param-name=repository-proxy-username <!--NeedCopy-->
同步池的新更新
通过配置同步计划,使您的池自动与更新通道同步。您可以安排每天或每周在一周的某一天进行同步。将您的池与更新通道同步会将所有可用更新下载到池协调器,然后您可以将下载的所有更新应用到池。
-
将您的池设置为每天同步:
xe pool-configure-update-sync update-sync-frequency=daily update-sync-day=0 xe pool-set-update-sync-enabled value=true <!--NeedCopy-->
或者,将您的池设置为每周同步:
xe pool-configure-update-sync update-sync-frequency=weekly update-sync-day=1 (# 0 is Sunday, 1 is Monday, etc) xe pool-set-update-sync-enabled value=true <!--NeedCopy-->
-
查看您的同步配置:
pool_uuid=$(xe pool-list --minimal) xe pool-param-get uuid=<pool_uuid> param-name=update-sync-frequency xe pool-param-get uuid=<pool_uuid> param-name=update-sync-day xe pool-param-get uuid=<pool_uuid> param-name=update-sync-enabled <!--NeedCopy-->
-
获取您的池上次成功与更新通道同步的时间戳:
pool_uuid=$(xe pool-list --minimal) xe pool-param-get param-name=last-update-sync uuid=<pool_uuid> <!--NeedCopy-->
或者,您可以手动将 XenServer 池与更新通道同步:
pool_uuid=$(xe pool-list --minimal)
update_checksum=$(xe pool-sync-updates uuid=<pool_uuid> --minimal)
<!--NeedCopy-->
update_checksum
是一个唯一标识符,表示已安装的更新级别。每当公共 CDN 中有新更新时,它就会发生变化,以后在对您的池应用更新时会使用,以确保您始终应用最新的可用更新。如果您需要联系技术支持,update_checksum
也可以提供有用的信息。
注意:
同步后,请尽快将更新应用到您的池,以便从最新的更新中获益。
如果在同步之后但在对池中的主机应用更新之前指定了新的池协调器,则必须再次与新的池协调器同步,然后才能更新池。
在 XenServer 池更新过程中,请勿对该池进行同步。
了解指导类别和更新任务
在对您的池应用更新之前和之后,可能需要执行某些任务(例如撤离或重新引导主机)。有时,不需要执行更新任务。
指导类别
XenServer 尝试将这些任务分为强制、推荐、完全有效和实时修补,从而最大限度地减少这些更新任务可能会对 VM 造成的中断。这些分类使您能够判断您的环境和风险状况是否需要执行可能会导致主机或 VM 停机或轻微中断的更新任务。
更新中的任务可以在多个类别中列出。例如,更新可能需要您重新启动主机才能充分发挥更新的效果,但建议您重新启动 Toolstack 以获得更新的大部分好处,同时减少对池的潜在干扰。
在更新过程中,您可以选择执行以下三个级别的任务之一:
- 强制
- 强制 + 推荐
- 强制 + 推荐 + 完全有效
强制
_必须_在更新后执行强制性任务,否则系统可能会在运行时出现故障。这些操作是启用关键修复并确保您的环境安全稳定所必需的。您不能选择不执行强制性任务。
推荐
推荐任务是我们建议您执行的任务,目的是充分利用更新中提供的大多数功能和修复。如果您选择不立即执行这些任务,它们将在适用的池、主机或 VM 的待处理更新任务中列出。
执行推荐任务的原因:
- 这些任务用来确保 XenServer 环境安全且稳定。
选择不执行推荐任务的原因:
- 在查看了更新的详细信息后,您判断现在不完全应用这些更新的风险是可以接受的。
- 现在,推荐任务会对您的 VM 造成不必要的干扰。
完全有效
要从相关更新中受益,需要完成完全有效的任务。具有与之相关的完全有效的任务的更新通常仅与使用特定硬件或使用特定功能的用户关联。
查看更新信息,了解是否需要针对您的环境执行这些任务。如果您选择不立即执行这些任务,它们将在适用的池、主机或 VM 的待处理任务中列出。
执行完全有效的任务的原因:
- 具有完全有效的任务的更新与您的硬件、环境或配置相关。
选择不执行全效任务的原因:
- 具有完全有效的指导的更新与您的硬件、环境或配置无关。
- 现在,完全有效的任务会对您的 VM 造成不必要的干扰。
- 您现在不需要享受这些更新的好处。
如果完全有效的任务适用于您的环境,但您选择了推迟执行这些任务,请计划在适当的维护时段内完成这些任务以维护环境的稳定性。
实时修补程序
某些组件的更新可能包括实时修补。是否可以将实时修补应用到您的主机取决于上次重新引导主机时安装的组件的版本。如果更新可以作为实时修补应用到主机,实时修补指南将取代推荐的指南。
示例:
您有两个池。池 A 已更新到最新级别。池 B 已经有一段时间未更新。我们发布了一个新更新,其中包含推荐的更新任务“重新启动主机”和实时修补更新任务“重新启动 Toolstack”。
在池 A 中,实时修补可以应用到这些更新的主机。推荐的指南显示“重新启动 Toolstack”。实时修补指南中的中断性较小的任务会取代推荐的指南。
在池 B 中,实时修补不能应用到主机,因为它们处于较旧的级别。推荐的指南显示“重新启动主机”。建议的指南仍然适用。在这种情况下,实时修补指南无关紧要。
有时,当更新作为实时修补应用时,更新中只有部分修复会启用。查看更新详细信息,了解您是否需要更新中的所有修复,还是只需要实时修补启用的修复。然后,您可以使用此信息来选择是否执行建议的任务。有关详细信息,请参阅查看池的可用更新。
更新任务
应用更新时可能需要执行以下一项或多项任务。任何类型的更新任务都可以在任何指导类别中列出。
更新面向您的主机的任务
您只能在应用更新_之前_执行此任务,有时会将其作为“重新引导主机”任务的一部分来执行:
更新任务 | 用于执行任务的 xe CLI 命令 | 说明 |
---|---|---|
撤离主机 | xe host-evacuate |
将所有 VM 迁移出 XenServer 主机或者将其关闭。执行此任务的过程中,由于一台主机暂时无法运行 VM,XenServer 池的运行容量有所降低。 |
以下任务需要在更新后的主机上执行操作:
更新任务 | 用于执行任务的 xe CLI 命令 | 说明 |
---|---|---|
重新启动主机 | xe host-reboot |
必须重新启动 XenServer 主机。所有 VM 都将迁移出主机,然后重新启动主机。执行此任务的过程中,由于一台主机暂时无法运行 VM,XenServer 池的运行容量有所降低。 |
Xen 实时补丁失败时重新启动主机 | xe host-reboot |
应用 Xen 实时修补失败。必须重新启动 XenServer 主机才能使更新生效。所有 VM 都将迁移出主机,然后重新启动主机。执行此任务的过程中,由于一台主机暂时无法运行 VM,XenServer 池的运行容量有所降低。 |
内核实时修补失败时重新启动主机 | xe host-reboot |
应用 dom0 内核实时修补失败。必须重新启动 XenServer 主机才能使更新生效。所有 VM 都将迁移出主机,然后重新启动主机。执行此任务的过程中,由于一台主机暂时无法运行 VM,XenServer 池的运行容量有所降低。 |
重新启动 Toolstack | xe-toolstack-restart |
必须重新启动主机上的 Toolstack。在更新后的主机(而非池协调器)上重新启动 Toolstack。当 Toolstack 在池协调器上重新启动时,与池的连接将断开,但是当 Toolstack 在其他池成员上重新启动时,没有明显的效果。 |
查看您的主机所需的更新任务
请使用以下命令查看主机在应用更新之前和之后所需的任务。
获取您的主机必须完成的任务列表:
xe host-param-get param-name=pending-guidances uuid=<host UUID>
<!--NeedCopy-->
获取为您的主机推荐的任务列表:
xe host-param-get param-name=pending-guidances-recommended uuid=<host UUID>
<!--NeedCopy-->
获取对您的主机完全有效的任务列表:
xe host-param-get param-name=pending-guidances-full uuid=<host UUID>
<!--NeedCopy-->
更新面向您的 VM 的任务
某些更新会针对您的 VM 提供新功能。这些更新可能需要在您的 VM 上执行以下任务:
更新任务 | 用于执行任务的 xe CLI 命令 | 说明 |
---|---|---|
重新启动 VM | xe vm-reboot |
必须重新启动 VM。当 VM 重新启动时,VM 对最终用户不可用。 |
重新启动设备型号 | xe vm-restart-device-models |
必须重新启动更新后的主机上的 VM 的设备型号。在设备型号重新启动时,您无法停止、启动或迁移 VM。VM 的最终用户可能会在其会话中看到短暂的暂停并恢复。要在 Windows VM 上支持重新启动设备模型操作,该 VM 必须安装适用于 Windows 的 XenServer VM Tools。 |
查看您的 VM 所需的更新任务
获取您的 VM 必须完成的任务列表:
xe vm-param-get param-name=pending-guidances uuid=<VM UUID>
<!--NeedCopy-->
获取为您的 VM 推荐的任务列表:
xe vm-param-get param-name=pending-guidances-recommended uuid=<VM UUID>
<!--NeedCopy-->
获取 VM 的完全有效的任务列表:
xe vm-param-get param-name=pending-guidances-full uuid=<VM UUID>
<!--NeedCopy-->
查看池的可用更新
在安装更新之前,请查看池的可用更新并查看所需的更新任务。有关更新可能需要的不同更新任务的详细信息,请参阅了解指南类别和更新任务。
检查特定主机的可用更新
检查特定主机是否有任何可用的更新:
xe host-param-get param-name=latest-synced-updates-applied uuid=<host UUID>
<!--NeedCopy-->
如果有适用于特定主机的更新,此命令将返回 yes
,如果没有可用更新,此命令将返回 no
。
检查所有主机的可用更新
在 HTTP 端点 /updates
上发出 GET 请求,检查所有主机的可用更新。
使用 wget
实用程序获取所有主机的更新:
wget -O - --no-check-certificate https://<user name>:<password>@<coordinator IP address>/updates
<!--NeedCopy-->
或者,您可以使用 HTTP 客户端库:
HTTP GET
session_id: <XAPI session ID returned from login>
host_refs: <host XAPI reference>
<!--NeedCopy-->
返回的输出采用 JSON 格式,包含以下对象:
-
hosts
:列出单个主机的可用更新。 -
updates
:列出可用更新的详细信息。 -
hash
:update_checksum
(用于确保您始终应用最新的可用更新)。
hosts
和 updates
对象还包含由以下键组成的 guidance
对象:
mandatory
recommended
full
livepatch
这些键指的是更新任务的不同指导类别。它们列出了您的主机和 VM 所需的更新任务。有关更新可能需要的不同任务的详细信息,请参阅了解指南类别和更新任务。
将更新应用到您的池
开始之前的准备工作
-
在执行池更新之前,请确保池中的所有主机都处于联机状态。
-
确保任何主机或 VM 上都没有待处理的强制性更新任务。在开始新的池更新之前,必须先执行之前的更新中所有待执行的强制性更新任务。有关详细信息,请参阅查看您的主机所需的更新任务和查看您的 VM 所需的更新任务。
-
如果启用了高可用性 (HA),请将其禁用:
pool_uuid=$(xe pool-list --minimal) xe pool-ha-disable uuid=<pool_uuid> <!--NeedCopy-->
-
如果启用了 Workload Balancing (WLB),请将其禁用:
pool_uuid=$(xe pool-list --minimal) xe pool-param-set wlb-enabled=false uuid=<pool_uuid> <!--NeedCopy-->
安装更新
要对池执行更新,必须先在池中的每台主机上应用更新,首先从池协调器开始。请按照以下步骤进行操作,首先从池协调器开始:
-
禁用主机:
xe host-disable uuid=<host UUID> <!--NeedCopy-->
-
如果更新所需的更新任务之一是“撤离主机”或“重新启动主机”,请撤离主机:
xe host-evacuate uuid=<host UUID> <!--NeedCopy-->
如果在主机撤离期间无法将 VM 迁移到其他主机,请关闭或挂起该 VM。
-
将更新应用到主机:
xe host-apply-updates uuid=<host UUID> hash=<update_checksum> <!--NeedCopy-->
-
获取所需的主机更新任务的列表。有关详细信息,请参阅更新面向您的主机的任务。
请按以下顺序执行列表中的主机更新任务:
- 重新启动 Toolstack(如果要执行“重新启动主机”,则可以跳过)
- 重新启动主机
-
对于主机上每台正在运行的 VM,请获取所需的 VM 更新任务列表。有关详细信息,请参阅更新面向您的 VM 的任务。
请按以下顺序执行列表中的 VM 更新任务:
- 重新启动设备型号(如果要执行“重新启动 VM”,则可以跳过)
- 重新启动 VM
-
如果主机仍处于禁用状态,请启用该主机:
xe host-enable uuid=<host UUID> <!--NeedCopy-->
-
对于您在主机更新之前使用
host-evacuate
迁移到其他主机的每个 VM,请获取更新任务列表。有关详细信息,请参阅更新面向您的 VM 的任务。如果更新任务列表中有“重新启动 VM”,请关闭该 VM 并在当前更新后的主机上将其启动。否则,请将 VM 迁移回当前更新后的主机。
-
恢复或启动您在应用更新之前关闭或挂起的 VM。
-
查看主机更新状态:
xe host-param-get param-name=last-software-update uuid=<host UUID> xe host-param-get param-name=latest-synced-updates-applied uuid=<host UUID> xe host-param-get param-name=last-update-hash uuid=<host UUID> <!--NeedCopy-->
重复执行上述步骤,更新池中的每台主机。
更新主机后
更新池中的每台主机后,执行其余的所有更新任务。
-
对于池中的每个 VM,请获取更新任务列表。有关详细信息,请参阅更新面向您的 VM 的任务。
如果更新任务列表中有“重新启动 VM”,请执行该任务。
-
如果您在应用更新之前禁用了高可用性,请将其启用:
pool_uuid=$(xe pool-list --minimal) xe pool-ha-disable uuid=<pool_uuid> <!--NeedCopy-->
-
如果您在应用更新之前禁用了 WLB,请将其启用:
pool_uuid=$(xe pool-list --minimal) xe pool-param-set wlb-enabled=true uuid=<pool_uuid> <!--NeedCopy-->
-
如果您选择仅执行池更新所需的强制性更新任务,尚未执行的更新任务将附加到主机所需的待处理更新任务列表。要查看此列表并执行这些任务,请参阅面向您的主机的更新任务。