PCIe 总线属于根域,该域负责初始化和管理该总线。根域必须处于活动状态,并在运行支持 DIO 或 SR-IOV 功能的 Oracle Solaris OS 版本。关闭、停止或重新引导根域将中断对 PCIe 总线的访问。PCIe 总线不可用时,该总线上的 PCIe 设备会受到影响,可能会变为不可用。
当正在运行具有 PCIe 端点设备的 I/O 域时,如果重新引导根域,则这些 I/O 域将出现不可预测的行为。例如,具有 PCIe 端点设备的 I/O 域可能会在重新引导过程中或在重新引导后出现紧急情况。重新引导根域后,您可能需要手动停止并启动每个域。
请注意,如果 I/O 域具有弹性,即使作为 PCIe 总线所有者的根域变为不可用,该 I/O 域也可以继续操作。请参见I/O 域弹性。
要解决这些问题,请执行以下步骤之一:
在关闭根域之前,请手动关闭系统上已分配有 PCIe 端点设备的任何域。
此步骤可确保您在关闭、停止或重新引导根域之前完全关闭这些域。
要查找已将 PCIe 端点设备分配到其中的所有域,请运行 ldm list-io 命令。通过此命令,可以列出系统上已分配到域的 PCIe 端点设备。有关此命令输出的详细说明,请参见 ldm(1M) 手册页。
对于找到的每个域,请通过运行 ldm stop 命令停止它。
配置根域和已分配有 PCIe 端点设备的域之间的域依赖关系。
这种依赖关系可确保具有 PCIe 端点设备的域会在根域因某种原因而重新引导时自动重新启动。
请注意,此依赖关系会强行重设那些域,并且那些域不能完全关闭。但是,此依赖关系不会对手动关闭的任何域产生影响。
primary# ldm set-domain failure-policy=reset primary primary# ldm set-domain master=primary domain-name
以下示例介绍如何在使用非 primary 根域和 I/O 域的配置环境下配置故障策略依赖关系。
在此示例中,ldg1 是一个非 primary 根域。ldg2 是一个 I/O 域,该 I/O 域中的 PCIe SR-IOV 虚拟功能或 PCIe 端点设备是从 ldg1 域所拥有的根联合体分配的。
primary# ldm set-domain failure-policy=stop ldg1 primary# ldm set-domain master=ldg1 ldg2
这种依赖关系可确保该 I/O 域会在 ldg1 域重新引导时停止。
如果非 primary 根域重新引导,则此依赖关系可确保该 I/O 域停止。请在非 primary 根域引导后启动该 I/O 域。
primary# ldm start ldg2
如果 primary 域重新引导,则此策略设置会同时停止非 primary 根域和所依赖的 I/O 域。primary 域引导后,必须先启动非 primary 根域。在该域引导后,请启动 I/O 域。
primary# ldm start ldg1
请等待 ldg1 域处于活动状态,然后再启动 I/O 域。
primary# ldm start ldg2