我们AIX也有这个问题,先看看内容,以后要操作,不过肯定是要先找软件问题,再找硬件问题。fget_config -Av查出来是dacNONE 从lsattr -El 可以看出dac0 和dac1 是一个 dac2 是正常的,原来的dac1变成dac0了,
以下是同事处理的故障和整理的文档
1 系统环境介绍
两台P550主机(smscdb1和smscdb2)、一台Ds4700+Exp710,每台主机两块hba卡,ds4700两个控制器分别与两台主机的4个hba卡连接。
2 故障现象
smscdb1主机只能正常识别一条链路,另一条链路为dacnone,检查其硬件状态均为正常,errpt有系统报错。阵列报警显示有一条链路不是最佳路径。详细信息如下:
#errpt
# lsdev -C|grep fc
fcs0 Available 04-08 FC Adapter
fcs1 Available 0B-08 FC Adapter
fc正常
# lsdev -C|grep fs
fscsi0 Available 04-08-02 FC SCSI I/O Controller Protocol Device
fscsi1 Available 0B-08-02 FC SCSI I/O Controller Protocol Device
fs正常
# lsdev -C|grep dac
dac0 Available 0B-08-02 1814-70A (70A) Disk Array Controller
正常应为两条链路
# fget_config -vA
---dar0---
User array name = ''
dac0 ACTIVE dacNONE ACTIVE
Disk DAC LUN Logical Drive
Hdisk2 dac0 0 1
Hdisk3 dac0 0 1
正常情况下第二条链路也应为dac1 ACTIVE
3 解决办法
第一步: 系统全备份和业务数据备份
#smit mksysb
第二步:将系统应用切换到备机smscdb2
#smit hacmp
第三步:将系统的非本地hdisk删除。
#rmdev �Cdl hdisk2
#rmdev �Cdl hdisk3
第四步:删除系统链路信息
# rmdev -dl fcs0 -R
#rmdev -dl fcs1 -R
#rmdev �Cdl dar0
#rmdev �Cdl dac0 �CR
第五步:确认系统链路已被正常删除
#fget_config �CA
无输出说明系统链路已被删除
第六步:重新识别系统信息
#cfgmgr �Cv
第七步:检查系统是否正常识别系统hba卡
# lsdev -C|grep fc
fcs0 Available 04-08 FC Adapter
fcs1 Available 0B-08 FC Adapter
fc正常
# lsdev -C|grep fs
fscsi0 Available 04-08-02 FC SCSI I/O Controller Protocol Device
fscsi1 Available 0B-08-02 FC SCSI I/O Controller Protocol Device
fs正常
第八步:检查链路是否正常识别
#fget_config �CA
---dar0---
User array name = ''
dac0 ACTIVE dacNONE ACTIVE
Disk DAC LUN Logical Drive
Hdisk2 dac0 0 1
Hdisk3 dac0 0 1
正常情况下第二条链路也应为dac1 ACTIVE,说明重建系统链路并没有解决问题。按照前期的解决方案重启服务器,并向用户说明情况需要重启服务器。
第九步:重启服务器
#shutdown �CFr
第十步:重启服务后检查系统
#fget_config �CA
User array name = ''
dac0 ACTIVE dacNONE ACTIVE
Disk DAC LUN Logical Drive
Hdisk2 dac0 0 1
Hdisk3 dac0 0 1
问题依旧。
第十一步:将smscdb1主机上的两条光线链路分别拔下,每次只允许一块hba卡接有光纤,将系统的所有链路信息删除后再重新识别系统阵列,详细步骤如下:
#rmdev �Cdl hdisk2
#rmdev �Cdl hdisk3
# rmdev -dl fcs0 -R
#rmdev -dl fcs1 -R
#rmdev �Cdl dar0
#rmdev �Cdl dac0 �CR
#fget_config �CAv
在测试的过程中发现,当只连接其中一块其尾号为A0的hba卡的时候无法正常识别阵列,执行#lsdev -C |grep dac命令系统无输出,说明尾号为A0的hba卡与阵列的链路不通。
此时我对出现这种问题到底是由于什么原因造成的不能确认,可能是阵列或者主机端的光线模块故障,也可能是光线的问题,还有可能是阵列的配置问题。
第十二步:检查主机端的hab卡的状态
# lsdev -C|grep fc
fcs0 Available 04-08 FC Adapter
fcs1 Available 0B-08 FC Adapter
fc正常
# lsdev -C|grep fs
fscsi0 Available 04-08-02 FC SCSI I/O Controller Protocol Device
fscsi1 Available 0B-08-02 FC SCSI I/O Controller Protocol Device
fs正常
用肉眼观察主机端的hba卡有光输出,结合fs和fc的状态排除主机端hba卡故障的可能性。
第十三步:登陆阵列检查控制器上的光线模块的状态正常,用肉眼观察模块也有光输出,排除阵列端光纤模块故障的可能性。
第十四步:将阵列端光纤插入光纤模块在,主机端检查光纤有光输出;将主机端的光纤插入hba卡,在阵列端观察光纤任然有光输出,排除了光纤故障的可能性。这样就初步排除了硬件故障的肯能性。
第十五步:连接阵列,检查阵列的详细信息
检查阵列发现在阵列的map信息中有5块hba卡的信息,但是通过检查主机的hba的信息发现,每台主机2块hba卡,总共只有4块hba卡,通过与主机hba的wwn号核对发现有一块hba卡的wwn末两位为30的hba的信息在主机上无法找到。主机只有4块hba卡,但是在阵列的配置信息中却有5个wwn号,这是绝对不正常的现象,初步判断可能是由于阵列的一条链路对应了两个hba,造成配置信息混乱而无法正常识别链路。
第十六步:此时与客户沟通,需要对阵列做操作,确定对业务没有任何影响,客户同意后将控制器B重启(由于系统的一条链路不在最佳路径,系统的两个array都是使用的A控制器,因此不用切换控制器),重启控制B后,再检查阵列的map信息发现系统中只有4块hba卡,根据wwn号检查发现真是两台主机的4块hba卡。
第十七步:按照系统提示信息将阵列上array2的切换到B控制器上。
第十八步:在smscdb1主机上重新识别系统链路信息
#cfgmgr �Cv
#fget_config �CAv
User array name = ''
dac0 ACTIVE dac1 ACTIVE
Disk DAC LUN Logical Drive
Hdisk2 dac0 0 1
Hdisk3 dac1 0 1
两条链路正常。
第十九步:检查系统hdisk信息
#lspv
hdisk0 00033b51914bb615 rootvg active
hdisk1 00033b5128510ed5 rootvg active
hdisk2 none None
hdisk3 none None
由于datavg还在备机smscdb2上是激活状态,因此无法将datavg的信息导入主机smscdb1上。和客户说明情况需要停止业务几分钟,由于在前期的变更方案中没有提及要中断业务,因此客户现场工程师电话联系其领导得到许可后将主备机中的双机都停掉。
在smscdb2上执行
#varyoffvg datavg
#exportvg datavg
在smscdb1上执行
#importvg �Cy datavg hdisk2
#varyoffvg datavg
再在smscdb2上执行
#importvg �Cy datavg
第二十步:确认两台主机上的datavg信息正常
#lspv
hdisk0 00033b51914bb615 rootvg active
hdisk1 00033b5128510ed5 rootvg active
hdisk2 00033b5157b3af75 datavg
hdisk3 00033b5157aff78c datavg
确认两台主机的datavg信息一致。
第二十一步:启双机
在两个节点上分别执行#smit clstart
正常启动
第二十二步:检查数据库是否正常启动
#ps �Cef|grep oracle
发现数据库的进程不正常,无数据库监听进程,检查数据库日志发现系统报权限错误。将双机全部停掉。
在两个节点上都执行#smit clstop
第二十三步:在smscdb1上执行如下命令:
#cd /dev
#ls �Cl
发现有关数据库的rlv_*的所有文件的权限都变成了system:root,正常情况先应为oracle:dba,因此将所有rlv_*开头的所有文件权限改为oracle:dba
#cd /
#chown oracle:dba /dev/rlv_*
#lslv 输出正常。
第二十四步:在两个节点上启双机
先在节点smscdb1上执行#smit clstart
#/usr/es/sbin/cluster/clstat �Ca
确认双机状态正常。
#ps �Cef|grep oracle 检查数据库正常
再在smscdb2上执行#smit clstart
#/usr/es/sbin/cluster/clstat �Ca
确认双机状态正常。
第二十五步:将业务从节点1切换到节点2上
#smit hacmp 将资源切换到节点2上
#ps �Cef|grep oracle 检查数据库正常