公司的一个IBM DS4300的老存储在十一前突然坏了,阵列挂载的数据出现丢失,比较严重,解决过程如下,特此记录。

硬件环境是:IBM DS4300存储,分了2个array,每个array都做raid5,并且各有一块热备盘。每个array都划分了2个逻辑盘,其中array2的一块380G的逻辑盘给了小型机双机系统做共享盘,双机上是AIX+ORACLE10G。双控(A控突然坏了,B控却不能接管A控的LUN,致使一部分重要数据无法寻到)。经过Server Raid管理软件分析阵列日志信息,发现2号盘在11年8月份就出现异常,不参与RAID工作,1号盘在近期才出现错误。经过对1、2号盘进行检测和镜像,发现2号盘有少量坏道,1号盘能正常读取。

恢复:

经过对1号盘和2号盘进行检测和镜像以后,我们尝试把1号盘留在DS4300阵列上,把2号盘拔出来,然后在Server Raid管理软件中尝试各种办法使1号盘状态变成ONLINE状态,最后终于把1号盘变成ONLINE,于是尝试在AIX下查看相关VG信息,发现VG信息已经被破坏。数据恢复陷入下一步困境,经过对比1号盘和2号盘的头部信息,发现2号盘的头部有相关VG信息,于是把2号盘VG信息Copy到1号盘相应位置,再次在AIX下查看VG信息、LV信息,这次VG信息完好,文件系统mount顺利,尝试启动oracle服务,发现oracle启动不了,报redo1.log文件错误,最后经过几番努力,oracle终于能起来了,赶紧exp出oracle中的数据。到此数据恢复成功!

经验总结:

DS4300上更换硬盘特别要注意,最好更换型号和固件版本跟原来一样的硬盘,本案例原2号盘坏过,如果需要替换原2号盘,那么新盘的型号和固件版本都需要跟原来的硬盘一样,否则新换的硬盘在DS4300上运行时会不稳定,并容易出现掉线的现象。DS4300对硬盘固件版本匹配要求比较高,更换硬盘千万要注意固件版本匹配问题。

还有LVM信息是本恢复的关键,1号盘LVM信息被破坏,我从2号盘看到良好的LVM信息,COPY到1号盘的相应位置,才能使整个恢复得以顺利进行。

 

另问题:

一个ds43000,分了2个array,每个array都做raid5,并且各有一块热备盘。每个array都划分了2个逻辑盘,现在array2的一块硬盘闪黄灯了,目前还能运行。在aix下查errpt也是报hdisk3出错。问:1、热备盘这时是自动顶上了,还是要手动配置?2、可以在线直接换这块坏的盘吗?3、换的盘这时是做热备好,还是把原来的热备盘继续做热备?我觉得磁盘阵列的可靠性也不太高啊,老是坏,不是电池坏,就是硬盘坏,让人提心吊胆的。

此例中由于RAID本身并没有损坏,不需要对每个物理硬盘进行单独镜像,只需要把报错的那个磁盘所在的LUN镜像出来就行。镜像的方法有两种:一种是在linux下用dd 命令把lun镜像到别的存储空间上,另一种是把要恢复的LUN切换到Windows上,然后通过Winhex工具对硬盘进行镜像。镜像完成以后,数据恢复的重点就是分析XFS文件系统结构,把数据提取数来。

可以通过达思 D-Recovery For XFS数据恢复软件,对每个镜像出来的LUN进行扫描,收集XFS文件系统信息(superblock,inode,目录、文件名等),最终把数据完全提 取出来。当然,如果数据破坏不严重,可以把分区表或者superblock信息还原到出问题之前的状态,然后挂回Linux环境,就能直接正常mount 文件系统。数据恢复最后结果是:出问题的LUN通过更改分区表或者superblock就能正常mount,还有一个LUN需要D-Recovery For XFS工具导出数据,最后实现非常完美的恢复。

补充:
 RAID10架构:比如10块146GB光纤接口硬盘,每两块盘做成RAID1,一共5组RAID1,然后这5组RAID1又配置成一个RAID0,这就是所谓的混合型RAID10架构. DS4300阵列挂接在IBM小型机上,划分成AIX JFS2文件系统。这种RAID架构貌似很安全,但还是会出问题。
 在这种架构上,如果这5组RAID1中只要坏掉一组,整个阵列就不能正常访问,在AIX上mount不上。

补充:

更换损坏的控制器

DS4300双控制器,发现A控无法online,且主机接口无光,网卡灯也不亮,于是在没有控制器备件的情况下就先关主机、存储,更换了电池,保证B控恢复正常,但是A控还是不行。
现在新控制器准备好了(但是微码版本未知),准备再次进行更换,思路如下

存储情况:
DS4300基本型号,双控(A控已坏),没有EXP
Firmware version: 06.12.03.00
NVSRAM version: N1722F600R912V05
硬盘微码:JFQ3

操作的大概步骤:
1、异地备份数据
2、收集ASD
3、停数据库,关主机、存储
4、更换A控及电池
5、开存储,主机暂时不开
6、同时连接两个控制器,在没有IO读写的情况下,升级硬盘微码JFQ3到JFQ8
7、确认新控制器微码版本,如果为06.12.03.00,则A、B控一样,不用升级;
如果高于06.12,升级控制器微码和A控一样
8、开主机,再次收集ASD

问题:
1、之前没有升级过控制器微码,现在在IBM网站上找到了DS4300基本型号的微码下载,但是06的只有这两种吗?而且6.60.22.00的版本还无法下载。


微码不一样也应该没有关系,你只要保证你剩的那个老的控制器没坏就行,把新的插上,应该会自动同步,另外一定不能关机更换,反正做之前先做备份吧,有的也建议后换的控制器版本不要比已有的版本高,但是你这种情况磁盘的微码也比较危险,我觉得情况还是挺复杂的,做之前多征求意见吧。
如果你的磁盘微码还太低JFQ3,这种微码还可能引起在线插拔控制器磁盘报警。
可以探讨一下下面的步骤:(前提做好数据备份和阵列信息的备份)
1、用单控制器试着升级磁盘微码到JFQ8;
2、更换控制器
2.1:如果新控制器微码比原来的微码低,那就在线直接更换,原来的高微码应该会自动同步到新换的控制器上。
2.2:如果新控制微码比原来的微码高,那么试着升级原来控制器的微码,使原来控制微码高于新控制,再在线更换控制器。升级微码前将event  log东西保存后将其清空。
3、更换电池