确保资源的正确绑定
为了将资源分配给 LDOM 域,它们需要绑定到适当的域。
此过程将虚拟资源绑定到系统上可用的实际物理资源。
如果没有足够的物理资源分配,绑定过程会报错。
当绑定资源有问题时,会观察到以下一个或者多个错误:
1、VCPUS资源不足,无法绑定LDom。
没有足够的可用内存来满足此请求。
无法为 LDom 绑定请求的内存。
只有 [number] 个物理加密单元资源可用于绑定到 LDom。
5.在绑定的服务域中没有找到合适的vcc服务来绑定guest [guestname]控制台。
下面是新创建的名为guest01 的LDom 来宾,添加了资源,但尚未绑定。
请注意,LDC 字段为空,并且没有实际分配 VCPU 和内存。
来宾的状态被标记为不活动。
# ldm list-bindings -e guest01 NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME guest01 inactive ------ 4 3G UUID 1105fe75-b5c6-6447-929c-a8dba81db847 MAC 00:14:4f:fa:2e:70 CONTROL failure-policy=ignore extended-mapin-space=off cpu-arch=native rc-add-policy= shutdown-group=15 DEPENDENCY master= CONSTRAINT threading=max-throughput VARIABLES auto-boot?=false boot-device=/virtual-devices@100/channel-devices@200/disk@0:a disk net pm_boot_policy=disabled=1;ttfc=0;ttmr=0; NETWORK NAME SERVICE ID DEVICE MAC MODE PVID VID MTU MAXBW LINKPROP vnet0 primary-vsw0 0 00:14:4f:fb:c2:d0 1 phys-state vnet1 sec1-vsw0 1 00:14:4f:fa:95:92 1 phys-state DISK NAME VOLUME TOUT ID DEVICE SERVER MPGROUP guest01-root guest01-root@primary-vds0 0 guest01-data1 guest01-data1@primary-vds0 1 VLDCC NAME SERVICE DESC LDC ds primary-vldc0@primary domain-services
一旦绑定了来宾,就绑定了实际的物理资源,并分配了 LDC(逻辑域通道)。
域状态将显示为“绑定”。
内存绑定失败
当没有另外的未分配内存可用于分配时,会报告内存绑定失败。
ldm bind 会报如下错误:
# ldm bind guest01 Not enough free memory present to meet this request Could not bind requested memory for LDom guest01
纠正措施 :
- 使用 ldm list-devices memory 子命令查看系统上有多少未分配的内存可用。
然后将实际可用的可用内存分配给域。
# ldm list-devices memory MEMORY PA SIZE 0x188000000 1920M # ldm set-memory 1920M guest01 # ldm bind guest01
- 或者,通过在另一个域上使用 ldm set-memory 或者 remove-memory 子命令来减少另一个域的内存量。
然后继续绑定域。
# ldm remove-memory 1g primary # ldm bind guest01
VCPU绑定失败
当没有另外的未分配 VCPU 可用于分配时,会报告 VCPU 绑定失败。
ldm bind 会报如下错误:
# ldm bind guest01 Insufficient VCPU resources to bind LDom guest01
纠正措施是:
- 使用 ldm list-devices vcpu 子命令查看系统上有多少未分配的 VCPU 可用。
然后将实际可用的可用 VCPU 分配给域。
# ldm list-devices vcpu VCPU PID %FREE 28 100 29 100 30 100 31 100 # ldm set-vcpu 4 guest01 # ldm bind guest01
- 或者,通过在另一个域上使用 ldm(1M) set-vcpu 或者 remove-vcpu 子命令来减少来自另一个域的 VCPU 数量。
然后继续绑定域。
# ldm remove-vcpu 2 primary # ldm bind guest01
MAU(Cryptographic Unit) 绑定失败
注意MAU 装置仅用于 T1、T2 和 T3 系列系统。
T4 系统没有 MAU。
在 T4 系统上,每个内核都包含一个提供加密处理的流处理单元 (SPU)。
当没有另外的未分配 MAU 可用于分配时,会报告 MAU 绑定失败。
此外,还要求必须将 MAU 起源的处理器内核中的至少一个 VCPU 分配给域。
尽管 MAU 绑定失败,但绑定将继续处理其余资源。
ldm bind 会报如下错误:
# ldm bind guest01 Only 1 physical crypto unit resource(s) available to bind to LDom guest01, proceeding with binding 1 additional crypto unit(s)
纠正措施是:
- 使用 ldm list-devices mau 子命令查看系统上有多少未分配的 MAU 可用。
然后确保在将可用 MAU 分配给域之前,至少为关联核心中的一个 VCPU 分配了域。
# ldm list-devices mau MAU ID CPUSET 2 (8, 9, 10, 11) 3 (12, 13, 14, 15) 4 (16, 17, 18, 19) 5 (20, 21, 22, 23) 6 (24, 25, 26, 27) 7 (28, 29, 30, 31) # ldm add-vcpu 1 guest01 # ldm add-mau 1 guest01 # ldm bind guest01
- 或者,通过在另一个域上使用 ldm set-mau 或者 remove-mau 子命令来减少来自另一个域的 MAU 数量。
在这里,再次必须注意确保来自 MAU 的核心的一个 VCPU 被分配给域。
然后继续绑定域。
# ldm remove-mau 1 primary
可能还需要移除 1 个 VCPU 并将其分配给来宾,以确保将与 MAU 相同的内核中的一个 VCPU 分配给来宾。
# ldm remove-vcpu 1 primary # ldm add-vcpu 1 primary # ldm bind guest01
虚拟控制台绑定失败
虚拟控制台集中器 (VCC) 和虚拟控制台 (VCONS) 提供对来宾域的控制台访问。
需要绑定一个在主域上创建的虚拟控制台服务。
错误发现的 VCC 可能会在绑定期间导致错误:
# ldm bind guest01 The virtual console concentrator service primary-vcc1 not exist or is not bound. Didn't find a suitable vcc service in a bound service domain to bind guest guest01 console
为确保 VCC 配置已根据配置,请使用 ldm list -l [domain] 命令查看配置:
# ldm list -l guest01 NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME guest01 bound ------ 5001 4 3G --lines omitted- VCONS NAME SERVICE PORT LOGGING guest01 primary-vcc0@primary 5001 on # ldm list -l primary NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 4128M 0.9% 14d 55m --lines omitted- VCC NAME PORT-RANGE primary-vcc0 5000-5100 --lines omitted- VCONS NAME SERVICE PORT LOGGING SP
如果没有配置,请按照以下步骤配置控制台服务:
# ldm add-vconscon port-range=5000-5100 primary-vcc0 primary # ldm set-vconsole port=5000 service=primary-vcc0@primary guest01
然后确保 LDom 控制台 SMF 服务已更新并正在运行:
# svcs vntsd STATE STIME FMRI offline 13:20:40 svc:/ldoms/vntsd:default # svcadm enable vntsd # svcs vntsd STATE STIME FMRI online 13:39:35 svc:/ldoms/vntsd:default
用于故障排除的数据收集
向 oracle 支持提供正确的故障排除数据非常重要,以便快速解决问题。
下面是一些日志文件,它们对解决 LDOM 问题非常有帮助。
主域上 LDom 相关服务的 SMF(服务管理设施)日志
/var/svc/log/ldoms-ldmd:default.log /var/svc/log/ldoms-vntsd:default.log /var/svc/log/ldoms-agents:default.log /var/opt/SUNWldm/ldom-db.xml
SMF(服务管理设施)和访客 LDom 上的 LDom 相关服务的日志
/var/svc/log/platform-sun4v-drd:default.log /var/svc/log/ldoms-agents:default.log
如果 ldmd 守护程序转储核心,则核心文件将为“/var/opt/SUNWldm/core”,除非我们已使用 coreadm 控制核心文件位置。
来自 ldm 的消息“无效响应”通常意味着 ldmd 守护程序已转储核心,因此在这种情况下应收集核心文件。
探险家
Explorer 在主(控制)域上收集了许多重要的 LDom 相关输出:
# /opt/SUNWexplo/bin/explorer -w default,ldom
如何验证LDom服务是否启动
下面是两个基本服务需要在主域(又名控制域)上运行才能使 ldom 正常启动/工作。
1. svc:/ldoms/ldmd:default 2. svc:/ldoms/vntsd:default
这里,ldmd 是 ldom 服务,vntsd 是虚拟控制台服务。
服务的状态应该是在线,而不是禁用/维护。
如果服务状态被禁用,我们可以尝试使用 svcadm 命令重新启动它。
如果服务处于维护状态,请检查以下日志是否有任何异常:
/var/svc/log/ldoms-ldmd:default.log 用于 ldm 日志
/var/svc/log/ldoms-vntsd:default.log 用于 vntsd 日志
还要检查 /var/adm/messages 文件中是否有与 LDOM 相关的任何错误日志。
使用ps命令查看进程列表,进程列表中是否有ldmd和vntsd。
# ps -ef | egrep "vntsd|ldmd"
下面是 ldmd 服务和 vntsd 服务的默认配置:
svc:> select ldoms/ldmd svc:/ldoms/ldmd> listprop ldmd application ldmd/debug integer 0 ldmd/hops integer 0 ldmd/nocfg boolean false ldmd/xmpp boolean false fmd_config application fmd_config/fmd_to_ldmd_init_timeout integer 20 fmd_config/fmd_to_ldmd_running_timeout integer 10 filesystem dependency filesystem/entities fmri svc:/system/filesystem/local filesystem/grouping astring require_all filesystem/restart_on astring none filesystem/type astring service general framework general/action_authorization astring solaris.smf.manage.ldoms general/entity_stability astring Unstable general/single_instance boolean true start method start/exec astring /opt/SUNWldm/bin/ldmd_start start/timeout_seconds count 120 start/type astring method stop method stop/exec astring :kill stop/timeout_seconds count 60 stop/type astring method tm_common_name template tm_common_name/C ustring "Logical Domain Manager"
svc:> select ldoms/vntsd svc:/ldoms/vntsd> listprop vntsd application vntsd/listen_addr astring localhost vntsd/timeout_minutes integer 0 vntsd/vcc_device astring virtual-console-concentrator@0 network dependency network/entities fmri svc:/milestone/network network/grouping astring optional_all network/restart_on astring error network/type astring service syslog dependency syslog/entities fmri svc:/system/system-log syslog/grouping astring optional_all syslog/restart_on astring none syslog/type astring service general framework general/entity_stability astring Unstable start method start/exec astring /lib/svc/method/svc-vntsd start/timeout_seco
如果无法从控制域 telnet 到来宾 ldom,则可能需要停止/重新启动 vntsd 服务:
# svcadm disable /ldoms/vntsd # svcadm enable /ldoms/vntsd
OVM for SPARC (LDOM):控制台问题故障排除
大多数 LDOM 问题都可以通过查看错误消息轻松解决。
以下是一些最常见的 LDOM 问题以及解决这些问题的基本故障排除技巧。
1. Unable to create LDom 2. Unable to install LDom 3. Unable to configure LDom 4. Unable to bind LDom 5. Unable to connect to LDom
LDOM 控制台日志
从 LDom 3.0 开始,控制台日志收集在 /var/log/vntsd//(主域上的最低 Solaris 11)。
# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 8 24G 0.2% 0.2% 12d 11h 1m ldom01 active -n---- 4001 10 2304M 0.1% 0.1% 12d 7h 22m // console logs on live system: # ls -l /var/log/vntsd/*/* -rw------- 1 root root 2812386 Sep 18 10:38 /var/log/vntsd/ldom01/console-log