Chinaunix首页 | 论坛 | 博客
  • 博客访问: 882155
  • 博文数量: 192
  • 博客积分: 8554
  • 博客等级: 中将
  • 技术积分: 1892
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-12 04:36
文章分类

全部博文(192)

文章存档

2012年(5)

2010年(27)

2009年(22)

2008年(42)

2007年(51)

2006年(45)

分类:

2006-12-28 23:19:18

梦林居主人的troubleshooting笔记。

应该是在北京培训时的笔记。摘抄于他的博客。


24 七月 2006

培训已经过去了两周,现在才真正有学习的感觉。讲师的每一句话,几乎都包含我需要汲取的营养。赶紧记录下来,姑且称为笔记。

TroubleshootingResources有不少,像man pagehp网站、GooglenewsgroupForum等等。但有几个是以前不知道,或者没留意的,包括:

  1. Dynatext Instant Information CD,机器交付时附带的光盘,包含了很多手册。
  2. 各软件的Release Notes,这个常常被忽视,但由于它记录了最新版本与前面版本的变化,以及已解决和待解决的问题,以及Workaround,所以有时是很有用的。
  3. Support Matrix,记录了每个软件各版本所需的支持软件和OS的版本,形成一个二维表。
  4. 比较有用的还有一个小技巧,在HP-UX下怎么mount ISO9660格式的CD。因为ISO9660的文件名带版本号的,直接mount后文件名挺乱,所以需要加一个optioncdcase。就像这个样子:

mount -F cdfs -o cdcase /dev/dsk/c0t0d0 /cdrom

然后就是故障处理的一些思路和策略,我记住了这么几条:

  1. 故障处理的首要目的是让业务尽快恢复,而不是查找原因。无论用什么办法,只要能让业务正常跑起来,都行。
  2. 一定要保护现场。比如重启前要将syslog改名备个份,不然第一次重启,改成了syslog.old,再重启一次,就被覆盖掉了。再比如vmunix.prev,也是一样的道理。
  3. Change by confidence, not by coincidence。一定要找根本原因,而不是盲目地试验。如果乱试一气,不仅无法解决问题,把现场也破坏掉了。
  4. 注重变更管理。很多故障其实是人为造成的。特别是在多人都可以操作的情况下。
  5. 随着想着备份与恢复。在做任何变更之前,做make_xxx_recovery,在变更且验证正确之后,再做一次。
  6. 重视人员的备份。不能只有一个人才能处理故障。至少按照20/80的原则,那80%的时间出现的20%的问题,一定要有人能够顶替处理。

暂时这么多,下午接着听,接着记。

24 七月 2006

中午写笔记太用功,结果下午一上课就有点困了。听到哪儿记哪儿吧。

  1. inetd -l(注意是字母L),可以指定inetd是否将日志记录到syslog中。这是一个开关选项,执行一次开,再执行一次就关。这个开关会影响inetd所管理的每个daemon。若要每次开机都让它记录日志,在/etc/rc.config.d/netdaemons中,加上export INETD_ARGS=”-l”
  2. Best practice。为root用户在home下建立一个目录。防止root用户的误操作把/下的东西删掉了。
  3. 每个目录下的...实际上是hard link,分别指向目录自己和上级目录。
  4. od或者xd,可以用八进制和十六进制dump一个文件的内容。其实目录也是一个文件。用odxd当然也可以看到目录的内容。
  5. 权限位的stssetuid或者setgid。而在权限最后一位为t是粘性位。对文件来说,设置了t,就提示系统尽量把页面保存在内存里。而对目录来说,设置了t使得其它用户即使对文件所在的目录有写权限,也无法删除或者更改下面的文件。
  6. LVM Activation Quorum。为了防止坏盘影响整个卷组,设置了Quorum。但可以用vgchange -a -q n bypass掉。

25 七月 2006

今天内容是逻辑卷管理的Troubleshooting

  1. /etc/lvmtab存放着VGPV的关系。系统用它来作为对内核和硬盘上的信息的检查之用。
  2. /etc/lvmconf下的vgxx.conf,是硬盘头上PVRA/VGRA的内容备份下来的。
  3. Device file没有了,用mknod重新建立起来。
  4. /etc/lvmtab没了,用vgscan重新从磁盘头上扫描出来。注意如果用阵列,需要用额外的步骤。
  5. 内核的数据结构没有了。用vgchange重新激活一次。
  6. 硬盘头上的结构没有了。用vgcfgrestore/etc/lvmconf下的配置重写到硬盘上。
  7. 硬盘坏的诊断:由上往下的原则。先pvdisplay看状态,再ioscan看能否看到盘,再diskinfoOS能否和磁盘控制器交互,再用dd一块一块地读盘,看能否正确读出。用STM也可以用于验证磁盘信息。
  8. 换新盘后恢复步骤:恢复LVM结构->恢复文件系统->恢复数据。

