7.4. 自动安装 Hypervisor(高级方法)

本节介绍了 Red Hat Enterprise Virtualization Hypervisors 的内核命令行参数,使用它们可以自动化安装的过程。
使用本章中介绍的方法,通过 PXE 服务器可以在不需要手工访问系统的情况下部署多个 Hypervisor。
在进行自动化部署前,请确认您已经了解了这些参数的用法,以及它们将会产生的影响。当系统被配置为通过 PXE 自动引导时,这些参数可能会删除已经存在的系统上的数据。

7.4.1. 内核参数如何工作

以下介绍了 Red Hat Enterprise Virtualization Hypervisor 启动的步骤。了解这些信息可以帮助您在自动化安装过程中排除故障。
  1. ovirt-early 服务在 /etc/default/ovirt 文件中设置存储、网络和管理参数。这些参数由在引导过程中传递给 Hypervisor 的内核参数所决定。
  2. 根据在内核命令行或 TUI 安装时设置的参数,/etc/init.d/ovirt-firstboot 脚本会决定要执行的安装类型。

7.4.2. 所需参数

要进行一个安装,最少需要以下参数:
  1. 根据您要进行安装(或重新安装)的类型,需要以下参数之一:
    1. install:开始一个安装(即使已存在一个安装)。
    2. reinstall:删除当前的安装,开始一个全新安装。
    3. upgrade:对存在的安装进行升级。
  2. storage_init 参数,用来初始一个本地存储设备。
  3. BOOTIF 参数,指定 Hypervisor 用来和 Manager 连接所使用的网络接口。当使用 PXE 引导时,BOOTIF 可能会被 pxelinux 自动提供。
这些参数会在以后的章节中详细介绍。
如果您需要使用 Red Hat Enterprise Virtualization Hypervisor 和 Red Hat Enterprise Virtualization Manager,则必须提供以下参数之一:
adminpw
使用带有管理权限的用户登录来配置 Red Hat Enterprise Virtualization Hypervisor。
management_server
指定使用的 Red Hat Enterprise Virtualization Manager。
rhevm_admin_password
指定在 Red Hat Enterprise Virtualization Manager 中添加主机时使用的密码。

7.4.3. 存储参数

使用以下参数为安装 Hypervisor 配置本地存储设置。
storage_init
自动安装需要 storage_init 参数来初始化本地存储设备。
Hypervisors 使用一个存储设备进行本地安装。有几种方法可以定义对哪个磁盘进行初始化,以及在哪个磁盘上进行安装。
  • 对于 USB 存储设备,使用 usb 参数。例如:
    storage_init=usb
  • 对于 SCSI 硬盘,使用 scsi 参数。例如:
    storage_init=scsi
  • 对于 ATA 总线上的硬盘设备(包括可能也会出现在 SCSI 总线上的 SATA 硬盘设备),使用 ata 参数。例如:
    storage_init=ata
  • 或者,使用 Linux 设备名作为 storage_init 参数来指定存储设备。以 /dev/disk/by-id 格式代表的设备名不被支持。storage_init 参数的格式必须是 /dev/mapper/disk/dev/disk。在这个示例中,所指定的设备是 /dev/sda
    storage_init=/dev/sda
当为 storage_init 指定 usbscsiata 参数时,也可以添加一个序列号来明确指定使用哪个设备。按照以下示例中的方法找到附加到系统中的设备的序列号:

例 7.15. 查找 udev 序列号

$ for d in /dev/sd?; do echo $d `udevadm info -q env -n $d | egrep 'ID_BUS=|ID_SERIAL='`; done
      /dev/sda ID_SERIAL=ST9500325AS_6VE867X1
在同时指定存储类型和序列号时,这两个值需要以冒号(:)分隔。例如:
storage_init=ata:3600508b100104a3953545233304c0003

注意

