看了好多资料还是这个资料对头【转载】

来源:互联网 发布:mac显示器有寿命吗? 编辑:程序博客网 时间:2024/04/29 01:27

HPUX SW Recovery Handbook - HPUX IO Addressing (二) 更改Instance Number

 (2012-06-12 10:17:12)
转载
标签: 

hpux

 

ioinit

 

更改

 

instance

 

number

 

杂谈

分类: HPUX

I/O Configuration (ioinit)

ioinit命令维护kernel IO结构与/etc/ioconfig文件的一致性. 系统启动时,按照/etc/inittab中的ioin项,init过程中会启动ioinit命令

ioin::sysinit:/sbin/ioinitrc > /dev/console 2>&1

其中ioinitrc是一个脚本,以-i-r选项调用ioinit命令。

 

根据-i选项, ioinit检查kernel硬件结构(/stand/ioconfig)与/etc/ioconfig是否一致。 如果存在差异,ioinit调用insf为所有新设备安装设备文件。如果kernel信息与/etc/ioconfig不一致,ioinit/etc/ioconfig更新/stand/ioconfig.如果指定了-r选面,它会重启动系统。

 

如果/etc/ioconfig不存在,或是信息不完整,ioinitrc将系统启动到单用户状态。用户需要从备份中恢复/etc/ioconfig文件,或是通过ioinit –c重新生成/etc/ioconfig文件。(这样导致的后果是实例号instance number可能被改变)

 

下一节描述了如何改实例号。

如何更改实例号How to Change an Instance Number

并不总是在集群环境下才需要更改实例号,后面列出的步骤可以用来达到这一目的。 实例号决定了设备文件名。ioconfig提供了硬件路径与操作系统核心中实例号的对应关系。ioconfig的信息有两份拷贝,/stand/ioconfig and /etc/ioconfig

 

在系统启动时,ioconfig信息保存在io_tree数据结构中。Ioconfig是为了在系统没有运行时保存配置信息。即使之后部分硬件被拆除了,相关的映射信息仍然会保存。如果该硬件又被重新安装,ioconfig内的信息不会改变。

 

常见的情况是我们需要更改硬盘与网卡的Instance Number. 对于网卡直接更改其Instance number. 对于硬盘设备更改ext_bus实例号。这个实例号与设备文件名中的c#对应。看下面ioscan的例子:

ext_bus   3 2/0/1 c720   CLAIMED   INTERFACE Built-in SCSI

target    0 2/0/1.3 tgt CLAIMED   DEVICE

target    1 2/0/1.5 tgt CLAIMED   DEVICE

disk      4 2/0/1.5.0       sdisk     CLAIMED DEVICE SEAGATE ST15150N

/dev/dsk/c3t5d0 /dev/rdsk/c3t5d0

 

Ext_bus实例号(3)对应了c3t5d0中的’c3’. t5d0不会改变,与底层硬件相关。

 

有三种方法可以用来更改实例号;简单快速的(procedure I) 和两种更复杂的 (procedure II and III). 通常procedure I 就够了,不需要用到II or III.procedure I失败的情况下,才需要尝试其他两种方法。

Procedure II通常可以适应所有情况,但是它要求重起系统两次。

Procedure III可以适应所有情况,而且只需要重起一次。但是…,你需要使用ioconfig2infile工具,htp://einstein.grc.hp.com/TOOLS/MISC下载。

 

NOTE: 确保ioinit(1M)补丁已安装:

· for UX 10.20 PHCO_16407 (or greater)

· for UX 11.00 PHCO_12555 (or greater)

只要不是老掉牙的系统都应该满足条件.

Procedure I

默认流程,要求重起一次,不需要额外工具。

1) ioscan输出生成一个配置模板

# ioscan -f | grep -e INTERFACE -e DEVICE | \

grep -v target | \

awk '{print $3, $1, $2}' > /infile

2)编辑/infile按需求更改ext_buslan instances.每一类(Class)每一instance只能有一行!

3) 将系统运行级别更改为1

# init 1

4)使ioconfig的变更生效

# /sbin/ioinit -f /infile -r

如果成功,系统会立即重起。类似“Input isidentical to kernel”这样的警告可以忽略。

 

如果不成功,可能的报错是这样:

 ioinit: Instance number X already exists for class XXX

说明指定的instance number与现有的配置冲突,这可能有有些ioscan看不到的设备占用了该instance number,那你只能尝试procedure II or III.

5) 验证结果.有可能需要重新vgimport卷组(c#改掉了的话).

Procedure II

可靠流程,需要重起两次,不需要额外工具。

1)根据ioscan输出生成配置模板

# ioscan -f | grep -e INTERFACE -e DEVICE | \

grep -v target | \

awk '{print $3, $1, $2}' > /infile

2) 编辑/infile按需求更改ext_buslan instances.每一类(Class)每一instance只能有一行!

3) 把当前的ioconfig文件移走,然后

# mv /stand/ioconfig /stand/ioconfig.sav

# mv /etc/ioconfig /etc/ioconfig.sav

# shutdown -ry 0

4) 重新生成ioconfig文件。因为缺少 ioconfig文件,系统会自动到ioinitrc提示符下。重新生成ioconfig文件,这样肯定不会发生冲突。

