Oracle® VM Server for SPARC 3.3 发行说明

退出打印视图

更新时间: 2015 年 10 月
 
 

常见问题

本节介绍此发行版 Oracle VM Server for SPARC 软件中常见的已知问题,这些问题比具有特定错误号的问题广泛。如果有解决方法,则会提供。

取消迁移后,目标系统上运行的 ldm 命令会暂时无响应

如果取消实时迁移,目标计算机上创建的域实例的内存内容必须由虚拟机管理程序进行“清理”。此清理过程是出于安全原因而执行的,必须先完成该过程,然后内存才能返回到可用内存池。执行此清理时,ldm 命令变为不响应。因此,Logical Domains Manager 看起来处于挂起状态。

恢复:必须等待此清理请求完成,然后才能尝试运行其他 ldm 命令。此过程可能要花费较长时间。例如,具有 500 GB 内存的来宾域在 SPARC T4 服务器上可能最多花费 7 分钟完成此过程,在 SPARC T3 服务器上可能最多花费 25 分钟完成此过程。

SPARC M5-32 和 SPARC M6-32:可通过多个直接 I/O 路径访问的磁盘会出现问题

 

使用 ldm add-vcpu 命令为域分配 CPU 时,Oracle Solaris OS 可能会出现紧急情况,并显示以下消息:

panic[cpu16]/thread=c4012102c860: mpo_cpu_add: Cannot read MD

    如果存在以下情况,会出现此紧急情况:

  • 为主机分配了额外的 DCU

  • 主机是使用之前保存的 SP 配置启动的,该配置中未包含分配给该主机的所有硬件

ldm add-vcpu 操作的目标域将会出现紧急情况。如果该域有额外的 CPU,则重新引导时将会恢复。

解决方法:生成配置时包含的硬件资源不要比分配给主机的资源少。

要避免该问题,请勿按问题描述中所述方式添加 CPU。或者,执行以下步骤:

  1. 在添加 DCU 之后生成新的 SP 配置。

    例如,以下命令会创建名为 new-config-more-dcus 的配置:

    primary# ldm add-config new-config-more-dcus
  2. 关闭域。

  3. 停止主机。

    -> stop /HOST
  4. 启动主机。

    -> start /HOST

销毁所有虚拟功能并将插槽返回到根域无法恢复根联合体资源

 

销毁所有虚拟功能并将插槽返回到根域后,根联合体上的资源未恢复。

恢复:将与根联合体关联的所有虚拟 I/O 资源返回到其根域。

首先,将控制域置于延迟重新配置。

primary# ldm start-reconf primary

将所有子 PCIe 插槽返回到拥有 pci_0 总线的根域。然后,删除 pci_0 总线上的所有子虚拟功能并将其销毁。

最后,为 pci_0 总线设置 iov=off 并重新引导根域。

primary# ldm set-io iov=off pci_0
primary# shutdown -y -g 10

解决方法:将特定 PCIe 总线的 iov 选项设置为 off

primary# ldm start-reconf primary
primary# ldm set-io iov=off pci_0

init-system 无法从保存的 XML 文件为来宾域恢复指定的核心约束

 

ldm init-system 命令无法从保存的 XML 文件为来宾域恢复指定的 CPU 核心约束。

解决方法:执行以下步骤:

  1. 为主域创建 XML 文件。

    # ldm ls-constraints -x primary > primary.xml
  2. 为来宾域创建 XML 文件。

    # ldm ls-constraints -x domain-name[,domain-name][,...] > guest.xml
  3. 对系统执行关开机循环并以工厂默认配置进行引导。

  4. primary 域应用 XML 配置。

    # ldm init-system -r -i primary.xml
  5. 向来宾域应用 XML 配置。

    # ldm init-system -f -i guest.xml

从来宾域中删除大量 CPU 可能会失败

尝试从来宾域中移除大量 CPU 时会显示以下错误消息:

Request to remove cpu(s) sent, but no valid response received
VCPU(s) will remain allocated to the domain, but might
not be available to the guest OS
Resource modification failed

解决方法:从域中删除 100 个以上 CPU 之前停止来宾域。

如果配置了 Logical Domains,则新添加的 NIU/XAUI 适配器在主机操作系统中不可见

如果在系统配置了 Logical Domains 的情况下添加另外一个 XAUI 网卡,则对该计算机执行关开机循环之后,该卡将不可见。

