近日,我们遇到了一例EMC DMX存储故障,在同一个Raid中两块硬盘发生故障,导致数据丢失,经抢救后数据成功恢复。由于存储设备中同一Raid短时间内损坏2块硬盘的现象非常少见,并且我们在没有备份的情况下成功恢复了数据,故将整个过程分享给大家。
故障描述
最近,我们接到客户报修EMC DMX800存储故障,联系客户后及时赶到现场。在登录系统时发现AIX报hdisk48 P H故障,大量I/O告警,遂与客户的应用部门联系,确认此盘无法读写,整个Oracle数据库已经挂死。
处理过程
步骤一
登录到DMX发现同一个Raid中两块硬盘损坏,通过附图(1-1)可以看到1FE中2b:C/06与15a:C/06两块硬盘均已损坏。所以我们尝试重置两块硬盘,使其完成invalid tracks至热备盘的同步。
首先将2b:C/06硬盘拉起,并让其参与Hyper数据校验,尝试做数据修复,从附图(1-2)可以看到刚开始的时候是正常的,但是当同步到剩余487个invalid tracks时,硬盘修复进程报错停止(图1-3),并且再次拉起无用。继续尝试拉起15a:C/06做Hyper校验修复时,直接报该盘错误,无法启动(图1-4)。
由于故障硬盘2b:C/06和15a:C/06同时在一个Raid5中,虽然2b:C/06经过强制拉起,但也只能读取部分数据,因此,丢失944 tracks(944*32KB=30MB)数据(图1-5)。
步骤一虽然未能完成数据恢复,但是我们将此LUN解除了锁定。
步骤二
在步骤一中,我们在存储端将1FE数据处理一致后,解除了锁定。此时该LUN已经可以对数据访问,在数据库上设置忽略坏块参数,数据库可以正常访问,随后将涉及到的表数据导出后,重新导入,业务恢复正常。
经验分享
EMC DMX中,当Raid5中同时两块盘故障时,该LUN因为数据不一致,会被存储锁住,造成数据hang住,此时切忌在主机端做其他操作(比如migratepv、Oracle ASM drop操作等),要等到存储端数据处理一致后,解除锁定,才可进行下一步的操作,否则会导致问题的进一步复杂化。
而对于EMC DMX存储的设计机制,尽可能的将LUN数据打散多个Hyper段上做Raid,也会对数据形成有效保护,这样即使发生此类极端情况,也可以使丢失的数据量降到最小,最大限度的保障数据安全。