1. 自举和关机
2. 用户权限与系统安全
3. 文件系统(包括UFS、NFS以及共享系统文件)
4. 设备及其驱动程序
5. 备份
6. 配置内核和系统性能分析
7. 网络
8. 应用软件
9. SHELL编程
10. 其它
11. 正则表达式
12. 常用命令
13. awk介绍
14. sed介绍
15. tr介绍
16. Vi的三种工作状态
17. MAKE介绍
1. 自举和关机
在BSD系统上,脚本文件保存在/etc/目录下,文件名以rc两个字母开头;在ATT系统上,启动脚本文件保存在/etc/init.d目录中,并被符号链接到目录/etc/rc0.d、/etc/rc1.d等之下。
HP_UX上启动脚本在/etc/rc.config.d下
ATT系统启动脚本被分解成多个小而可管理的片段,当init在各个运行级别之间变动时,相应片段就被激活。每个运行级别的精确定义由/etc/inittab决定。
Init是系统自举后运行的第一个进程,它的PID是1,是所有用户进程和多数系统进程的祖先。在启动时,init或将系统置于单用户模式,或者派生一个shell去读启动文件。系统关机是通过向init发一个SIGTERM信号来完成的,使得系统进入单用户模式。
init运行等级包括(常用到的有3、S、0、6):
0:firmware,可以安全关机。
1:系统管理员状态,mount所有文件系统,保留一小部分基本的内核进程,无用户登录。
2:多用户状态
3:扩展多用户状态,所有资源在网络上可用
4:可被定义为可选的多用户状态,
5:为关闭电源而将系统shut down(HP_UX上关闭不了电源,HP上没有任何指令能关电源)
6:停止OS并reboot到缺省的level,一般是3
S=s,单用户状态,仅有root自己登录。
查引导信息/var/adm/message,HP_UX上查/var/adm/syslog/syslog,如果宕机HP_UX会将镜像写道/var/adm/crash目录下,但只能用专门工具看
查Solaris系统默认init状态,/etc/inittab;查询当前系统运行级别用who –r
(详见632 Linux 与Unix Shell 编程指南 第28章)
启动和停止服务的其他方法
可以修改/etc/inittab实现,但如果不想把/etc/inittab文件弄得过于杂乱,还有其他的方法可以实现启动和停止服务的功能。大多数系统都含有一个名为rc.local的文件,一般来说也是位于/etc目录下。该脚本文件将在inittab和运行级别脚本之后运行。可以在该文件中加入任何命令,或从中调用最习惯用的启动脚本。
有些系统还在/bin目录下(更多的是在/usr/sbin目录下)含有一个名为shutdown的脚本文件。可以使用它来关闭某些服务。
boot –s切换至单用户,boot –a交互状态,安装新硬件时boot –r 运行重新配置脚本;boot CDROM从CDROM上安装系统,boot CDROM –s表示采用光盘引导启动主机进入单用户模式。还有查一下,SI重启经常用boot -- -r
可以使用以下两种方法来暂时禁止用户登录来禁止新的登录进程的产生:a)使系统进入运行级别0(单用户模式)。b)建立一个/etc/nologin文件,当拥护登录到一个含有/etc/nologin文件的系统,文件/etc/nologin中信息会被显示出来,用户的登录过程也被终止,但它不会影响root登录。
启停没有接显示器的Sun Server时,可以用console将微机与SUN相连。微机端接com1,SUN端接A/B,微机上采用超级终端,每秒位数选择9600,则可以用微机以终端方式显示Sun的启停过程。注意连接时,Sun主机必须去除显示器和键盘,否则连不上。
Solaris启动流程详见solaris.doc,HP_UX的启动流程如下:
1) 硬件检查完毕后,boot程序选取引导设备;
2) Power-On Self Test(POST) 并由一个名为Processor Dependent Code(PDC)的特殊固件程序(驻留ROM中的启动程序)执行processor初始化;
3) PDC提供操作员一个10秒钟窗口用于决定是否覆盖自动boot顺序;
4) 如果processor初始化成功,并且自动boot顺序并未被覆盖,PDC则使用Primary Boot Path(the hardware path the system chooses to boot from is stored in stable-storage or non-volatile memory)去定位装载入内存,运行ISL程序;
5) 使用二级引导工具hpux定位并装载核心模块/stand/vmunix到内存中;
6) 核心模块探测硬件部分,以便检测每个设备匹配的硬件地址和对应的驱动;
7) HP-UX经历初始化过程后,开始常规操作,准备用户登录。
注释:
1) Boot ROM初始化Primary boot path,装载ISL,提供操作员选择手工还是自动启动模式;
2)stable storage是与每一个PA-RISC处理器相关联的模块,一般提供CPU用于保存设备路径信息,启动标志状态(autoboot和autosearch等),硬件错误信息以及OS初始化数据等。stable storage中保存的信息可以通过以下3种方式显示或者修改:
1) PDC包含的指令;
2) 在ISL提示行,可以通过display或者aotoboot等命令进行显示或者修改;
3) /usr/sbin/setboot命令,不加参数缺省显示当前值
4) HP-UX核心模块获取控制之后,就开始运行pre_init_rc脚本,该脚本会在任何进程写硬盘之前采用fsck检修root disk。为安全起见,千万不要修改该脚本。
HP-UX中init流程(init actions after booting):
1) init进程所做的第1件事就是读取inittab,寻找运行级别是initdefault的对应记录;如果没有找到,init会提示administrator指定;
2) init初始化核心数据结构,调用ioinitrc,使用/etc/ioconfig中信息;然后调用insf为系统所有新设备创建设备文件并分配instance number;
3)init从inittab中查询出action字段为boot或者bootwait的那些记录,执行相应命令(通常执行命令中都包括/sbin/bcheckrc);
4) 运行级别为initdefault的对应进程被运行;
5) 系统按照initdefault设定级别引导。
HP-UX中/sbin/bcheckrc(Boot Check Run Command)主要用于检查系统是否正确关闭
1) 如果系统使用disk mirroring,则bcheckrc调用/sbin/mirrorrc,主要工作包括:configuring mirrors、running fsck、invoking mirrorlog and re-imaging mirrors;
2) 如果系统使用了LVM(logical volume manager),bcheckrc会调用/sbin/lvmrc以激活LVM的volume groups;
3) 判断系统是否正确关闭,bcheckrc调用fsclean。fsclean检查/etc/fstab中类型为hfs或者vxfs的每一个文件系统的一致性(reboot或者shutdown正常关闭,系统会在superblock中做标记),如不一致(系统未正常关机),则bcheckrc会自动调用fsck
HP_UX中“shutdown -ry 0 ”相当于reboot,但比reboot好,可以彻底释放资源,而reboot可能有些服务没有真正关闭重启;“shutdown –hy 0”相当于halt。
2. 用户权限与系统安全
chown -R aimc:aisoft dir 可以直接修改用户和组
su - usr 与 su usr的区别是,前者不仅能转换用户,而且能将环境设置改为usr的
sudo: "/usr/local/bin/sudo su - "切换到root
/bin/passwd程序使用exec这一机制来临时获取超级用户特权的。它设置有setuid或setgid权限位,进程的有效UID或GID就不会改设为程序文件的UID或GID。
pwck和grpck用于检查passwd和group文件完整性。vipw:用于手工编辑/etc/passwd文件,对文件加锁,不允许其他用户同时使用。
/etc/shadow含有经加密的口令以及保密时限和帐号的有效期。
文件权限位前面的那个字符的含义,我们现在就解释一下这个横杠所代表的意思,文件类型有七种,它可以从ls -l命令所列出的结果的第一位看出,这七种类型是:
d 目录
l 符号链接(指向另一个文件)
s 套接字文件
b 块设备文件
c 字符设备文件
p 命名管道文件
- 普通文件,或者更准确地说,不属于以上几种类型的文件
掩码为文件或目录设置的权限值是用777减掉变量umask的值得到的。Chmod命令是让文件获得许可权,而umask是禁止文件的某种许可权。例如:chmod 022是让组用户和其他用户获得写权限,而umask 022是禁止组用户和其他用户对文件有写权限。
你可以通过s选项为一个文件增加User ID和Group ID权限。下面的例子为由root用户所拥有的myconfig程序增加了User ID权限。当一个普通用户运行myconfig程序时,root用户将保持所有权,并允许myconfig程序改变root拥有的文件。
chmod +s /usr/bin/myconfig
User ID和Group ID 权限在所有者和组部分中的执行权限位置显示出了一个s。User ID和Group ID实际上是执行权限x的变种。读、写和User ID权限将写成rws而不是rwx。
ls -l /usr/bin/myconfig
-rwsr-sr-x root /usr/bin/myconfig
suid意味着如果某个用户对属于自己的SHELL脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。于是,如果root用户的某一个脚本设置了这样的权限,那么其他普通用户在执行它的期间也同样具有root用户的权限。同样的原则也适用于guid,执行相应脚本的用户将具有该文件所属用户组中用户的权限。
另外的一个特殊的权限提供了对程序充分的使用。“粘接”位会指示系统在一个程序执行完以后将它保持在虚拟内存(swap区)当中。这对于经常由很多的用户执行的小程序来说是非常有用的。这个粘接位权限是t。该粘接位在其他类权限组中的执行权限位置显示一个t。一个具有读和执行权限的程序加上粘接位的话则将它的权限显示为‘r-t’。
chmod +t /usr/bin/mycal
ls -l /usr/bin/mycal
-rwxr-xr-t root /usr/bin/mycal
logins命令只允许以root执行,它显示所有用户信息。“logins –x –l ”显示指定用户扩展的登录信息,“logins -p”显示没有密码的的帐户。
查su日志/var/adm/sulog可以监视什么人使用了su命令
通过修改/etc/default/login文件可以限制root对一些特殊设备的访问。例如,将“#CONSOLE=/dev/console”该行开头的#注释删除,可以禁止root直接在console上登录,可以先已其它帐户登录再su为root,这样就可以保证记录在/etc/adm/sulog中。
访问控制列表ACLs可以提供比UNIX文件访问权限更强的控制,它可以为拥有者、组用户、其他用户、特殊用户和组用户定义许可权来提供更高的文件安全性,它允许为这些不同的组定义缺省的许可权。
/dev/kmem允许访问内核的地址空间,它是由象ps这样需要查看内核数据结构的程序使用的。
诸如/etc/hosts.equiv和~/.rhosts这些文件定义在管理上“彼此等价”的主机,它们允许用户不键入自己的保密字就在主机之间登录和拷贝文件。/etc/host.equiv文件是只允许共享登录名和UID的主机等效,而且应使用全限定的DNS主机名。
/etc/hosts.allow和/etc/host.deny中设置了哪些IP允许访问当前主机的哪些服务,例如hosts.allow中设置如下:
in.telnetd: 202.106.196.73 202.106.46.76
in.ftpd: 202.96.12.119 202.106.46.76
inetd是管理其他daemon的守护进程,它在有任务时启动相应的客户daemon,在任务完成后允许它们正常终止,因此inetd负责管理telnet和ftp服务。inetd使用配置文件/etc/inetd.conf和/etc/services决定应监听的网络端口。在inetd.conf中增加一项新服务,也需将它加入到services文件中。
HP_UX中:/usr/sbin/inetd是可执行程序,-c选项表示重新读取配置文件/etc/inetd.conf,-k选项表示杀进程。/sbin/init.d/inetd是脚本,启动用参数start,停止用参数stop。
如果想停止FTP Server,则必须将inetd.conf中ftp一行屏蔽。
如果对telnet或者ftp等服务做限制,需要修改hosts.allow和hosts.deny文件。既可以选择solaris系统自带的/etc/hosts.allow,也可以使用第三方软件tcpwrapper提供的/user/local/security/tcp_wrappers_7.6/etc/hosts.allow。具体采用哪一个hosts.allow,需要在/etc/inetd.conf中明确指定。
修改一台Solaris主机的hostname,除了执行hostname命令之外,还需要手工修改如下文件:/etc/hosts /etc/hostname.hme0 /etc/nodename
tcpwrapper的配置文件/user/local/security/tcp_wrappers_7.6/etc/hosts.allow内容如下:
ALL : 202.106.46. 202.96.0.176 132.68.45. 202.106.196. 61.135.229.140 : banners/usr/local/security/tcp_wrappers_7.6/banner/
in.ftpd : 61.135.229.58 : banners /usr/local/security/tcp_wrappers_7.6/banner/
ALL : all : deny
每条记录分为三列,以“:”分隔。最左侧是服务名称,第二列是针对该服务放开的IP,可以设定为一个子网,例如“132.68.45.”
从/etc/inetd.conf中可以查询当前系统是否安装了tcpwrapper,比如telnet一行,如果其中一项是/usr/sbin/in.telnetd,则未装tcpwrapper。如果是/usr/local/bin/tcpd,则安装了tcpwrapper。
在HP_UX中,当用户登录后,按步骤顺序执行如下:
1) system login script: /etc/profile /etc/csh.login(或者/etc/.login)
2) local login script: $HOME/.profile $HOME/.login $HOME/.cshrc
3) additional local login script: $HOME/.kshrc
3. 文件系统(包括UFS、NFS以及共享系统文件)
文件系统是内核用于表示和组织系统存储资源的抽象概念。内核文件存放在根文件系统中,通常为/unix、/vmunix或/kernal/unix。/var为假脱机操作目录,登记文件,记帐信息及其他各种增长或变化迅速的并且每台主机各不相同的条目提供存放空间。/usr是作为主机特定文件的存放地创建的,这样/usr就可以在多台主机之间共享了。
FILESYSTEM :对于本地文件系统使用/etc/default/fs中默认值,对于远程文件系统使用/etc/dfs/fstypes
设备文件可以使用mknod命令创建,使用rm命令删除;命名管道也可以使用mknod创建,使用rm删除。
硬链接和符号链接的差别是:硬链接是直接引用,符号链接则是名字引用;符号链接不同于它们所指向的文件。
硬链接在一起的文件的inode number是相同的。所以根据一个文件的inode number可以查找出对应的源文件的路径。例如, 通过“ls -i *”可以列出当前目录下所有文件的inode number,例如
229638 -rw-r--r-- 1 root sys 1708 1998 9月 1 README
17688 -rwxr--r-- 6 root sys 2307 1998 9月 1 S15nfs.server
212196 -rwxr--r-- 1 root sys 840 10月 25 11:58 S50oracle
17724 -rwxr--r-- 6 root sys 404 1998 9月 1 S76snmpdx
17723 -rwxr--r-- 6 root sys 861 1998 9月 1 S77dmi
根据上述信息可以看出S76snmpdx是一个被链接了6次的文件,它的inode number是17724。然后通过“find /etc –inum 17724 -print”可以将目录/etc下inode number等于17724的对应硬链接一并找到。得到:
./init.d/init.snmpdx
./rc0.d/K07snmpdx
./rc1.d/K07snmpdx
./rc2.d/K07snmpdx
./rc3.d/S76snmpdx
./rcS.d/K07snmpdx
八进制值为4000和2000的两个位分别是setuid和setgid位,这些位允许程序访问运行它们的用户本来无权访问的文件或进程。多数UNIX只在文件本身可执行的前提下才留意该设置。如果设置了setuid,代表属主执行权限的x会被替换成S;如果设置了setgid,代表属组执行权限的x会被替换成s。
例如,AIMC中jmail.mta进程需要借助root权限访问25低端口,所以设置为:
-rwsrwx--- 1 root aisoft
配置磁盘分区FileSystem采用newfs,mkfs等命令。newfs和mkfs都可用于在一个分区内安装文件系统。
Solaris系统中,/usr/sbin/swap用来显示使用的交换空间,和在磁盘上增加和移动交换区。
1) 显示交换空间:使用选项 l 在每个交换设备上显示全部的磁盘扇区(块)列表和未使用的扇区(自由) swap -l
2) 创建和增加交换区:附加的交换分区可以是规则文件(由命令 mkfile 创建)也可以是磁盘分区
# mkfile 10m /exp/swap (mkfile 来创建一个10M的交换分区)
# swap –a /exp/swap (增加一个交换文件,然后更新交换空间列表)
3) 移除交换区:使用选项 -d 来移除交换区
# swap –d /exp/swap
而在HP_UX上则采用swapon,如下:
1) 新增device swap:swapon /dev/vg01/lvo13
swapon -e /dev/dsk/c0t4d0
2) 新增file system swap: swapon -l 40M -r 80M -p 3 /extra
将文件系统extra中划最多40Mb作为swap空间,留80M用于其它方面。
3) 显示swap空间采用swapinfo命令,-a显示device swap、system swap和memory paging space等所有信息
在用format改变了分区大小之后,要创建一个文件系统,存在分区上的数据是通过文件系统来使用的。newfs命令是mkfs命令的前端友好界面,它创建文件系统,即为保存以后要在该文件系统上创建的所有文件和目录信息而搭建的结构。
# newfs -F fstype /dev/rdsk/c0t0d0s0
增加一块硬盘并做文件系统的步骤如下, 接入硬盘—— boot –r —— format —— newfs —— mount —— df查看
lost+found目录是构建文件系统时自动创建的,fsck使用它来处理紧急情况,不能删。如果fsck找到一个其父目录无法确定的文件,就把它放到所在文件系统顶层的lost+found目录中。既然一个文件的名字只记录在该文件的父目录中,孤儿文件的名字因而无法确定,放在lost+found中的文件于是以它们的索引节点号命名。
NFS处理的是FileSystem的逻辑层而不是物理层,它由若干组件构成,建立在Sun的XDR和RPC机制上,其中XDR提供跟主机体系结构无关的数据表示办法,RPC则提供网络远程过程调用的接口。客户机端的请求由服务器端nfsd即NFS守护进程处理。
在Solaris 2.x操作系统中,nfsd 是一个使用内核线程来处理所有的NFS请求的单一进程。如果服务器上没有足够的可用线程来服务每个客户端的请求,客户端性能也是难以忍受的。默认为16个线程给每个偶然的NFS用户。但是,如果一个低终端SPARC类的服务器同时运行几百个线程还是有些负荷过重的。调整系统启动时的nfsds数在脚本:/etc/rc3.d/S15nfs.server或 /etc/init.d/nfs.server
Solaris采用/etc/dfs/dfstab取代SunOS的/etc/exports作为NFS服务器的share配置文件,Solaris使用share命令来出口文件系统。
HP_UX:exportfs读取/etc/exports,必须保证NFS Server——/sbin/init.d/nfs.server启动,参数为start和stop,用SAM中network services也可以启动。
Solaris采用/etc/vfstab取代了SunOS的/etc/fstab作为NFS客户机的mount配置文件,,属于永久性配置的那些mount项必须列在该文件中,便于在自举时自动完成。/etc/mnttab中保存了当前已加栽的文件系统信息,当mount或umount或自动加载卸载时会自动修改该文件。
/etc/vfstab中填写如下内容,vxfs表示veritas格式文件系统,比ufs快
/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /data1 vxfs 2 yes -
nfsstat用来显示关于NFS和RPC的内核接口的统计信息,对决定NFS的客户/服务器的一个时期内的工作负荷也是很有用。其中nfsstat –s用于显示NFS服务器进程的统计信息,nfsstat -c则显示与客户机端操作相关的信息;读和写的大小可以通过 nfsstat 加选项-m来测定
当在加载点加载或自动加载一个FileSystem时,任何在本地加载点目录存储的文件或目录被隐藏,在该文件系统加载期间不可访问,当该FileSystem卸载时,它们又变为可以使用。
如果mountd守护进程没有运行,其他的系统就可以访问共享的文件系统。如果mountd没有运行,则必须先停止NFS服务(/etc/rc3.d/s15nfs.server stop)再重新启动它们(/etc/rc3.d/s15nfs.server start)。
mountall和umountall同时加载或卸载多个文件系统,缺省参照/etc/fstab
/etc/hosts记录主机名和IP间映射,/etc/networks使文本名称与 IP网络号相关联,/etc/protocols记录文本名称与协议号间映射,/etc/ethers记录主机名和以太网地址间的映射,/etc/netgroup定义主机、用户和网络的集合。
/etc/nsswitch.conf用来指定管理数据的来源,nisplus表示NIS+,file表示纯平板文件。
HP_UX比Solaris多两个根目录:/sbin保存用于系统启动和mount其它文件系统的小程序,/stand用于保存Kernel和boot loader。HP_UX重要目录如下:
/usr Sharable operating system commands, libraries, and documentation.
/sbin Minimum commands needed to boot the system and mount other file systems
/var Dynamic information such as logs and spooler files (previously in /usr)
/stand Kernel and boot loader
/usr/bin Operating system user commands
/usr/conf Kernel configuration
/usr/contrib Contributed software
/usr/lbin Backends to other commands
/usr/local User-contributed software
/usr/newconfig Default operating system configuration data files
/usr/sbin System administration commands
/usr/share Architecture independent sharable files
/usr/share/man Operating system manpages
/var/adm Common administrative files and log files
/var/adm/crash Kernel crash dumps
HP_UX三个重要的环境变量:
PATH commands
MANPATH man pages
SHLIB_PATH shared libraries
HP_UX磁盘空间管理LVM——新增逻辑卷
一、 Creating Physical Volumes
1) Initializing Disk
尽管硬盘出厂之前已经经过format和测试,但是作为物理卷安装之前仍然需要使用工具mediainit格式化磁盘,通过读写测试数据校验数据完整性。例如:
# mediainit /dev/rdsk/c0t4d0
2) Creating a Physical Volume Using pvcreate
如果需要磁盘作为System Disk,则必须使用-B选项Make a bootable disk
# pvcreate /dev/rdsk/c0t4d0
#pvcreate -B /dev/rdsk/c0t4d0
3)pvdisplay
pvdisplay显示physical volume的信息,但前提条件是该磁盘完全集合到volume group中。结果中PV指physical volume,VG指volume group,PE指physical Extents,LV指logical colume。
二、 Creating Volume Groups
1) 为VG创建目录
按照VG命名规则创建目录,例如: mkdir /dev/vg01
2) 创建VG控制文件group
在vg目录下,采用命令mknod创建控制文件group,该文件是字符设备文件,major number为64,minor number一般采用0xhh0000表示,其中hh为vg组号
mknod /dev/vg01/group c 64 0x010000
3) 创建VG
采用命令vgcreate创建VG并指定它包含的physical volumes,例如:
vgcreate /dev/vg01 /dev/dsk/c0t4d0
4) 显示并校验VG信息
采用vgdisplay显示并校验VG信息,例如:vgdisplay /dev/vg01
5) 将磁盘插入现存VG
采用vgextend命令将指定physical volume插入到现存VG,例如:
vgextend /dev/vg01 /dev/dsk/c0t3d0
磁盘/dev/dsk/c0t3d0必须采用pvcreate事先为LVM初始化完毕。
三、 Creating Logical Volumes
1) 除非特别设定,LVM extents一般4MB,取值范围为1M到256M。采用lvcreate命令创建logical volume,它负责为/dev/vgNN创建相应的block和character device file。可以通过选项参数设定extent size,也可以事后修改。例如:
lvcreate -l 10 /dev/vg01 (创建一个拥有10个logical extents的logical volume)
lvcreate -L 100 /dev/vg01 (创建一个100M的logical volume)
2) 显示LV信息
采用命令lvdisplay显示logical volume信息,例如:
lvdisplay /dev/vg00/lvol1
四、 Creating a New File System
1) 创建文件系统
newfs –F fstype char_device_filename
-F选项指定文件系统类型:hfs或vxfs。如果未指定该选项,则根据/etc/default/fs
char_device_filename代表对应logical volume的字符设备文件
举例说明:
newfs –F vxfs /dev/vg01/rlvol5
在/dev/vg01/rlvol5逻辑卷上创建新的JFS文件系统
newfs -F hfs -b 4096 -f 2048 -m 5 –i 4096 /dev/rdsk/c1t4d0
采用whole disk approach方式创建hfs文件系统,block大小为4K,frament大小为2K,预留5%的保留空间,每个inode的文件系统空间4K
newfs -F vxfs -R 96 /dev/rdsk/c1t4d0
采用whole disk approach方式创建JFS文件系统,96M will be used for swap the remaining space will be used for the new file system.
2) 创建目录并mount,文件系统只有mount之后才能被纳入目录层次并投入使用
mkdir mountpoint
mount -F fstype block-device-file mount-point-directory
五、 Extend a Volume Group
1) 为新磁盘上的LVM创建数据结构
# pvcreate /dev/rdsk/c1t3d0
2) 将准备添加磁盘空间的VG扩展
# vgextend /dev/vg01 /dev/dsk/c1t3d0
六、 Extend a File System
扩展logical volume采用lvextend命令,extendfs用于扩展指定文件系统,步骤如下:
1) umount /dev/vg01/lvol3
2) 将logical volume扩充到400Mb, lvextend –L 400 /dev/vg01/lvol3
3) 采用extendfs扩展文件系统尺寸,extentdfs /dev/vg01/rlvol3
4) mount /dev/vg01/lvol3
On-Line JFS提供了另一种扩充文件系统的方法,无需mount,步骤如下:
1) bdf /data ————假设当前文件系统大小为60MB
2) lvextend -L 80 /dev/vg01/lvol3 扩展LV大小到80MB
采用vgdisplay –v /dev/vg_ora_p15 发现该vg中有“Free PE 198”,每个PE16M,则还有198*16=3168M尚未分配给lv,而lv_ora_p1524大小又不足,可以采用“lvextend -l 198 /dev/vg_ora_p15/lv_ora_p1524”扩展该lv。
3) 采用fsadm修改文件系统大小到80M (既可以用于扩展也可用于缩减)
# fsadm -b 81920 /data
4) bdf /data ————当前文件系统大小已经扩展为80MB
七、 Reducing the size of a File System
缩减logical volume采用lvreduce命令,步骤如下:
1) bdf /data ————假设当前文件系统大小为80MB,可用lvdisplay查
2) lvreduce -L 60 /dev/vg01/lvol2 缩减LV大小到60MB
3) 重建文件系统
newfs /dev/vg01/rlvol2
4) mount /dev/vg01/lvol2 /data
On-Line JFS提供了另一种缩减文件系统的方法,无需mount,步骤如下:
1) bdf /data ————假设当前文件系统大小为80MB
2) 采用fsadm修改文件系统大小到60M (既可以用于扩展也可用于缩减)
# fsadm -b 61440 /data
3) bdf /data ————当前文件系统大小已经缩减为60MB
八、 Backup the LVM Configuration
因为每个volume group配置都经常变换,有可能使用不同disk上的空间,所以为保证安全,所以备份LVM配置很重要。尽管vgextend等命令在更改LVM配置的同时也会自动备份LVM配置,但是最好采用vgcfgbackup定时人工备份,恢复采用vgcfgrestore。这两个工具只备份LVM配置,并不备份用户数据,如果还需要备份用户数据必须使用fbackup和frecover。
/etc/lvmtab是LVM配置核心,所有LVM命令都读取该文件,该文件不能直接显示,是首次使用LVM命令时生成的。可以使用命令“strings /etc/lvmtab”查看lv信息。Vgscan搜索LVM磁盘上信息,重建/etc/lvmtab文件。
例如:vgcfgbackup /dev/vgnn, 将VG配置信息保存到/etc/lvmconf/vgnames.conf
vgcfgrestore –n /dev/vgnn /dev/rdsk/c0t6d0
vgchange -a y /dev/vgnn
将LVM配置恢复到指定磁盘,并使该VG可用
HP_UX:bdf类似df功能,用于监控文件系统的大小,选项-i用于显示inode信息。
HP_UX:lvlnboot –v可用于检查本地硬盘到底由几块物理硬盘组成
HP_UX中关于文件系统的一个例子,将/home转移到一个新文件系统上
newfs -F vxfs /dev/vg01/rlvol2 (rlvol1是lvol2逻辑卷的字符设备文件)
mkdir /home.new
mount -F vxfs /dev/vg01/lvol2 /home.new (lvol1是lvol2逻辑卷的块设备文件)
cd /home
find . | cpio -pdumvl /home.new
cd /
rm -rf /home/*
umount /home.new
mount /dev/vg01/lvol2 /home
rmdir /home.new
4. 设备及其驱动程序
prtconf命令显示主机的一般性设置,包括主机类型、型号、内存量以及有关已配置硬件设备的信息。
Sysdef是prtconf的引申,Sysdef -h替换SunOS中的hostid命令,显示主机ID。/usr/platform/sun4u/sbin/prtdiag(根据uname –a显示的sun型号决定子目录,例如sun4u)可以显示系统诊断信息,包括CPU个数和型号、内存量、Bus和I/O卡等。
Dmesg也可以显示设备名和内存(包括物理内存,可用内存的数量;可用内存等于物理内存减去系统内核占用的内存)等
HP_UX中使用SAM-Performance Monitor-System Properties可以查看CPU类型和内存使用情况、网卡地址等重要信息。
系统上所有设备的缩写名。如:在设备信息树中,sd0和sd1代表两个硬盘设备的缩写名。实例名与物理名的映像通过/etc/path_to_inst 文件得到,并可通过以下命令得到:
dmesg sysdef prtconf
adb -k 查看/修改内核参数值
例如:#adb -k
参数值/D 显示参数值(十进制)
参数值/x 显示参数值(16进制)
参数制/w xxx 修改参数值(立即生效,只对于可动态修改的参数)
设备文件是通过它们的“主设备号和次设备号”映射到设备的,这两个号存放在设备文件的索引节点中。主设备号标识与设备文件关联的驱动程序,次设备号标识所寻址的给定类型的特定设备。
在内核中,每个驱动程序的这些例程的地址放在一个称为跳转表的结构中,跳转表实际上有两个:一个用于字符设备,一个用于块设备。这两个跳转表是按主设备号索引的。在Solaris中,设备表保存在/usr/kernel/drv/*.conf中。
块设备采用系统buffer传输数据,这样可以加速I/O。一些存储设备采用块设备,例如磁带、软硬盘和各种磁设备。字符设备一次只传送一个字节,并不使用系统buffer,而是由应用程序控制buffer,例如终端、打印机、以及I/O存储裸设备。
Solaris中差不多任何东西都是可加载的。Modinfo命令可以列出当前已加载的模块。增加驱动程序用add-drv,手工卸载驱动程序用rem_drv。
Solaris的硬盘设备名是SVR4型的,其块设备文件和字符设备文件分别放在目录/dev/dsk和/dev/rdsk中。注意,mount时必须使用设备号dsk,而做盘时则必须采用裸设备号rdsk(包括fsck修盘时也要rdsk)
例如:/dev/[r]dsk/cCtAd0sP 其中C是控制器号,A是SCSI目标号,P是分区号。分区2指整个硬盘。例如:
/ on /dev/dsk/c0t0d0s0
/usr on /dev/dsk/c0t0d0s3
/var on /dev/dsk/c0t0d0s4
/data1 on /dev/dsk/c3t0d0s0
/export/home on /dev/dsk/c0t0d0s5
/opt on /dev/dsk/c0t1d0s0
/data2 on /dev/dsk/c2t0d0s0
/usr、/var/以及/都是c0t0,只是s表示的分区不同,所以应该是主机第一个本地硬盘的不同分区。而/opt/是c0t1,是主机第二个本地硬盘。/data1和/data2分别是c3t0和c2t0,是外接硬盘。其中sP中P对应的分区编号可以从format命令的partition子命令显示得到。
C:控制器号(或接口),如C0,C1,and C3,按每个接口卡自动按序指定。系统主板上的SCSI自动置为0,连接到该SCSI接口的硬盘,逻辑名以C0开始。C1控制器对应第二个SCSI。
T:t0,t1,t3是设备的靶地址,它们与设备地址开关有关系,外接硬盘的尾部都有地址开关。内部硬盘一般予置为3,第二硬盘置为1。使用两个以上硬盘,靶地址号必须不同。通俗解释,假若一个控制器上可以接16个SCSI设备,那么t就取值0-15,表示在某个控制器上的设备编号。c
D:任何嵌入式SCSI硬盘或IPI硬盘,硬盘名永远是d。LUN编号(Logic Unit Number)。所谓LUN就是多个物理硬盘中各自划分出一定区域后再合成一个逻辑盘,这样确保用户实际看到的一个盘分区是多个物理盘合成的,访问一个分区相当于访问多个物理盘,可以降低IO冲突。
S:分区号从0-7,2代表整个硬盘。硬盘的设备名必须包含分区号,仅有控制器号/靶地址/硬盘名是不能使用硬盘的。
HP_UX:采用“lssf device_file”可以详细显示设备文件的信息。
“lsdev”可以罗列kernel包含的所有设备驱动的名字和class,以及设备主号;“ioscan”用于扫描所有外设,罗列kernel中包含的硬件路径,配合dmesg一起用于检查系统中配置了哪些硬件及其路径和状态。
diskinfo /dev/rdsk/c0t6d0 :查看指定硬盘基本信息
ioscan -fnCdisk :查硬盘分区 -fnCtape 查磁带
make_recovery –Av : 备份vg00到小磁带
HP_UX上,采用ioscan可以数出processor(CPU)数量,用dmesg可以统计出物理内存数量
一旦XP512盘阵柜重启,必须采用“ioscan -fnCdisk”检查一下各台主机是否能看见盘阵,如果有显示,才可以启动cluster挂盘阵。
lvlnboot –v可以用来查询boot disk到底由几块本地盘构成,如果象NA1一样由两块构成,则诸如swap区就会同时挂接到两块物理盘上。
ioscan –fnCdisk 可以用来查询主机中到底插入了几块本地盘,例如本地盘是18G的,则通过ioscan –fnCdisk | grep 18 就可以发现,如果主机中插入两块本地盘,但其中一块未做盘,则通过ioscan会发现两块物理盘,但lvlnboot –v 只能发现一块。
以HP_UX为例,解释device file的用途:
/stand/vmunix(kernel)包含了运行于硬件之上的软件,而Device Files(/dev目录下)则包含了/stand/vmunix上运行软件的引用和存取设备的地址,因此UNIX命令和应用程序可以通过Device Files来访问外设。
HP_UX首次安装,insf命令用于为系统探测出的所有设备创建Device Files;以后每次系统重启,insf都为系统连接的新设备创建Device file。
/dev/rdsk为原始设备接口,/dev/dsk为块设备接口。有些命令,如:fsck,newfs,prtvtoc必须使用原始设备接口,有些命令,如:df,mount必须使用块设备接口。
增加一个硬盘后,运行disks命令创建它的设备文件;Format命令用于往该硬盘上写卷标和分区信息;prtvtoc命令显示硬盘分区信息和卷标。此外,查一下这几条相关命令:drvconfig、devlinks、volcheck
在大多UNIX中,/dev/fd0与软驱A对应,/dev/had与系统中第一个物理的驱动器对应,/dev/mouse与鼠标对应,/dev/sda与系统中第一个SCSI驱动器对应,/dev/lp0与并行端口(通常是打印机)对应,/dev/tty与终端对应,/dev/ttyS0与第一个串行端口对应,/dev/zero是一个字节发送器,可以从中读取无穷多个0字节。
使CD-ROM共享,share –F nfs –o ro /cdrom/cdrom0;加载CD-ROM,mount –F file-system-type -o ro /dev/dsk/c0t6d0s2 /cdrom。
例如:在A主机(NFS Client)上通过网络共享B主机(NFS Server)上的光驱,首先在B主机/etc/dbs/dfstab文件中添加一行内容:/usr/sbin/share -F nfs /cdrom/oracle8i。 然后执行“/etc/init.d/nfs.server start”启动NFS daemon和share命令。最后在A主机上调用mount –F nfs /cdrom/oracle8i /mnt
HP_UX中mount CDROM命令如下:
mount -F cdfs -o cdcase /dev/dsk/c0t2d0 /cdrom
如果报“Device busy”,表示某个进程正使用该设备,采用fuser查找使用该设备的进程
vold为卷管理的daemon,/etc/vold.conf配置文件用于vold确认要管理哪些设备。但卷管理不识别/etc/dfs/dfstab中内容。
卷管理自动为每个设备在/vol/dev目录中建立两个子目录:一个是为访问它的文件系统准备的,另一个是为访问它的裸设备准备的,例如diskette1和rdiskette1。
quot命令用来获取硬盘的使用信息,它显示在每个文件系统上的总文件数和磁盘块数,例如quot –f /dev/sd4c。
-a:报告所有已安装的文件系统 -f:显示某用户的文件数和使用空间数 (kbytes)
而du用于汇总一个目录层次结构内的硬盘使用情况。“du -sk *”显示当前目录下各个子目录所占空间大小,“du -sk”则显示当前目录所占空间大小
5. 备份
Copy时采用“cp –rfp”,其中-p选项表示不仅copy文件本身,而且copy其各种文件属性,-f选项表示删除现存目标文件,-r选项表示recursive循环copy。
tar cf – fromdir | (cd todir; tar xfp -)将在todir中创建一棵fromdir目录树的拷贝。如果tarfile是 -,tar命令从标准输入中(stdin)读,向标准输出(stdout)写。tar不支持多卷,而且许多版本都限制路径名在100个字符内。
cpio 复制文件、特殊文件和需要多个磁带的filesystem,它是在ATT UNIX之间传送文件时归档文件的好办法,它和tar一样也不允许多卷;-o用于backup,-i用于restore
复制目录中所有文件到磁带ls | cpio –oc > /dev/rmt/n
列出磁带上的文件 cpio -civt < /dev/rmt/n
从磁带上获取所有文件 cpio -icv < /dev/rmt/n
“find fromdir –depth –print | cpio –pdm todir”将在todir中创建一棵目录树fromdir的拷贝
dd是一个文件拷贝和转换程序,除非告诉它做某种转换,否则dd就从其输入文件直接拷贝到输出文件,它是唯一可以读出非UNIX系统写成的磁带的方法。dd < input_file > output_file或者dd if=input_file of=output_file
当采用磁带备份时,可以使用ufsdump和ufsrestore进行零级备份和增量备份,详见solaris.doc。
HP_UX中,常采用fbackup和frecover,方式类同于ufsdump和ufsrestore。
例如:
1) fbackup –f /dev/rmt/0m –8 –u –g /var/adm/fbackupfiles/graphfile
[-g graph]选项指明包含了需要included或者excluded的backup路径或文件,本命令执行第8级备份到/dev/rmt/0m中,graph文件采用/var/adm/fbackupfiles/graphfile
2) fbackup –f /dev/rmt/0m -i . –e ./subdir
备份当前目录下除了subdir子目录之外的其它一切至/dev/rmt/0m中
3) frecover –rf /dev/rmt/0m
frecover -x -g /var/adm/fbackupfiles/graphfile -f /dev/rmt/0m
frecover -I /tmp/index -f /dev/rmt/0m
dump和restore是传统备份方法,dump首先构造一个自从上次备份以来修改过的所有文件的清单,然后把这些文件封装成单个大文件以归档到某个外部设备上。
restore t命令给每个文件系统生成一个内容清单便于通过grep发现备份到哪里了;restore x filename用于恢复文件;restore i是从备份中恢复一些文件或目录的最容易方法。
mt命令可用来把磁带定位到特定的地方:mt [–f tapename] command [count]
HP_UX 11.00以上版本提供新功能支持system recovery。该功能包括make_recovery、check_recovery、save_config三条命令,隶属于Ignite-UX软件包的一部分。
make_recovery:创建核心系统环境的系统修复磁带,主要包括操作系统最小核心部分的系统文件archive和boot image,例如/、/dev、/etc、/sbin、/stand、/usr等;
check_recovery:比较当前系统和make_recovery最后一次更新时创建的系统修复状态文件;
save_config:只能被有权创建配置文件的系统管理员运行,以反应系统中软硬件配置
6. 配置内核和系统性能分析
内核含有管理特定硬部件的设备驱动程序,内核其余部分则在很大程度上与设备无关的
“isainfo -b”可以查询当前solaris主机是64位还是32位的
“getconf KERNEL_BITS”获取HP主机是64位还是32位的
Solaris内核行为类似于通用SunOS内核,它检测主机寻找设备,并给找到的每个设备初始化驱动程序。然而它们之间有个本质差异:跟传统BSD内核把并不存在硬件的驱动程序遗留在内存中的做法不同,Solaris内核只给真正找到的设备加载代码。
Solaris内核文件隐藏在/kernel目录下。
Solaris的/etc/system文件跟BSD系统上SYS/conf中的配置文件差不多,均用于配置内核。HP_UX中参数文件为/stand/system
采集三种CPU数据:总体利用率、平均负载、每个进程的CPU耗用。BSD上用vmstat汇总信息,而ATT系统上用sar -u。平均负载还可以采用uptime获取。详见solaris.doc
vmstat 报告关于进程,虚拟内存,磁盘,中断,及CPU活动的统计。 更为重要的是, vmstat 可以用来快速的发现CPU和内存的瓶颈,例如“vmstat 1”
提高服务器性能的几点方针
1) 内存
内存在一个NFS服务器上是特别关键的资源,因为它用来缓存频繁需求的数据。大量的已安装的服务器内存可以提高服务器和客户端的性能。使用:vmstat 和 sar 命令来监视内存的使用,如果必要的话,可以增加内存。
2) 平衡磁盘负荷
使用命令:iostat 来确保有效磁盘设备的适当装入。如果负荷不平衡,从一个设备向别一个设备移动活动,直到它们平衡为止。
3) 磁盘带
磁盘带通过多个磁盘设备来分布一个读或写操作,大幅度的提高了磁盘的I/O速度。磁盘带可以用来增加NFS服务器的性能。这对于不同类型的Solaris 组产品是很有用的。
4) 快速服务(Prestoserve TM)
一个由写操作组成的交互式的磁盘负荷可用来在服务器上安装快速服务。快速服务是一个在SBUS上增强硬件产品的类型,和VME 配置方面,增强了本地和远程的同步写。快速服务使用一个快速的,不易变的,可重获的内存(NVRAM)来写缓存以此来快速本地和远程的同步写。在安装Prestoserve 后,NFS客户写增加到300%。快速服务减少了磁盘的I/O,并且它可以用在附加磁盘和对支持更高级别写活动的控制。快速服务的一个缺点是它可能使CPU达到饱合,因为它在写磁盘前必须拷贝数据从NVRAM到主内存。
5) NC 400 网络协处理器
由快速服务引入的额外的CPU负荷可以由NC400网络协处理器偏置。它是一个优化了硬件和软件的NFS处理器。它由一个主板上的处理器和使用用户化的 nfsds 通过处理UDP传输减少了CPU负荷。NC 400网络协处理器只是理论上的,因为无论何时,CPU的饱合总是一个问题。
6) CPU
服务器上CPU的饱合会反面影响它服务客户端请求的能力。 使用命令:vmstat 或 sar 来监视 CPU的利用率。如果CPU的负荷过重,可以考虑安装NC 400网络协处理器。 使用 ps 命令来检查进程状态表来判断进程消耗的额外的CPU时间。可以考虑移动这些进程到其它主机,如果可能的话,增加更多的处理器。
7) 网络接口
一个极端繁忙的网络的需求可能超过网络接口所能承受的容量。使用 netstat 命令来监视网络接口的错误,并可考虑增加一个网络接口(使用一个已经存在的IP地址,但是一个新的客户端地址)给服务器。通过配置客户端通过应用接口存取服务器来平衡进入的需求。过多的网络接口错误也指出了一个超负荷运载的,拥挤的网络。考虑给网络分段(使用桥或路由器)来减轻服务器和网络的负荷。
使用中的swap空间大小通常可用BSD的pstat -s或ATT的swap -l确定。
swap大小为内存的2~4倍。若本机安装oracle数据库软件,则至少为3倍。
Solaris使用sar获取有关换页活动的低级信息,sar -g给出有关页面换出的信息,用来监视虚拟内存的使用;sar -p提供有关页面换入的类似信息,换出数据通常更有意义,换出总是表示数据被迫由内核弹出内存。 sar -q 可用于查看cpu的run queue,用来查找执行队列中有多少进程在排队;使用sar -r选项来查找可用内存页和交换文件磁盘块的平均数量;通过sar -b 来查看buffer cache;sar –d 选项来发现不平衡的磁盘负荷,例如字段 %busy 中的磁盘 sd3 比所有其它的设备都要忙; 通过sar -u(缺省参数)可以汇报CPU占用率,其中wio参数用于度量io wait占用CPU的百分比,越大说明磁盘io越忙。
sar -v 与sar -c
sar [参数] t n -o filename (-o 保存在文件中,-f 从文件中取) /usr/lib/sa/sadc ,sa1 ,sa2
例如:crontab -e sys
0 * * * 0-6 /usr/lib/sa/sa1
5 18 * * 1-5 /usr/lib/sa/sa2 -S 8:00 -e 18:01 -I 1200 -A
测试了CPU的利用率并且每隔10秒取得一个样本,共两个;如果指定 –o ,那么样本将会保存在一个二进制格式的文件中。
# sar –o /tmp/sar.file 10 2
top显示CPU占用排名最靠前的进程,和vi一样,采用J、K键切换页面。
HP_UX中可以采用glance工具(需要单独购买和安装)检查系统开销,采用屏幕最下方的提示命令切换页面。
HP_UX中可以采用kmeminfo工具(需要单独购买和安装)检查系统内存开销,可以详细分析系统及用户各进程的内存开销情况。
HP_UX中kmtune命令可以显示系统参数,“kmtune | grep –I thread ”可以显示所有和线程有关的参数,修改kernel参数只能通过SAM。
iostat用来监视硬盘的吞吐量。
iostat 报告了终端和(更多有用的)磁盘的I/O活动。Iostat 用来测定一个服务器系统的磁盘负荷。 在下面的例子中,iostat 每5秒来测定一个磁盘的 I/O:
# iostat –D 5
iostat -xnp 可以查iowait等
两个ps:/usr/bin/ps -ef 和/usr/ucb/ps -aux;区别详见solaris.doc 238页
查看进程的优先级
#ps -ec (-c 是看新优先级和类型)
CLS: class (TS,IA,SYS,RT)
PRI:优先级。
查看/修改优先级
#priocntl [参数]
-l :列出调度表类型
-d:显示进程的调度表
-s:设置进程的调度参数
-e [-C class] :创建一个新进程。
PRI=CPU_PRI+USER_PRI+IA_PRI
其中CPU_PRI 是主要的。USER_PRI只能<=0 (因为系统参数USER_PRI_LIMIT=0),IA_PRI的系统缺省=10
busstat :总线统计;cpustat 和cputrack :cpu 统计;lockstat查看系统锁的统计
truss可以用于跟踪System Call和信号,例如当程序停止等待时,可以用truss –p pid来查询该程序是否还在运行。
proc目录介绍——/proc目录和/usr/proc/bin
/proc目录是procfs而非ufs.
/proc/pid# 是每一个进程的目录,目录下存放进程的数据信息
/usr/proc/bin目录下存放针对/proc/pid#的数据结构的读取程序。
例如:/usr/proc/bin/pmap -x 544 查看544号进程的静态段(虚拟内存段的占用情况)。Pfile 查看进程打开的文件。Ptree 查看进程的进程树(父进程、子进程)
pstree以一个树的格式显示进程名,不会象ps一样列出过多无关信息,-a选项显示各进程的命令行,-p显示PID,-h使当前进程和其子进程highlight
多CPU管理
mpstat 显示多cpu的使用情况,例如“#mpstat 2”
psradm :enable and disable 一个cpu
psrinfo :显示哪个cpu是enable的
非常核心的HP命令mstm(menu support tool manager)和cstm (command support tool manager),可以监控CPU、内存等硬件允许情况,可以查序列号。但是由于会保存配置,允许起来有危险性。
在84系列主机上可以使用parstatus命令可以更简单地看到主机serial number。
但是对于3440就不好使了,用cstm可以,
INGW1# cstm
cstm>sel dev 1
cstm>info
cstm>il
就可以看到,看完后不用保存,quit或exit退出。
prex 跟踪命令,可跟踪应用和操作系统(跟踪运行时系统调用)。
例如:#prex -k (跟踪kernel)
prex> buffer alloc (分配一个buffer作为缓冲区)
prex>list probes $all (显示所有probes)
prex>enable thread (enable xx probe)
prex>trace thread (跟踪probe)
prex>ktrace on (启动跟踪)
prex>ktrace off (等待一段时间后,关闭跟踪)
prex>quit
#tnfxtract /tmp/a //取probe输出到文件
#tnfdump /tmp/a //显示输出文件
7. 网络(参见sun-sa387.txt)
采用ifconfig指令添加IP的方法如下:
例如增加hme0:2 第二个从IP
ifconfig hme0:2 inet 202.104.32.235 netmask 255.255.0.0 up
删除该IP: ifconfig hme0:1 0 down
以上为逻辑增删,如果想要永久物理增删,具体方法参照S30rootusr.sh加到系统启动文件中。
该指令中interface标识针对的网络接口,它通常是一个2~3个字符的设备名再后跟一个数字,例如ie0、le0、en0等,这些名字是由相应的设备驱动程序名派生来的。netmask详见/etc/netmasks。
检查一个接口的状态
# ifconfig le0
le0: flags=863
mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255 ether 8:0:20:75:6e:6f
各字段含义:
lo0,le0——网络接口的设备名
Flags——网络接口状态的数字表示方式,状态变量已经在包中定义,将在后来讨论。
MTU——MTU用来定义包的存储片
Inet——接口的Internet 地址
etmask——掩码应用于网络层包的输入和输出。掩码被用来定义哪些值是用来表示网络地址的位
Broadcast——广播地址,用来发送信息到所有主机。
Ether——由ARP使用的以太网地址(MAC)
状态段Flags详解 :
UP——这个标志指出这个接口是开放的,可以发送和接收数据。
DOWN——相反的,这个标志指出这个接口是关闭的,也就是说,此时不能为主机发送和转发包。
NOTRAILERS——这个标志指出了一个报文尾不包括以太帧的尾部。报文尾是在
Berkerley Unix系统中使用的把信息头加到包尾的一种方式。在
Solaris2.x系统中已经不支持。
RUNNING——这个标志指出,该接口已经被系统识别。
MULTICAST——这表示接口支持多路传送地址。
BROADCAST——这表示接口支持广播地址。
允许一个网络接口(Enable)
# ifconfig le0 up
开放一个网络接口(Disable)
# ifconfig le0 down
关闭一个网络接口(Close)
# ifconfig le0 unplumb
打开一个网络接口(Open)
# ifconfig le0 plumb
netstat命令可用来查看主机的路由信息。其中不带任何参数时显示活动的TCP和UDP端口状态,netstat –i用来显示网络接口的状态(错误数应少于相应分组的1%;接口的冲突率应小于3%,冲突比率超过5%,则要先考虑网络的负荷是否过重,冲突比率超过10%,这是一个超负荷的网络,要考虑把它分段),
#netstat -i
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Coll Queue
Lo0 8332 loopback localhost 5248 0 5248 0 0 0
Le0 1500 128.50.0.0 bear 77553 4 39221 2 2103 0
Name——接口设备名称
Mtu ——最大输出单元
Net/Dest——网络号,这个区涉及到文件/etc/inet/networks,将在以后讨论。
Address——接口的IP地址,这个区涉及到文件/etc/inet/hosts
Ipkts/Ierrs——显示输入包和错误
Opkts/Oerrs——显示输出包和错误
Collis——在这个接口的冲突数量
Queue——等待传输的包数量
-n输出数值地址,netstat –nr命令可用来查看已存在的路径,netstat –an命令查主机上的端口。 隐藏参数:-k
静态路由是用route命令显示输入的路由,它应该长期保存在路由表中,例如“route add net 202.87.240.0 202.87.242.23”表示增加一个静态路由,即去往C类网络202.87.240.0的分组须经路由器202.87.242.23。也可以写为“route add -net 202.87.240 202.87.242.23”
也可以为指定主机增加一个静态路由,例如“route add -host 202.87.240.34 202.87.242.23” 注意HP_UX中如果这么执行会报错“network is unreachable”,必须写成“route add -host 202.87.240.34 202.87.242.23 1”,1表示count
route命令配合gated和routed守护进程管理路由。尽管routed已逐渐被gated所淘汰,Solaris只支持routed。
route add default 202.106.196.78 加缺省gateway
route –f 刷新路由表
每次机器重启由route加入的路由都会丢失,若需要长期保留,需要手工在/etc/下新建一个文件defaultrouter,其中记录缺省路由配置,只写网关IP。例如该文件中只填写10.1.1.1
如果采用“route add -net 202.87.240 202.87.242.23”新增一个静态路由,机器重启这项设置就会丢失,所以需要将这项设置加到OS启动文件中。可以在/etc/rc3.d下生成一个“S”开头的文件,其中加入这条命令,例如生成文件在/etc/rc3.d/S98routeBC(注意必须是大写S开头),内容如下:
# Add Router and Gateway
route add net 132.68.45.0 202.106.46.30
route add net 88.2.11.0 202.106.46.30
route add -host 61.135.229.58 202.106.46.25
route add -net 63.111.133. 202.106.46.27
traceroute用来查看一个分组到达其目的主机所经历的一系列路由器。通过它可以发现哪些分组被错误地路由了。
arp命令访问将IP地址映射成硬件地址的内核表格。arp -a 显示映射表内容,arp hostname用来检查单个主机的映射关系。
配置好/etc/resolv.conf后,可以用nslookup或dig(nslookup的另一种界面友好版本)探测DNS。
snoop命令属于分组侦探器,侦听网络上传送的分组,并把符合用户指定标准的分组记录或显示出来;-d选项用于指定接口(le0、me0等);“-x 字节序start, 字节数num”表示从第start个字节开始取值,连续读num个字节。例如获取验证包计费包一般用“snoop -x 42, 16”表示从42字节开始读,跳过包头,连续取16个字节。 -t选项打时间标志,-ta表示绝对时间。
例如监控端口8002,用 “snoop port 8002”,如显示包体“snoop –x 42 port 8002”
复杂命令:snoop -v tcp dst host 192.168.10.1 and src port 53 and src host 192.168.0.2
solaris中有snoop命令,HP_UX中抓包命令:tcpdump -s1600 -w/data1/tcpdump/dump98N95.eaimw5 host 10.7.4.33 and port 5555
每个IP地址标识一个网络和网络上的唯一主机。第一段决定了主机的地址类型。共分为四类:A类,B类,C类,D类。
1) A 类地址,非常巨大的网络(最多可有1600万主机)
如果第一位为0,那么后七位就是网络号,而后24位则是主机号。允许有127个A类地址。[1——126] 。首段为127的地址是保留地址,被称做 loopback,一个 loopback是指可以允许主机给它自己发送包的地址接口,在Solaris中,loopback是127.0.0.1
2) B类地址,大型网络(最多可有65000个主机)
如果最前的两位为10,那么接着的后14位就是网络号,后两段为主机地址。一共可以有16384个B类网络。[128——191]
3) C类地址,中小型网络(最多可有254台主机)
如果最前的三位是110,那么接着的后21位就是网络号,最后的8位为主机地址,最多可有2,097,152个C类网。[192——223]
4) D类地址,多点传送地址
如果最前的四位是1110,这样,最前的段就在224——239间,这些地址是多点传送的地址,其后保留的28位由特定的多点传送的组识别码组成。一个IP的多点传送地址是一个或多个主机的目标地址,当一个A类,B类或C类为一个特定的主机指定地址时。注意:IP的多点传送地址映射成一个MAC的多点传送地址以便于网络接口进行监听。低位的23位IP地址可以代替MAC的23位低位地址。如:一个IP为224.0.0.0的地址可以映射成——01:00:5e:00:00:00
网络掩码中值为1的位涵盖网络地址,值为0的位涵盖主机地址。既然掩码中值为1的位从左连续排列,因此掩码可以使用前缀长度指定,表示从左开始连续的值为1的位数。例如C类地址允许21位网络ID和8位主机ID(前三位为110),即第一部分为192(11000000)至223(11011111),所以取值范围是192.0.0.0~223.255.255.255。如果某段IP地址的掩码是255.255.255.192,其前缀长度为26,则可以采用IP/26表示,该段IP内有6位可由用户自行设置。
一般来说如果掩码是255.255.255.255,那么这个网段只有256-255=1台主机;如果掩码是255.255.255.254,那么这个网段只有256-254=2台主机。是实际上因为要定义网络地址和广播地址要占用两个地址,这样254和255地掩码在正常的IP网络中是不可用的。但是对于一个路由器来说,这种地址是可以的,像路由器的loopback地址就是255掩码的。
HP_UX中/etc/rc.config.d/netconf中设置对应网卡的IP地址以及路由,也可以采用ifconfig临时设定IP,例如给备用光纤卡lan2设置IP并使之立即生效,
ifconfig lan2 132.32.22.147 netmask 255.255.255.0
ifconfig lan2 down
ifconfig lan2 up
也可以采用route add 临时增加路由,例如:
route add default 132.32.22.1 1 (最后一个参数1表示count,意思是remote gateway)
如果修改完/etc/rc.config.d/netconf后必须重新启动net服务,才可以使修改的配置生效,先“/sbin/init.d/net stop”,然后再“/sbin/init.d/net start”
阅读(3716) | 评论(0) | 转发(0) |