Sun工作站技术文档
华胜天成
目 录
1、用户忘记root口令,如何解决?
2、使用ftp时无法以root用户登录系统
3、使用telnet时无法用root用户登录系统
4、工作站异常关机后不能正常进入操作系统怎么办?
5、如何安全的关闭工作站。
6、如何修改Sun工作站的主机名
7、新装一台机器,图形界面起不来,显卡为XVR-100。
8、如何更改显示器分辨率
9、Xsun进程占用cpu 100%
10、如何获取补丁文件?
11、为远程LOGIN做超时退出设置
12、如何打印纯中文文本
13、Solaris中的logging功能的应用
14、关于Sun系统中的设备管理
15、SUN主机配置第二块网卡
16、如何处理安装系统时不能分配交换区
17、如何单独安装SUN系统信息收集包SUNWexplo
18、如何改动var分区
19、FTP常用命令详解
20、关于solaris8中ipmp的应用
在Solaris启动前,按
在OK状态下发命令从光盘引导系统
OK boot cdrom -s
#fsck -y /dev/rdsk/c0t0d0s0 (取决于根分区的设备)
# mount -F ufs /dev/dsk/c0t0d0s0 /mnt
#TERM=vt100; export TERM (如果直接用vi正常,就不要此句)
# vi /mnt/etc/shadow
将root后的第一个冒号和第二个冒号之间的字符删除,这样就将root用 户的口令删除了。 (建议操作前作个备份)
# umount /mnt
# reboot
以root用户登录,编辑/etc/ftpusers文件,找到并标记root用户这一行,保存后退出,就可以在使用ftp时以root用户身份登录了。安全考虑,建议使用完后,取消root用户的ftp权限。
以root用户登录,编辑/etc/default/login文件,找到并注释CONSOLE=/dev/console这一行,保存后退出,就可以在使用telnet时以root用户身份登录了。安全考虑,建议使用完后,取消root用户的telnet权限。
Solaris系统异常关机可能造成文件系统的损坏。在系统的重新引导过程中,系统将自动调用fsck命令对文件系统进行检查修复。系统引导完成后仍然需要执行fsck命令对文件系统进行检查。首先,取得超级用户权限,执行如下命令:
#fsck -y
理想的关机方式应该是先停止应用,关闭数据库服务器,执行sync,再执行shutdown -y -g0 -i5关机。
修改主机名要修改三个文件:
/etc/hostname.hme0 // hme0 为网络接口名,因机器类型的不同,可能会有所不同。
/etc/hosts
/etc/nodename
将三个文件中的原来的主机名改为要修改的主机名。重新启动工作站生效。
新型显卡solaris 8 02/02版本没有集成它的驱动程序,可以在字符界面安装完系统后,安装显卡的驱动程序,并打patch。
在Solaris 8 系统环境中,fbconfig是配置显示卡的唯一的程序接口,每个显示卡有自己的专用配置工具。在Solaris 8 软件中,通过有规则的命名方式来与/dev/fbs下的设备名对应
. ffbconfig Creator, Creator3D
. afbconfig Elite3D
. ifbconfig Expert3D, Expert3Dlite
. m64config PGX24 (onboard U5, U10), PGX64
. gfxconfig PGX32
在下面的内容中,只提及fbconfig,其他命令的参数都是一样的。如果没有在配置中把某个设备指定给某个显示卡,fbconfig工作在默认的显示卡(接主屏幕的显示卡)。
fbconfig -res /? 这条命令将列出该显示卡支持的分辨率,指定的分辨率可以"剪切&拷贝" 到下面命令里面
fbconfig -res "1280x1024x86" -try -now -try和-now都是选项。-try将只会改变10秒钟的分辨率。可以使用这个方法测试显示器和改变之后的视频信号是否同步。
xvr-100 显卡没有安装patch,打patch 114537(Solaris 8);114538(Solaris 9)
http://sunsolve.sun.com/
背景:为了安全设置键盘空闲时的超时,保证与所登陆的主机断开。
这篇文档阐述两个不同的静止超时:
Ø 登录阶段的静止超时,自动断开,终止登录:
这是在你登录之前的Login:提示下。
Ø 在SHELL阶段的静止超时,即已经登录到系统中的静止超时,自动断开:
这是在你登录之后的Shell的提示符下。
使用范围:适用于简单的远程的登录(即telnet, rlogin),对Openwin和CDE的登录失效。
解决方案:
Ø 登录阶段的静止超时设置:
修改/etc/default/login文件:
将# timeout = 300前的“#”号去掉。
# TIMEOUT sets the number of seconds (between 0 and 900) to wait before
# abandoning a login session.
#
#TIMEOUT=300
超时的缺省值是300秒,即在提示你登录时,若在300秒内没有从键盘输入登录名(或密码)则自动将登录断开连接,终止登录。
Ø 在SHELL阶段的静止超时设置:
条件:仅适用于Korn和bash 的shell环境:/usr/bin/ksh, /usr/bin/bash。
TMOUT是控制korn和bash SHELL静止超时的环境变量。如果此值没有设置或值为0则没有静止超时控制;如果值大于0,则在此指定的时间内没有输入,则自动断开连接。
TMOUT在/etc/profile中为所有用户设置;在$HOME/.profile中为本用户设置。
一、使用xetops打印中文纯文本文件
可使用简体中文 Solaris 的 xetops 实用程序在 PostScript 打印机上打印含有中文字符的文件。
xetops 实用程序把中文文本转换为位图图形打印图像。可打印出一个含有中文字符、可含也可不含 ASCII 英语字符的名为 filename 的文件:
system% pr filename | xetops | lp
将 filename 作为要打印的文件名称。这个文件可以含有 ASCII 英语字符和中文字符。有关的详细信息,请参见 xetops (1) 的手册页。
system% xetops -h
Ø 下列指令格式信息出现:
xetops [-r] [-B|[-T [-t S|F|K|H] [-s [i]|m|c] [-p A3|A4|A5|B5|USLtr|USLgl] [-o length=i|c| [,width=i|c]] [filename]
xetops 实用程序的选项如下:
-r:以横向模式打印文件。
-B:使用位图字体打印文件。 (缺省值是 TrueType 宋体字体。)
-T:使用 TrueType 字体打印文件。
-t:使用该选项来指定多至四种铅印字体。S 表示宋体,F 表示仿宋体,K 表示楷体,而 H 表示黑体。
-s:指定每个字符的尺寸。i 表示英寸,m 表示毫米,c 表示厘米。 (缺省值是英寸。)
-p:指定纸张的规格 (A3、A4、A5、B5、US Letter,或 US Legal)。
-o:指定纸张的长和宽。i 表示英寸,c 表示厘米。 (缺省值是行数。)
Ø 一些使用 pr 命令和 xetops 实用程序的实例。
u 以下指令:
system% pr filename | xetops | lp
将使用宋体 TrueType 字体打印出文件。打印出的字符的尺寸是 4mm。
u 以下指令:
system% pr filename | xetops -t K -s 8m | lp
将使用楷体 TrueType 字体打印出文件。打印出的字符的尺寸是 8mm。
u 以下指令:
system% xetops -t H -s 1.2 filename | lp
将使用黑体 TrueType 字体打印出文件。打印出的字符的尺寸是 1.2 英寸。
u 以下指令:
system% xetops -B filename | lp
将使用位图字体打印出文件。
二、使用 mp 公用程序打印
Solaris 8 环境中提供新的、增强的 mp(1) 打印过滤器,可用来打印各种输入文件格式,包括用 UTF-8 写的纯本文件。它使用 Solaris 系统提供的 TrueType 和 Type 1 可缩放字体和 X11 位图字体。
在Solaris7及其以后版本的系统中有一种称为logging的功能。它不但易于安装和使用,并且对于数据安全非常有用。
UFS是存在于Sun工作站的几乎所有硬盘分区(swap等个别分区除外)上的一种标准的文件系统类型。而logging功能是UFS文件系统的一个挂接选项,它可以被设置在包括/在内的各个硬盘分区上。
Solaris的UFS logging通过使用系统中的空白数据块来工作。所有对文件系统数据(metadata,或称为元数据)的修改都被写在这些空白的区域。这些Metadata包括目录和inode信息,不包括文件中的数据本身。比如创建文件时,目录结构被修改并且系统为这个新文件分配一个新的inode。以上这些行为被写入做logging的空间中。一旦数据的修改行为被写入做logging的区域,系统就可以接着对文件系统做其它的操作了。在后台,存在于logging中的信息将被同步到文件系统中,并自动更新相应的目录和I节点,最终完成文件系统的操作。数据也陆续被写入硬盘。因此这种做logging并在后台写入数据,比通过随机的I/O访问直接对分布在硬盘上的各种管理信息进行修改的方式速度要快得多。用来做logging的空间的大小取决于文件系统的大小。每1GB磁盘分区空间的logging空间为1MB,最多不超过64MB。这部分logging空间被循环使用:当log空间即将装满时,暂停新的metadata数据写入,直至log空间被清空。当log中记录的关于文件系统的修改都被应用于文件系统后,那部分空间又重新可以作为log空间来存放新的metadata数据了。
通常对于UFS来说,如果操作系统在任何文件系统操作中崩溃,整个文件系统都需要用fsck命令做一致性检查。这个命令的执行可能需要几分钟的时间,因为它需要检测所有的metadata和文件的数据以确认文件系统的完整性:包括当前已经用的空间、未用的、inode的数量等,修复其中不一致的地方。出现比较大的问题时还需要人工干预。在做检查的过程中有可能会丢失文件,甚至目录。这决定于crash发生时,该操作进行到了哪种程度。如果采用logging功能,情况就完全不同。因为metadata的修改首先被写在log空间而不是文件系统中。如果系统崩溃,对文件系统一致性的检测可以仅仅限于log中记录的那部分,这样会更简单、更有效。系统检查logging的数据,以决定在上一次的文件系统中,哪种修改已经做过了,哪种修改即将做,哪种修改正在做,做过的和即将做但还没有做的操作被系统从log中删掉, 而那些做了一部分的会被接着做完或完全取消掉。如果在log中记录了足够的数据来完成这一操作,该操作会被继续完成。否则,这种改变会被取消。熟悉数据库操作的用户会发现这和数据库软件中的事务处理过程非常相似。最终的结果是:文件系统能够最大限度地保持一致,不需要进行彻底的文件系统检测,整个文件系统检测过程只需要花几秒钟时间。从Solaris 7开始, mount命令和/etc/vfstab文件中也有了一个新的logging选项。
为了验证logging选项对系统性能的贡献,我们做一个脚本文件,它要创建1000个目录。这种操作将对系统中的metadata的处理带来非常大的压力。实验在一台运行Solaris7的Ultra 5机器上进行:
# more logging-test
#!/bin/ksh
# Test ufs logging performance
# Get to the right place and make a test directory
cd /big
mkdir test
# Create 1000 directories
integer i=0
while ((i < 1000))
do
mkdir test/test${i}
i=i+1
done
# chmod a+x logging-test 给文件加上执行权限
第一次做实验时不采用logging选项(Solaris 7和8的文件系统缺省状态下都不采用这种选项)。
# time ./logging-test 用此命令测一下整个执行时间
real 27.7
user 2.0
sys 4.9
# time rm -rf /big/test
real 8.0
user 0.0
sys 0.3
结果创建和删除目录共需要35.7秒时间。第二次采用logging选项,再做一次测试:
# umount /big
# mount -o logging /big
# time ./logging-test
real 13.2
user 1.7
sys 5.4
# time rm -rf /big/test
real 0.8
user 0.0
sys 0.2
同样的命令在采用UFS logging以后只需要14秒的时间,性能提高非常明显。下一个测试更有趣。不采用logging,并在上面的脚本执行过程中关机,那么下一次启动时,系统要求进入单用户状态手工执行fsck来修复系统,在修复过程中也报了很多错。修复了以后,系统可以引导起来。采用了logging功能后,同样的实验过程却得到了令人鼓舞的结果:系统仅仅提示:
/dev/c0t1d0s3: is logging
没有其它的报错信息给出。
但是UFS logging最初会有一些bug,在采用UFS logging之前,需要打最新的系统核心patch,并且最好在另一个非生产环境进行测试。
还有另一种比较新的而且很有用的mount选项:noatime。如果没有noatime选项,每个文件每次被访问,它的I节点中的访问时间的值都会被更新。这样,用ls –lu命令可以看出文件最近一次被“读”的时间。但是有些情况下我们并不关心文件什么时候被读过,比如Web server 的内容,但是他们增加很多的IO负载,从而影响性能。使用noatime会减少访问时间被更新的频率,它使系统只有在该文件的其它I节点属性同时修改时才更新文件的访问时间。在我们不关心访问时间的文件系统中,这不会对系统造成什么损害。
Sun系统中的设备驱动程序
一个计算机系统可以使用很大范围的各种外设和存储设备。比如,你的系统中可能包含SCSI磁盘、键盘、鼠标、磁带机等。还有其它常用设备如:CDROM、打印机、绘图仪、触摸屏、数字化仪等。
Solaris软件不直接和这些设备通信,因为每种设备类型要求不同的数据格式、协议和传输速率。操作系统通过设备驱动程序这种底层的程序与具体的设备通信,也就是设备驱动程序充当操作系统和设备之间的翻译。
系统kernel包括一个很小的与平台有关的核心和一系列模块。核心模块是在系统中完成某一特定任务的软件或硬件组件。核心模块可以在Solaris环境中被动态加载。一个可加载的核心模块的例子就是设备驱动程序。当设备被访问时,设备的驱动程序被加载。
在Solaris中,与平台无关的操作系统核心是 /kernel/genunix。适合于特定平台的系统组件是 /platform/`uname –m`/kernel/unix。
启动时系统测定所连设备,核心动态的作自我配置,把需要的模块加载到内存。磁带机和磁盘等设备在第一次被访问时加载相应驱动。
可以通过修改/etc/system文件来改变核心模块被加载的方式。
/etc/system文件中与模块加载有关的有3处:
moddir
用moddir来指明各模块的加载路径。文件中给出了格式为:
moddir: /kernel /usr/kernel /other/modules
exclude
用exclude指明在moddir的路径中哪些模块即使在使用时也不加载。格式为:
exclude:module_name
forceload
用forceload指明哪些模块在启动时就加载,而不是在该模块第一次被使用时加载。格式为:
forceload: module_name
被指明需要强制加载的模块如果不存在,在启动时会有报警信息给出。如果该模块对系统不重要,可以不理睬该报警。
Solaris环境中已经包含很大范围的标准设备的驱动程序,存放在 /kernel/drv 和 /platform/`uname –m`/kernel/drv 目录中。因此安装很多设备时并不需要同时安装驱动程序。但是如果购买了不被Solaris系统直接支持的设备,设备的生产厂家应该提供对该设备进行正确安装、维护和管理所需的软件。在他们提供的软件中至少应包含设备驱动程序和相应的配置文件(.conf文件)。如果该设备与Solaris中的工具、应用不兼容,需要和设备提供商联系对设备、软件等进行调整,而不是考虑对Sun操作系统本身进行什么修改。
显示设备配置信息
我们经常使用prtconf、sysdef和dmesg命令来察看系统和设备信息。
prtconf显示系统中设备的树状互连结构。此命令的输出中表示设备时,用设备的instant name。用此命令不但能看出系统中有哪些设备,而且能看出每个设备是通过哪些总线、哪些控制器连接到系统中,每个设备的逻辑设备号。
sysdef命令可以显示更详细的系统信息,包括hostid、核心结构、设备树、系统中的可加载模块、系统核心参数、部分可调参数的值等。其中也包含prtconf的输出。
prtconf和sysdef命令的输出与机型有关。
dmesg从系统日志中搜集错误信息并输出。
设备名称
Solaris中使用3种名称来表示某一设备:物理设备名、逻辑设备名和instance name。
物理设备名按照设备的树装互连结构表示设备本身的全路径,是系统对设备的真正访问路径。物理设备名存放在/devices目录下。
逻辑设备名是系统管理员和大部分系统命令使用的。逻辑设备名存放在/dev目录下,并符号链接至/devices目录下的相应文件。
Instance name是核心表示系统中可能存在的每个设备的简单的名字,比如用sd0、sd1等表示磁盘。Instance name与物理设备名的映射关系记录在/etc/path_to_inst文件中。
1、 物理上将第二块网卡扩入主机相应槽位
2、 临时的网卡配置(重新启动后配置消失):
b) 启动机器以root身份登录操作系统
c) #ifconfig hme0 plumb *驱动hme0网口
#ifconfig hme0 IPaddress netmask netmask up *配置IP地址和掩码
#route add destination gateway *手工增加路由
3、永久的网卡配置
(1)#vi /etc/hosts *增加新加网卡主机名和IP地址的对应关系
(2)#vi /etc/hostname.hme0 *创建该文件,文件内容为新加网卡的主机名
(3)#vi /etc/netmasks *增加新的网段掩码,注意网段为未划分子网前的网段
(4)#vi /etc/rc2.d/S99routeadd *创建该文件,内容为手工增加路由的一段
背景:
1、使用“Operating Environment”光盘启动安装Solaris 2.5.1 11/97 or Solaris 2.6 5/98系统时。
2、使用“Solaris 8 Installation”光盘启动安装Solaris 8系统时。
有时会出现:
Enter a swap partition size between 320Mb and 4294967295Mb, default = 512Mb [?]
The swap size, 512Mb, is too large.
我们将无法进行安装。
处理方法:
1. 用光盘启动进入单用户:
OK boot cdrom –s
2. 在单用户提示符下,键入format:
# format
3. 选择恰当的硬盘,一般为0号盘。
4. 从format的提示符下,选择:partition
format> partiton
5. 从partition的提示符下,选择:print
当前的分区表为:
Total disk cylinders available: 17660 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 - 4161 2.00GB (4162/0/0) 4195296
1 swap wu 4162 - 5202 512.37MB (1041/0/0) 1049328
2 unassigned wm 0 0 (0/0/0) 0
3 root wm 5203 - 15605 5.00GB (10403/0/0) 0486224
4 unassigned wu 0 0 (0/0/0) 0
5 unassigned wu 0 0 (0/0/0) 0
6 unassigned wu 0 0 (0/0/0) 0
7 unassigned wm 15606 - 17659 1010.95MB (2054/0/0) 2070432
6. 以下面步骤改变第二分区(整个硬盘容量)
注意:第二分区是其他分区的和。
Ø 4195296+1049328+10486224+2070432=17801280
Ø 这个数也可以通过输入?计算而来:
Enter partition size[0b, 0c, 0.00mb, 0.00gb]: ?
Expecting up to 17801280 blocks...
partition> 2
Part Tag Flag Cylinders Size Blocks
2 unassigned wm 0 0 (0/0/0) 0
Enter partition id tag[unassigned]: backup
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0.00mb, 0.00gb]: 17801280b
partition>
Ø 列出修改后的分区表:
partition> pr
Current partition table (unnamed):
Total disk cylinders available: 17660 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 - 4161 2.00GB (4162/0/0) 4195296
1 swap wu 4162 - 5202 512.37MB (1041/0/0) 1049328
2 backup wm 0 - 17659 8.49GB (17660/0/0) 17801280
3 root wm 5203 - 15605 5.00GB (10403/0/0) 10486224
4 unassigned wu 0 0 (0/0/0) 0
5 unassigned wu 0 0 (0/0/0) 0
6 unassigned wu 0 0 (0/0/0) 0
7 unassigned wm 15606 - 17659 1010.95MB (2054/0/0) 2070432
partition>
7、修正硬盘卷表:
partition> label
Ready to label disk, continue? y
partition>
8、退出partiton菜单及format程序,关机:
partition> quit
format> quit
# halt
1、请将附件的压缩包用bin模式传到主机某个目录下,然后cd到该目录下执行
#gunzip SUNWexplo.tar.gz
#tar xvf SUNWexplo.tar
#pkgadd -d . SUNWexplo
(以上三条命令为解开sun公司系统采集包SUNWexplo并安装,如果本主机已安装过该软件包则系统会有提示并忽略安装)
2、执行如下命令采集信息
#cd /opt/SUNWexplo/bin
#./explorer
请耐心等待命令执行完毕,命令执行完毕之后会将信息输出到/opt/SUNWexplo/output下生成一个.gz的压缩文件
此压缩文件包含系统信息
1. init 1 (必须在1下,因为0下不能创建文件,read-only file system)
who -r
2. 查看现有分区,磁盘信息
mount
df -k
format
3. 备份要改动的分区下的数据
tar cvf var.tar /var
tar cvf home.tar /export/home
mv var.tar /usr
mv home.tar /usr
4. 重新分区
umount /export/home
注意: /var现在不能被umount
format
p
p
6, 7
name
label
save
label
5.新建6,7分区的文件系统
fsck /dev/rdsk/c0t0d0s7
提示出错,需要新建文件系统
newfs /dev/rdsk/c0t0s0s7
fsck /dev/rdsk/c0t0s0s7
注释掉/etc/vfstab中关于 /dev/rdsk/c0t0s0s6的一句, 以便使/var不被mount
init s
fsck /dev/rdsk/c0t0d0s6
newfs /dev/rdsk/c0t0d0s6
fsck /dev/rdsk/c0t0d0s6
手工mount var
mount /dev/dsk/c0t0d0s6 /var
恢复备份数据 (这样才能恢复vi的使用)
tar xvf var.tar /var
手工mount /export/home
mount /dev/dsk/c0t0d0s7 /export/home
恢复备份数据
tar xvf home.tar /export/home
调用VI, 取消对/etc/vfstab中关于 /dev/rdsk/c0t0s0s6的一句的注释。
查看是否达到预期的目的
mountall -l
df -k
6 重起机器
init 6
1.控制文件传输格式的命令
ascii 设定以ASCII方式传送文件(缺省值)
binary 设定以二进制方式传送文件
type [binary|ascii] 显示或修改当前文件传输模式
说明:在微机和工作站之间传输的大部份文件需要采用“二进制”形式传输。比如unix的可执行文件、tar文件、pc的word文档等。
ftp命令支持简略格式。比如:ascii可以用aci。
2.控制连接的打开和关闭的命令
open host [port] 重新建立一个新的连接.
bye 终止主机FTP进程,并退出FTP管理方式.
quit 同bye.
close 终止远端的FTP进程,返回到FTP命令状态,所有的宏定义都被删除.
disconnect 同close.
user user-name [password] [account] 重新以别的用户名登录远端主机.
3.浏览和查看文件的命令
lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录.
cd 同UNIX的cd命令.
pwd 列出远端主机当前目录名.
dir [remote-directory] [local-file] 列出远端主机当前目录中的文件.
ls [remote-directory] [local-file] 同DIR.
4.传输文件的命令
chmod 改变远端主机的文件权限.
put local-file [remote-file] 将本地一个文件传送至远端主机中.
mput local-files 将本地主机中一批文件传送至远端主机.这时允许使用统配符.
get [remote-file] [local-file] 从远端主机中传送至本地主机中.
mget [remote-files] 从远端主机接收一批文件至本地主机.
recv remote-file [local-file] 同get.
send local-file [remote-file] 同put.
说明:get remote-file - 可以不传递远程文件到本地,只查看文件的内容.
5.控制ftp会话过程的命令
bell 每完成一次文件传送,报警提示.
prompt 交互提示模式.
status 显示当前FTP会话参数的状态.
说明:缺省情况下系统要传递大批文件时,每传递一个文件都需要用户确认。执行prompt后,就不再提示了。
6.创建删除文件或目录,修改文件属性
delete 删除远端主机中的文件.
mdelete [remote-files] 删除一批文件.
mkdir directory-name 在远端主机中建立目录.
rename [from] [to] 改变远端主机中的文件名.
rmdir directory-name 删除远端主机中的目录.
help [command] 输出对命令的解释.
? 同HELP.
一.原理:
在solaris8操作系统中,由in.mpathd (/sbin/in.mpathd)后台进程(daemon)负责故障检测,并根据不同的策略实现了failover和failback。
1检测物理接口的失败:in.mpathd所管理的主机系统的全部和部分网络接口组织成一个multipathing interface group,其中的每一个网络接口分别赋予了测试地址(test address)。在正常情况下,后台进程 in.mpathd不断地通过组中每个网络接口的测试地址向目标主机(target)发送ICMP ECHO包来检测相关网络接口的连通性。其中,目标主机一般选为本网络路由器(router),如果路由器不存在,那么,将选择网络中的主机作为仲裁主机(arbitrary hosts)。在选择仲裁主机时,in.mpathd向网络上的所有主机发送multicast 数据包,第一台返回响应数据包的主机将被认为是仲裁主机,此仲裁主机就是用来测试interface group中网络连通性的目标主机。在in.mpathd测试主机网络连通性的过程中,如果目标主机连续5次没有响应,in.mpathd认定相关连接已经失败,每次错误检测的缺省时间是10秒,也即大约每两秒检测一次。如果在multipathing interface group中配置了备用网口(standby),那么所有的网络访问将自动切向standby网络接口。
2检测物理接口的恢复:为了检测失败的网络接口是否已经被修复,in.mpathd不断尝试通过该网口的测试地址向目标主机发送检测包,如果能够连续10次收到响应数据包,那么in.mpathd daemon认定该网口已经被修复,随后,所有被转移到备用网口(standby)的服务将自动恢复回原网口。
二.下面以具体的例子来说明ipmp的配置及使用情况:
1.启动脚本的编辑
# cd /etc/rc2.d
# touch S99mpath_test
# chmod 755 S99mpath_test
# vi S99mpath_test
/usr/sbin/ifconfig hme1 plumb
/usr/sbin/ifconfig hme0 group out_test
/usr/sbin/ifconfig hme1 group out_test
/usr/sbin/ifconfig hme0 addif 172.16.1.29 -failover deprecated up
/usr/sbin/ifconfig hme1 172.16.1.30 deprecated -failover standby up
其中 172.16.1.29,172.16.1.30 为hme0,hme1的测试ip, hme1为standby的方式。
2.配置好后,用ifconfig -a 看正常的状态如下:
# ifconfig -a
lo0: flags=1000849
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843
inet 218.30.16.9 netmask ffffffc0 broadcast 218.30.16.63
groupname out_test
ether 8:0:20:e9:2f:aa
hme0:1: flags=9040843
inet 172.16.1.29 netmask ffff0000 broadcast 172.16.255.255
hme1: flags=69040843
inet 172.16.1.30 netmask ffff0000 broadcast 172.16.255.255
groupname out_test
ether 8:0:20:e9:2f:aa
注:218.30.16.9 为hme0的正式ip,也就是对外提供服务的ip。
3.当hme0 down掉(可能是网卡,网线,网络)时的状态如下:
# ifconfig -a
lo0: flags=1000849
inet 127.0.0.1 netmask ff000000
hme0: flags=19000842
ndex 2
inet 0.0.0.0 netmask 0
groupname out_test
ether 8:0:20:e9:2f:aa
hme0:1: flags=19040843
,FAILED> mtu 1500 index 2
inet 172.16.1.29 netmask ffff0000 broadcast 172.16.255.255
hme1: flags=29040843
TANDBY> mtu 1500 index 3
inet 172.16.1.30 netmask ffff0000 broadcast 172.16.255.255
groupname out_test
ether 8:0:20:e9:2f:aa
hme1:1: flags=21000843
ex 3
inet 218.30.16.9 netmask ffffffc0 broadcast 218.30.16.63
注:可以看出:当hme0 down掉后,服务ip 218.30.16.9自动切换到hme1的子网口上。
其中:参考点的IP选择每个网口的测试IP
LDAP 1 172.16.1.11 172.16.1.12 218.30.16.32
LDAP 2 172.16.1.13 172.16.1.14 218.30.16.33
POP 1 172.16.1.15 172.16.1.16 218.30.16.5
POP 2 172.16.1.17 172.16.1.18 218.30.16.6
INBOUND 1 172.16.1.23 172.16.1.24 218.30.16.7
INBOUND 2 172.16.1.25 172.16.1.26 218.30.16.8
OUTBOUND 1 172.16.1.27 172.16.1.28 218.30.16.9
OUTBOUND 2 172.16.1.29 172.16.1.30 218.30.16.10
netmask 255.255.0.0 255.255.0.0 255.255.255.192