在系统重启时,并不能保证设备名的一致性,设备名可能会有所改变。
storage_vol
storage_vol 参数被用来对 storage_init 参数所指定的存储设备进行分区。在 storage_vol= 后面,您可以指定以下分区的大小(以 MB 为单位):Boot、Swap、Root、Config、Logging 和 Data。
Boot 分区必需是 50 MB,而且不能被重新设置。Red Hat Enterprise Virtualization Hypervisor 7 的 Root 分区必需是 8600 MB,也不能被重新设置。其它分区的信息会在以下进行详细介绍:

storage_vol 参数定义的分区

Swap
交换(swap)分区被用来交换那些不经常需要访问硬盘的内存页。使用它可以释放更多内存页以供那些需要被经常访问的数据使用,从而达到提高性能的目的。默认的交换分区的大小是通过系统中安装的内存数量,以及过度分配率(over-commit ratio,默认值是 0.5)决定的。Hypervisors 必须包括一个交换分区,而且不能通过把它的值设为 0 来禁用它。交换分区的最小值是 8 MB。
请参照 https://access.redhat.com/knowledge/solutions/15244 的内容来决定交换分区的大小。
使用以上文档中介绍的公式的计算结果,并加上额外的、可以满足过度分配率功能的存储(内存数量乘以过度分配率)。
推荐的交换空间 + (内存 * 过度分配率) = 交换分区大小
如果不为它输入任何值,系统会为交换分区设置一个推荐的值。
Config
config 分区保存 Hypervisor 的配置文件。它的默认大小是 8 MB。
Logging
logging 分区用来保存 Hypervisor 的所有日志文件。它需要最少有 2048 MB 的存储空间,但在资源允许的情况下,推荐为它分配更多存储空间。
Data
data 分区必须有足够的空间来保存 KVM 的核心文件,而核心文件的大小由虚拟机的内存大小所决定。另外,data 分区还需要有足够的空间来保存内核的 dump 文件(也被称为 kdumps)。一个 kdump 文件通常会和主机系统内存的大小相同。data 分区同时还被用来保存 Hypervisor 升级所需的 Hypervisor ISO 文件。
data 分区最少需要 512 MB 的存储空间。它的推荐值是主机系统内存总量的 1.5 倍,再加上额外的 512 MB。当把它的值设为 -1 时,所有的可用空间都会被分给这个分区;当把它的值设为 0 时,这个分区会被禁用。
分区可以通过任何顺序指定,指定的格式是 size,type,不同分区由冒号(:)分隔。例如,storage_vol=256,Swap:4096,Logging 指定了一个 256MB 的 Swap 分区和一个 4096MB 的 Logging 分区。

注意

