本节包含与 Oracle VM Server for SPARC 3.4 软件有关的常见问题和特定错误。
错误号 23206413:在极少数情况下,成功迁移域时会报告以下错误:
Unable to send suspend request to domain domain-name
如果 Logical Domains Manager 在暂停域期间检测到错误,则会发生此问题,但 Logical Domains Manager 能够恢复并完成迁移。命令的退出状态为 0,表明已成功迁移。
解决方法:由于迁移成功完成,您可以忽略该错误消息。
错误号 23180427:当迁移具有大量虚拟设备的绑定域时,操作可能会失败并且会在 SMF 日志中写入以下消息:
warning: Timer expired: Failed to read feasibility response type (9) from target LDoms Manager
此故障表明在等待域绑定到目标计算机期间在源计算机上运行的 Logical Domains Manager 超时。迁移域中的虚拟设备数越多,遇到此问题的几率越大。
出现此故障时,会导致源计算机和目标计算机上同时存在域的绑定副本。请勿同时启动此域的两个副本。此操作可能会损坏数据,因为两个域引用相同的虚拟磁盘后端。
恢复方法:验证已迁移域的副本在目标计算机上正确无误后,手动解除源计算机上域副本的绑定并将其销毁。
错误号 23031413:当目标计算机的控制域在域迁移期间耗尽 LDC 时,迁移将失败并且会在 SMF 日志中写入以下消息:
warning: Failed to read feasibility response type (5) from target LDoms Manager
当迁移的域未能绑定到目标计算机时,系统会发出此错误。请注意,在目标计算机上绑定操作可能也会因其他原因而失败。
解决方法:要成功迁移,必须减少迁移域中或者目标计算机的控制域中的 LDC 数。您可以通过减少域使用或维护的虚拟设备数来减少 LDC 数。有关管理 LDC 的更多信息,请参见Oracle VM Server for SPARC 3.4 管理指南 中的 使用逻辑域通道。
错误号 23026264:从 Oracle VM Server for SPARC 3.4 开始,Logical Domains Manager 仅支持通过 TLS v1.2 或更高版本进行安全的域迁移。如果迁移所涉及的对等点无法使用 TLS v1.2,则迁移将失败并将显示以下错误消息:
Failed to establish connection with ldmd(1m) on target: target Check that the 'ldmd' service is enabled on the target machine and that the version supports Domain Migration. Check that the 'xmpp_enabled' and 'incoming_migration_enabled' properties of the 'ldmd' service on the target machine are set to 'true' using svccfg(1M).
仅支持在 Oracle VM Server for SPARC 软件的两个连续的次要版本之间进行域迁移。此问题不影响任何受支持的组合。然而,在 Oracle Solaris 10 OS 上运行的 Oracle VM Server for SPARC 软件默认情况下无法使用 TLS v1.2,因此无法通过 Oracle VM Server for SPARC 3.4 进行域迁移操作。
错误号 23025921:将来宾域迁移到运行 Logical Domains Manager 较早版本的系统,稍后又迁移到运行 Oracle VM Server for SPARC 3.4 的系统时,不会保留来宾域的 boot-policy 属性。
Oracle VM Server for SPARC 3.4 软件引入了 boot-policy 属性以支持验证的引导功能。较早版本的 Oracle VM Server for SPARC 软件不支持此属性,因此当将来宾域从运行 Oracle VM Server for SPARC 3.4 的系统迁移到运行 3.4 之前的 Oracle VM Server for SPARC 版本的系统时,boot-policy 属性会被删除。
稍后将来宾域迁移到运行 Oracle VM Server for SPARC 3.4 的系统时,会将 boot-policy 的默认值 warning 应用于迁移后的来宾域。
恢复方法:将来宾域迁移到运行 Oracle VM Server for SPARC 3.4 的目标系统后,手动将 boot-policy 属性设置为所需的值。如果默认值 warning 不合适,请执行此步骤。
设置 boot-policy=none。
primary# ldm set-domain boot-policy=none ldg1
重新引导来宾以使新引导策略生效。
错误号 21289174:在 SPARC 服务器上,Oracle VM Server for SPARC 域中某个正在运行的内核区域将阻止来宾域的实时迁移。将显示以下错误消息:
Guest suspension failed because Kernel Zones are active. Stop Kernel Zones and retry.
解决方法:请选择下列解决方法之一:
停止运行该内核区域。
# zoneadm -z zonename shutdown
暂停该内核区域。
# zoneadm -z zonename suspend
将内核区域实时迁移到其他系统,然后再迁移来宾域。
请参见Creating and Using Oracle Solaris Kernel Zones 中的 第 3 章, Migrating an Oracle Solaris Kernel Zone。
错误号 20453206:即使目标系统上的有效布局中有足够的内存,迁移操作仍可能失败。内存 DR 操作可能会增加来宾域迁移的难度。
解决方法:无。
错误号 17285751:迁移只分配有一个虚拟 CPU 的 Oracle Solaris 10 来宾域可能会导致在执行 pg_cmt_cpu_fini() 功能时来宾域中出现紧急情况。
请注意,在 Oracle Solaris 11.1 OS 中已修复此问题。
解决方法:在执行实时迁移之前至少向来宾域分配两个虚拟 CPU。例如,使用 ldm add-vcpu number-of-virtual-CPUs domain-name 命令增大分配给来宾域的虚拟 CPU 的数目。
错误号 16864417:尝试在 SPARC T5、SPARC M5 或 SPARC M6 服务器与 UltraSPARC T2 或 SPARC T3 服务器之间迁移时,即使失败 ldm migrate -n 命令也不会报告。
解决方法:无。
错误号 15819714:在极少情况下,ldm list -o status 命令在用于观察控制域上的迁移状态时报告错误的完成百分比。
此问题不影响正在迁移的域,也不影响源或目标控制域上的 ldmd 守护进程。
解决方法:在参与迁移以观察进度的其他控制域上运行 ldm list -o status 命令。
错误号 15776123:将来宾域迁移到 SPARC T4 服务器时,如果对该域运行 cputrack 命令,则迁移后目标计算机上的来宾域可能会出现紧急情况。
解决方法:在将来宾域迁移到 SPARC T4 服务器期间,不要运行 cputrack 命令。
错误号 15775055:在具有不同 CPU 频率的两台计算机之间迁移域后,ldm list 命令报告的运行时间可能不正确。出现这种不正确结果是因为运行时间是相对于运行该域的计算机的 STICK 频率来计算的。如果源计算机和目标计算机的 STICK 频率不同,运行时间的度量就会显得不正确。
此问题仅适用于 UltraSPARC T2、UltraSPARC T2 Plus 和 SPARC T3 服务器。
来宾域自身报告和显示的运行时间是正确的。此外,在来宾域中 Oracle Solaris OS 执行的任何记帐都是正确的。
错误号 15701865:如果尝试对依赖于目标计算机上的非活动域的域进行实时迁移,ldmd 守护进程将发生故障并具有分段故障,并且目标计算机上的域将重新启动。尽管迁移会成功,但在目标计算机上迁移后的域会出现计划外重新启动,这意味着并不是实时迁移。
解决方法:尝试实时迁移之前,执行以下操作之一:
删除与要迁移的域的来宾依赖关系。
启动目标计算机上的主域。
错误号 15701853:在 DRM 策略生效时执行域迁移后,如果 DRM 策略过期或将其从迁移后的域中删除,DRM 将无法为该域恢复原始数量的虚拟 CPU。
解决方法:如果在 DRM 策略有效时迁移域,并且随后 DRM 策略过期或被删除,请重置虚拟 CPU 的数量。使用 ldm set-vcpu 命令在域中将虚拟 CPU 的数量设置为原始值。
错误号 15696986:如果在两个相同的系统中向“相反方向”同时发出两个 ldm migrate 命令,这两个命令可能会挂起,永不会完成。如果启动了从计算机 A 到计算机 B 的迁移,同时又启动了从计算机 B 到计算机 A 的迁移,就会出现相反方向操作。
即使迁移过程是使用 –n 选项启动的模拟运行,也会导致挂起。出现此问题时,所有其他 ldm 命令均可能挂起。
解决方法:无。
错误号 15527921:在迁移期间,会忽略显式指定的任何控制台组和端口,而且会为目标域创建一个具有默认属性的控制台。此控制台是通过使用目标域名称作为控制台组并使用控制域中第一个虚拟控制台集中器 (vcc) 设备上的任意可用端口创建的。如果与默认组名有冲突,迁移将失败。
恢复:要在迁移之后恢复显式控制台属性,请解除对目标域的绑定,然后使用 ldm set-vcons 命令手动设置所需的属性。
错误号 15523120:在某些情况下,迁移会失败,ldmd 会报告它无法绑定源域所需的内存。即使目标计算机上的可用内存总量大于源域正在使用的内存量,也会出现此情况。
出现这种故障的原因是,迁移正由源域使用的特定内存范围需要目标上也有一致的可用内存范围。如果对于源域中的任何内存范围没有找到此类一致的内存范围,迁移将无法继续。请参见Oracle VM Server for SPARC 3.4 管理指南 中的 内存的迁移要求。
恢复:遇到这种情况时,可以修改目标计算机上的内存使用情况来迁移域。为此,请解除绑定目标上任何已绑定的或处于活动状态的逻辑域。
使用 ldm list-devices -a mem 命令可以查看可用的内存及其使用方式。您可能还需要减少指定给另一个域的内存量。
错误号 15513998:有时,在迁移域之后,无法连接到该域的控制台。
请注意,当迁移后的域运行 Oracle Solaris 11.3 之前的 OS 版本时,会发生此问题。
解决方法:重新启动 vntsd SMF 服务以允许连接到控制台:
# svcadm restart vntsd
此问题仅适用于 UltraSPARC T2、UltraSPARC T2 Plus 和 SPARC T3 服务器。
系统固件版本 8.4、9.1 和 XCP2230 引入了对 EFI GPT 磁盘标签的支持。默认情况下,在至少运行 Oracle Solaris 11.1 OS 的系统上安装的虚拟磁盘均具有 EFI GPT 磁盘标签。在早期版本的固件(例如 9.0.x、8.3、7.x 或 XCP2221)上无法找到此磁盘标签。此情况使得无法对运行无 EFI GPT 支持的系统固件版本的系统执行实时迁移或冷迁移。请注意,在这种情况下执行冷迁移也会失败,这与先前的限制不同。
要确定虚拟磁盘是否具有 EFI GPT 磁盘标签,请对原始设备运行 devinfo -i 命令。以下示例用于显示虚拟磁盘的磁盘标签是 SMI VTOC 还是 EFI GPT。
SMI VTOC 磁盘标签。如果虚拟磁盘具有 SMI VTOC 磁盘标签,则无论固件是否支持 EFI,均可以对固件执行迁移。
以下示例指示设备具有 VTOC 标签,因为 devinfo -i 命令报告了特定于设备的信息。
# devinfo -i /dev/rdsk/c2d0s2 /dev/rdsk/c2d0s2 0 0 73728 512 2
EFI GPT 磁盘标签。如果虚拟磁盘具有 EFI GPT 磁盘标签,则只能对具有 EFI 支持的固件执行迁移。
以下示例指示设备具有 EFI GPT 磁盘标签,因为 devinfo -i 命令报告了一个错误。
# devinfo -i /dev/rdsk/c1d0s0 devinfo: /dev/rdsk/c1d0s0: This operation is not supported on EFI labeled devices
本节总结了在使用此版本的软件时可能遇到的错误。最新的错误最先列出。如果有解决方法和恢复过程,则会提供。
错误号 23205662:由于某些 InfiniBand 卡使用的 PSIF 驱动程序存在限制,驱动程序不支持动态 IOV 操作,例如创建虚拟功能。此限制导致恢复模式无法恢复具有使用 PSIF 驱动程序的物理功能的非 primary 根域。由于缺乏对动态 IOV 操作的支持,物理功能将不会变为可以创建虚拟功能。
解决方法:请勿在非 primary 根域中使用 PSIF 驱动程序的 InfiniBand 物理功能上创建虚拟功能。
错误号 23170671:有时,创建虚拟功能后,虚拟功能和物理功能会处于无效状态。分配有此类虚拟功能的域无法绑定。如果在恢复模式期间发生此问题,则不会恢复虚拟功能处于无效状态的任何 I/O 域。
ldmd 日志将针对 IOVFC.PF1 物理功能显示类似于以下内容的消息:
Recreating VFs for PF /SYS/MB/PCIE2/IOVFC.PF0 in domain root_2 Recreating VFs for PF /SYS/MB/PCIE2/IOVFC.PF1 in domain root_2 Recreating VFs for PF /SYS/MB/NET2/IOVNET.PF0 in domain root_3 PF /SYS/MB/PCIE2/IOVFC.PF1 not ready (3) PF /SYS/MB/PCIE2/IOVFC.PF1 not ready (3) PF /SYS/MB/PCIE2/IOVFC.PF1 not ready (3) PF /SYS/MB/PCIE2/IOVFC.PF1 not ready (3)
恢复方法:如果您及时发现了此问题,可以在恢复模式继续重试物理功能时,重新启动 root_2 域中的 ldmd 代理,以便解决此问题。重新启动代理可以恢复使用物理功能的虚拟功能的 I/O 域。如果您未及时发现此问题,恢复操作将继续执行,但将无法恢复使用这些虚拟功能的 I/O 域。
错误号 23144895:Oracle VM Server for SPARC MIB 仅显示服务处理器 (service processor, SP) 配置表 (ldomSPConfigTable) 的出厂默认配置。
解决方法:要显示系统中 SP 配置的完整列表,请使用 ldm list-spconfig 或 list-spconfig XML 接口。
例如:
primary# ldm list-spconfig factory-default [next poweron] test_config
XML list-spconfig 将按如下方式进行响应:
<cmd> <action>list-spconfig</action> <data version="3.0"> <Envelope> <References/> <Section> <Item> <rasd:OtherResourceType>spconfig</rasd:OtherResourceType> <gprop:GenericProperty key="spconfig_name">factory-default</gprop:GenericProperty> <gprop:GenericProperty key="spconfig_status">next</gprop:GenericProperty> </Item> </Section> <References/> <Section> <Item> <rasd:OtherResourceType>spconfig</rasd:OtherResourceType> <gprop:GenericProperty key="spconfig_name">test_config</gprop:GenericProperty> </Item> </Section> ...
错误号 23024583:ovmtlibrary 命令将磁盘映像文件名限制为 50 个字符。ovmtlibrary 会检查 .ovf 文件并将 <ovf:References> 部分中的信息与解压缩磁盘的实际文件名进行比较。
如果文件不同或者如果磁盘映像文件名超过 50 字符,则会发出错误。例如:
# ovmtlibrary -c store -d "example" -q -o file:/template.ova -l /export/user1/ovmtlibrary_example event id is 3 ERROR: The actual disk image file name(s) or the actual number of disk image(s) is different from OVF file: template.ovf exit code: 1
以下示例 XML 显示一个长度超过 50 个字符的磁盘映像文件名:
<ovf:References> <ovf:File ovf:compression="gzip" ovf:href="disk_image.ldoms3.4_build_s11_u3_sru06_rti_02_kz_40G.img.gz" ovf:id="ldoms3" ovf:size="6687633773"/> </ovf:References>
解决方法:限制磁盘映像文件名的长度,使其少于 50 个字符。
错误号 22919488:如果在源域中 vdsdev 为同一域中的多个虚拟磁盘指定了相同名称,则 ovmtcreate 命令不支持从该源域创建模板。
此问题不太可能发生,因为具有多个虚拟磁盘的源域通常具有不同的后端设备,因此具有不同的文件名。然而,如果将 ovmtdeploy 与从源域创建的模板一起使用,在源域中 vdsdev 为多个虚拟磁盘指定了相同名称,则 ovmtdeploy 会失败并显示一条错误消息。例如:
# ovmtdeploy -d ldg1 template.ova ERROR: pigz: //ldg1/resources/disk_image.ldoms3.4_build_s11_u3_sru05_rti_01_kz_36G.img.gz does not exist -- skipping FATAL: Failed to decompress disk image
解决方法:为包含在相同域中的虚拟磁盘指定不同的 vdsdev 后端文件名。
错误号 22842188:为了使 linkprop=phys-state 在虚拟网络设备上受支持,Logical Domains Manager 必须能够验证虚拟网络设备连接到的虚拟交换机是否具有为虚拟交换机提供后备支持的物理 NIC。
必须在来宾域上运行 Oracle VM Server for SPARC netsvc 代理,以便可以查询虚拟交换机。
如果来宾域未处于活动状态,无法与虚拟网络设备的虚拟交换机所在的域中的代理通信,则虚拟网络设备不会设置 linkprop=phys-state。
解决方案:仅当域处于活动状态时才设置 linkprop=phys-state。
错误号 22828100:如果虚拟交换机已连接 linkprop=phys-state 的虚拟网络设备,则它们连接到的虚拟交换机必须具有通过 net-dev 属性指定的有效后备 NIC 设备。net-dev 属性值必须为有效网络设备的名称。
如果使用 net-dev= 执行此操作,则虚拟交换机将显示 linkprop=phys-state,即使 net-dev 属性值不是有效的 NIC 设备也是如此。
解决方法:首先,移除连接到虚拟交换机的所有虚拟网络设备,然后移除虚拟交换机。然后重新创建具有有效 net-dev 后备设备的虚拟交换机,并重新创建所有虚拟网络设备。
错误号 21616429:Oracle VM Server for SPARC 3.3 软件仅对 Fujitsu M10 服务器提供套接字支持。
在 Oracle SPARC 服务器以及 3.3 之前的 Oracle VM Server for SPARC 版本上运行的软件不能从 XML 文件重新创建具有套接字约束的域。
使用较早版本的 Oracle VM Server for SPARC 软件或在 Oracle SPARC 服务器中尝试从 XML 文件重新创建具有套接字约束的域会失败,并显示以下消息:
primary# ldm add-domain -i ovm3.3_socket_ovm11.xml socket not a known resource
如果在 Fujitsu M10 服务器上运行 Oracle VM Server for SPARC 3.2 并尝试从 XML 文件重新创建具有套接字约束的域,该命令将失败并显示不同的错误消息,如下所示:
primary# ldm add-domain -i ovm3.3_socket_ovm11.xml Unknown property: vcpus primary# ldm add-domain -i ovm3.3_socket_ovm11.xml perf-counters property not supported, platform does not have performance register access capability, ignoring constraint setting.
解决方法:通过编辑 XML 文件删除引用 socket 资源类型的所有部分。
错误号 21321166:使用的虚拟 SCSI HBA MPxIO 路径指向脱机服务域时,I/O 吞吐量会下降。
解决方法:在脱机服务域恢复运行之前,通过使用 mpathadm disable path 命令禁用指向该服务域的路径。
错误号 21188211:配置虚拟 SCSI HBA 后,如果在虚拟 SAN 中添加或移除 LUN,ldm rescan-vhba 命令有时不显示新的 LUN 视图。
解决方法:移除虚拟 SCSI HBA,然后重新添加。检查是否显示 LUN。如果移除再重新添加操作不成功,则必须重新引导来宾域。
错误号 20876502:从属于虚拟 SCSI HBA MPxIO 来宾域配置的服务域拔出 SAN 电缆会导致 mpathadm 输出的 "Path State"(路径状态)列显示错误的值。
解决方法:插入 SAN 电缆,并对连接了电缆的服务域中的所有虚拟 SCSI HBA 运行 ldm rescan-vhba 命令。执行此解决方法后,来宾域应恢复执行 I/O 操作。
错误号 20425271:在进入 factory-default 后触发恢复过程中,如果系统引导设备不是以前活动配置中的引导设备,则恢复模式将失败。如果活动配置使用的引导设备不是 factory-default 引导设备,则可能发生此故障。
解决方法:在需要将新配置保存到 SP 时,执行以下步骤:
确定到 primary 域的引导设备的完全 PCI 路径。
在步骤 4 中将此路径用于 ldm set-var 命令。
从 primary 域中删除任何当前设置的 boot-device 属性。
仅当 boot-device 属性设置了值时才需要执行此步骤。如果该属性未设置任何值,则试图删除 boot-device 属性将导致 boot-device not found 消息。
primary# ldm rm-var boot-device primary
将当前配置保存到 SP。
primary# ldm add-spconfig config-name
显式设置 primary 域的 boot-device 属性。
primary# ldm set-var boot-device=value primary
如果在按所述将配置保存到 SP 后再设置 boot-device 属性,则会在触发恢复模式时引导指定的引导设备。
恢复:如果恢复模式已如所述失败,请执行以下步骤:
将引导设备显式设置为上次运行配置时所用的引导设备。
primary# ldm set-var boot-device=value primary
重新引导 primary 域。
primary# reboot
通过重新引导可让恢复继续。
错误号 20046234:启用 MPxIO 后,虚拟 SCSI HBA 和光纤通道 SR-IOV 设备可查看来宾域中的相同 LUN 时,可能会出现紧急情况。如果将光纤通道 SR-IOV 卡从来宾域移除,再重新添加,则会出现紧急情况。
解决方法:当光纤通道 SR-IOV 和虚拟 SCSI HBA 都启用 MPxIO 时,不要在来宾域中配置这两者。
错误号 19932842:尝试从来宾域设置 OBP 变量时,如果使用 eeprom 或 OBP 命令时以下命令之一未完成,则设置可能会失败:
ldm add-spconfig
ldm remove-spconfig
ldm set-spconfig
ldm bind
如果这些命令完成的时间超过 15 秒,则可能发生此问题。
# /usr/sbin/eeprom boot-file\=-k promif_ldom_setprop: promif_ldom_setprop: ds response timeout eeprom: OPROMSETOPT: Invalid argument boot-file: invalid property
恢复:在 ldm 操作完成后重试 eeprom 或 OBP 命令。
解决方法:在受影响的来宾域上重试 eeprom 或 OBP 命令。也许可通过在 primary 域上使用 ldm set-var 命令来避免该问题。
错误号 19449221:一个域拥有的虚拟网络设备 (vnet) 数量不能超过 999 个。
解决方法:将一个域上的 vnet 数量限制为 999 个。
错误号 18001028:在根域中,光纤通道虚拟功能的 Oracle Solaris 设备路径不正确。
例如,不正确的路径名为 pci@380/pci@1/pci@0/pci@6/fibre-channel@0,2,应当为 pci@380/pci@1/pci@0/pci@6/SUNW,emlxs@0,2。
ldm list-io -l 输出显示了光纤通道虚拟功能的正确设备路径。
解决方法:无。
错误号 16979993:尝试对 InfiniBand 设备使用动态 SR-IOV 移除操作导致显示令人困惑和不合适的错误消息。
InfiniBand 设备不支持动态 SR-IOV 移除操作。
解决方法:通过执行以下过程之一移除 InfiniBand 虚拟功能:
Oracle VM Server for SPARC 3.4 管理指南 中的 如何从 I/O 域删除 InfiniBand 虚拟功能
Oracle VM Server for SPARC 3.4 管理指南 中的 如何从根域删除 InfiniBand 虚拟功能
错误号 16691046:如果从根域分配虚拟功能,I/O 域在以下热插拔情况下可能无法提供复原:
向根域添加一个根联合体(PCIe 总线),然后创建虚拟功能并将其分配给 I/O 域。
在拥有根联合体的根域中热添加一个 SR-IOV 卡,然后创建虚拟功能并将其分配给 I/O 域。
更换根域所拥有的根联合体中的任何 PCIe 卡或向其空插槽中添加任何 PCIe 卡(无论是通过热插拔还是在根域停止时)。此根域会将根联合体中的虚拟功能提供给 I/O 域。
解决方法:执行以下步骤之一:
如果根联合体已向 I/O 域提供了虚拟供并且您在该根联合体中添加、移除或更换了任何 PCIe 卡(无论是通过热插拔还是在根域停止时),必须重新引导根域和 I/O 域。
如果根联合体当前未向 I/O 域分配虚拟功能并且您向该根联合体添加了 SR-IOV 卡或其他任何 PCIe 卡,您必须停止根域,才能添加 PCIe 卡。重新引导根域后,可以将该根联合体中的虚拟功能分配给 I/O 域。
如果要向根域添加新的 PCIe 总线,然后从该总线创建虚拟功能并将其分配给 I/O 域,请执行以下步骤之一并重新引导该根域:
在延迟重新配置期间添加总线
动态添加总线
错误号 16659506:来宾域在 primary 域重新引导后处于过渡状态 (t)。当在系统上配置了大量的虚拟功能时会出现此问题。
解决方法:要避免此问题,请多次重试 OBP 磁盘引导命令以避免从网络引导。
在每个域上执行以下步骤:
访问域的控制台。
primary# telnet localhost 5000
设置 boot-device 属性。
ok> setenv boot-device disk disk disk disk disk disk disk disk disk disk net
您作为 boot-device 属性的值指定的 disk 条目数取决于在系统上配置的虚拟功能数目。在较小的系统上,您可能能够在该属性值中包括较少的 disk 实例。
使用 printenv 验证是否已正确设置了 boot-device 属性。
ok> printenv
返回到 primary 域控制台。
为系统上的每个域重复步骤 1-4。
重新引导 primary 域。
primary# shutdown -i6 -g0 -y
错误号 16284767:在附加 I/O 设备驱动程序时,Oracle Solaris 控制台指出中断供应已耗尽:
WARNING: ddi_intr_alloc: cannot fit into interrupt pool
此限制仅适用于 SPARC M7 系列服务器和 SPARC T7 系列服务器之前的受支持 SPARC 系统。
硬件提供了有限数目的中断,因此,Oracle Solaris 会限制每个设备可以使用多少次中断。默认限制设计为与典型系统配置的需求相匹配,不过,对于某些系统配置,可能需要调整此限制。
特别是以下情况下可能需要调整此限制:当系统划分为多个逻辑域并且当向任意来宾域分配了太多的 I/O 设备时。Oracle VM Server for SPARC 会将总的中断划分为分配给各个来宾域的较小中断集。如果向某个来宾域分配了太多的 I/O 设备,则系统的供应可能太少以致于无法向每个设备分配默认的中断限制。因此,它在完全附加所有驱动程序之前会耗尽其供应。
某些驱动程序提供了一个可选的回调例程,该例程允许 Oracle Solaris 自动调整其中断。默认限制不适用于这些驱动程序。
解决方法:使用 ::irmpools 和 ::irmreqs MDB 宏来确定如何使用中断。::irmpools 宏显示划分为池的总体中断供应。::irmreqs 宏显示哪些设备映射到每个池。对于每个设备,::irmreqs 显示是否由一个可选的回调例程强制执行默认限制、每个驱动程序请求了多少中断,以及为驱动程序分配了多少中断。
这些宏不显示有关无法附加的驱动程序的信息。不过,所显示的信息有助于计算您可以将默认限制调整到的范围。对于使用了多个中断且没有提供回调例程的任何设备,都可以通过调整默认限制来强制其使用较少的中断。将默认限制降低到这样的设备使用的数量以下可以释放一些中断供其他设备使用。
要调整默认限制,请在 /etc/system 文件中将 ddi_msix_alloc_limit 属性设置为从 1 到 8 的某个值。然后,重新引导系统以使更改生效。
为了最大限度地提高性能,请先分配较大的值,然后以较小的增量减小该值,直至系统成功引导且不出现任何警告。可使用 ::irmpools 和 ::irmreqs 宏来度量调整对所附加的所有驱动程序的影响。
例如,假设在引导来宾域中的 Oracle Solaris OS 时发出了以下警告:
WARNING: emlxs3: interrupt pool too full. WARNING: ddi_intr_alloc: cannot fit into interrupt pool
::irmpools 和 ::irmreqs 宏显示以下信息:
# echo "::irmpools" | mdb -k ADDR OWNER TYPE SIZE REQUESTED RESERVED 00000400016be970 px#0 MSI/X 36 36 36 # echo "00000400016be970::irmreqs" | mdb -k ADDR OWNER TYPE CALLBACK NINTRS NREQ NAVAIL 00001000143acaa8 emlxs#0 MSI-X No 32 8 8 00001000170199f8 emlxs#1 MSI-X No 32 8 8 000010001400ca28 emlxs#2 MSI-X No 32 8 8 0000100016151328 igb#3 MSI-X No 10 3 3 0000100019549d30 igb#2 MSI-X No 10 3 3 0000040000e0f878 igb#1 MSI-X No 10 3 3 000010001955a5c8 igb#0 MSI-X No 10 3 3
在此示例中,默认限制是每个设备八个中断,此中断限制不足以支持将最后的 emlxs3 设备附加到系统。假设所有 emlxs 实例的行为方式相同,则 emlxs3 可能请求了 8 个中断。
从总的池大小 36 个中断中减去由所有 igb 设备使用的 12 个中断,还剩下 24 个中断可供 emlxs 设备使用。将 24 个中断除以 4,这表明每个设备 6 个中断将能够使所有 emlxs 设备都可以附加,且具有相同的性能。因此,在 /etc/system 文件中添加以下调整:
set ddi_msix_alloc_limit = 6
当系统成功引导且未出现任何警告时,::irmpools 和 ::irmreqs 宏会显示以下更新的消息:
# echo "::irmpools" | mdb -k ADDR OWNER TYPE SIZE REQUESTED RESERVED 00000400018ca868 px#0 MSI/X 36 36 36 # echo "00000400018ca868::irmreqs" | mdb -k ADDR OWNER TYPE CALLBACK NINTRS NREQ NAVAIL 0000100016143218 emlxs#0 MSI-X No 32 8 6 0000100014269920 emlxs#1 MSI-X No 32 8 6 000010001540be30 emlxs#2 MSI-X No 32 8 6 00001000140cbe10 emlxs#3 MSI-X No 32 8 6 00001000141210c0 igb#3 MSI-X No 10 3 3 0000100017549d38 igb#2 MSI-X No 10 3 3 0000040001ceac40 igb#1 MSI-X No 10 3 3 000010001acc3480 igb#0 MSI-X No 10 3 3
错误号 16068376:在具有大约 128 个域的 SPARC T5-8 服务器上,诸如 ldm list 之类的 ldm 命令会将所有域的运行时间显示为 0 秒。
解决方法:登录到域并使用 uptime 命令来确定域的运行时间。
错误号 15812823:在可用内存较少的情况下,由于内存大小的原因并非所有内存块都可以用作内存 DR 操作的一部分。但是,这些内存块都包括在可用内存量中。这种情况可能会导致向域中添加的内存量小于所预期的。如果发生这种情况,不显示任何错误消息。
解决方法:无。
错误号 15783031:当使用 ldm init-system 命令恢复已使用了直接 I/O 或 SR-IOV 操作的域时,可能会遇到问题。
如果已对要恢复的配置执行了下列一个或多个操作,则会出现问题:
从总线中移除了仍归 primary 域拥有的一个插槽。
基于 primary 域拥有的物理功能创建了虚拟功能。
向 primary 域或其他来宾域(或两者)分配了虚拟功能。
从 primary 域中删除了一个根联合体并将其分配给了来宾域,并且该根联合体用作进一步 I/O 虚拟化操作的基础。
换句话说,您创建了非 primary 根域并执行了任何上述操作。
要确保系统保持在未发生上述任何操作的状态下,请参见 Using the ldm init-system Command to Restore Domains on Which Physical I/O Changes Have Been Made (https://support.oracle.com/epmos/faces/DocumentDisplay?id=1575852.1)(使用 ldm init-system 命令恢复已执行了物理 I/O 更改的域)。
错误号 15775637:I/O 域限制每个根联合体的可用中断资源数。
在 SPARC T3 和 SPARC T4 服务器上,该限制大约为 63 个 MSI/X 向量。每个 igb 虚拟功能使用三个中断。ixgbe 虚拟功能使用两个中断。
如果向域分配大量虚拟功能,该域将耗尽系统资源来支持这些设备。可能会显示类似如下的消息:
WARNING: ixgbevf32: interrupt pool too full. WARNING: ddi_intr_alloc: cannot fit into interrupt pool
错误号 15771384:如果在绑定控制台期间或之前重复尝试连接到控制台,则域的来宾控制台可能会冻结。例如,如果您在正在向计算机迁移某个域时使用自动化脚本来抓取控制台,则可能会发生此情况。
解决方法:要解除冻结控制台,请在承载着该域的控制台集中器的域上(通常为控制域)执行以下命令:
primary# svcadm disable vntsd primary# svcadm enable vntsd
错误号 15761509:只使用支持直接 I/O (Direct I/O, DIO) 功能的 PCIe 卡,在此支持文档 (https://support.us.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx?id=1325454.1) 中列出了这类卡。
解决方法:使用 ldm add-io 命令重新向 primary 域添加卡。
错误号 15759601:如果在 ldm start 命令后立即发出 ldm stop 命令,ldm stop 命令可能会失败,并显示以下错误:
LDom domain-name stop notification failed
解决方法:重新发出 ldm stop 命令。
错误号 15748348:primary 域与其他域共享最低物理核心(通常为 0)时,尝试为 primary 域设置整体核心约束失败。
解决方法:执行以下步骤:
确定域共享的最低绑定核心。
# ldm list -o cpu
从除 primary 域之外的所有域解除绑定最低核心的所有 CPU 线程。
因此,最低核心的 CPU 线程不再共享,可以绑定到 primary 域。
通过执行以下操作之一设置整体核心约束:
通过使用 ldm set-vcpu -c 命令将 CPU 线程绑定到 primary 域并设置整体核心约束。
使用 ldm set-core 命令在一个步骤中绑定 CPU 线程并设置整体核心约束。
错误号 15701853:如果已装入域的 DRM 策略在 CPU 计数大幅减少后过期,Oracle VM Server for SPARC 日志中可能会出现 No response 消息。ldm list 输出中显示的分配给域的 CPU 资源多于 psrinfo 输出中显示的数量。
解决方法:使用 ldm set-vcpu 命令将域中的 CPU 数重置为 psrinfo 输出中显示的值。
错误号 15668368:可以在 SPARC T3-1 服务器上安装双端口磁盘,这些磁盘可通过两个不同的直接 I/O 设备访问。在这种情况下,如果将这两个直接 I/O 设备分配给不同的域,可能会导致这些磁盘供这两个域使用并在实际使用当中相互影响。
解决方法:不将能够访问同一组磁盘的直接 I/O 设备指定给不同的 I/O 域。要确定 SPARC T3-1 服务器上是否有双端口磁盘,请对 SP 运行以下命令:
-> show /SYS/SASBP
如果输出中包含以下 fru_description 值,则说明相应的系统上有双端口磁盘:
fru_description = BD,SAS2,16DSK,LOUISE
如果发现系统中存在双端口磁盘,请确保始终将下面的两个直接 I/O 设备分配给同一个域:
pci@400/pci@1/pci@0/pci@4 /SYS/MB/SASHBA0 pci@400/pci@2/pci@0/pci@4 /SYS/MB/SASHBA1
错误号 15664666:在创建了重置依赖关系之后,ldm stop -a 命令可能会导致具有重置依赖关系的域重新启动(而不只是停止)。
解决方法:首先向主域发出 ldm stop 命令,然后向从域发出 ldm stop 命令。如果最初停止从域时导致故障,请向从域发出 ldm stop -f 命令。
错误号 15600969:如果从正在运行的域中动态删除所有的硬件加密单元,加密框架将无法无缝地切换到软件加密提供程序,而且会中止所有 ssh 连接。
此问题仅适用于 UltraSPARC T2、UltraSPARC T2 Plus 和 SPARC T3 服务器。
恢复:在从域中删除所有的加密单元之后,重新建立 ssh 连接。
解决方法:在服务器端上的 /etc/ssh/sshd_config 文件中设置 UseOpenSSLEngine=no,然后运行 svcadm restart ssh 命令。
所有 ssh 连接将不再使用硬件加密单元(因此也无法获得相关的性能提升),ssh 连接不会在删除加密单元后断开。
错误号 15572184:当多个域正在引导时,ldm 命令可能很慢,无法响应。如果在该阶段发出 ldm 命令,该命令可能看起来处于挂起状态。请注意,在执行预期的任务之后,ldm 命令将返回。在该命令返回之后,系统应当能够正常响应 ldm 命令。
解决方法:避免同时引导许多域。但是,如果您必须同时引导多个域,请避免在系统恢复到正常状态之前进一步发出 ldm 命令。例如,在 Sun SPARC Enterprise T5140 和 T5240 服务器上等待两分钟左右,在 Sun SPARC Enterprise T5440 服务器或 Sun Netra T5440 服务器上等待四分钟左右。
错误号 15518409:如果您的计算机上运行有网络信息服务 (Network Information Service, NIS) 客户机,但未配置网络,则 Logical Domains Manager 将无法在您的系统上启动。
解决方法:在非联网计算机上禁用 NIS 客户机:
# svcadm disable nis/client
错误号 15453968:在共用同一个控制台组的系统上同时进行的多个来宾域的网络安装失败。
解决方法:仅在拥有其各自控制台组的来宾域上进行网络安装。只有在多个网络安装域之间共享一个公用控制台组的域上才会出现这种失败情况。
错误号 15370442:在 Logical Domains 环境中,不支持从 Oracle Solaris OS 内使用 ickey(1M) 命令设置或删除广域网 (wide-area network, WAN) 引导密钥。所有的 ickey 操作都会失败并出现以下错误:
ickey: setkey: ioctl: I/O error
另外,在逻辑域(而不是控制域)中使用 OpenBoot 固件设置的 WAN 引导密钥在该域重新引导之后不会被记住。在这些域中,从 OpenBoot 固件设置的密钥只能使用一次。
错误号 15368170:在某些情况下,ldm stop-domain 命令的行为会令人困惑。
# ldm stop-domain -f domain-name
如果域位于内核模块调试器 kmdb(1) 提示符下,则 ldm stop-domain 命令会失败并出现以下错误消息:
LDom <domain-name> stop notification failed
本节包含因发现过晚而无法在 Oracle VM Server for SPARC 3.4 发行版中解决的文档问题和错误。
ldm(1M) 手册页未提到,在使用 ldm set-domain 命令更改 boot-policy 属性值之后必须重新引导活动域。
有关 boot-policy 属性的描述已更新,现在包含以下这段文字:
如果更改 boot-policy 值时域处于活动状态,必须重新引导域才能使更改生效。
此外,“设置域选项”一节的第一段现在提到了 boot-policy 属性名称:
set-domain 子命令只允许您修改每个域的 boot-policy、mac-addr、hostid、failure-policy、extended-mapin-space、master 和 max-cores 属性。您无法使用此命令更新资源属性。
ldmd(1M) 手册页显示不正确的 SMF 属性名称 ldmd/fj-ppar-dr-policy。正确的属性名称为 ldmd/fj_ppar_dr_policy。