1. Oracle VM Server for SPARC 软件概述
A. Oracle VM Server for SPARC 物理机到虚拟机转换工具
B. Oracle VM Server for SPARC Configuration Assistant
D. 将 XML 接口与 Logical Domains Manager 结合使用
从 Oracle VM Server for SPARC 2.0 发行版和 Oracle Solaris 10 9/10 OS 开始,可以将某个 PCIe 端点(或可分配的直接 I/O)设备分配到域。这种 PCIe 端点设备的使用增加了将设备分配到 I/O 域的粒度。这种功能是通过直接 I/O (Direct I/O, DIO) 功能提供的。
通过 DIO 功能,您可以在系统中创建比 PCIe 总线数更多的 I/O 域。可能的 I/O 域数当前仅受 PCIe 端点设备数限制。
PCIe 端点设备可以是下列任意一个:
插槽中的 PCIe 卡
由平台标识的板载 PCIe 设备
下图显示了将 PCIe 端点设备 PCIE3 分配到 I/O 域。I/O 域中的总线 pci_0 和交换机都是虚拟的。不可再在 primary 域中访问PCIE3 端点设备。
在 I/O 域中,pci_0 块和交换机分别为虚拟根联合体和虚拟 PCIe 交换机。该块和交换机与 primary 域中的 pci_0 块和交换机十分类似。在 primary 域中,插槽 PCIE3 中的设备是原始设备的阴影格式,并标识为 SUNW,assigned。
图 6-2 将 PCIe 端点设备分配到 I/O 域
使用 ldm list-io 命令列出 PCIe 端点设备。
即使 DIO 功能允许将插槽中的任意 PCIe 卡分配到 I/O 域,也仅支持某些 PCIe 卡。请参见《Oracle VM Server for SPARC 2.0 Release Notes》中的"Direct I/O Hardware and Software Requirements"。
注 - 不支持具有交换机或桥的 PCIe 卡。也不支持 PCIe 函数级分配。将不受支持的 PCIe 卡分配到 I/O 域可能会导致不可预测的行为。
以下是一些有关 DIO 功能的重要详细信息:
仅当满足所有软件要求时才会启用此功能。请参见《Oracle VM Server for SPARC 2.0 Release Notes》中的"Direct I/O Hardware and Software Requirements"。
使用 DIO 功能,只可将连接到已分配至 primary 域的 PCIe 总线的 PCIe 端点分配到其他域。
仅当运行 primary 域时,使用 DIO 的 I/O 域才可访问 PCIe 端点设备。
重新引导 primary 域会对具有 PCIe 端点设备的 I/O 域产生影响。请参见重新引导 primary 域。primary 域还具有以下职责:
初始化 PCIe 总线并管理该总线。
处理所有由分配到 I/O 域的 PCIe 端点设备触发的总线错误。请注意,只有 primary 域才会收到所有与 PCIe 总线相关的错误。
要成功使用 DIO 功能,必须运行相应的软件,并仅将 DIO 功能支持的 PCIe 卡分配到 I/O 域。有关硬件和软件要求,请参见《Oracle VM Server for SPARC 2.0 Release Notes》中的"Direct I/O Hardware and Software Requirements"。
注 - primary 域支持平台上支持的所有 PCIe 卡。有关支持的 PCIe 卡列表,请参见平台的文档。但是,仅可将支持直接 I/O 的 PCIe 卡分配到 I/O 域。
有关如何解决以下限制的信息,请参见规划 PCIe 端点设备配置。
将 PCIe 端点设备分配到 primary 域或者将其从该域删除时会启动延迟重新配置,这意味着仅当 primary 重新引导后才会应用更改。
重新引导 primary 域会对直接 I/O 产生影响,因此,请仔细规划直接 I/O 配置更改,以最大限度地增加对 primary 域的直接 I/O 相关更改,最大限度地减少 primary 域重新引导。
仅当域停止或处于非活动状态时,才允许将 PCIe 端点设备分配到任何其他域或删除该端点设备。
分配或删除 PCIe 端点设备时提前仔细规划以避免产生 primary 域宕机。重新引导 primary 域不仅影响 primary 域本身可用的服务,还会影响已分配有 PCIe 端点设备的 I/O 域。即使对每个 I/O 域的更改不会影响其他域,提前规划有助于最大限度地减小对由该域所提供的服务的影响。
首次分配或删除设备时会启动延迟重新配置。因此,可以继续添加或删除更多设备,然后只重新引导一次 primary 域,以使所有更改生效。
有关示例,请参见通过分配 PCIe 端点设备创建 I/O 域。
了解和记录系统硬件配置。
具体地说,记录系统中有关 PCIe 卡的部件号及其他详细信息的信息。
使用 ldm list-io -l 和 prtdiag -v 命令获取信息并保存起来供将来参考。
确定 primary 域中所需的 PCIe 端点设备。
例如,确定提供对以下内容的访问权限的 PCIe 端点设备:
引导磁盘设备
网络设备
primary 域提供作为服务的其他设备
删除可能会在 I/O 域中使用的所有 PCIe 端点设备。
重新引导会对 I/O 域产生影响,此步骤将有助于您避免在 primary 域上执行后续重新引导操作。
使用 ldm rm-io 命令删除 PCIe 端点设备。使用 pseudonyms 而非设备路径将设备指定到 rm-io 和 add-io 子命令。
注 - 即使首次删除 PCIe 端点设备可能会启动延迟重新配置,您也可以继续删除设备。删除所需的所有设备后,仅需要重新引导 primary 域一次,使所有更改生效。
将此配置保存到服务处理器 (service processor, SP)。
使用 ldm add-config 命令。
重新引导 primary 域以释放在步骤 3 中删除的 PCIe 端点设备。
确认不再将删除的 PCIe 端点设备分配到 primary 域。
使用 ldm list-io -l 命令检验删除的设备在输出中是否显示为 SUNW,assigned-device。
将可用的 PCIe 端点设备分配到来宾域,以提供对物理设备的直接访问权。
分配完成后,将无法再通过域迁移功能将来宾域迁移到其他物理系统。
将 PCIe 端点设备添加到来宾域或者将其从来宾域删除。
使用 ldm add-io 命令。
通过减少重新引导操作并避免由 I/O 域提供的服务宕机来最大限度地减少对该域的更改。
(可选)更改 PCIe 硬件。
请参见更改 PCIe 硬件。
PCIe 总线归 primary 域所有,该域负责初始化和管理总线。primary 域必须处于活动状态,并运行支持 DIO 功能的 Oracle Solaris OS 版本。关闭、停止或重新引导 primary 域会中断对 PCIe 总线的访问。PCIe 总线不可用时,该总线上的 PCIe 设备会受到影响,可能会变为不可用。
在运行 I/O 域的同时如果重新引导 primary 域,则具有 PCIe 端点设备的那些 I/O 域的行为是不可预测的。例如,具有 PCIe 端点设备的 I/O 域可能会在重新引导过程中或在重新引导后出现紧急情况。primary 域重新引导时,您可能需要手动停止或启动每个域。
要解决这些问题,请执行以下步骤之一:
在关闭 primary 域之前,请在系统上手动关闭已将 PCIe 端点设备分配到其中的任意域。
此步骤可确保您在关闭、停止或重新引导 primary 域之前完全关闭这些域。
要查找已将 PCIe 端点设备分配到其中的所有域,请运行 ldm list-io 命令。通过此命令,可以列出系统上已分配到域的 PCIe 端点设备。这样,使用此信息可帮助您进行计划。有关此命令输出的详细说明,请参见 ldm(1M) 手册页。
对于找到的每个域,请通过运行 ldm stop 命令停止它。
配置 primary 域和已分配有 PCIe 端点设备的域之间的域依赖关系。
这种依赖关系可确保具有 PCIe 端点设备的域能够在 primary 域因故重新引导时自动重新启动。
请注意,此依赖关系会强行重设那些域,并且那些域不能完全关闭。但是,此依赖关系不会对手动关闭的任何域产生影响。
# ldm set-domain failure-policy=reset primary # ldm set-domain master=primary ldom
以下步骤有助于避免错误地配置 PCIe 端点分配。有关安装和删除特定硬件的平台特定信息,请参见平台的文档。
如果要将 PCIe 卡安装到空插槽内,无需执行任何操作。此 PCIe 卡自动归拥有 PCIe 总线的域所有。
要将新的 PCIe 卡分配到 I/O 域,请使用 ldm rm-io 命令,先将卡从 primary 域删除。然后,使用 ldm add-io 命令将卡分配到 I/O 域。
如果要将 PCIe 卡从系统中删除并将其分配到 primary 域,无须执行任何操作。
要删除已分配到某个 I/O 域的 PCIe 卡,请先将设备从 I/O 域删除。然后,在从系统中物理删除设备之前,将该设备添加到 primary 域。
要替换已分配到某个 I/O 域的 PCIe 卡,请检验 DIO 功能是否支持新卡。
如果支持,则会将新卡自动分配到当前 I/O 域而无需执行任何操作。
如果不支持,请先使用 ldm rm-io 命令将该 PCIe 卡从 I/O 域删除。然后,使用 ldm add-io 命令将 PCIe 卡重新分配到 primary 域。接着,使用其他 PCIe 卡物理替换已分配到 primary 域的 PCIe 卡。通过这些步骤,您可以避免不受 DIO 功能支持的配置。
提前规划所有 DIO 部署,从而最大限度地缩短停机时间。
有关通过添加 PCIe 端点设备来创建 I/O 域的示例,请参见规划 PCIe 端点设备配置。
ldm list-io -l 命令的输出显示了当前配置 I/O 设备的方式。可使用 prtdiag -v 命令获取更多详细信息。
注 - 将设备分配到 I/O 域之后,只可在 I/O 域中确定设备的标识。
# ldm list-io -l IO PSEUDONYM DOMAIN -- --------- ------ pci@400 pci_0 primary pci@500 pci_1 primary PCIE PSEUDONYM STATUS DOMAIN ---- --------- ------ ------ pci@400/pci@0/pci@c PCIE1 EMP - pci@400/pci@0/pci@9 PCIE2 OCC primary network@0 network@0,1 network@0,2 network@0,3 pci@400/pci@0/pci@d PCIE3 OCC primary SUNW,emlxs/fp/disk SUNW,emlxs@0,1/fp/disk SUNW,emlxs@0,1/fp@0,0 pci@400/pci@0/pci@8 MB/SASHBA OCC primary scsi@0/tape scsi@0/disk scsi@0/sd@0,0 scsi@0/sd@1,0 pci@500/pci@0/pci@9 PCIE0 EMP - pci@500/pci@0/pci@d PCIE4 OCC primary network@0 network@0,1 pci@500/pci@0/pci@c PCIE5 OCC primary SUNW,qlc@0/fp/disk SUNW,qlc@0/fp@0,0 SUNW,qlc@0,1/fp/disk SUNW,qlc@0,1/fp@0,0/ssd@w21000011c605dbab,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6041434,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6053652,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6041b4f,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c605dbb3,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60413bc,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c604167f,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6041b3a,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c605dabf,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60417a4,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60416a7,0 SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60417e7,0 SUNW,qlc@0,1/fp@0,0/ses@w215000c0ff082669,0 pci@500/pci@0/pci@8 MB/NET0 OCC primary network@0 network@0,1 network@0,2 network@0,3
primary# df / / (/dev/dsk/c0t1d0s0 ): 1309384 blocks 457028 files
primary# df / / (rpool/ROOT/s10s_u8wos_08a):245176332 blocks 245176332 files primary# zpool status rpool zpool status rpool pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c0t1d0s0 ONLINE 0 0 0
以下示例使用块设备 c0t1d0s0:
primary# ls -l /dev/dsk/c0t1d0s0 lrwxrwxrwx 1 root root 49 Jul 20 22:17 /dev/dsk/c0t1d0s0 -> ../../devices/pci@400/pci@0/pci@8/scsi@0/sd@0,0:a
在此示例中,primary 域的引导磁盘的物理设备已连接到 PCIe 端点设备 (pci@400/pci@0/pci@8),该端点设备对应于步骤 1 中列出的 MB/SASHBA。删除此设备可能会阻止 primary 域引导,因此请不要将此设备从 primary 域删除。
# ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 nxge0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2 inet 10.6.212.149 netmask fffffe00 broadcast 10.6.213.255 ether 0:21:28:4:27:cc
在此示例中,nxge0 接口用作 primary 域的网络接口。
以下命令使用 nxge0 网络接口:
primary# ls -l /dev/nxge0 lrwxrwxrwx 1 root root 46 Jul 30 17:29 /dev/nxge0 -> ../devices/pci@500/pci@0/pci@8/network@0:nxge0
在此示例中,primary 域使用的网络接口的物理设备已连接到 PCIe 端点设备 (pci@500/pci@0/pci@8),该端点设备对应于步骤 1 中列出的 MB/NET0。因此,您不希望将此设备从 primary 域删除。由于所有其他 PCIe 设备都未被 primary 域使用,因此可以将它们安全地分配到其他域。
如果 primary 域使用的网络接口位于您要分配到其他域的总线上,则需要重新配置 primary 域以使用其他网络接口。
在此示例中,您可以删除 PCIE2、PCIE3、PCIE4 和 PCIE5 端点设备,因为它们没有被 primary 域使用。
注意 - 请不要删除 primary 域中使用的设备。 如果错误地删除了错误设备,请使用 ldm cancel-op reconf primary 命令取消 primary 域上的延迟重新配置。 |
可以一次删除多个设备以避免多次重新引导。
# ldm rm-io PCIE2 primary Initiating a delayed reconfiguration operation on the primary domain. All configuration changes for other domains are disabled until the primary domain reboots, at which time the new configuration for the primary domain will also take effect. # ldm rm-io PCIE3 primary ------------------------------------------------------------------------------ Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. ------------------------------------------------------------------------------ # ldm rm-io PCIE4 primary ------------------------------------------------------------------------------ Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. ------------------------------------------------------------------------------ # ldm rm-io PCIE5 primary ------------------------------------------------------------------------------ Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. ------------------------------------------------------------------------------
以下命令会将配置保存到名为 dio 的文件中:
# ldm add-config dio
# reboot -- -r
# ldm list-io IO PSEUDONYM DOMAIN -- --------- ------ pci@400 pci_0 primary pci@500 pci_1 primary PCIE PSEUDONYM STATUS DOMAIN ---- --------- ------ ------ pci@400/pci@0/pci@c PCIE1 EMP - pci@400/pci@0/pci@9 PCIE2 OCC pci@400/pci@0/pci@d PCIE3 OCC pci@400/pci@0/pci@8 MB/SASHBA OCC primary pci@500/pci@0/pci@9 PCIE0 EMP - pci@500/pci@0/pci@d PCIE4 OCC pci@500/pci@0/pci@c PCIE5 OCC pci@500/pci@0/pci@8 MB/NET0 OCC primary
注 - 对于删除的 PCIe 端点设备,ldm list-io -l 输出可能会显示 SUNW,assigned-device。不可再从 primary 域获取实际信息,但是要将设备分配到其中的域包含此信息。
# ldm add-io PCIE2 ldg1
# ldm bind ldg1 # ldm start ldg1 LDom ldg1 started
使用 dladm show-dev 命令检验网络设备是否可用。然后,配置网络设备以在域中使用。
# dladm show-dev vnet0 link: up speed: 0 Mbps duplex: unknown nxge0 link: unknown speed: 0 Mbps duplex: unknown nxge1 link: unknown speed: 0 Mbps duplex: unknown nxge2 link: unknown speed: 0 Mbps duplex: unknown nxge3 link: unknown speed: 0 Mbps duplex: unknown