第 15 章 虚拟机

15.1. 虚拟机项

vms 集合提供了 Red Hat Enterprise Virtualization 环境中的虚拟机信息。API 用户可以通过从进入点 URI 获得的 rel="vms" 链接来访问这些信息。
使用带有 All-Content: true 头的 GET 请求可以获得额外信息。
以下表格包括了虚拟机表述中的特定项的信息。

表 15.1. 虚拟机项

类型描述属性
link rel="applications"关系到虚拟机资源的 applications 子集合的链接,它显示了虚拟机上安装的应用程序。 
link rel="disks"关系虚拟机资源的 disks 子集合。 
link rel="nics"关系虚拟机资源的 nics 子集合。 
link rel="numanodes"关系到虚拟机资源的 numanodes 子集合的链接。 
link rel="cdroms"关系虚拟机资源的 cdroms 子集合。 
link rel="snapshots"关系虚拟机资源的 snapshots 子集合。 
link rel="tags"关系虚拟机资源的 tags 子集合。 
link rel="permissions"关系虚拟机资源的 permissions 子集合。 
link rel="statistics"关系虚拟机资源的 statistics 子集合。
link rel="reporteddevices"
关系
到虚拟机资源的 reporteddevices 子集合的链接。
 
link rel="watchdogs"
关系
虚拟机资源的 watchdogs 子集合。
 
link rel="sessions"
关系
虚拟机资源的 sessions 子集合。
 
type列举虚拟机类型。capabilities 包括了有效值列表。
status参阅以下信息虚拟机状态。
memory整数分配给虚拟机的内存大小(以字节为单位)
cpu复杂数据
定义虚拟机的 CPU 详情。topology 子项定义了虚拟机可用的逻辑 sockets 的数量,以及每个插槽中的 cores 的数量。虚拟机可用的内核总数是插槽数量乘以每个插槽的内核数。
cputune 子项使用一组 vcpupin 项来把虚拟 CPU 和物理主机 CPU 进行映射。每个 vcpupin 项包括一个虚拟 CPU 属性(vcpu)以及一个指定虚拟 CPU 所使用的物理 CPU 属性(cpuset)。cpuset 可以被设置为单一 CPU(cpuset="0")、多个 CPU(cpuset="0,2")、一个 CPU 范围(cpuset="0-3")或排除特定 CPU 的 CPU 范围(cpuset="0-3,^2")。
cpu_mode 子项定义了虚拟 CPU 和相关主机 CPU 的紧密关系程度。它包括 3 个值:custom(默认值,没有指定任何模式)、host_model(复制 libvirt 支持的主机 CPU )和 host_passthrough(把主机的所有功能都复制到虚拟机,包括 libvirt 不支持的功能。但是,host_passthrough 会使虚拟机无法被迁移)。
os type=字符串,如 RHEL5WindowsXP虚拟机操作系统类型。
os boot dev=列举boot 项的 dev 属性所描述的引导设备列表。capabilities 包括了它的有效值。
os kernel字符串到虚拟机引导内核镜像的路径。这个选项支持直接引导 Linux 内核,而不需要 BIOS bootloader。
os initrd字符串到一个指定内核所使用的 initrd 镜像的路径。这个选项支持直接引导 Linux 内核,而不需要 BIOS bootloader。
os cmdline字符串内核需要使用的内核命令行参数。这个选项支持直接引导一个 Linux 内核,而不需要使用 BIOS bootloader。
high_availability复杂数据如果需要在虚拟机或它所在的主机出现系统故障时自动重启,请把 enabled 设置为 true。一个 priority 项被用来控制虚拟机重启的顺序。 
display复杂数据
显示的类型vncspice)、端口以及显示器的数量。allow_reconnect 的值指定了客户端是否可以通过显示重新连接到机器上。
smartcard_enabled 子项是一个布尔值(truefalse),它被用来指定附加到客户端系统上的 Smartcard 是否可以被传递到虚拟机上。这个子项的默认值是 false
 