使用老的方法指定分区大小仍然被支持,但指定的顺序必须是固定的。如下所示:
storage_vol=BOOT:SWAP:ROOT:CONFIG:LOGGING:DATA
但是,因为 Boot 分区和 Root 分区不能被重新配置,所有它们可以被省略。如:
storage_vol=:SWAP::CONFIG:LOGGING:DATA
如果您没有指定分区的大小,所创建分区的大小会是默认的值。如要设置一个 256MB Swap 分区和一个 4096MB Logging 分区,它的格式将是:
storage_vol=:256:::4096:
以下是 storage_vol 参数的标准格式:
storage_vol=256,EFI:256,Root:4096,Swap
iscsi_name
iscsi_name 参数被用来设置 iSCSI Initiator 的名称。iSCSI Initiator 名需要是 iSCSI 限定名(iSCSI Qualified Name,简称 IQN)。RFC 3720(http://tools.ietf.org/html/rfc3720)定义了它的格式。
IQN 由以下项组成(以 . 分隔不同的项):
  • 字符串 iqn
  • 命名权威(naming authority)开始控制域的时间(格式是 yyyy-mm
  • 反向域名 - demo.redhat.com 变为 com.redhat.demo
  • 另外,还可以包括由命名权威指定的存储目标名(前面有一个冒号)

例 7.16. iscsi_name

以下是一个附加到 demo.redhat.com 域的 iSCSI initiator 的 IQN。这个域在 2011 年 7 月创建。
iscsi_name=iqn.2011-07.com.redhat.demo

7.4.4. 网络参数

多个网络选项可以被使用。如需自动安装 Hypervisor,则需要使用以下参数:
  • 设置 IP 地址或 DHCP
  • DHCP 没有提供主机名的情况下设置主机名。
  • Red Hat Enterprise Virtualization Manager 网络附加到的接口。
以下包括了对可选参数和必需参数的介绍以及示例。

网络参数

BOOTIF
对于自动安装,BOOTIF 是一个必需的参数。
BOOTIF 参数指定了 Hypervisor 用来和 Red Hat Enterprise Virtualization Manager 进行连接所使用的网络接口。

重要

当通过 PXE 引导 Hypervisors 进行安装时使用了 IPAPPEND 2 项,BOOTIF=<MAC> 会被自动添加到内核的参数中。如果使用了 IPAPPEND 2,则不再需要使用 BOOTIF 参数。
BOOTIF 参数使用以下 3 种形式之一接受参数:
link
使用第一个接口(内核枚举的顺序)作为活跃的连接。它用于系统有多个网络接口,但只有一个连接了网络的情况。
eth#
指定由内核驱动器初始化顺序决定的 NIC(其中的 #NIC 的序号)。要决定引导 Hypervisor 的序号,从 Hypervisor 配置菜单中选择 Shell。使用 ifconfig | grep eth* 列出附加到系统上的网络接口。请注意,在系统下一次重启时,不能保证网络接口具有相同的 eth# 映射。
BOOTIF=eth0
<MAC>
使用在括号中明确指定的 MAC 地址。
ip
ip 参数用来设置由 BOOTIF 参数定义的网络接口控制器的 IP 地址。ip 参数可以是一个 IP 地址(格式是 0.0.0.0),也可以是 dhcp
ip=192.168.1.1
ip=dhcp
ipv6
ipv6 参数是 ip 参数的一个别名。它可以是 dhcpauto
netmask
netmask 参数设置了由 ip 参数定义的 IP 地址的子网掩码。
netmask=255.255.255.0
gateway
gateway 参数用来设置互联网网关。
gateway=192.168.1.246
dns
dns 参数用来设置最多两个 DNS 服务器。不同 DNS 服务器的地址由逗号分隔。
dns=192.168.1.243,192.168.1.244
hostname
hostname 参数用来设置主机名。它需要是一个可解析的完全限定域名。
hostname=rhev1.example.com
ntp
ntp 参数用来设置一个或多个网络时间协议(Network Time Protocol,简称 NTP)服务器。不同的 NTP 服务器地址由逗号分隔。
ntp=192.168.2.253,192.168.2.254
vlan
vlan 参数用来设置连接到 Red Hat Enterprise Virtualization Manager 的网络的 VLAN ID。当使用 VLAN 时,需要设置这个参数。
vlan=vlan-id:
例如:
vlan=36:
bond
bond 参数用来设置网络绑定。不同的接口名需要以逗号分隔。
BOOTIF=bond01 bond=bond01:nic1,nic2

7.4.5. Red Hat Network(RHN)参数

这些参数被用来在 Red Hat Network(RHN) 中注册 hypervisor 主机。您最少需要指定 rhn_activationkey 参数,或者 rhn_usernamerhn_password 参数。当需要通过 Satellite 服务器注册时,还需要指定 rhn_url 参数。
rhn_type
指定这台机器使用的 RHN 权利方法。sam 把权利方法设置为基于证书的 RHN(Certificate-based RHN),它集成了 Customer Portal、content delivery network 和订阅服务(subscription management)。classic 把权利方法设置为 RHN Classic,它使用传统的频道权利模式(channel access)来提供一个全局的内容获取机制,但无法提供对系统级订阅的使用。这个参数的默认值是 sam
rhn_username
rhn_username 参数指定了连接到 RHN 所使用的用户的用户名。
rhn_username=testuser
rhn_password
rhn_password 参数指定了用来连接到 RHN 所使用的用户的密码。
rhn_password=testpassword
rhn_activationkey
rhn_activationkey 参数用来设置用来连接到 RHN 的激活码。激活码可以被用来注册系统,使它们获得一个 RHN 服务级别,或订阅到特定的频道和系统组。如果同时指定了 rhn_activationkeyrhn_usernamerhn_activationkey 的值将会被使用。
rhn_activationkey=7202f3b7d218cf59b764f9f6e9fa281b
rhn_org
这个参数只在设置了 SAM 时使用。把系统注册到 SAM 的方式和在内核命令行中使用 rhn_activationkey 参数时的 --org org_name --activationkey key_value 相同。
rhn_org=org_name
rhn_url
rhn_url 指定注册主机所需的 satellite 服务器的 URL。
rhn_url=https://satellite.example.com
rhn_ca_cert
rhn_ca_cert 参数设置了用来连接到 satellite 服务器的 CA 证书的 URL。如果没有指定这个参数,默认值 rhn_url/pub/RHN-ORG-TRUSTED-SSL-CERT 会被使用。
rhn_ca_cert=https://satellite.example.com/pub/RHN-ORG-TRUSTED-SSL-CERT
rhn_profile
rhn_profile 参数设置主机在 RHN 中注册的档案的名称。它的默认值是系统的主机名。
rhn_profile=testhost

7.4.6. 用户验证参数

adminpw
adminpw 参数被用来设置 admin 用户的密码。这里提供的值必须已经经过哈希处理。影子密码机制支持所有的哈希。对密码进行哈希操作的推荐方法是运行以下命令:
# openssl passwd -1
openssl 命令会提示输入使用的密码。一个经过哈希处理的密码会被返回,您可以使用它作为 adminpw 的值。
rootpw
rootpw 参数被用来设置临时的 root 密码。当 root 第一次登录后,系统会强制要求更改密码。这个参数的值也必须经过哈希处理,影子密码机制所支持的哈希在这里都被支持。对密码进行哈希操作的推荐方法是运行以下命令:
# openssl passwd -1
openssl 命令会提示输入使用的密码。一个经过哈希处理的密码会被返回,您可以使用它作为 rootpw 的值。

重要

在默认情况下,root 密码没有设定。除非红帽的技术支持人员要求启用它,这个密码也不被支持。
rhevm_admin_password
rhevm_admin_password 参数被用来设置 root 用户的密码,并启用 SSH 密码验证功能。这里提供的值必须已经经过哈希处理。影子密码机制支持所有的哈希。对密码进行哈希操作的推荐方法是运行以下命令:
# openssl passwd -1
openssl 命令会提示输入使用的密码。一个经过哈希处理的密码会被返回,您可以使用它作为 rhevm_admin_password 的值。

重要

设置这个参数会有一个副作用,就是 SSH 密码验证功能会被启用。而除非在红帽技术支持人员要求启用它的情况下,这个功能并不被支持。我们推荐您在初始配置完成后禁用 SSH 密码验证功能。
ssh_pwauth
ssh_pwauth 参数被用来指定是否为 SSH 连接启用密码验证功能。它的有效值是 0(禁用)、1(启用),而它的默认值是 0
ssh_pwauth=1

重要

在默认情况下,SSH 密码验证功能被禁用。除非红帽的技术支持人员要求启用它,这个功能也不被支持。

7.4.7. 其它参数

firstboot
firstboot 参数被用来指定系统是否被认为没有已存在的安装。
reinstall 参数是 firstboot 参数的一个别名,它与 firstboot 可以相互替换使用。

警告

当系统上存在一个名为 HostVG 的卷组时,使用 firstboot 参数会删除其中的数据。当 firstboot 参数和 storage_init 参数一起使用时,storage_init 指定的磁盘上的数据都会被删除。
install
install 参数被用来指定系统是否可以被认为没有已存在的安装。当需要通过 CD-ROMDVDUSBPXE 引导时,可以使用 install 参数。
cim_enabled
启用通用信息模型(Common Information Model,简称 CIM)管理架构。
cim_passwd
配置 CIM 管理架构的密码。
disable_aes_ni
禁用 AES-NI 加密。可能的值是 yn
kdump_nfs
这个参数被用来为 kdump 配置一个 NFS 服务器。它的格式是 kdump_nfs=hostname:nfs_share_path。例如: kdump_nfs=nfshost.redhat.com:/path/to/nfs/share
local_boot
local_boot 参数是 upgrade 参数的一个别名。
local_boot_trigger
在安装成功完成后,检查这个参数所设置的目标 URL 并禁用 PXE,从而使系统通过磁盘进行以后的引导。
netconsole
netconsole 参数设置用来记录内核信息日志的服务器地址。netconsole 参数可以是一个 IP 地址,或一个完全限定域名,以及一个可选的端口号(默认端口号是 6666)。
netconsole=rhev.example.com:6666
nfsv4_domain
nfsv4_domain 参数指定 NFSv4 使用的一个域。
nocheck
如果安装介质没有存在于本地或它的访问速度较慢,对安装 ISO 进行 MD5 检查会消耗大量时间。使用 nocheck 参数会跳过对安装 ISO 文件进行 MD5 检查这一步。
management_server
management_server 参数指定 Red Hat Enterprise Virtualization Manager 的地址。management_server 参数可以是一个 IP 地址,或一个完全限定域名,以及一个可选的端口号(默认端口号是 443)。
management_server=rhev.example.com:443
mem_overcommit
mem_overcommit 参数指定用来计算支持内存过度分配功能所需的额外交换空间的乘数。默认的过度分配值是 0.5。
mem_overcommit=0.7
qemu_pxe
qemu_pxe 参数指定虚拟机要使用哪个网络引导加载程序,它的值可以是 gpxeetherboot
qemu_pxe=gpxe
reinstall
reinstall 参数被用来指定系统是否被认为没有已存在的安装。
firstboot 参数是 reinstall 参数的一个别名,它与 reinstall 可以相互替换使用。

警告

当系统上存在一个名为 HostVG 的卷组时,使用 reinstall 参数会删除其中的数据。当 reinstall 参数和 storage_init 参数一起使用时,storage_init 指定的磁盘上的数据都会被删除。
snmp_password
启用 SNMP(Simple Network Management Protocol)并为它设置一个密码。
syslog
在指定的地址上配置一个 rsyslog 服务器。您也可以指定一个端口。它的格式是 syslog=hostname[:port]。
upgrade
upgrade 参数会把存在的虚拟机管理程序(hypervisor) 镜像升级到引导介质所提供的版本。虚拟机管理程序会被自动升级,并在升级完成后重启。如果一个虚拟机管理程序的镜像还没有被安装,这个镜像将会被安装到 storage_init 参数所指定的设备上。在进行升级时,以前的引导项会被保存为 grub.conf 文件的 BACKUP。如果升级后的重启操作失败, BACKUP 引导项会被自动设置为新的默认选择。
uninstall
uninstall 参数会删除已存在的 Red Hat Enterprise Virtualization 安装。主机卷组将被删除,系统会被重启。

7.4.8. Hypervisor 自动安装示例

在这个示例中,使用内核命令行参数来进行一个自动化的 Hypervisor 安装。

重要

这个示例可能在一些系统上无法正常工作。您需要检查其中的参数,并根据您的具体情况进行相应的修改。
以下是一个典型的、使用内核命令行安装 Hypervisor 的示例。
在这个示例中,Manager 所在系统的主机名是 rhevm.example.com,netconsole 服务器位于同一台机器上。
:linux storage_init=/dev/sda storage_vol=::::: local_boot BOOTIF=eth0 management_server=rhevm.example.com netconsole=rhevm.example.com

注意

内核参数可以通过网络 PXE 附加到客户机的引导过程中。本指南没有提供通过 PXE 进行自动安装的信息。