SolarisIPMPBug解决方案
- 格式:doc
- 大小:40.50 KB
- 文档页数:6
Solaris 配置IPMP(双网卡绑定)使用IPMP实现网卡负载(网卡负载就是需要两张网卡共用一个IP地址实现网卡灾备功能)。
修/etc/hosts、/etc/hostname.bge0、/etc/hostname.bge1、/etc/defaultrouter、/etc/netmasks 五个文件,具体配置如下:使用Solaris 10 的IPMP实现网卡负载均衡功能,网卡负载均衡即使用两个或两个以上的网卡共用一个IP地址,实现网卡灾备的功能。
在本例中实现此项功能需要配置/etc/hosts、/etc/hostname.vmxnet0、/etc/hostname.vmxnet1、/etc/defaultrouter、/etc/netmasks 等五个文件。
以下过程为配置过程:1.验证系统的版本# uname -aSunOS Solaris10 5.10 Generic_118855-33 i86pc i386 i86pc或# cat /etc/releaseSolaris 10 11/06 s10x_u3wos_10 X86Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.Use is subject to license terms.Assembled 14 November 20062.修改EPROM中的local -mac -address?= 的参数值,设置网卡使用自身的MAC地址,重启后生效。
#eeprom local-mac-address?=true注意:此命令在解除ipmp 时是否需要更改3.设置子网掩码# vi /etc/netmasks192.1.1.0 255.255.255.04.编辑/etc/hosts 文件# vi /etc/hosts## Internet host table#127.0.0.1 localhost192.1.1.200 Solaris10 #此地址为将要虚拟出来用于服务的IP地址########configure for ipmp################192.1.1.201 Solaris10-test1 #test ip 1 #此地址为vmxnet0 的实际地址192.1.1.202 Solaris10-test2 #test ip 2 #此地址为vmxnet1 的实际地址##########################################5.编辑/etc/hostname.vmxnet0# vi /etc/hostname.vmxnet0Solaris10 netmask + broadcast + group fzu1 up addif Solaris10-test1 netmask + broadcast + deprecated - failover up注意:Solaris10为系统主机名Solaris10-test1用于本次测试的ip地址fzu1为本次测试的IPMP 的组名以上命令解释:Solaris10 用于本案例的主机名称netmask + 子网掩码由文件/etc/netmasks 和/etc/hostname.vmxnet0 计算的出broadcast + 广播地址由文件/etc/netmasks 和/etc/hostname.vmxnet0 计算的出group fzu1 设置本案例中的IPMP 组名为fzu1addif Solaris10-test1 增加一个以Solaris10-test1 的子接口deprecated 标志此为一个测试用端口并不用于服务- failover 标志此逻辑接口不用于故障切换up 标志此逻辑接口启动6.编辑/etc/hostname.vmxnet1# vi /etc/hostname.vmxnet1Solaris10-test2 netmask + broadcast + group fzu1 deprecated - failover up注意:Solaris10为系统主机名Solaris10-test1用于本次测试的ip地址fzu1为本次测试的IPMP 的组名以上命令解释:Solaris10-test2 设置一个用于本案例的Solaris10-test2 的子接口netmask + 子网掩码由文件/etc/netmasks 和/etc/hostname.vmxnet1 计算的出broadcast + 广播地址由文件/etc/netmasks 和/etc/hostname.vmxnet1 计算的出group fzu1 设置本案例中的IPMP 组名为fzu1deprecated 标志此为一个测试用端口并不用于服务- failover 标志此逻辑接口不用于故障切换?是否不应该使用-failover 而使用failover呢??up 标志此逻辑接口启动8.设置/etc/defaultrouter# vi /etc/defaultrouter192.1.1.253#默认网关,IPMP会通过ping网关来检测主网卡是否正常,ping不通网关会进行切换网卡7.测试使用如下命令强行使网卡切换#if_mpadm -d pcn2下重新启用网卡#if_mpadm -r pcn2可以观察到网卡地址的切换,现象如下:root:/#ifconfig -alo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000vmxnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.1.1.200 netmask ffffff00 broadcast 192.1.1.255groupname fzu1ether 0:c:29:b3:21:d3vmxnet0:1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 2inet 192.1.1.201 netmask ffffff00 broadcast 192.1.1.255vmxnet1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3inet 192.1.1.202 netmask ffffff00 broadcast 192.1.1.255groupname fzu1ether 0:c:29:b3:21:ddroot:/#if_mpadm -d vmxnet0root:/#ifconfig -alo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000vmxnet0: flags=89000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,OFFLINE> mtu 0 index 2inet 0.0.0.0 netmask 0groupname fzu1ether 0:c:29:b3:21:d3vmxnet1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3inet 192.1.1.202 netmask ffffff00 broadcast 192.1.1.255groupname fzu1ether 0:c:29:b3:21:ddvmxnet1:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3 inet 192.1.1.200 netmask ffffff00 broadcast 192.1.1.255vmxnet1:2: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3inet 192.1.1.201 netmask ffffff00 broadcast 192.1.1.255root:/#if_mpadm -r vmxnet0root:/#ifconfig -alo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000vmxnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.1.1.200 netmask ffffff00 broadcast 192.1.1.255groupname fzu1ether 0:c:29:b3:21:d3vmxnet0:1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 2inet 192.1.1.201 netmask ffffff00 broadcast 192.1.1.255vmxnet1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3inet 192.1.1.202 netmask ffffff00 broadcast 192.1.1.255groupname fzu1ether 0:c:29:b3:21:dd。
30第30章IPMP介绍(概述)IP网络多路径(IP network multipathing,IPMP)为在同一IP链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。
IPMP还为具有多个接口的系统提供了包负荷分配。
本章包含以下信息:I第675页中的“为什么应该使用IPMP”I第678页中的“IPMP的基本要求”I第678页中的“IPMP寻址”I第676页中的“Solaris IPMP组件”I第680页中的“IPMP接口配置”I第681页中的“IPMP故障检测和恢复功能”I第685页中的“IPMP和动态重新配置”有关IPMP配置任务,请参阅第31章。
为什么应该使用IPMPIPMP为具有多个物理接口的系统提供增强的可靠性、可用性和网络性能。
有时,连接到该接口的物理接口或网络硬件可能会出现故障或者需要维护。
过去,在这种情况下,系统便无法再通过与故障接口关联的任何IP地址进行联系。
并且,使用这些IP地址与系统相连的任何现有连接都将被断开。
通过IPMP,可以将一个或多个物理接口配置到IP多路径组(IPMP组)中。
配置IPMP后,系统将自动监视IPMP组中的接口是否出现故障。
如果组中的接口出现故障或者被移除以进行维护,则IPMP自动迁移或故障转移故障接口的IP地址。
这些地址的接收者是故障接口的IPMP组中的工作接口。
IPMP的故障转移功能可以保持连接并防止断开任何现有连接。
此外,通过自动在IPMP组中的一组接口中分配网络通信流量,IPMP提高了总体网络性能。
此过程称为负荷分配。
675为什么应该使用IPMPSolaris IPMP组件Solaris IPMP涉及以下软件:I in.mpathd守护进程(在in.mpathd(1M)手册页中进行了完整说明)。
I/etc/default/mpathd配置文件(也在in.mpathd(1M)手册页中进行了说明)。
I IPMP配置的ifconfig选项,如ifconfig(1M)手册页所述。
计算机硬件知识——故障解析(七)SUNSolaris常见问题集锦SUN Solaris常见问题集锦1. Q: Solaris 的系统配置文件一般在什么地方?A: 可以查看/etc/system文件,里面有一些solaris启动时默认加载的选项,包括共享内存大小等的设置。
2. Q: 在solaris中,用户默认的Shell在什么文件中规定?A: 可以查看/etc/passwd中,用户默认的shell在这里规定。
3. Q: 如果solaris不幸忘记了root密码,如何解决?A: 可以有如下两种情况1. 工作站只有root用户,无其他用户。
2. 工作站除了root用户以外,还有其他的用户1. 如果连接了网络,我们可以采用远程缓冲溢出的方法,但是这样的方法不属于“经典”方法,且有的远程缓冲溢出具有一定的破坏性,不建议使用。
还有一种方法就是采用SUN公司自带的光盘采取引导,建议采取这种方法:1. boot cdrom -s2. fsck /dev/dsk/c0t0d0s0 (取决于根分区的设备)3. mount -F ufs /dev/dsk/c0t0d0s0 /mnt4. TERM=ansi; export TERM5. 编辑/mnt/etc shadow文件,把root对应的口令去掉。
6. 重启后的root的口令为空。
2. 如果还有普通用户,方法可以采用本地缓冲溢出,这种方法虽然破坏性小,但是也有损毁硬盘引导区的危险,建议采用“文件连接”错误是获得root权限,这种方法没有什么危险性。
4. Q: 有时候用vi编辑器的时候,显示窗口过大,如何处理?A: 只需要用鼠标拖曳终端窗口,使其缩小,即可解决。
5. Q: 共享内存大小如何设置?A: 在system文件的最后一行加入Set shmsys:shminfo_shmmax=XXX/etc/set shmsys:shminfo_shmmin=XXX这里的XXX是代表共享内存的大小。
T2000 Solaris平台下常见问题分析与处理案例1现象描述:某日,一台安装有T2000的工作站在工作状态下突然掉电,重新启动时发现无法从硬盘正常启动,命令行登录运行fsck -y 命令后,故障现象依旧。
告警信息:无处理过程:1、在Solaris启动前,按STOP + A进入监控状态(OK状态) ;2、将Solaris引导光盘放入光驱中;3、在OK状态下发命令#boot cdrom -s从光盘引导系统,进入单用户模式;4、在安装的窗口桌面下,打开一个命令窗,在窗口中多次输入命令:#fsck -y修复磁盘完毕后,重新启动,问题仍存在。
5、再次进入单用户模式,输入命令:#df -k 查看磁盘分区信息是否正确(参考以前的分区记录),发现磁盘分区信息错误。
6、执行format命令修复分区表,方法如下:# formatSearching for disks...done……Specify disk (enter its number): 0selecting c0t0d0……7、(恢复分区信息):format> label ;Ready to label disk, continue? y(确认);format> quit(退出)然后重起工作站,检查问题是否已经解决。
8、如果仍没有解决,且硬盘有异常声响,则考虑更换硬盘,否则重装系统。
案例2现象描述:某日,安装有T2000服务器端的工作站重启后,正常登录到CDE界面,但T2000服务器端无法启动。
告警信息:无处理过程:1、判断数据库是否启动;2、检查数据库的连接数配置:切换到超级用户身份,打开/opt/sybase/T2000DBServer.cfg文件,查找到“number of user connections =45”字样,如果后面的是小于45的数字,或者“DEFAULT”,将数字改成45,重新启动工作站再试。
3、检查环境变量配置,确保IMAP环境变量指向T2000服务器的安装路径。
Solairs10环境下IPMP配置2010年05月26日星期三 11:32方法简述:启用服务器上的两个网口分别配置物理IP地址,通过配置文件启用一个主用的浮动地址,这个主用的IP地址可工作于这两个网口之上,当主用的IP所在网口发生故障时,系统可自动将主用IP切换到另外一个网口上,从而保证了业务的正常进行。
详细配置方法:修改系统配置文件,涉及到3个/etc下的文件,按照下面的格式进行修改:假设服务器两个网口的别名分别为e1000g0和e1000g1文件一:/etc/hosts172.16.31.71 capitek172.16.31.76 capitek_1172.16.31.77 capitek_2文件二:/etc/hostname.e1000g0capitek group capiteknafo upaddif capitek_1 -failover deprecated up文件三:/etc/hostname.e1000g1capitek_2 group capiteknafo -failover deprecated up修改完成后重新启动服务器,即可生效。
重启完成后,IP状态如下:root@sunT5220 # ifconfig -alo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1inet 127.0.0.1 netmask ff000000e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2inet 172.16.31.71 netmask ffff0000 broadcast 172.16.255.255 groupname capiteknafoether 0:21:28:1:29:32e1000g0:1:flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOV ER> mtu 1500 index 2inet 172.16.31.76 netmask ffff0000 broadcast 172.16.255.255e1000g1:flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOV ER> mtu 1500 index 3inet 172.16.31.77 netmask ffff0000 broadcast 172.16.255.255 groupname capiteknafoether 0:21:28:1:29:33当拔掉capitek所在网口的网线后,71的地址会自动切换到另外一个网口上,大约需要20秒左右的时间。
在Oracle®Solaris11.1中管理服务和故障文件号码E36752–032014年1月版权所有©1998,2014,Oracle和/或其附属公司。
保留所有权利。
本软件和相关文档是根据许可证协议提供的,该许可证协议中规定了关于使用和公开本软件和相关文档的各种限制,并受知识产权法的保护。
除非在许可证协议中明确许可或适用法律明确授权,否则不得以任何形式、任何方式使用、拷贝、复制、翻译、广播、修改、授权、传播、分发、展示、执行、发布或显示本软件和相关文档的任何部分。
除非法律要求实现互操作,否则严禁对本软件进行逆向工程设计、反汇编或反编译。
此文档所含信息可能随时被修改,恕不另行通知,我们不保证该信息没有错误。
如果贵方发现任何问题,请书面通知我们。
如果将本软件或相关文档交付给美国政府,或者交付给以美国政府名义获得许可证的任何机构,必须符合以下规定:ERNMENT END USERS:Oracle programs,including any operating system,integrated software,any programs installed on the hardware,and/or documentation,delivered to U.S. Government end users are"commercial computer software"pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such,use,duplication,disclosure,modification,and adaptation of the programs,including any operating system,integrated software,any programs installed on the hardware,and/or documentation,shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the ernment.本软件或硬件是为了在各种信息管理应用领域内的一般使用而开发的。
一、背景:一台M8000服务器的一个domain wycaiji与另一台M8000的一个domain wangyou组成一个VCS集群,2012年底的一次割接中出现domain wycaiji无法启动VCS故障,wangyou单节点启动正常。
二、信息收集及分析:1、VCS手动命令启动过程报错如下:wycaiji gab: GAB ERROR V-15-1-20109 Port h registration failed, GAB not configured2、确定主机硬件工作状态,保证无硬件故障:3、通过对照wangyou和wycaiji的网卡启动情况:发现VCS正常的那台主机wangyou的心跳网卡bge2、bge6状态为已启动状态,而VCS异常的wycaiji主机的心跳网卡bge2、bge6均未启动。
4、通过对照wangyou和wycaiji的VCS:发现VCS正常的那台主机wangyou的gabconfig状态正常,而VCS异常的wycaiji主机的gabconfig输出为空。
wycaiji:[/]#export P ATH=$P ATH:/usr/sbin:/sbin:/opt/VRTS/bin:/opt/VRTSvcs/binwycaiji:[/]#gabconfig -aGAB Port Memberships========================================================== =====wangyou:[/]#gabconfig -aGAB Port Memberships========================================================== =====Port a gen 50c70a membership 0Port h gen 50c70e membership 0通过以上输出也能看到心跳网络不正常。
Solaris的启动问题及解决办法Booting problems poses serious challenge to the system administrators as system is down and no one can use it . This article tries to cover some of the general booting problems and their possible solutions to enable understand the problem cause and bring the system up very quickly.Following are some of the booting issues ,error messages their meaning and possible solutions1) Booting in single user mode and mounting root hard disk.2) Making boot device alias3) "Timeout waiting for ARP/RARP packet"? error message.4) "The file just loaded does not appear to be executable." error message.5) "bootblk: can't find the boot program" error message.6) "boot: cannot open kernel/unix" error message .7) "Error reading ELF header."? error message .8) "Cannot open '/etc/path_to_inst'" error message.9) "Can't stat /dev/rdsk/c0t3d0s0" error message .1.Booting in single user mode and mounting root hard disk.Most important step in diagnosing the booting problems is booting the system in single user mode and examining the hard disk for possible errors & work out the corrective measure. Single user mode can be achieved by any of the following methods :- ok> boot -s ;from root diskok> boot net -s ;from networkok>boot cdrom -s ;from cdromRebooting with command: cdrom -sConfiguring the /devices directoryConfiguring the /dev directory |INIT: SINGLE USER MODE## fsck /dev/rdsk/c0t3d0s0# mount /dev/dsk/c0t3d0s0 /mntPerform the required operation on mounted disk , now accessible through /mnt ,& unmount the hard disk after you are done ;# umount /mnt# reboot2.Making boot device aliasIn case system can not boot from primary disk and it is needed to make another boot disk to access the data , nvalias command is used .nvalias command makes the device alias and assigns an alternate name to a physical disk. Physical address of target disk is required which can be had by show-disk command on ok>.ok> nvalias disk7 /iommu@f,e0000000/sbus@f,e0001000/dma@3,81000/esp@3,8 0000/sd2,0The new aliased disk can be named as boot disk or can beused for booting by refering its name .ok> setenv boot-device disk7ok>resetorok> boot disk73."Timeout waiting for ARP/RARP packet"?At ok> type printenv and look for these parameters .boot-device diskmfg-switch? falsediag-switch? falseif you see "boot-device net " or true value for the other two parameter change it to the values above.In case you wants to boot from network make sure your client is properly configured in boot server and network connections & configuration are proper.4."The file just loaded does not appear to be executable."Boot block on the hard disk is corrupted .Boot the system in single user mode with cdrom and reinstall boot block . #installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t3d0s05."bootblk: can't find the boot program"boot block can not find the boot programe - ufsboot in Solaris .Either ufsboot is missing or corrupted . In such cases it can be restored from the cdrom after booting from cdrom & mounting the hard disk# cp /platform/`uname -i`/ufsboot /mnt/platform/`uname -i`6."boot: cannot open kernel/unix"Kernel directory or unix kernel file in this directory is not found .Probably deleted during fsck or deleted by mistake .Copy it from the cdrom or restore from the backup tape.# cp /platform/`uname -i`/kernel/unix /mnt/platform/`uname -i`/kernel7."Error reading ELF header."?Kernel directory or unix kernel file in this directory is corrupted.Copy it from the cdrom or restore from the backup tape.# cp /platform/`uname -i`/kernel/unix /mnt/platform/`uname -i`/kernel8."Cannot open '/etc/path_to_inst'"System can not find the /etc/path_to_install file .It might be missing or corrupted and needs to be rebuild.To rebuild this file boot the system with -ar option :ok>boot -arPress enter to select default values for the questions asked during booting and select yes to rebuild /etc/path_to_install The /etc/path_to_inst on your system does not exist or is empty. Do you want to rebuild this file [n]? ysystem will continue booting after rebuilding the file.9."Can't stat /dev/rdsk/c0t3d0s0"When booted from cdrom and done fsck the root partition comes out to be fine but on booting from root disk this error occurs. The device name for / is missing from /dev/dsk directoryand to resolve the issue /dev & /devices directories has to be restored from root backup tapes .5."bootblk: can't find the boot program"boot block can not find the boot programe - ufsboot in Solaris .Either ufsboot is missing or corrupted . In such cases it can be restored from the cdrom after booting from cdrom & mounting the hard disk# cp /platform/`uname -i`/ufsboot /mnt/platform/`uname -i` `uname -i` 应该是 `uname -m`。
Solaris IPMP的原理及其不足我们介绍了Linux Bond的原理及其不足。
那么如果是在Solaris下,对应的就是IPMP(IP Multi Path)了。
今天这儿介绍Solaris IPMP原理及其不足。
原理IPMP的最基本单元是组(Group),组里面包含了两个网口,每个网口分别有一个测试IP地址,称为test IP,一个浮动IP地址(上层应用使用的IP地址)。
IPMP需要一个网关地址(Target),IPMP的后台进程,使用两个网口的测试IP地址,定时地,分别向Target发送ICMP(Internet Control Message Protocol)包(可以简单理解为ping包,ping是使用ICMP协议实现的一个工具),并统计丢报率,当丢报率达到一定上限时候,认为此网口到Target是不能连通的,此网口被标记为故障。
若此时浮动IP地址绑定在此网口上,则浮动IP地址会被切换到另外一个网口上。
IPMP是网口驱动上层的实现,不会更改网口的驱动(这点与Bond不一样),因此,IPMP组里面的两个网口,是独立的,可以被用作其他用途使用的。
这两个网口可以绑定上其他的IP地址,用作其他用途。
不足IPMP的不足有两点。
第一,每个IPMP组需要三个IP地址:两个测试IP地址,一个应用IP地址。
IP地址是稀缺资源,不论是内部组网的小网IP地址还是Internet的IP地址,更多的IP地址意味着更多的资源消耗。
第二,链路监测使用的是ICMP协议,在某些环境下,ICMP默认是不允许的(安全考虑),因此这种情况下,IPMP就彻底歇菜了。
Bond的ARP链路监测不存在此问题,ARP(地址解析协议)是必须的一个协议,是不可能被禁用的。
技术文档模板(v 100605)版本说明目录版本说明 (2)1 Bug简介 (3)2 故障成因说明 (4)2.1如何判断基于Probe-Based模式的IPMP配置 (4)3 故障表现 (5)3.1使用snoop查看数据包 (5)4解决方案 (6)1 Bug简介Bug Id:6888928,在Solaris 10,Kernel Patches为141444-09(SPARC)和141445-09(x86)环境下,IPMP 如果采用Probe-Based模式,会导致网卡failure,从而影响浮动IP不能正常通讯;目前这个Bug对IPMP采用Link-Based模式的网卡没有影响;2 故障成因说明SPARC平台:Solaris 10,打了kernel patch 141444-09,还没有打142900-02X86平台:Solaris 10,打了kernel patch 141445-09,还没有打142901-02对于Solaris 8、Solaris 9和OpenSolaris不受此问题影响;只有IPMP采用Probe-Based模式产生此问题,对于采用Link-Based模式不受此问题影响;2.1如何判断基于Probe-Based模式的IPMP配置必须符合以下的条件:1 运行以下命令后查看"in.mpathd"守护进程是否运行# ps -aef |grep "in.mpathd"root 211 1 0 11:04:51 ? 0:00 /usr/lib/inet/in.mpathd -a2 使用"ifconfig -a"查看网卡"groupname"必须是同一个IPMP group# ifconfig -alo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000e1000g1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 5inet 192.178.100.1 netmask ffffff00 broadcast 192.178.100.255groupname fredether 0:3:ba:d8:d1:efe1000g1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 5inet 192.178.100.2 netmask ffffff00 broadcast 192.178.100.255e1000g2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 6inet 192.178.100.5 netmask ffffff00 broadcast 192.178.100.255groupname fredether 0:4:23:c8:33:86e1000g2:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 6inet 192.178.100.6 netmask ffffff00 broadcast 192.178.100.255以上的例子中,"groupname"为"fred"3 使用"ifconfig -a"查看测试地址必须是"DEPRECATED" 和"NOFAILOVER"的状态3 故障表现以上描述的问题出现时,纵使没有网络问题发生,也会导致IPMP group中的网卡failure;下面是/var/adm/messages中的log信息:# Oct 22 11:09:29 v4v-t2000a-sca11 in.mpathd[211]: NIC failure detected on e1000g2 of group fred Oct 22 11:09:29 v4v-t2000a-sca11 in.mpathd[211]: Successfully failed over from NIC e1000g2 to NIC e1000g1使用"ifconfig -a"查看网卡被标记为"FAILED":# ifconfig -alo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000e1000g1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 5inet 192.178.100.1 netmask ffffff00 broadcast 192.178.100.255groupname fredether 0:3:ba:d8:d1:efe1000g1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 5inet 192.178.100.2 netmask ffffff00 broadcast 192.178.100.255e1000g1:2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 5inet 192.178.100.5 netmask ffffff00 broadcast 192.178.100.255e1000g2: flags=19000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,FAILED> mtu 0 index 6inet 0.0.0.0 netmask 0groupname fredether 0:4:23:c8:33:86e1000g2:1:flags=19040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER, FAILED> mtu 1500 index 6inet 192.178.100.6 netmask ffffff00 broadcast 192.178.100.2553.1使用snoop查看数据包由于e1000g1代替e1000g2接收了回复给192.168.100.6这个地址的ICMP数据包,导致e1000g2网卡failed;使用snoop命令可以看到每个192.178.100.6地址的ICMP请求数据包都由e1000g1发出,回复给192.178.100.6的数据包也由e1000g1收到:# snoop -d e1000g1 icmpUsing device e1000g1 (promiscuous mode)192.178.100.6 -> 192.178.100.15 ICMP Echo request (ID: 54022 Sequence number: 1674)192.178.100.15 -> 192.178.100.6 ICMP Echo reply (ID: 54022 Sequence number: 1674)192.178.100.2 -> 192.178.100.15 ICMP Echo request (ID: 54021 Sequence number: 1680)192.178.100.15 -> 192.178.100.2 ICMP Echo reply (ID: 54021 Sequence number: 1680)192.178.100.6 -> 192.178.100.10 ICMP Echo request (ID: 54022 Sequence number: 1675) 192.178.100.10 -> 192.178.100.6 ICMP Echo reply (ID: 54022 Sequence number: 1675)再用snoop命令查看e1000g2的数据包,没有数据包收发:# snoop -d e1000g2 icmpUsing device e1000g2 (promiscuous mode)4解决方案1 打kernel patchSPARC平台:Solaris 10打patch至142900-02或更高X86平台:Solaris 10打patch至142901-02或更高2 IPMP改为Link-Based模式# more /etc/hostname.e1000g1192.178.100.1 netmask + broadcast + group fred up# more /etc/hostname.e1000g2192.178.100.5 netmask + broadcast + deprecated -failover group fred up。