恢复:要使新添加的 XAUI 在控制域中可见,请执行以下步骤:

  1. 设置和清除控制域中的伪变量。

    以下命令使用一个名为 fix-xaui 的伪变量:

    # ldm set-var fix-xaui=yes primary
    # ldm rm-var fix-xaui primary
  2. 将修改后的配置保存到 SP,替换当前的配置。

    以下命令使用 config1 作为配置名称:

    # ldm rm-spconfig config1
    # ldm add-spconfig config1
  3. 在对控制域执行重新配置后重新引导。

    # reboot -- -r

    此时,可以配置新提供的网络,使其可供 Logical Domains 使用。

LSI SAS 2008 无法通过动态总线或 PCI-Box 热插拔操作进行添加

 

如果尝试移除承载 LSI SAS HBA 设备的 PCIe 总线,以后将无法使用动态总线或 PCI-box 热插拔操作添加设备。

在某些情况下,来宾域的 Solaris Volume Manager 配置或元设备可能会丢失

如果服务域运行的是低于 Oracle Solaris 10 1/13 OS 的 Oracle Solaris 10 OS 版本,而且将物理磁盘分片作为虚拟磁盘导出到来宾域,则该虚拟磁盘将以不正确的设备 ID 出现在来宾域中。如果随后将该服务域升级到 Oracle Solaris 10 1/13 OS,作为虚拟磁盘导出的物理磁盘分片将以不带设备 ID 的形式出现在来宾域中。

这种删除虚拟磁盘设备 ID 的方式可能会导致尝试引用虚拟磁盘设备 ID 的应用程序出现问题。特别是,Solaris Volume Manager 可能无法找到其配置或者无法访问其元设备。

解决方法:将服务域升级到 Oracle Solaris 10 1/13 OS 之后,如果来宾域找不到其 Solaris Volume Manager 配置或其元设备,请执行以下过程。

如何查找来宾域的 Solaris Volume Manager 配置或元设备

  1. 引导来宾域。
  2. 通过在 /kernel/drv/md.conf 文件中添加以下行来禁用 Solaris Volume Manager 的 devid 功能:
    md_devid_destroy=1;
    md_keep_repl_state=1;
  3. 重新引导来宾域。

    在来宾域引导之后,Solaris Volume Manager 配置和元设备应当会可用。

  4. 检查 Solaris Volume Manager 配置并确保它正确无误。
  5. 通过从 /kernel/drv/md.conf 文件中删除在步骤 2 中添加的两行来重新启用 Solaris Volume Manager 的 devid 功能。
  6. 重新引导来宾域。

    在重新引导期间,您将看到类似如下的消息:

    NOTICE: mddb: unable to get devid for 'vdc', 0x10

    这些消息是正常的,不报告任何问题。

Oracle Solaris 引导磁盘兼容性

以前,Oracle Solaris OS 安装在一个配置有 SMI VTOC 磁盘标签的引导磁盘上。从 Oracle Solaris 11.1 OS 开始,默认情况下 OS 均安装在配置有可扩展固件接口 (Extensible Firmware Interface, EFI) GUID 分区表 (GUID partition table, GPT) 磁盘标签的引导磁盘上。如果固件不支持 EFI,则会为磁盘配置 SMI VTOC 磁盘标签。此情况仅适用于至少运行系统固件版本 8.4.0 的 SPARC T4 服务器,至少运行系统固件版本 9.1.0 的 SPARC T5、SPARC M5、SPARC M6 服务器,以及至少运行 XCP 版本 2230 的 Fujitsu M10 服务器。

    以下服务器无法通过配置有 EFI GPT 磁盘标签的磁盘进行引导:

  • UltraSPARC T2、UltraSPARC T2 Plus 和 SPARC T3 服务器(无论使用哪个系统固件版本)

  • 运行 8.4.0 之前的系统固件版本的 SPARC T4 服务器

  • 运行 9.1.0 之前的系统固件版本的 SPARC T5、SPARC M5 和 SPARC M6 服务器

  • 运行的 XCP 版本早于 2230 的 Fujitsu M10 服务器

因此,在最新的 SPARC T4、SPARC T5、SPARC M5、SPARC M6、Fujitsu M10 服务器上创建的 Oracle Solaris 11.1 引导磁盘无法在早期版本的服务器上或运行早期固件版本的服务器上使用。

此限制使得无法使用冷迁移或实时迁移将域从最新版本的服务器移至早期版本的服务器,同样也无法在早期版本的服务器上使用 EFI GPT 引导磁盘映像。

