今天安徽邮政的ha出现问题,发来的日志信息可以看到,磁盘心跳异常,全部都是如下一条错误:
[e] 11/17 10:24:53.889 [29453:b6311bb0] diskhb.c:2468 readthread open(/dev/raw/raw1) failed(errno:6)
|
从发来的信息中可以看出,系统中存在一条raw信息:/dev/raw/raw1: bound to major 8, minor 1,但是此raw信息是否可用呢?从ha日志中的提示可以判断,这个/dev/raw/raw1肯定是有问题的,那么到底是什么问题,就需要从major 8, minor 1设备来分析了。这个major 8, minor 1在系统中是/dev/sda1,当然从ha配置文件clp.conf中也 可以看出来,磁盘心跳用的是/dev/sda1。
发来的系统信息中,没有fdisk和sfdisk相关信息,message中最近没有重启记录,也看不出来是否存在/dev/sda1。不过/proc/partitions中还是有迹可循的。从partitions中可以看出,sda和sdc,sdb和sdd是双链路的两个设备 和影像,也就是说存储上的一个lun,因为双链路在系统中识别成了sda和sdc,另一个lun在系统中识别成了sdb和sdd,这一变二之后,肯定有一个链路是无法操作的。
fan3838@fan3838:gias1$ cat proc/partitions
major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq
58 0 37748736 lvma 0 0 0 0 0 0 0 0 0 0 0
58 1 41943040 lvmb 0 0 0 0 0 0 0 0 0 0 0
58 2 51216384 lvmc 0 0 0 0 0 0 0 0 0 0 0
58 3 859832320 lvmd 0 0 0 0 0 0 0 0 0 0 0
104 0 71126640 cciss/c0d0 141192 165406 2446534 589470 5899544 10331265 130162648 1670890 474 401900 2299050
104 1 2048144 cciss/c0d0p1 19670 8332 223994 174210 3781386 8260656 96607464 567320 471 43200 749510
104 2 204000 cciss/c0d0p2 49 91 280 170 99 89 376 2350 0 1810 2520
104 3 8192640 cciss/c0d0p3 36 147 456 140 4 4 64 210 0 350 350
104 4 1 cciss/c0d0p4 1 0 2 10 0 0 0 0 0 10 10
104 5 6144464 cciss/c0d0p5 53200 6221 474690 76220 756658 1144841 15224960 770100 1 80740 877000
104 6 5120384 cciss/c0d0p6 28005 140855 1350370 72100 277455 154775 3458544 77960 1 43970 150080
104 7 5120384 cciss/c0d0p7 71 99 682 330 36588 53036 749192 6670 0 2670 7000
104 8 5120384 cciss/c0d0p8 1041 805 14090 16850 568814 307955 7014336 27610 1 8440 44460
104 9 10240784 cciss/c0d0p9 39086 8693 381578 249340 478540 409909 7107712 218670 0 246090 468140
8 0 430122584 sda 10 30 80 60 0 0 0 0 0 60 60
8 16 860244920 sdb 10 30 80 140 0 0 0 0 0 140 140
8 32 430122584 sdc 24018625 47244167 570095562 23493564 11105650 6794961 143210040 7047424 0 26104810 30545538
8 33 104391 sdc1 25 143 336 10 0 0 0 0 0 10 10
8 34 58605120 sdc2 453266 1068344 12170840 3971190 970877 2603092 28596904 3397564 0 734700 7376624
8 35 68364607 sdc3 23565292 46175421 557923784 19524764 10134773 4191869 114613136 3651820 0 26073310 23173264
8 36 1 sdc4 1 0 2 0 0 0 0 0 0 0 0
8 37 56235501 sdc5 20 120 280 0 0 0 0 0 0 0 0
8 48 860244920 sdd 29 343 744 1020 0 0 0 0 0 1000 1020
|
从partitions中可以看出,现在sdc上是有分区表的,而sda上没有,但是当时部署ha的时候,明明写的sda1,说明当时sda上是有分区表的。那么,这只有一种解释:当时sda上有分区表是因为sda所用的链路是链接存储的主控制器的,现在存储控制器发生了切换,原来的standby的控制器成了active的了,原来sda变成不可操作了,而sdc变成了可操作的了,sdc上也有了分区表。当然上述的判断是成立的,而且从ha中也可以得到证实。ha中挂在了三个逻辑卷,因为逻辑卷跟设备名关系不大,只要存储上lun上有当初的逻辑卷信息,即使设备名变化,逻辑卷还都是正常的。从proc/lvm/global中可以看出现在逻辑卷使用了sdc2/sdc5,sdc3,sdd,这也能简介证明sda和sdc分区表的变化是存储控制器发生切换造成的。
fan3838@fan3838:lvm$ cat global
lvm module lvm version 1.0.8(17/11/2003)
total: 3 vgs 4 pvs 4 lvs (3 lvs open 3 times)
global: 495670 bytes malloced iop version: 10 20 days 3:20:24 active
vg: vgdata1 [2 pv, 2 lv/2 open] pe size: 32768 kb
usage [kb/pe]: 114753536 /3502 total 79691776 /2432 used 35061760 /1070 free
pvs: [aa] sdc2 58556416 /1787 58556416 /1787 0 /0
[aa] sdc5 56197120 /1715 21135360 /645 35061760 /1070
lvs: [awdl ] lv_archivelog 37748736 /1152 1x open
[awdl ] lv_backup 41943040 /1280 1x open
vg: vgdata2 [1 pv, 1 lv/1 open] pe size: 32768 kb
usage [kb/pe]: 68321280 /2085 total 51216384 /1563 used 17104896 /522 free
pv: [aa] sdc3 68321280 /2085 51216384 /1563 17104896 /522
lv: [awdl ] lv_oradata 51216384 /1563 1x open
vg: vghist [1 pv, 1 lv/0 open] pe size: 32768 kb
usage [kb/pe]: 860192768 /26251 total 859832320 /26240 used 360448 /11 free
pv: [aa] sdd 860192768 /26251 859832320 /26240 360448 /11
lv: [awdl ] lvhist 859832320 /26240 close
|
问题原因找到了,解决方法有二:1、更改ha配置文件,将磁盘心跳由sda1改为sdc1。不过如果存储控制器再发生切换,ha磁盘心跳还是会报错。2、彻底解决办法是做链路冗余。从发来的系统信息可以看出用的qlagic光纤卡,可以通过qlagic光纤卡模块的failover功能实现链路冗余。
阅读(2132) | 评论(0) | 转发(1) |