cluster id=GUID虚拟机所在主机的集群标识。
template id=GUID虚拟机所基于的模板标识。
domain id=GUID虚拟机域的标识。
start_timexsd:dateTime 格式:YYYY-MM-DDThh:mm:ss虚拟机被启动的时间。
stop_timexsd:dateTime 格式:YYYY-MM-DDThh:mm:ss虚拟机被停止的时间。
creation_timexsd:dateTime 格式:YYYY-MM-DDThh:mm:ss虚拟机被创建的时间。
originrhevovirtvmwarexen虚拟机的原始系统。
stateless布尔值:true 或 false如果虚拟机是无状态的(stateless),把这个参数设为 true。无状态的虚拟机会在系统启动时对磁盘做一个快照,并在关机时删除对系统所做的所有改变。这意味着每次对系统所做的改变会在系统重启后丢失。 
delete_protected布尔值:true 或 false如果设为 true,虚拟机将无法被删除。 
sso字符串到虚拟机的单点登录方法的一个指代,它包括一个带有 ip 属性的 method 项。 
placement_policy复杂数据设置虚拟机迁移的替换策略。需要一个默认的 host= 和一个 affinitymigratableuser_migratablepinned)。如果没有设置 host 项的值,则意味着没有首选的主机。使用多个 host 项可以在集群中指定一组首选的主机。 
memory_policy复杂数据为虚拟机设置内存策略。定义为了运行这个虚拟机所需要的最小 guaranteed 主机内存。 
quota id=GUID为虚拟机设置配额。 
custom_properties复杂数据传递给脚本的一组用户定义的环境变量。每个 custom_property 都包括 namevalue 属性。capabilities 包括了有效值的列表。 
usb复杂数据定义虚拟机的 USB 策略。需要一个 enabled 项(布尔值)和一个 type 项(值是 nativelegacy)。 
migration_downtime整数代表在实时迁移时,虚拟机可以下线的最长时间(以毫秒为单位)。如果它的值为 0,则代表使用 VDSM 的默认设置。 
cpu_profile id=GUID到虚拟机的 CPU 配置集的参考。 
next_run_configuration布尔值:true 或 false如果对虚拟机的配置改变需要在虚拟机下一次重启时生效,这个值应为 true 
numa_tune_mode字符串到主机 NUMA 节点的内存分配模式(interleavestrictpreferred)的参考。 
guest_info复杂数据虚拟机客户端的信息。包括一个带有 address= 属性的 ip 项。
vmpool复杂数据虚拟机池的标识。这个项只会出现在属于某个虚拟机池的虚拟机上。
timezone时区数据库格式:Area/LocationWindows 虚拟机在 Sysprep 中的时区设置。 
domain复杂数据Windows 虚拟机模板在 Sysprep 中的时区设置。需要 domains 集合中的一个 name 
initialization复杂数据
定义一组 Linux 虚拟机使用 Cloud-Init 引导时,或 Windows 虚拟机使用 Sysprep 时使用的值。

Cloud-Init

  • host_name:虚拟机的主机名。
  • timezone:虚拟机使用的时区。
  • user_name:虚拟机的用户名。
  • root_password:指定用户的密码。如果没有指定用户,则代表 root 密码。
  • authorized_ssh_keys:指定 SSH 密钥并把它加入到虚拟机的验证密钥文件中。您可以通过在一个新行中输入 SSH 密钥来指定多个 SSH 密钥。
  • regenerate_ssh_keys:是否为虚拟机重新产生 SSH 密钥。它的值是 truefalse
  • dns_servers:由空格分隔的 DNS 服务器列表。
  • dns_search:由空格分隔的 DNS 搜索域列表。
  • nic_configurations:定义虚拟机的网络接口控制器。网络接口控制器在这个集合中被定义为 nic_configuration 对象,每个对象都指定了 nameipboot_protocolon_boot
  • custom_script:虚拟机启动时运行的自定义脚本。

Sysprep

  • host_name:虚拟机的主机名。
  • domain:虚拟机所属的域。
  • authorized_ssh_keys:指定 SSH 密钥并把它加入到虚拟机的验证密钥文件中。您可以通过在一个新行中输入 SSH 密钥来指定多个 SSH 密钥。
  • regenerate_ssh_keys:是否为虚拟机重新产生 SSH 密钥。它的值是 truefalse
  • timezone:虚拟机使用的时区。
  • root_password:虚拟机 admin 用户的密码。
  • custom_script:虚拟机启动时运行的自定义脚本。
  • input_locale:用户输入的语言环境。
  • ui_language:用户界面项(如按钮、菜单)所使用的语言。
  • system_locale:系统整体的语言环境。
  • user_locale:用户的语言环境。
  • active_directory_ou:虚拟机在所属 Active Directory 域中的 OU(organizational unit)。
  • org_name:虚拟机所属的机构(organization)。
payloads复杂数据
定义一组在引导时传递给虚拟机的 payload 项。每个 payload 需要一个 type 属性(cdromfloppy)和一组 file 属性。每个 file 项中包括一个 name 项(定义了文件的名称和位置),以及一个 content 项(定义了传递给文件的内容)。
payloads 项被 cloud-init 使用。当使用 cloud-init 配置虚拟机时,一个 payload 会被自动创建。它的 type 属性被设置为 cd-rom,并有两个 file 子项(openstack/latest/meta_data.jsonopenstack/latest/user_data),它们把配置参数传递给虚拟机。
 
status 包括以下值之一:unassigneddownuppowering_uppowered_downpausedmigrating_frommigrating_tounknownnot_respondingwait_for_launchreboot_in_progresssaving_staterestoring_statesuspendedimage_illegalimage_lockedpowering_down。这些状态在 capabilities 下的 vm_states 中列出。