下面是启动过程、启动盘及相应的Troubleshooting

启动分四个大的步骤:PDCISLHPUXVMUNIX

根盘镜像的步骤:

  1. ioscan找到做镜像的磁盘;
  2. pvcreate -B创建可引导的PV
  3. 将创建的PV加入VG中;
  4. mkboot,创建lif结构;
  5. lifls验证;
  6. 设置AUTO忽略Quorum,用mkboot -a “hpux -lq”(在镜像和被镜像的盘上都要做)
  7. setboot,将ALT PATH设置为镜像盘,如果有HA Alternate,将HAA设为镜像盘;
  8. 在镜像盘上创建三个必需的lvol,必须顺序做,以让镜像盘和主盘的lvol布局保持一致;
  9. lvextend -m 1,为vg00下的所有lvol建镜像;
  10. lvlnboot -R,更新BDRA

27 七月 2006

0号进程(swapper)是所有内核进程的祖先,1号进程(init)是所有用户进程的祖先。

每个进程有fd table,指向系统里的filetable表,包括指向inode的指针和offset,每个文件打开的每个文件都会向filetable里加一条,即使是同一个文件,两个进程打开也会有两个条目。inode表是系统缓存的磁盘inode。用dup()会复制fd table的条目,因此dup()返回的fd和原fd共用offset

重定向的语法:由于是shell解释,所以可以放在任何位置。重定向的>或者<前是描述符,>前的1可以省略,<前的0可以省略。>或者<后跟文件名,或者跟&加上描述符。注意>f1 2>f1>f1 2>&1

0号进程(swapper)是所有内核进程的祖先,1号进程(init)是所有用户进程的祖先。

每个进程有fd table,指向系统里的filetable表,包括指向inode的指针和offset,每个文件打开的每个文件都会向filetable里加一条,即使是同一个文件,两个进程打开也会有两个条目。inode表是系统缓存的磁盘inode。用dup()会复制fd table的条目,因此dup()返回的fd和原fd共用offset

重定向的语法:由于是shell解释,所以可以放在任何位置。重定向的>或者<前是描述符,>前的1可以省略,<前的0可以省略。>或者<后跟文件名,或者跟&加上描述符。注意>f1 2>f1>f1 2>&1是不一样的。<<的意思是here document,表示后面跟的东西作为标准输入。<<后面加上-,表示去掉后面的定界符和作为输入的内容每一行前面的空格。有时为了美观会把内容对齐,这时就需要加上-

看看/sbin/rcMC的脚本,能看懂,看shell的水平就差不多了。

$ENV每次启shell都会执行。

/dev/ptspts表示pseudo terminal slave/dev/telnetmm表示master。二者为一对driver产生的设备文件,telnetm用于telnetdpts用于shell,二者背靠背地连接,将数据在一对设备文件间传递。这样telnetd只需要往telnetm里读写,shell往虚终端/dev/pts/*里读写,行为保持不变。

major number72的是clone driver,它会把设备的minor number作为major number,再找对应的driver,用随机的minor numberclone一个这样的设备。在telnetm的处理中,就使用了这样的机制。

IP地址,如果只改了netconf,没改hostsCDE就起不来,有可能提示在找NFS,但实际是这个原因造成。

HFSBSD4.2一直延续到上世纪90年代末。HFS针对磁盘结构做了优化,让inode分布在各个盘片上,比AT&T最初的文件系统快十倍。

命令serialize让多个进程按顺序执行,以避免资源抖动。

find . -name *.log

find: missing conjunction

这个问题的原因是在find指定的目录下有多个文件符合*.log,因此会被shell扩展成为多个参数,而find只期待一个参数,所以返回了missing conjunction。解决的办法是用括号把待查找的文件括起来。

find . -name “*.log”

$(cmd)是命令替换的新形式,以前是`cmd`

网络故障判断过程:

  1. ioscan -funC lan。如果S/WUNCLAIMED,表示驱动没装;如果H/W Type处显示No Device,硬件问题。
  2. lanscan。如果驱动装上了,这里应该能显示出来。
  3. linkloop。可以测试链接层的连接性。
  4. netstat -in。如果没配IP地址,接口不会在此处显示出来。

进程组和Session的概念。一个Session只能有一个进程组是前台的。 用tsm也可以进行会话控制。

磁带设备文件名最后n表示不回绕,b表示Berkeley方式。

做磁带的命令要附带着磁带传递,否则收磁带的人只能猜。

man 7 mt能够看到磁带设备命令的规则。

阅读(1292) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~