要确定 Oracle Solaris 11.1 引导磁盘是否与您的服务器及其固件兼容,请确保 Oracle Solaris 11.1 OS 安装在配置有 SMI VTOC 磁盘标签的磁盘上。

    要与运行早期固件版本的系统保持向后兼容,请使用以下过程之一。否则,默认情况下引导磁盘将使用 EFI GPT 磁盘标签。以下过程显示了在系统固件版本至少为 8.4.0 的 SPARC T4 服务器上以及系统固件版本至少为 9.1.0 的 SPARC T5、SPARC M5 或 SPARC M6 服务器上和 XCP 版本至少为 2230 的 Fujitsu M10 服务器上,如何确保 Oracle Solaris 11.1 OS 安装在配置有 SMI VTOC 磁盘标签的引导磁盘中。

  • 解决方法 1:删除 gpt 属性,以便固件不会报告其支持 EFI。

    1. 在 OpenBoot PROM 提示符下,禁用自动引导并重置要安装的系统。

      ok setenv auto-boot? false
      ok reset-all

      系统重置完成后,将返回到 ok 提示符下。

    2. 更改到 /packages/disk-label 目录并删除 gpt 属性。

      ok cd /packages/disk-label
      ok " gpt" delete-property
    3. 开始 Oracle Solaris 11.1 OS 安装。

      例如,执行网络安装:

      ok boot net - install
  • 解决方法 2:使用 format -e 命令在要安装 Oracle Solaris 11.1 OS 的磁盘上写入 SMI VTOC 标签。

    1. 在磁盘上写入 SMI VTOC 标签。

      例如,选择 label 选项并指定 SMI 标签:

      # format -e c1d0
      format> label
      [0] SMI Label
      [1] EFI Label
      Specify Label type[1]: 0
    2. 配置磁盘,使用分片 0 和分片 2 覆盖整个磁盘。

      该磁盘不应有其他任何分区。例如:

      format> partition
       
      partition> print
      Current partition table (unnamed):
      Total disk cylinders available: 14087 + 2 (reserved cylinders)
      
      Part      Tag    Flag     Cylinders         Size            Blocks
        0       root    wm       0 - 14086      136.71GB    (14087/0/0) 286698624
        1 unassigned    wu       0                0         (0/0/0)             0
        2     backup    wu       0 - 14086      136.71GB    (14087/0/0) 286698624
        3 unassigned    wm       0                0         (0/0/0)             0
        4 unassigned    wm       0                0         (0/0/0)             0
        5 unassigned    wm       0                0         (0/0/0)             0
        6 unassigned    wm       0                0         (0/0/0)             0
        7 unassigned    wm       0                0         (0/0/0)             0
    3. 重新写入 SMI VTOC 磁盘标签。

      partition> label
      [0] SMI Label
      [1] EFI Label
      Specify Label type[0]: 0
      Ready to label disk, continue? y
    4. 配置 Oracle Solaris Automatic Installer (AI) 以便在引导磁盘的分片 0 上安装 Oracle Solaris OS。

      将 AI 清单中的 <disk> 摘录更改为如下内容:

      <target>
         <disk whole_disk="true">
              <disk_keyword key="boot_disk"/>
              <slice name="0" in_zpool="rpool"/>
         </disk>
      [...]
      </target>
    5. 执行 Oracle Solaris 11.1 OS 安装。

有时,动态添加的内存块只能作为一个整体动态删除

由于 Oracle Solaris OS 处理用于管理动态添加的内存的元数据所使用的方法,以后,您可能只能删除以前动态添加的整个内存块,而非该内存的合适子集。

内存较小的域动态增长到大得多的时候,可能会出现这种情况,如以下示例所示:

primary# ldm list ldom1
NAME  STATE FLAGS   CONS VCPU MEMORY UTIL UPTIME
ldom1 active -n--   5000 2    2G     0.4% 23h

primary# ldm add-mem 16G ldom1

primary# ldm rm-mem 8G ldom1
Memory removal failed because all of the memory is in use.

primary# ldm rm-mem 16G ldom1

primary# ldm list ldom1
NAME  STATE FLAGS   CONS VCPU MEMORY UTIL UPTIME
ldom1 active -n--   5000 2    2G     0.4% 23h

解决方法:使用 ldm add-mem 命令按顺序以较小的块(而非大于您将来可能要删除的块)来添加内存。

    恢复:执行以下操作之一:

  • 停止域、删除内存,然后重新启动域。

  • 重新引导域,该操作会使 Oracle Solaris OS 重新分配其内存管理元数据,以便现在能够以较小的块动态删除之前添加的内存。