9 Hosts
在 vSphere 环境中,许多操作都涉及到设置虚拟化层运行的 ESXi 主机,可以设置存储、网络,这些设置直接影响虚拟机,所以你还必须管理主机的其他方面,如本章所述:
本章包括以下主题:
■ 9.1 Host 管理对象
■ 9.2 检索主机信息
■ 9.3 配置及重新配置主机
■ 9.4 管理主机生命周期
■ 9.5 查询及改变主机时间
■ 9.6 查询虚拟机内存开销
9.1 Host 管理对象
vSphere Web Services SDK 包含若干个用于主机管理的对象。
重要的一个对象是 HostSystem,每个 HostSystem 的属性是一个数据对象,它封装了主机信息。
例如,capability 属性是一个 HostCapability 对象;
runtime 属性是一个 HostRuntimeInfo 对象。
HostSystem 方法允许你执行 ESX/ESXi 主机上确定的任务。但是很多任务并不是通过 HostSystem 方法执行的,而是通过与 HostSystem 关联的托管对象中的方法。
例如,使用 HostDateTimeSystem 管理主机时间;使用 HostKernelModuleSystem 管理内核模块。
9.2 检索主机信息
通过访问为 HostSystem 定义的数据对象检索主机信息。
■ HostSystem.capability 是一个 HostCapability 对象
HostCapability 属性表示主机所支持的特性,例如,maintenanceModeSupported 或 recursiveResourcePoolsSupported。
■ HostSystem.runtimeInfo 是一个 HostRuntimeInfo 对象
该对象包含若干个含有主机当前状态详细信息的数据对象,
例如,你可以通过 HealthSystemRuntime 对象提取健康状态信息;通过 HostPowerState 对象提取电源状态信息。
■ HostSystem.hardware 是一个 HostHardwareInfo 对象
该对象可以检索主机硬件配置信息包括 CPU、NUMA(Non Uniform Memory Access Architecture,非统一内存访问架构)信息及内存大小。
■ HostSystem.config 是一个 HostConfigInfo 对象
该对象类型封装了一组典型的主机配置信息,这些信息对于显示和配置主机非常有用,但仅在托管主机上访问HostConfigInfo 对象,并且只有在主机连接时才可以访问。
HostSystem 还有若干附加属性,允许直接访问与系统相关联的虚拟机、datastores 及网络。
QueryHostConnectionInfo、QueryMemoryOverhead 及 QueryMemoryOverheadEx 方法可以用于信息检索。
HostSystem 及 Information Properties
9.3 配置及重新配置主机
当你配置或重新配置 ESX/ESXi 主机,通常不会直接使用 HostSystem 中的方法,而是使用系统部分可配置的托管对象来配置。
例如,HostNetworkSystem 用于配置 network;
HostAuthorizationManager 用于管理主机上的用户、组及权限。
一些方法被定义在 HostSystem 本地。
■ CIM 管理 – AcquireCimServicesTicket
■ 主机生命周期 – RebootHost_Task、ShutdownHost_Task、PowerDownHostToStandBy_Task、PowerUpHostFromStandBy_Task、DisconnectHost_Task、ReconnectHost_Task
■ 维护模式 – EnterMaintenanceMode_Task、ExitMaintenanceMode_Task
■ 更新 – UpdateFlags, UpdateIpmi, UpdateSystemResources
9.4 管理主机生命周期
一个主机的生命周期在一定程度上取决于主机是独立的还是由 vCenter 服务器系统管理的主机。
9.4.1 重启和关机
你可以重启和关闭托管或独立的主机,ShutdownHost_Task 方法并不是被所有主机支持,检查主机 shutdownSupported 功能。
你可以用 force 参数调用这两种方法,该参数指定了是否重启主机(即使虚拟机正在运行),或者在主机上其他运行的操作。如果设置该参数为 false,主机仅当处于维护模式时重启。
■ ShutdownHost_Task – 关闭主机
如果直接连接到主机,客户端在返回的任务中永远不会收到成功的指示,但是会暂时失去与主机的连接;如果该方法执行失败,则返回一个错误。
■ RebootHost_Task – 重启主机
如果命令正确,那么主机重启。直接连接到主机的客户端在返回的任务中不会获得成功的指示,但是会暂时失去与主机的连接;如果该方法执行失败,则返回一个错误。
9.4.2 使用待机模式
待机是一种电源状态,此时主机不支持对虚拟机的配置或上电操作。VMware 电源管理模块可能会撤离,并将主机放在待机模式以节省电力。通过使用 PowerUpHostFromStandBy_Task 可以远程启动主机。
下面的方法制成待机模式,这两种方法都是可撤销的:
■ PowerDownHostToStandBy_Task – 将主机设为待机模式
主机处于待机状态,可以远程启动,主机仅在 standbySupported 功能设置为 true 时才支持该命令。
当任务运行时,该主机上没有虚拟机能够开启及配置操作能被执行。
调用此方法并不能直接启动任何操作以撤离或关闭虚拟机,但是,如果 VMware DRS 是启动的,vCenter 服务器根据自动化级别将关闭的虚拟机迁移到不同的主机上,或者建议迁移到不同的主机;如果主机是集群的一部分,并且任务是通过 vCenter 服务器指定方法的 evacuatePoweredOffVms 参数为 true 发出的,该任务不会成功,除非所有的断电虚拟机有在其他主机上重新注册。
■ PowerUpHostFromStandBy_Task – 使主机脱离待机模式
如果命令正确,主机被唤醒并开始发出心跳,该方法可能被自动调用,通过 VMware DRS 添加功能到集群,如果主机没有处于维护模式。
9.4.3 断开和重新连接主机
可以将主机添加至 VCenter 服务器系统使其成为一个受管主机,之后你可以断开并重新连接主机,如刷新代理。
可以使用以下方法,这些方法仅被 vCenter 服务器系统管理的主机所支持:
■ QueryHostConnectionInfo – 返回一个 HostConnectInfo 对象
该对象和 Datacenter.QueryConnectionInfo 返回的是相同对象,该对象中的信息可以被连接向导使用,就像在 vSphere 客户端中使用的向导一样。
■ DisconnectHost_Task – 断开主机连接
断开与主机的连接,并指示 vCenter 服务器系统停止向主机发送心跳。
■ ReconnectHost_Task – 重新连接主机到vCenter服务器系统
如果该过程与服务器不同步,将重新安装代理并重新配置主机。重新连接过程检查正确的许可证集和主机上的CPU 数量,确保安装了正确的代理,并确保在 vCenter 服务器系统中发现并注册了网络和数据存储。
当执行重新连接操作,客户端应用程序可以改变 IP 地址和主机端口,如果客户端希望保留现有的元数据(如统计数、警报、权限),那么这一点是很有用的,即使主机改变了 IP 地址。
9.5 查询及改变主机时间
HostDateTimeSystem 支持主机上的日期和时间相关配置,并支持NTP配置。
HostDateTimeSystem.dateTimeInfo 属性可以获取和设置日期、时间信息,HostDateTimeInfo 数据对象的属性包含用于日期时间管理的两个数据对象:
■ HostNTPConfig 包含一个主机使用的 NTP 服务器列表
■ HostDateTimeSystemTimeZone 指定时区包括 GMT 偏移、时区标识符和名称
调用下列其中一个 HostDateTimeSystem 方法可以查询主机的时间信息:
■ QueryAvailableTimeZones – 查询主机上可用时区列表
该方法使用公共领域的 tz 时区数据库,返回一个 HostDateTimeSystemTimeZone 对象的数组。
■ QueryDateTime – 查询主机上当前的日期和时间
调用下面的一个 HostDateTimeSystem 方法可以修改主机的日期时间信息:
■ RefreshDateTimeSystem – 刷新日期和时间相关设置,以获取可能发生的任何更改
■ UpdateDateTime – 使用传入方法的日期和时间更新主机上的日期和时间。
谨慎使用。网络延迟或执行延迟可能导致时间偏斜。
■ UpdateDateTimeConfig – 更新主机的日期和时间配置。
使用 HostDateTimeConfig 参数调用该方法,该参数允许您指定 NTP 配置和时区。
9.6 查询虚拟机内存开销
每个启动的虚拟机都需要一定的内存以供其使用,此外,针对每个虚拟机,主机必须有一些可用的内存开销。
要找出内存过高的问题,调用 HostSystem.QueryMemoryOverheadEx 方法,该方法以 virtualMachineConfigInfo 数据对象作为一个参数,并确定开启具有这些特征的虚拟机所需要的内存开销数量。
该方法返回所需内存数量,以字节为单位。