(in ioinitrc)# /sbin/ioinit -c

5) 使ioconfig变更生效。

 (in ioinitrc)# /sbin/ioinit -f /infile -r

系统会再次重起,警告 “Input isidentical to kernel”可以忽略。

6) 验证结果.有可能需要重新vgimport卷组(c#改掉了的话)

Procedure III

可靠流程,重起一次,要求ioconfig2infile 工具.

1)ioconfig2infile生成配置模板

# ioconfig2infile /etc/ioconfig >/infile

2) 编辑/infile按需求更改ext_buslan instances.每一类(Class)每一instance只能有一行!

3) 将系统运行级别更改为1

# init 1

4)使ioconfig的变更生效

# /sbin/ioinit -f /infile -r

如果成功,系统会立即重起。类似“Input isidentical to kernel”这样的警告可以忽略。

5) 验证结果.有可能需要重新vgimport卷组(c#改掉了的话).

NOTE: 如果出了任何问题,都可以把/etc/ioconfig.sav/stand/ioconfig.sav拷贝回原位重起来恢复原样.




生成infile文件

# cd /tmp

 # ioscan -kNf | grep ^disk | awk '{printf "%s %s %s\n",$3,$1,$2}' > infile

 # ioscan -kf | grep ^disk | awk '{printf "%s %s %s\n",$3,$1,$2}'  >> infile

 

修改生成的infile文件,以64000/0xfa00/0x1e开始的行,除了需要修改设备名的,其它的都删除掉:

 # vi infile                                         

 nodeBtmp/hpdisk#vi infile                       

"infile" 109 lines, 3144 characters                  

64000/0xfa00/0x1e disk 191

64000/0xfa00/0x1f disk 192

64000/0xfa00/0x20 disk 193

64000/0xfa00/0x21 disk 194

64000/0xfa00/0x22 disk 195                           

0/0/2/1.0.16 disk 3                           

0/3/1/0.1.21.0.0.0.0 disk 28                         

……                       

0/3/1/0.1.22.0.0.0.1 disk 118

0/3/1/0.1.22.0.0.0.2 disk 119

0/3/1/0.1.22.0.0.0.3 disk 120

0/3/1/0.1.22.0.0.0.4 disk 121

                        

将阴影部分修改成以下内容:

64000/0xfa00/0x1e disk 216

64000/0xfa00/0x1f disk 217

64000/0xfa00/0x20 disk 218

64000/0xfa00/0x21 disk 219

64000/0xfa00/0x22 disk 220

0/0/2/1.0.16 disk 3

0/3/1/0.1.21.0.0.0.0 disk 28

……

0/3/1/0.1.22.0.0.0.1 disk 118

0/3/1/0.1.22.0.0.0.2 disk 119

0/3/1/0.1.22.0.0.0.3 disk 120

0/3/1/0.1.22.0.0.0.4 disk 121

3.初始化修改后设备文件

执行生成的文件:

nodeB #ioinit -f ./infile

ioinit: Input is identical to kernel, line ignored

Input line 2:  0/0/2/1.0.16 disk 3

……

ioinit: Input is identical to kernel, line ignored   

Input line 83:  0/7/1/0.1.23.0.0.1.6 disk 176

  4.删除之前旧的设备

nodeB#rmsf /dev/disk/disk191        /dev/rdisk/disk191

nodeB#rmsf /dev/disk/disk192        /dev/rdisk/disk192

nodeB#rmsf /dev/disk/disk193        /dev/rdisk/disk193

nodeB#rmsf /dev/disk/disk194        /dev/rdisk/disk194

nodeB#rmsf /dev/disk/disk195        /dev/rdisk/disk195

 

5.验证查询                  

 

nodeBtmp#ioscan -m dsf

Persistent DSF           Legacy DSF(s)

========================================

/dev/rdisk/disk1            /dev/rdsk/c34t0d0

                         /dev/rdsk/c35t0d0

/dev/rdisk/disk41           /dev/rdsk/c34t0d2

                         /dev/rdsk/c35t0d2

.....

/dev/rdisk/disk216          /dev/rdsk/c37t0d0

                         /dev/rdsk/c36t0d0

                         /dev/rdsk/c38t0d0

                         /dev/rdsk/c39t0d0

/dev/rdisk/disk217          /dev/rdsk/c37t0d2

                         /dev/rdsk/c36t0d2

                         /dev/rdsk/c38t0d2

                         /dev/rdsk/c39t0d2

/dev/rdisk/disk218          /dev/rdsk/c37t0d4

                         /dev/rdsk/c36t0d4

                         /dev/rdsk/c38t0d4

                         /dev/rdsk/c39t0d4

/dev/rdisk/disk219          /dev/rdsk/c37t0d6

                         /dev/rdsk/c36t0d6

                         /dev/rdsk/c38t0d6

                         /dev/rdsk/c39t0d6

/dev/rdisk/disk220          /dev/rdsk/c37t1d0

                         /dev/rdsk/c36t1d0

                         /dev/rdsk/c38t1d0

                         /dev/rdsk/c39t1d0


0 0
原创粉丝点击