跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:网络接口和网络虚拟化 Oracle Solaris 11 Information Library (简体中文) |
以下过程使用 ipmpstat 命令,使您能够监视系统上 IPMP 组的不同方面。您可以将 IPMP 组作为一个整体来观察其状态,也可以观察其底层 IP 接口的状态。您还可以验证该组的数据地址和测试地址的配置。通过使用 ipmpstat 命令还可以获取有关故障检测的信息。有关 ipmpstat 命令及其选项的更多信息,请参见ipmpstat(1M) 手册页。
缺省情况下,输出上显示主机名而不是数字 IP 地址(只要主机名存在)。要在输出中列出数字 IP 地址,请将 -n 选项与其他选项结合使用以显示特定 IPMP 组信息。
注 - 在以下过程中,使用 ipmpstat 命令不需要系统管理员权限,除非另有说明。
使用此过程以列出系统上各 IPMP 组的状态,包括其底层接口的状态。如果为特定组启用了基于探测器的故障检测,则该命令还包括该组的故障检测时间。
$ ipmpstat -g GROUP GROUPNAME STATE FDT INTERFACES itops0 itops0 ok 10.00s net0 net1 acctg1 acctg1 failed -- [net3 net4] field2 field2 degraded 20.00s net2 net5 (net7) [net6]
指定 IPMP 接口名称。对于匿名组,此字段将为空。有关匿名组的更多信息,请参见in.mpathd(1M) 手册页。
指定 IPMP 组的名称。对于匿名组,此字段将为空。
表示一个组的当前状态,可以是以下值之一:
ok(正常)表示 IPMP 组的所有底层接口都可用。
degraded(降级)表示该组中的部分底层接口不可用。
failed(故障)表示该组的所有接口都不可用。
指定故障检测时间(如果启用了故障检测)。如果禁用了故障检测,则此字段将为空。
指定属于该组的底层接口。在此字段中,首先列出活动接口,然后是非活动接口,最后列出不可用的接口。接口的状态由列出方式表示:
interface(不带圆括号或方括号)表示活动接口。活动接口是系统用于发送或接收数据通信流量的接口。
(interface)(带圆括号)表示能正常工作但处于非活动状态的接口。根据管理策略的定义,该接口并未使用。
[interface](带方括号)表示该接口不可用,因为它已出现故障或处于脱机状态。
使用此过程来显示数据地址和每个地址所属的组。根据地址是否已由 ipadm [up-addr/down-addr] 命令切换,显示的信息还包括哪个地址可用。您还可以确定一个地址可以在哪个传入或传出接口上使用。
$ ipmpstat -an ADDRESS STATE GROUP INBOUND OUTBOUND 192.168.10.10 up itops0 net0 net0 net1 192.168.10.15 up itops0 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 IP 接口。
标识接收给定地址的数据包的接口。根据外部事件,字段信息可能会发生更改。例如,如果数据地址已关闭或者 IPMP 组中没有活动 IP 接口,此字段将为空。空字段指示系统当前没有接受发送到给定地址的 IP 数据包。
标识发送使用给定地址作为源地址的数据包的接口。与 INBOUND 字段一样,OUTBOUND 字段信息也可能根据外部事件而更改。空字段指示系统当前没有发送具有给定的源地址的数据包。该字段可能为空,原因是该地址已关闭或组中没有活动 IP 接口。
使用此过程来显示有关 IPMP 组的底层 IP 接口的信息。有关 NIC、数据链路与 IP 接口之间的对应关系的说明,请参见Oracle Solaris 中的网络栈。
$ ipmpstat -i INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE net0 yes itops0 --mb--- up ok ok net1 yes itops0 ------- 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 接口的状态,因为找不到基于探测器的故障检测的探测器目标。
使用此过程来监视与 IPMP 组中每个 IP 接口相关联的探测器目标。
$ 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 $ 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 选项)。
使用此过程观察正在运行的探测器。当您发出命令来观察探测器时,会不断显示有关系统上探测器活动的信息,直到您使用 Ctrl-C 终止命令。您必须具有主管理员权限才能运行此命令。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# 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 # 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
指定发送探测器的时间(相对于发出 ipmpstat 命令的时间)。如果探测器在 ipmpstat 开始之前已启动,则显示的时间为负值(即相对于发出命令的时间)。
指定在其上发送探测器的接口。
指定代表探测器的标识符。如果使用过渡探测进行故障检测,则标识符具有前缀 t(对于过渡探测器)或 i(对于 ICMP 探测器)。
指定探测器的总网络往返时间(以毫秒为单位)。NETRTT 指从 IP 模块发送探测器到 IP 模块接收到来自目标的 ack 数据包的时间。如果 in.mpathd 守护进程已确定探测器丢失,则该字段为空。
指定探测器的总往返时间(以毫秒为单位)。RTT 指从守护进程执行代码以发送探测器到守护进程完成处理来自目标的 ack 数据包的时间。如果 in.mpathd 守护进程已确定探测器丢失,则该字段为空。如果电力激增发生在 RTT 而在 NETRTT 中没有出现,则可能表明本地系统过载。
指定接口上探测器在本地系统和目标之间的平均往返时间。平均往返时间可以帮助确定速度慢的目标。如果数据不足以计算平均值,此字段将为空。
指定主机名;如果 -n 选项与 -p 结合使用,则指定向其发送探测器的目标地址。
当您使用 ipmpstat 时,缺省情况下,将显示适合 80 列的最有意义的字段。在输出中,将显示特定于与 ipmpstat 命令结合使用的选项的所有字段(使用 ipmpstat -p 语法时除外)。如果您要指定要显示的字段,则将 -o 选项与用于确定命令的输出模式的其他选项结合使用。当您从脚本或通过使用命令别名发出命令时,此选项非常有用。
要显示 ipmpstat 命令的所选字段,请将 -o 选项与特定输出选项结合使用。例如,要仅显示组输出模式的 GROUPNAME 和 STATE 字段,请键入以下内容:
$ ipmpstat -g -o groupname,state GROUPNAME STATE itops0 ok accgt1 failed field2 degraded
要显示给定 ipmpstat 命令的所有字段,请使用以下语法:
# ipmpstat -o all
您可以通过使用 ipmpstat - P 语法生成机器可解析的信息。-P 选项的设计初衷是仅在脚本中使用。机器可解析的输出在以下几个方面有别于正常输出:
头被省略。
字段以冒号 (:) 分隔。
具有空值的字段为空,而不是用双破折号 (--) 填充。
在请求多个字段时,如果字段包含原义冒号 (:) 或反斜杠 (\),可以对这些字符添加反斜杠 (\) 前缀对其做转义或排除处理。
为了正确使用 ipmpstat -P 语法,请遵循以下规则:
将 -o 选项字段与 -P 选项结合使用。
不将 -o all 与- P 选项结合使用。
忽略上述任一规则将导致 ipmpstat -P 失败。
$ ipmpstat -P -o -g groupname,fdt,interfaces itops0:10.00s:net0 net1 acctg1::[net3 net4] field2:20.00s:net2 net7 (net5) [net6]
组名称、故障检测时间和底层接口是组信息字段。因此,您将 -o -g 选项与 -P 选项结合使用。
示例 15-8 在脚本中使用 ipmpstat -P
本示例脚本显示特定 IPMP 组的故障检测时间。
getfdt() { ipmpstat -gP -o group,fdt | while IFS=: read group fdt; do [[ "$group" = "$1" ]] && { echo "$fdt"; return; } done }