7.4. 自动安装 Hypervisor(高级方法)
本节介绍了 Red Hat Enterprise Virtualization Hypervisors 的内核命令行参数,使用它们可以自动化安装的过程。
使用本章中介绍的方法,通过 PXE 服务器可以在不需要手工访问系统的情况下部署多个 Hypervisor。
在进行自动化部署前,请确认您已经了解了这些参数的用法,以及它们将会产生的影响。当系统被配置为通过 PXE 自动引导时,这些参数可能会删除已经存在的系统上的数据。
7.4.1. 内核参数如何工作 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下介绍了 Red Hat Enterprise Virtualization Hypervisor 启动的步骤。了解这些信息可以帮助您在自动化安装过程中排除故障。
- ovirt-early 服务在
/etc/default/ovirt文件中设置存储、网络和管理参数。这些参数由在引导过程中传递给 Hypervisor 的内核参数所决定。 - 根据在内核命令行或 TUI 安装时设置的参数,
/etc/init.d/ovirt-firstboot脚本会决定要执行的安装类型。
7.4.2. 所需参数 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要进行一个安装,最少需要以下参数:
- 根据您要进行安装(或重新安装)的类型,需要以下参数之一:
install:开始一个安装(即使已存在一个安装)。reinstall:删除当前的安装,开始一个全新安装。upgrade:对存在的安装进行升级。
storage_init参数,用来初始一个本地存储设备。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
storage_init=usbCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对于 SCSI 硬盘,使用
scsi参数。例如:storage_init=scsi
storage_init=scsiCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对于 ATA 总线上的硬盘设备(包括可能也会出现在 SCSI 总线上的 SATA 硬盘设备),使用
ata参数。例如:storage_init=ata
storage_init=ataCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 或者,使用 Linux 设备名作为
storage_init参数来指定存储设备。以/dev/disk/by-id格式代表的设备名不被支持。storage_init参数的格式必须是/dev/mapper/disk或/dev/disk。在这个示例中,所指定的设备是/dev/sda:storage_init=/dev/sda
storage_init=/dev/sdaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当为storage_init指定usb、scsi或ata参数时,也可以添加一个序列号来明确指定使用哪个设备。按照以下示例中的方法找到附加到系统中的设备的序列号:例 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$ 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_6VE867X1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在同时指定存储类型和序列号时,这两个值需要以冒号(:)分隔。例如:storage_init=ata:3600508b100104a3953545233304c0003
storage_init=ata:3600508b100104a3953545233304c0003Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
在系统重启时,并不能保证设备名的一致性,设备名可能会有所改变。 storage_volstorage_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 的内容来决定交换分区的大小。使用以上文档中介绍的公式的计算结果,并加上额外的、可以满足过度分配率功能的存储(内存数量乘以过度分配率)。
推荐的交换空间 + (内存 * 过度分配率) = 交换分区大小
推荐的交换空间 + (内存 * 过度分配率) = 交换分区大小Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果不为它输入任何值,系统会为交换分区设置一个推荐的值。 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
storage_vol=BOOT:SWAP:ROOT:CONFIG:LOGGING:DATACopy to Clipboard Copied! Toggle word wrap Toggle overflow 但是,因为 Boot 分区和 Root 分区不能被重新配置,所有它们可以被省略。如:storage_vol=:SWAP::CONFIG:LOGGING:DATA
storage_vol=:SWAP::CONFIG:LOGGING:DATACopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有指定分区的大小,所创建分区的大小会是默认的值。如要设置一个 256MB Swap 分区和一个 4096MB Logging 分区,它的格式将是:storage_vol=:256:::4096:
storage_vol=:256:::4096:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下是storage_vol参数的标准格式:storage_vol=256,EFI:256,Root:4096,Swap
storage_vol=256,EFI:256,Root:4096,SwapCopy to Clipboard Copied! Toggle word wrap Toggle overflow iscsi_nameiscsi_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
iscsi_name=iqn.2011-07.com.redhat.demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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
BOOTIF=eth0Copy to Clipboard Copied! Toggle word wrap Toggle overflow <MAC>- 使用在括号中明确指定的 MAC 地址。
ipip参数用来设置由BOOTIF参数定义的网络接口控制器的 IP 地址。ip参数可以是一个 IP 地址(格式是 0.0.0.0),也可以是dhcp。ip=192.168.1.1
ip=192.168.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ip=dhcp
ip=dhcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow ipv6ipv6参数是ip参数的一个别名。它可以是dhcp或auto。netmasknetmask参数设置了由ip参数定义的 IP 地址的子网掩码。netmask=255.255.255.0
netmask=255.255.255.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow gatewaygateway参数用来设置互联网网关。gateway=192.168.1.246
gateway=192.168.1.246Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnsdns参数用来设置最多两个 DNS 服务器。不同 DNS 服务器的地址由逗号分隔。dns=192.168.1.243,192.168.1.244
dns=192.168.1.243,192.168.1.244Copy to Clipboard Copied! Toggle word wrap Toggle overflow hostnamehostname参数用来设置主机名。它需要是一个可解析的完全限定域名。hostname=rhev1.example.com
hostname=rhev1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow ntpntp参数用来设置一个或多个网络时间协议(Network Time Protocol,简称 NTP)服务器。不同的 NTP 服务器地址由逗号分隔。ntp=192.168.2.253,192.168.2.254
ntp=192.168.2.253,192.168.2.254Copy to Clipboard Copied! Toggle word wrap Toggle overflow vlanvlan参数用来设置连接到 Red Hat Enterprise Virtualization Manager 的网络的 VLAN ID。当使用 VLAN 时,需要设置这个参数。vlan=vlan-id:
vlan=vlan-id:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:vlan=36:
vlan=36:Copy to Clipboard Copied! Toggle word wrap Toggle overflow bondbond参数用来设置网络绑定。不同的接口名需要以逗号分隔。BOOTIF=bond01 bond=bond01:nic1,nic2
BOOTIF=bond01 bond=bond01:nic1,nic2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.5. Red Hat Network(RHN)参数 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
这些参数被用来在 Red Hat Network(RHN) 中注册 hypervisor 主机。您最少需要指定
rhn_activationkey 参数,或者 rhn_username 和 rhn_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_usernamerhn_username参数指定了连接到 RHN 所使用的用户的用户名。rhn_username=testuser
rhn_username=testuserCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhn_passwordrhn_password参数指定了用来连接到 RHN 所使用的用户的密码。rhn_password=testpassword
rhn_password=testpasswordCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhn_activationkeyrhn_activationkey参数用来设置用来连接到 RHN 的激活码。激活码可以被用来注册系统,使它们获得一个 RHN 服务级别,或订阅到特定的频道和系统组。如果同时指定了rhn_activationkey和rhn_username,rhn_activationkey的值将会被使用。rhn_activationkey=7202f3b7d218cf59b764f9f6e9fa281b
rhn_activationkey=7202f3b7d218cf59b764f9f6e9fa281bCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhn_org- 这个参数只在设置了 SAM 时使用。把系统注册到 SAM 的方式和在内核命令行中使用
rhn_activationkey参数时的--org org_name --activationkey key_value相同。rhn_org=org_name
rhn_org=org_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhn_urlrhn_url指定注册主机所需的 satellite 服务器的 URL。rhn_url=https://satellite.example.com
rhn_url=https://satellite.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhn_ca_certrhn_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_ca_cert=https://satellite.example.com/pub/RHN-ORG-TRUSTED-SSL-CERTCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhn_profilerhn_profile参数设置主机在 RHN 中注册的档案的名称。它的默认值是系统的主机名。rhn_profile=testhost
rhn_profile=testhostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.6. 用户验证参数 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
adminpwadminpw参数被用来设置admin用户的密码。这里提供的值必须已经经过哈希处理。影子密码机制支持所有的哈希。对密码进行哈希操作的推荐方法是运行以下命令:openssl passwd -1
# openssl passwd -1Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl命令会提示输入使用的密码。一个经过哈希处理的密码会被返回,您可以使用它作为adminpw的值。rootpwrootpw参数被用来设置临时的root密码。当root第一次登录后,系统会强制要求更改密码。这个参数的值也必须经过哈希处理,影子密码机制所支持的哈希在这里都被支持。对密码进行哈希操作的推荐方法是运行以下命令:openssl passwd -1
# openssl passwd -1Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl命令会提示输入使用的密码。一个经过哈希处理的密码会被返回,您可以使用它作为rootpw的值。重要
在默认情况下,root密码没有设定。除非红帽的技术支持人员要求启用它,这个密码也不被支持。rhevm_admin_passwordrhevm_admin_password参数被用来设置root用户的密码,并启用 SSH 密码验证功能。这里提供的值必须已经经过哈希处理。影子密码机制支持所有的哈希。对密码进行哈希操作的推荐方法是运行以下命令:openssl passwd -1
# openssl passwd -1Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl命令会提示输入使用的密码。一个经过哈希处理的密码会被返回,您可以使用它作为rhevm_admin_password的值。重要
设置这个参数会有一个副作用,就是 SSH 密码验证功能会被启用。而除非在红帽技术支持人员要求启用它的情况下,这个功能并不被支持。我们推荐您在初始配置完成后禁用 SSH 密码验证功能。ssh_pwauthssh_pwauth参数被用来指定是否为 SSH 连接启用密码验证功能。它的有效值是0(禁用)、1(启用),而它的默认值是0。ssh_pwauth=1
ssh_pwauth=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要
在默认情况下,SSH 密码验证功能被禁用。除非红帽的技术支持人员要求启用它,这个功能也不被支持。
7.4.7. 其它参数 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
firstbootfirstboot参数被用来指定系统是否被认为没有已存在的安装。reinstall参数是firstboot参数的一个别名,它与firstboot可以相互替换使用。警告
当系统上存在一个名为HostVG的卷组时,使用firstboot参数会删除其中的数据。当firstboot参数和storage_init参数一起使用时,storage_init指定的磁盘上的数据都会被删除。installinstall参数被用来指定系统是否可以被认为没有已存在的安装。当需要通过 CD-ROM、DVD、USB 或 PXE 引导时,可以使用install参数。cim_enabled- 启用通用信息模型(Common Information Model,简称 CIM)管理架构。
cim_passwd- 配置 CIM 管理架构的密码。
disable_aes_ni- 禁用 AES-NI 加密。可能的值是
y或n。 kdump_nfs- 这个参数被用来为 kdump 配置一个 NFS 服务器。它的格式是
kdump_nfs=hostname:nfs_share_path。例如:kdump_nfs=nfshost.redhat.com:/path/to/nfs/share。 local_bootlocal_boot参数是upgrade参数的一个别名。local_boot_trigger- 在安装成功完成后,检查这个参数所设置的目标 URL 并禁用 PXE,从而使系统通过磁盘进行以后的引导。
netconsolenetconsole参数设置用来记录内核信息日志的服务器地址。netconsole参数可以是一个 IP 地址,或一个完全限定域名,以及一个可选的端口号(默认端口号是 6666)。netconsole=rhev.example.com:6666
netconsole=rhev.example.com:6666Copy to Clipboard Copied! Toggle word wrap Toggle overflow nfsv4_domainnfsv4_domain参数指定 NFSv4 使用的一个域。nocheck- 如果安装介质没有存在于本地或它的访问速度较慢,对安装 ISO 进行 MD5 检查会消耗大量时间。使用
nocheck参数会跳过对安装 ISO 文件进行 MD5 检查这一步。 management_servermanagement_server参数指定 Red Hat Enterprise Virtualization Manager 的地址。management_server参数可以是一个 IP 地址,或一个完全限定域名,以及一个可选的端口号(默认端口号是 443)。management_server=rhev.example.com:443
management_server=rhev.example.com:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow mem_overcommitmem_overcommit参数指定用来计算支持内存过度分配功能所需的额外交换空间的乘数。默认的过度分配值是 0.5。mem_overcommit=0.7
mem_overcommit=0.7Copy to Clipboard Copied! Toggle word wrap Toggle overflow qemu_pxeqemu_pxe参数指定虚拟机要使用哪个网络引导加载程序,它的值可以是gpxe或etherboot。qemu_pxe=gpxe
qemu_pxe=gpxeCopy to Clipboard Copied! Toggle word wrap Toggle overflow reinstallreinstall参数被用来指定系统是否被认为没有已存在的安装。firstboot参数是reinstall参数的一个别名,它与reinstall可以相互替换使用。警告
当系统上存在一个名为HostVG的卷组时,使用reinstall参数会删除其中的数据。当reinstall参数和storage_init参数一起使用时,storage_init指定的磁盘上的数据都会被删除。snmp_password- 启用 SNMP(Simple Network Management Protocol)并为它设置一个密码。
syslog- 在指定的地址上配置一个 rsyslog 服务器。您也可以指定一个端口。它的格式是
syslog=hostname[:port]。 upgradeupgrade参数会把存在的虚拟机管理程序(hypervisor) 镜像升级到引导介质所提供的版本。虚拟机管理程序会被自动升级,并在升级完成后重启。如果一个虚拟机管理程序的镜像还没有被安装,这个镜像将会被安装到storage_init参数所指定的设备上。在进行升级时,以前的引导项会被保存为grub.conf文件的 BACKUP。如果升级后的重启操作失败, BACKUP 引导项会被自动设置为新的默认选择。uninstalluninstall参数会删除已存在的 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
:linux storage_init=/dev/sda storage_vol=::::: local_boot BOOTIF=eth0 management_server=rhevm.example.com netconsole=rhevm.example.com
注意
内核参数可以通过网络 PXE 附加到客户机的引导过程中。本指南没有提供通过 PXE 进行自动安装的信息。