跳过导航链接 | |
退出打印视图 | |
管理 Oracle Solaris 11.1 网络性能 Oracle Solaris 11.1 Information Library (简体中文) |
本节中的示例使用 ipmpstat 命令,从而使您能够监视系统中 IPMP 组的不同方面。您可以将 IPMP 组作为一个整体来观察其状态,也可以观察其底层 IP 接口的状态。您还可以验证 IPMP 组的数据地址和测试地址的配置。通过使用 ipmpstat 命令还可以获取有关故障检测的信息。有关 ipmpstat 命令及其选项的更多信息,请参见ipmpstat(1M) 手册页。
当您使用 ipmpstat 命令时,缺省情况下,将显示 80 列可容纳的最有意义的字段。在输出中,将显示特定于与 ipmpstat 命令结合使用的选项的所有字段(使用 ipmpstat -p 语法时除外)。
缺省情况下,输出中显示主机名而不是数字 IP 地址(只要主机名存在)。要在输出中列出数字 IP 地址,请将 -n 选项与其他选项结合使用以显示特定的 IPMP 组信息。
注 - 在以下示例中,ipmpstat 命令的使用不需要系统管理员特权,除非另有说明。
请将以下选项与 ipmpstat 命令结合使用以确定要显示的信息:
-g 显示有关系统上 IPMP 组的信息。请参见示例 6-9。
-a 显示为 IPMP 组配置的数据地址。请参见示例 6-10。
-i 显示与 IPMP 配置相关的 IP 接口的信息。请参见示例 6-11。
-t 显示有关用于故障检测的目标系统的信息。该选项还显示 IPMP 组使用的测试地址。请参见示例 6-12。
-p 显示有关用于故障检测的探测器的信息。请参见示例 6-13。
以下示例显示可以通过 ipmpstat 命令获取的有关系统中 IPMP 配置的信息。
示例 6-9 获取 IPMP 组信息
-g 选项列出系统上各 IPMP 组的状态,包括其底层接口的状态。如果为特定组启用了基于探测器的故障检测,则该命令还包括该组的故障检测时间。
$ ipmpstat -g GROUP GROUPNAME STATE FDT INTERFACES ipmp0 ipmp0 ok 10.00s net0 net1 acctg1 acctg1 failed -- [net3 net4] field2 field2 degraded 20.00s net2 net5 (net7) [net6]
输出字段提供以下信息:
指定 IPMP 接口名称。对于匿名组,此字段为空。有关匿名组的更多信息,请参见 in.mpathd(1M) 手册页。
指定 IPMP 组的名称。对于匿名组,此字段将为空。
表示一个 IPMP 组的当前状态,可以是以下值之一:
ok 表示 IPMP 组的所有底层接口都可用。
degraded 表示该组中的部分底层接口不可用。
failed 表示该组的所有接口都不可用。
指定故障检测时间(如果启用了故障检测)。如果禁用了故障检测,则此字段为空。
指定属于该 IPMP 组的底层接口。在此字段中,首先列出活动接口,然后是非活动接口,最后列出不可用的接口。接口的状态由列出方式表示:
interface(不带圆括号或方括号)表示活动接口。系统使用活动接口发送或接收数据通信。
(interface)(带圆括号)表示能正常工作但处于非活动状态的接口。根据管理策略的定义,该接口并未使用。
[interface](带方括号)表示接口不可用,因为它已出现故障或处于脱机状态。
示例 6-10 获取 IPMP 数据地址信息
-a 选项显示数据地址以及每个地址所属的 IPMP 组。显示的信息还包括哪些地址可用,具体取决于是否通过 ipadm [up-addr/down-addr] 命令切换了地址的状态。您还可以确定一个地址可以在哪个传入或传出接口上使用。
$ ipmpstat -an ADDRESS STATE GROUP INBOUND OUTBOUND 192.168.10.10 up ipmp0 net0 net0 net1 192.168.10.15 up ipmp0 net1 net0 net1 192.0.0.100 up acctg1 -- -- 192.0.0.101 up acctg1 -- -- 128.0.0.100 up field2 net2 net2 net7 128.0.0.101 up field2 net7 net2 net7 128.0.0.102 down field2 -- --
输出字段提供以下信息:
指定主机名或数据地址(如果 -n 选项与 -a 选项结合使用)。
指示 IPMP 接口上的地址状态是 up(因此可用)还是 down(因此不可用)。
指定承载特定数据地址的 IPMP 接口。通常,在 Oracle Solaris 中,IPMP 组的名称是 IPMP 接口。
标识接收给定地址的包的接口。根据外部事件,字段信息可能会发生更改。例如,如果数据地址已关闭或者 IPMP 组中没有活动的 IP 接口,此字段为空。空字段指示系统当前没有接受发送到给定地址的 IP 包。
标识发送使用给定地址作为源地址的包的接口。与 INBOUND 字段一样,OUTBOUND 信息也可能根据外部事件而变化。空字段指示系统当前未发送具有给定的源地址的包。该字段可能为空,原因是该地址已关闭或组中没有活动的 IP 接口。
示例 6-11 获取有关 IPMP 组的底层 IP 接口的信息
$ ipmpstat -i INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE net0 yes ipmp0 --mb--- up ok ok net1 yes ipmp0 ------- up disabled ok net3 no acctg1 ------- unknown disabled offline net4 no acctg1 is----- down unknown failed net2 yes field2 --mb--- unknown ok ok net6 no field2 -i----- up ok ok net5 no filed2 ------- up failed failed net7 yes field2 --mb--- up ok ok
输出字段提供以下信息:
指定每个 IPMP 组的每个底层接口。
指示该接口是正常工作并在使用中 (yes) 还是没有 (no)。
指定 IPMP 接口名称。对于匿名组,此字段为空。有关匿名组的更多信息,请参见 in.mpathd(1M) 手册页。
指示每个底层接口的状态,可以是以下各项之一或这些项的任意组合:
i 指示为接口设置了 INACTIVE 标志。因此,该接口不用于发送或接收数据通信。
s 指示接口配置为备用接口。
m 指示接口由系统指定用于发送和接收 IPMP 组的 IPv4 多播通信。
b 指示接口由系统指定用于接收 IPMP 组的广播通信。
M 指示接口由系统指定用于发送和接收 IPMP 组的 IPv6 多播通信。
d 指示接口已关闭,因此不可用。
h 指示接口与另一个接口共享一个重复的物理硬件地址并且已处于脱机状态。h 标志指示接口不可用。
指示基于链路的故障检测的状态,为以下状态之一:
up 或 down 分别指示链路可用或不可用。
unknown 指示驱动程序不支持链路是 up 还是 down 的通知,因此不检测链路状态的变化。
指定使用测试地址配置的接口的基于探测器的故障检测的状态,如下所示:
ok 指示探测器正常工作并处于活动状态。
failed 表示基于探测器的故障检测已检测到接口未正常工作。
unknown 指示找不到合适的探测器目标,因此无法发送探测器。
disabled 指示在接口上没有配置 IPMP 测试地址。因此,基于探测器的故障检测处于禁用状态。
指定接口的整体状态,如下所示:
ok 指示接口已联机并正在基于故障检测方法的配置正常工作。
failed 指示接口当前未工作,原因是接口的链路已关闭或探测器检测已确定该接口无法发送或接收通信。
offline 指示接口不可用。通常,在以下情况下会将接口置于脱机状态:
正在测试接口。
正在执行动态重新配置。
接口与另一个接口共享一个重复的硬件地址。
unknown 指示无法确定 IPMP 接口的状态,因为找不到基于探测器的故障检测的探测器目标。
示例 6-12 获取 IPMP 探测器目标信息
-t 选项标识与 IPMP 组中每个 IP 接口相关联的探测器目标。第一个输出是为基于探测器的故障检测使用测试地址的 IPMP 配置示例。
$ ipmpstat -nt INTERFACE MODE TESTADDR TARGETS net0 routes 192.168.85.30 192.168.85.1 192.168.85.3 net1 disabled -- -- net3 disabled -- -- net4 routes 192.1.2.200 192.1.2.1 net2 multicast 128.9.0.200 128.0.0.1 128.0.0.2 net6 multicast 128.9.0.201 128.0.0.2 128.0.0.1 net5 multicast 128.9.0.202 128.0.0.1 128.0.0.2 net7 multicast 128.9.0.203 128.0.0.1 128.0.0.2
第二个输出是使用传递式探测(即,没有测试地址的基于探测器的故障检测)的 IPMP 配置示例。
$ ipmpstat -nt INTERFACE MODE TESTADDR TARGETS net3 transitive <net1> <net1> <net2> <net3> net2 transitive <net1> <net1> <net2> <net3> net1 routes 172.16.30.100 172.16.30.1
输出字段提供以下信息:
指定 IPMP 组的每个底层接口。
指定用于获取探测器目标的方法。
routes 指示使用系统路由表查找探测器目标。
mcast 指示使用多播 ICMP 探测器查找目标。
disabled 指示已为接口禁用基于探测器的故障检测。
transitive 指示使用传递式探测检测故障,如第二个示例中所示。请注意,无法在同时使用传递式探测器和测试地址的情况下实现基于探测器的故障检测。如果您不希望使用测试地址,则必须启用传递式探测。如果您不希望使用传递式探测,则必须配置测试地址。有关概述,请参见基于探测器的故障检测。
指定主机名;如果 -n 选项与 -t 选项结合使用,则指定分配给用于发送和接收探测器的接口的 IP 地址。
如果使用传递式探测,则接口名称指当前未用于接收数据的底层 IP 接口。这些名称还指示传递式测试探测器是使用这些指定接口的源地址发送的。对于接收数据的活动底层 IP 接口,显示的 IP 地址指示传送 ICMP 探测器的源地址。
注 - 如果某 IP 接口同时配置了 IPv4 和 IPv6 测试地址,分别显示每个测试地址的探测器目标信息。
在空格分隔的列表中列出当前探测器目标。探测器目标以主机名或 IP 地址形式显示。如果 -n 选项与 -t 选项结合使用,将会显示 IP 地址。
示例 6-13 观察 IPMP 探测器
-p 选项使您能够观察正在运行的探测器。将该选项和 ipmpstat 命令一起使用时,会持续显示有关系统上探测器活动的信息,直到您按 Control-C 组合键终止命令。您必须具有主管理员权限才能运行此命令。
第一个输出是为基于探测器的故障检测使用测试地址的 IPMP 配置示例。
# ipmpstat -pn TIME INTERFACE PROBE NETRTT RTT RTTAVG TARGET 0.11s net0 589 0.51ms 0.76ms 0.76ms 192.168.85.1 0.17s net4 612 -- -- -- 192.1.2.1 0.25s net2 602 0.61ms 1.10ms 1.10ms 128.0.0.1 0.26s net6 602 -- -- -- 128.0.0.2 0.25s net5 601 0.62ms 1.20ms 1.00ms 128.0.0.1 0.26s net7 603 0.79ms 1.11ms 1.10ms 128.0.0.1 1.66s net4 613 -- -- -- 192.1.2.1 1.70s net0 603 0.63ms 1.10ms 1.10ms 192.168.85.3 ^C
第二个输出是使用传递式探测(即,没有测试地址的基于探测器的故障检测)的 IPMP 配置示例。
# ipmpstat -pn TIME INTERFACE PROBE NETRTT RTT RTTAVG TARGET 1.39S net4 t28 1.05ms 1.06ms 1.15ms <net1> 1.39s net1 i29 1.00ms 1.42ms 1.48ms 172.16.30.1 ^C
输出字段提供以下信息:
指定发送探测器的时间(相对于发出 ipmpstat 命令的时间)。如果探测器在 ipmpstat 开始之前已启动,则显示的时间为负值(即相对于发出命令的时间)。
指定在其上发送探测器的接口。
指定代表探测器的标识符。如果使用传递式探测进行故障检测,则标识符具有前缀 t(对于传递式探测器)或 i(对于 ICMP 探测器)。
指定探测器的总网络往返时间(以毫秒为单位)。NETRTT 指从 IP 模块发送探测器到 IP 模块接收到来自目标的 ack 包的时间。如果 in.mpathd 守护进程已确定探测器丢失,则该字段为空。
指定探测器的总往返时间(以毫秒为单位)。RTT 指从 in.mpathd 守护进程执行代码以发送探测器到守护进程完成对来自目标的 ack 包的处理之间的时间。如果守护进程已确定探测器丢失,则该字段为空。如果 RTT 出现峰值而 NETRTT 没有出现,则可能表明本地系统过载。
指定接口上的探测器在本地系统和目标之间的平均往返时间。平均往返时间可以帮助确定速度慢的目标。如果数据不足以计算平均值,此字段为空。
指定主机名;如果 -n 选项与 -p 选项结合使用,则指定向其发送探测器的目标地址。
ipmpstat 命令的 -o 选项允许您定制输出。将此选项与之前的其他 ipmpstat 选项结合使用可选择除主要选项通常显示的全部字段之外要显示的特定字段。
例如,-g 选项提供以下信息:
IPMP 组
IPMP 组名称
组状态
故障检测时间
IPMP 组的底层接口
假定您希望仅显示系统上 IPMP 组的状态。您可以结合使用 -o 和 -g 选项并指定 groupname 和 state 字段,如以下示例所示:
$ ipmpstat -g -o groupname,state GROUPNAME STATE ipmp0 ok accgt1 failed field2 degraded
要显示 ipmpstat 命令关于特定类型信息的所有字段,请在语法中包含 -o all。例如,要列出提供组信息的所有字段,请键入 ipmpstat -g -o all。
当您通过脚本或使用命令别名发出命令时,尤其是如果您还想生成计算机可解析的输出,-o 选项非常有用。
要生成计算机可解析的信息,请将 -P 和 -o 选项与其他 ipmpstat 主要选项之一以及要显示的特定字段结合使用。计算机可解析的输出在以下几个方面有别于常规输出:
省略了列标题。
字段以冒号 (:) 分隔。
具有空值的字段为空,而不是用双短划线 (--) 填充。
在请求多个字段时,如果字段中包含原义冒号 (:) 或反斜杠 (\),可以为这些字符添加反斜杠 (\) 前缀对其做转义或排除处理。
为了正确使用 ipmpstat -P 语法,请遵循以下规则:
将 -o option field 与 -P 选项结合使用。使用逗号分隔多个选项字段。
不将 -o all 与- P 选项结合使用。
忽略上述任一规则将导致 ipmpstat -P 失败。
以下示例显示了使用 -P 选项时的信息格式。
$ ipmpstat -P -o -g groupname,fdt,interfaces ipmp0:10.00s:net0 net1 acctg1::[net3 net4] field2:20.00s:net2 net7 (net5) [net6]
组名称、故障检测时间和底层接口是组信息字段。因此,应将 -o -g 选项与 -P 选项结合使用。
-P 选项设计用于脚本中。以下示例显示了如何通过脚本发出 ipmpstat 命令。此脚本用于显示 IPMP 组的故障检测时间。
getfdt() { ipmpstat -gP -o group,fdt | while IFS=: read group fdt; do [[ "$group" = "$1" ]] && { echo "$fdt"; return; } done }